変更する販売オーダーを補正
履行タスクによって販売オーダーが変更されたときに修正を行う報酬パターンを作成します。
報酬パターンは、オーケストレーション・プロセス・ステップで作成するルールです。 オーダーの変更時に行う調整を指定します。 報酬パターンの例として、元に戻す、やり直し、更新、取消およびなしがあります。
たとえば、出荷の作成ステップの報酬パターンがやり直しで、ステップが取消サービスと作成サービスをコールするとします。 オーダー管理は、ステップの新規倉庫を含む変更オーダーを受け取ると、取消および作成を再実行します。
コンプライアンス・チェックが終了するまでオーケストレーション・プロセスを一時停止する報酬パターンが必要であるとします。
-
コンプライアンス詳細が変更された場合は、コンプライアンスが完了するまでオーケストレーション・プロセスを一時停止します。
作成するルールを次に示します。
説明
コード |
説明 |
---|---|
|
オーケストレーション・プロセスの事前定義済ビジネス・ルールのセットを含むディクショナリ。 これを使用して、オブジェクトとその値を格納します。 DOOは、オーダー管理が以前のリリースでオーダー・オーケストレーションに使用した用語である分散オーダー・オーケストレーションを意味します。 |
|
DooSeededOrchestrationRules内のオブジェクト。 これには、販売オーダー・ヘッダーの属性とその値が含まれます。 |
|
オーダー・ヘッダーの拡張可能フレックスフィールド。 この例では、コンプライアンス・チェックの詳細を格納する拡張可能フレックスフィールドを定義したとします。 詳細は、「オーダー管理での拡張可能フレックスフィールドの設定の概要」を参照してください。 |
|
ディクショナリにFlexContextsを設定します。 |
|
拡張可能フレックスフィールドの値を保存するオブジェクト。 |
|
コンプライアンス詳細を格納するオブジェクト。 |
|
コンプライアンス情報を格納するオブジェクト。 |
|
CompensationPatternは、オブジェクトmRuleDecisionのプロパティです。 CompensationPatternには、このルールが条件の終了に使用する値である文字列UPDATEが格納されます。 |
次に、ステートメントの仕組みについて説明します。
コード |
説明 |
---|---|
|
|
|
|
|
販売オーダー・ヘッダーの拡張可能フレックスフィールドに値が含まれている場合にのみ、次のAND文に進みます。 この設定では、headerEFFを使用して、属性コンプライアンス詳細をオーダー・ヘッダーに格納する拡張可能フレックスフィールドの値を格納します。 コンプライアンス詳細の値が空の場合、コンプライアンスは不要で、報酬は不要であり、オーケストレーション・プロセスは次のオーケストレーション・プロセス・ステップに進みます。 |
|
headerEFFをルール言語(RL)ディクショナリに宣言し、headerEFFの値をflexContextsに含まれる値に設定します。 この条件により、変数をディクショナリに正しく宣言できます。 RLにheaderEFFが含まれている場合にのみ、次のAND文に進みます。 各変数に対してこのテストを行い、宣言が正しいことを確認します。 テストを実行せず、宣言が正しくない場合は、後続のステップでルールが失敗する可能性があります。 |
|
オーダー・ヘッダーにコンテキストが定義されていることを確認してください。 |
|
この変数のコンプライアンス詳細のコンテキストおよびセグメントを取得します。
|
|
拡張可能フレックスフィールドの属性ComplianceInfoが変更されていることを確認します。 attributeChangedを使用して、このリビジョンでComplianceInfoの値が異なるかどうかを判断します。 |
この例には、1行のみを処理する単純なルールが含まれています。 拡張ルールを使用して、複数の明細を処理します。 詳細は、「オーダー管理でのビジネス・ルールの使用の概要」を参照してください。
ステップの概要
-
If文を作成します。
-
Then文を作成します。
-
一時停止タスクをリリースします。
このトピックではサンプル値を使用します。 ビジネス要件によっては、別の値が必要になる場合があります。
If文の作成
文を作成します。
-
コンプライアンス詳細が変更された場合
やれ。
-
ルールを作成します。
-
「設定および保守」作業領域で、タスクに移動します。
-
オファリング: オーダー管理
-
機能領域: オーダー
-
タスク: オーケストレーション・プロセス定義の管理
-
-
「オーケストレーション・プロセス定義の管理」ページで、CallCustomerWhenLargeInvoiceオーケストレーション・プロセスを探し、「処理」>「編集」をクリックします。
CallCustomerWhenLargeInvoiceを作成する方法について学習します。 詳細は、「オーケストレーション・プロセスへのブランチの追加」を参照してください。
-
「オーケストレーション・プロセス定義の編集」ページのプロセス詳細領域のステップ定義リストで、「変更管理」をクリックします。
-
出荷品目行の報酬パターン列で、「ルールのクリック」をクリックします。
-
「報酬パターン」ダイアログで、「ルールの追加」>「プロパティ」をクリックし、値を設定します。
属性
値
名前
コンプライアンスが変更されたかどうかの判断
説明
コンプライアンスの詳細が変更された場合は、コンプライアンスが完了するまでオーケストレーション・プロセスを一時停止します。
有効日
常時
Priority
中
アクティブ
チェック・マークが含まれます。
拡張モード
チェック・マークが含まれます。
ツリー・モード
チェック・マークは含まれません。
-
-
変数
header
を宣言します。-
If領域で、Is Aの左側にある「ショー・ウィンドウ」に
header
と入力します。 -
フィールドをIs Aの右側をDooSeededOrchestrationRules.DOOHeaderに設定します。
-
-
変数
headerEFF
を宣言します。-
「パターンの追加」をクリックします。
-
Is Aの左側のウィンドウで、
headerEFF
と入力します。 -
フィールドをIs Aの右側をDooSeededOrchestrationRules.DOOHeaderに設定します。
-
-
headerEFF
に値が含まれていることを確認してください。-
「テストの追加」をクリックします。
-
Isの左側のウィンドウで、
headerEFF
と入力します。 -
Isn'tに変更します。
-
Isn'tの右側にあるフィールドで、「右の値> null > OK」をクリックします。
-
-
headerEFFをルール言語(RL)ディクショナリに宣言します。
-
右の値の右側にある下矢印をクリックし、「簡易テスト」をクリックします。
-
Isの左側のウィンドウで、「左の値」をクリックし、「ヘッダー」を展開してflexContexts > OKをクリックします。
-
RL.containsに変更します。
-
RL.containsの右側にあるフィールドで、「右の値> headerEFF > OK」をクリックします。
-
-
context
に値が含まれていることを確認してください。-
「簡易テスト」をクリックします。
-
Isの左側にある「左の値」をクリックし、headerEFFを展開してcontext > OKをクリックします。
-
Isn'tに変更します。
-
Isn'tの右側にあるフィールドで、「右の値> null > OK」をクリックします。
-
-
context
に文字列ComplianceDetailsが含まれていることを確認してください。-
「簡易テスト」をクリックします。
-
Isの左側にある「左の値」をクリックし、headerEFFを展開してcontext > OKをクリックします。
-
次と等しいに変更すると、大文字小文字は無視されます。
-
大文字と小文字を区別しないの右側にあるフィールドで、「右値」をクリックし、
"ComplianceDetails"
と入力してOKをクリックします。二重引用符( ")を含めてください。
-
-
拡張可能フレックスフィールドの属性ComplianceInfoが変更されていることを確認します。
-
「簡易テスト」をクリックします。
-
Isの左側にある「左の値」をクリックし、headerEFFを展開してhasChangesをクリックします。
-
条件ブラウザのウィンドウで、値を確認します。
カッコの間に
"_ComplianceInfo"
を挿入し、OKをクリックします。 たとえば:headerEFF.attributeChanged("_ComplianceInfo")
-
「Is」の右側のウィンドウで、値を入力します。
-
Then文の作成
コンプライアンスが完了するまでオーケストレーション・プロセスを一時停止する文を作成します。
-
Then領域で、「処理の追加」>「割当」をクリックします。
-
「ターゲットの選択」をクリックし、header.mRuleDecision.compensationPatternをクリックします。
-
等号( =)の右側にあるウィンドウで、
"UPDATE"
と入力します。二重引用符を含める必要があります。
-
「検証」をクリックし、表示される検証ログにエラーが含まれていないことを確認してから、「保存」をクリックします。
-
「オーケストレーション・プロセス定義の編集」ページで、「保存」をクリックします。
日付に従ってタスクを一時停止
このルールは、給与パターンを追加したのと同じステップの一時停止ルール列に追加します。
日付が空の場合にタスクを一時停止
コンプライアンス・チェックが完了すると、オーダー管理によってコンプライアンス完了日が設定されます。 日付が空の場合、コンプライアンス・チェックが完了していないことを示し、ルールは一時停止タスクを解放しません。 たとえば:
-
CompleteCompliancedateが空の場合、コンプライアンス・チェックは実行されません。 待機する必要があることを示すビジネス・イベントを割り当てます。
ルールで使用されるコードを次に示します。
If header is a DooSeededOrchestrationRules.DOOHeader
and if headerEFF is a DooSeededOrchestrationRules.FlexContext and
headerEFF isn't null and
header.flexContexts RL.contains headerEFF and
headerEFF.context isn't null and
headerEFF.context equals ignore case "ComplianceDetails" and
headerEFF.getFlexAttributeDateValue("_CompleteCompliancedate") is null
then
assign header.sacResult.sacType = DooSeededOrchestrationRules.SacResult.SAC_TYPE_EVENT
assign header.sacResult.eventName = "Awaiting Compliance Check Completion"
assign header.sacResult.reevaluateFlag = "N"
将来の日付で休止
コンプライアンス完了日がオーダー・ヘッダー日付より後になるまで一時停止するルールを作成できます。 たとえば:
-
CompleteCompliancedateがオーダー・ヘッダー日付の後に発生した場合は、コンプライアンス・チェックが実行されます。 一時停止タスクをリリースする準備をします。
一時停止タスクの解放を準備するには、waitDateTimeをコンプライアンス日付に設定します。 waitDateTimeおよびsacResultsの詳細は、「オーケストレーション・プロセスを一時停止するためのガイドライン」を参照してください。
ルールで使用されるコードを次に示します。
If header is a DooSeededOrchestrationRules.DOOHeader
and if headerEFF is a DooSeededOrchestrationRules.FlexContext and
headerEFF isn't null and
header.flexContexts RL.contains headerEFF and
headerEFF.context isn't null and
headerEFF.context equals ignore case "ComplianceDetails" and
headerEFF.getFlexAttributeDateValue("_CompleteCompliancedate") isn't null
headerEFF.getFlexAttributeDateValue("_CompleteCompliancedate") more than header.current_date
then
assign header.sacResult.sacType = DooSeededOrchestrationRules.SacResult.SAC_TYPE_TIMER
assign header.sacResult.waitDateTime = headerEFF.getFlexAttributeDateValue("_CompleteCompliancedate")
一時停止タスクのリリース
一時停止タスクをリリースするルールを作成します。 このトピックで以前に設定した拡張可能フレックスフィールドは参照しません。 かわりに、ルールが使用されます。
-
NULL日付の一時停止ルール
-
将来の日付の一時停止ルール
これは、これらのルールがSacResultに設定した値を使用して、一時停止タスクをリリースするタイミングを決定します。
一時停止タスクをリリースするルールを次に示します。
このルールで使用するコードを次に示します。
If header is a DooSeededOrchestrationRules.DOOHeader
then
assign new DooSeededOrchestrationRules.sacResult SAC = new DooSeededOrchestrationRules.sacResult()
assign header.sacResult = SAC
assign header.sacResult.sacType = DooSeededOrchestrationRules.SacResult.SAC_TYPE_IMMEDIATE
assign header.sacResult.reevaluateFlag = "N"
このルールは、給与パターンを追加したのと同じステップの一時停止ルール列に追加します。