Example 3対象品目の工程属性に値がない場合、ステータス変更を制限
影響を受ける品目の操作属性に値がない場合は、変更オーダーのステータス変更を暫定approval1から暫定approval2に制限するGroovyスクリプトを記述できます。
暫定承認1から暫定Approval2フェーズの変更終了基準では、影響を受ける項目の操作属性が入力されているかどうかがスクリプトによって確認されます。 オペレーション属性に値がない場合は、プロモーションを暫定的なapproval2に制限する必要があります。
構成ステップは次のとおりです:
- webサービスを作成します。
- Webサービス: GetAffectedItem
URL:
https://hostname/fscmRestApi/resoucres/11.13.18.05/productChangeOrders/##changedId##/child/AffectedObject
- Webサービス: GetAIAttributes
URL:
https://hostname/fscmRestApi/resources/11.13.8.05/productChangeOrdersV2/##changeId##//child/changeOrderAffectedObject/##itemId##/child/changeOrderAffectedItem
- Webサービス: GetAffectedItem
- アプリケーション・コンポーザでグローバル関数を作成します。ノート:
- このグローバル関数は、参照としてのみ提供されます。 パフォーマンスは、品目の数および検証する属性の数に応じて影響を受ける可能性があります。
- REST APIは、すべての操作属性をサポートしているわけではありません。 詳細は、SCM REST APIのドキュメントを参照してください。
- トリガー: 品目ルール
- オブジェクト: 商品化変更オーダー
- タブ: 品目
- アプリケーション・コンポーザのナビゲーション: 「暫定承認における変更オーダー」->「グローバル機能基準」
- 関数:
def itemId = "" def rtrnVal = true println(changeId) def aitems = adf.webServices.GetAffectedItem.GET(changeId) def ailnk = aitems["items"] for(affectedItem in ailnk) { println("In the loop") def links = affectedItem["links"] for(lnk in links) { if(lnk["rel"].toString() =="self" && lnk["name"].toString()=="AffectedObject") { println(lnk["href"]) itemId = String.valueOf(lnk["href"].toString().replace("https://hostname/fscmRestApi/resources/11.13.18.05/productChangeOrders/"+changeId+"/child/AffectedObject/","")) println(itemId) //Invoke affected item REST service def affectedItems = adf.webServices.GetAIAttributes.GET(changeId, itemId) def aiAttr = affectedItems["items"] for(attr in aiAttr) { println(attr["EnforceShipToLocationValue"]) if(attr["EnforceShipToLocationValue"]== null) { rtrnVal=false } } } } } return rtrnVal
- 変更オーダーの「編集」「ルール・セット」ページの「ルール」タブで、品目ルールを設定します。
InvokeGlobalFunction("validateAttrVal", [ChangeHeader].[Change Header Main].[Change ID])
「ルール・セット」の編集ページでルールを定義する方法を次に示します
- 変更オーダー基準: 「変更オーダー・タイプ」の編集ページの「ワークフロー」タブで基準を定義します。
M1ORGCCOルールを暫定承認ステータスの終了基準として追加します。