Example 2対象品目に添付ファイルがない場合のステータス変更を制限
影響を受ける品目に添付がない場合、変更オーダーのステータス変更を「オープン」から「承認」に制限するGroovyスクリプトを記述できます。
「オープンから承認」フェーズの変更終了基準では、影響を受ける品目に少なくとも1つの添付があるかどうかがスクリプトによって確認されます。 添付がない場合は、プロモーションを承認に制限する必要があります。
構成ステップは次のとおりです:
- webサービスを作成します。
Webサービス: GetAffectedItem
URL: https://hostname/fscmRestApi/resources/11.13.18.05/productChangeOrders/##changeId##/child/AffectedObject- Webサービス: GetAIAttachments
URL: https://hostname/fscmRestApi/resources/11.13.18.05/productChangeOrders/##changeId##/child/AffectedObject/##itemId##/child/AffectedItemAttachment
- アプリケーション・コンポーザでグローバル関数を作成します。ノート: このグローバル関数は、参照としてのみ提供されます。
- トリガー: 品目ルール
- オブジェクト: 変更オーダー
- タブ: 「影響を受ける品目」->「添付」
- アプリケーション・コンポーザのナビゲーション: 「変更オーダー」->「オープン」ステータス の「グローバル機能基準」
- 関数:
def itemId = "" def rtrnVal changeId = String.valueOf(changeId) 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) } println(itemId) def attResult = adf.webServices.GetAIAttachments.GET(changeId,itemId) def attachments = attResult["items"] println(attachments["count"]) if(attachments!="[]") { rtrnVal = false println("No attachments") println(rtrnVal) } } } return rtrnVal
- 品目ルールの設定:
InvokeGlobalFunction("hasAttachment", [ChangeHeader].[Change Header Main].[Change ID])
「ルール」の編集ページでルールを定義する方法を次に示します
- 変更オーダー入力基準は、「変更オーダー・タイプ」の編集ページの「ワークフロー」タブで定義します。
承認ステータスの入力基準としてVS添付の検証を追加します。