Example 1対象品目にAMLがない場合のステータス変更を制限
影響を受ける品目にAMLがない場合は、変更オーダーのステータス変更を「オープン」から「承認」に制限するGroovyスクリプトを記述できます。
ユースケース: オープンから承認までのフェーズの変更終了基準では、影響を受けるオブジェクトに少なくとも1つのAML (承認済製造業者リスト)があるかどうかがスクリプトによってチェックされます。 AMLがない場合は、プロモーションを承認に制限する必要があります。
- webサービスを作成します。
- Webサービス: GetAffectedItem
URL: https://hostname/fscmRestApi/resources/11.13.18.05/productChangeOrders/##changeId##/child/AffectedObject
- Webサービス: GetAIAML
URL: https://hostname/productChangeOrders/##changeId##/child/AffectedObject/##itemId##/child/AffectedItemAML
- Webサービス: GetAffectedItem
- グローバル関数の作成 - hasAML:ノート: このグローバル関数は、参照としてのみ提供されます。
- トリガー: 品目ルール
- オブジェクト変更オーダー
- タブ: 「対象品目」->「AML」
- アプリケーション・コンポーザのナビゲーション: 変更オーダー ->グローバル機能
- 関数:
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
- 「ルール・セットの編集」の「一般情報」ページの「ルール」タブで、項目ルールを設定: 変更オーダーの場合は<Validate Attachment>。
InvokeGlobalFunction("hasAML", [ChangeHeader].[Change Header Main].[Change ID])
「ルール・セット」の編集ページでルールを定義する方法を次に示します。
- 終了基準の構成。
hasAMLルールをオープン・ステータスの終了基準として追加します。