Supply Chain Orchestrator 向け BPL チュートリアル
InterSystems Supply Chain Orchestrator™ では、ユーザが作成および構成する相互運用プロダクション内のビジネス・プロセスにより問題分析と解決ロジックが提供されます。プロダクションにはビジネス・プロセスを含める必要があり、それぞれのビジネス・プロセスが特定の種類の問題を分析します。ビジネス・プロセス・ロジックを含むビジネス・プロセスを作成するグラフィカル・エディタを使用して、管理ポータルで各ビジネス・プロセスを作成できます。
このチュートリアルでは、ビジネス・プロセスを製品により提供される残りの問題解決ロジックに接続するために必要な、ビジネス・プロセス設計/構成のステップについて説明します。ワークフロー・シナリオの作成については別途取り上げます。
オンライン学習パス "Building Smart Real-Time Supply Chain ApplicationsOpens in a new tab" も参照してください。これには、BPL ビジネス・プロセスの作成に関する情報が含まれています。基本的な情報については、このオンライン・トレーニングOpens in a new tabと製品ドキュメントを参照してください。
一般的な構造
問題分析の一般的なビジネス・プロセスには、全体的に以下のようなシーケンスがあります。
-
コンテキストを初期化します。このステップでは、コンテキスト・オブジェクト内の問題と関係するビジネス・オブジェクトを追跡します。
-
分析を実行します。この分析内で、以下を実行します。
-
分析値を指定します。具体的には、問題の重大度、緊急度、根本原因、および影響分析です。
-
ワークフローを使用する場合、<call> 要素を使用して、適切な時点でワークフロー・オペレーションを呼び出します。
-
ワークフローを使用している場合、アドオン・ツールを使用して、ワークフロー・ユーザのための推奨事項を作成します。ビジネス・プロセスで問題解決のためのオプションを提供する場合は、オプションの詳細にアクセスするためにいくつかの追加のステップが必要です。"ワークフロー・シナリオの追加" を参照してください。
分析は必然的にユース・ケースに依存するため、チュートリアルではその一部のみを示します。
-
-
問題に分析結果を保存します。そうすることで、API と UI を介して結果にアクセスできるようになります。
コンテキストの初期化
Supply Chain Orchestrator で使用するためにビジネス・プロセスを初期化するには、以下の手順を実行します。
-
[コンテキスト] タブで、以下の値を指定します。
-
[リクエスト・クラス] — SC.Core.BP.Message.IssueAnalysisRequest
-
[レスポンス・クラス] — Ens.ResponseOpens in a new tab
-
[コンテキスト・クラス] — SC.Core.BP.IssueContext (またはこのクラスのサブクラス)
-
-
BPL の最初のステップの 1 つとして、<assign> 要素を使用して、以下のように context.issueId を設定します。
-
多くの場合、問題は注文や出荷など、ビジネス・オブジェクトまたはトランザクションのインスタンスと結び付けられています。そのオブジェクトについての情報を BPL プロセスで利用できるようにするには、<code> 要素を追加して、必要な値を取得し、それを context オブジェクトのプロパティに割り当てます。これを BPL の最初のステップの 1 つとして実行してください。
インスタンスの影響を受けるビジネス・オブジェクトまたはトランザクションを取得するには、以下に示すように構文 context.getImpactedObject() を使用します。getImpactedObject() メソッドは、選択したコンテキスト・クラス (SC.Core.BP.IssueContext) により提供されます。以下に例を示します。
-
BPL の最初のステップの 1 つとして、<assign> 要素を使用して、以下のように context.analysis.processName を request.targetProcess に設定します。
このステップにより、ビジネス・プロセス名がコンテキストに保存され、分析結果と共に問題に保存し直すことができます。この操作は、異なるビジネス・プロセスを同じ問題の分析に使用できるようにするために必要になります。
分析値の指定
コンテキストを設定したら、重大度、緊急度、根本原因、影響などを判断する実際のビジネス・ロジックを含むステップを追加します。このチュートリアルでは、これらの詳細は説明しません。これらの値を決定したら、context.analysis オブジェクトに保存します。プロパティの名前の詳細は、"分析のプロパティ" を参照してください。
分析値を指定するには、複数の <assign> 要素を使用します。各要素が 1 つのプロパティを設定します。以下に例を示します。
分析のプロパティ
分析オブジェクトは、クラス SC.Core.Data.Internal.IssueAnalysis により定義されます。これには以下のプロパティがあり、以下の説明に従って設定できます。
-
severity — 数値スケールで、問題の重大度を指定します。
-
urgency — 数値スケールで、問題の緊急度を指定します。
-
rootCauseAnalysis — わかりやすい用語で、問題の根本原因を説明します。
-
impactAnalysis — わかりやすい用語で、分析結果を説明します。
データ型と長さの制限については、ローカルのクラス・リファレンスまたは任意の IDE で "SC.Core.Data.Internal.IssueAnalysis" を参照してください。
分析結果の問題への保存
ビジネス・ロジックが完了したら、分析の詳細を問題に保存する <code> 要素を BPL に含める必要があります。
-
ビジネス・プロセスにワークフローが含まれない場合、以下の構文を使用して分析を問題に保存します。
do context.saveAnalysisToIssue()
以下に例を示します。
-
ビジネス・プロセスでワークフローを使用する場合は、<code> 要素には代わりに以下の 2 行のコードが必要です。
set context.analysis.workflowId = $listget(process.%MasterPendingResponses.GetAt(1),1) do context.saveWorkflowAnalysisToIssue()
この追加の手順により、ワークフロー ID が保存されます。この ID は、現在のワークフローが閉じられる前に新たな分析が実行されるためにワークフローをクリアする必要がある場合に使用できます。
ビジネス・プロセスのテスト
問題分析のビジネス・プロセスを構成したら、API を介して問題の分析を手動で実行できます。
分析 APIOpens in a new tab を使用することもできます。これには、指定されたビジネス・プロセスを使用して問題分析を実行し、その後分析結果を取得する方法が含まれています。問題分析を実行するには、以下の API 呼び出しを使用します。
POST {{IRIS-SERVER}}/scbi/v1/runissueanalysis/ISSUE_ID
この際に、本文に以下の JSON メッセージを含めます。
{ "processName": "Your business process name" }
この呼び出しが正常に返されたら、以下の API 呼び出しを使用して分析の詳細を取得できます。
GET: {{IRIS-SERVER}}/scbi/v1/issues/ISSUE_ID
応答の例を以下に示します。
{
"ID": "877",
"recordCreatedTime": "2022-10-15T14:32:55.472Z",
"lastUpdatedTime": "2022-10-17T09:50:35.180Z",
"description": "Sales orders which were shipped late compared to the committed ship date",
"triggerType": "KPI",
"triggerObjectId": "SalesOrderLateShipVsCommitted",
"impactedObjectType": "SalesOrder",
"impactedObjectId": "d60924c1-ec18-4de8-963d-c569d75fb201",
"severity": 2,
"urgency": 3,
"status": "workflow",
"latestAnalysis": {
"recordCreatedTime": "2022-10-17T09:50:35.174Z",
"lastUpdatedTime": "2022-10-17T09:50:35.179Z",
"issueId": 877,
"runSequence": 3,
"processName": "MfgOrderProcess",
"severity": 2,
"urgency": 3,
"rootCauseAnalysis": "Order expected to be late due to a delayed maintenance
caused by a late shipment of a part needed. ",
"impactAnalysis": "Serious customer satisfaction concerns, and a penalty of $50K.",
"workflowId": "54",
"status": "workflow",
"resolution": "none",
"scenarios": [
{
"optionNumber": "A",
"optionName": "Option A",
"description": "Move the sales order to Hamburg plant",
"costImpact": 1500,
"timeImpact": 36,
"supportingData": "Impact: The order will be fulfilled on time, with
extra $1500 shipping cost. Extra work load on Hamburg plant will
require an early maintenance window.",
"feasibility": 1,
"recommended": 1
},
{
"optionNumber": "B",
"optionName": "Option B",
"description": "Wait for the part, complete the maintenance, and
use expedited shipping once done.",
"costImpact": 500,
"timeImpact": 0,
"supportingData": "Impact: $2000 extra shipping cost. Order expected
to be 2 days late.",
"feasibility": 1,
"recommended": 0
},
{
"optionNumber": "C",
"optionName": "Option C",
"description": "Leverage spare parts in Munich plant and redirect
current shipment to Munich.",
"costImpact": 12000,
"timeImpact": 0,
"supportingData": "Impact: Current sales order will be done on time,
but this will put $250,000 revenue at risk at Munich plant due to
the delayed maintenance.",
"feasibility": 1,
"recommended": 0
}
]
}
}