Intelligent Situation Automationは、SAP BTP上で提供されているサービスです。SAP S/4HANA Cloudの 「 Situation Handling (状況処理) 」 が業務上の状況を検知してユーザーに通知を行い、特定の作業を促すものであるのに対し、「 Intelligent Situation Automation 」 は、Situation Handlingから受け取った状況に関する情報に基づいて、特定のタスクを自動実行します。
今回のブログでは、「 入庫予定数量の不足検知と、代替サプライヤへの購買発注 」 という拡張シナリオにて、Intelligent Situation Automationの活用シナリオの例をご紹介します。また、この拡張を実装する上での注意点につきましてもまとめておりますので、ぜひ最後までご覧ください。
今回のシナリオは以下の図の通りとなります。
シナリオ概要
従来の業務プロセスではマンパワーで発注の欠陥を発見して処理が必要であったところを、
SAP S/4HANA CloudのSituation HandlingとIntelligent Situation Automationの組み合わせを活用することにより、半自動的に欠陥をカバーするタスクを実行することが可能です。これにより、業務が抱える異常をいち早く検知し、リスク回避と業務効率化の両面から正常な業務の遂行をサポートします。
今回の実装シナリオのアーキテクチャ
先にアーキテクチャ図を用いて全体を俯瞰してみましょう。基本は図中に注釈のある通りとなりますので、ここでは技術的な補足点をいくつか述べていきます。
データコンテキストの確認
{
"definitionId": "<ワークフローのID>",
"context": {
"<ワークフロー内で定義された入力パラメータ>"
}
}
https://api.sap.com/api/SPA_Workflow_Runtime/path/post_v1_workflow_instances
一方、Intelligent Situation Automationから送信されるデータコンテキストは次のように一定です。
{
"input": {
"dataContext": "<Situationタイプごとに定義されている出力パラメータ>"
}
}
従って、CAPアプリやSAP Integration Suite – Cloud Integration等のミドルウェアを挟んで、パラメータを整形・マッピングする必要があります。今回のCAPアプリケーションでは、内部で次のようにデータ整形を行なっています。
try {
const payload = JSON.parse(req.body.input.dataContext);
console.log("[INFO] Payload successfully parsed as follows: ", payload);
const data = {
definitionId: "<SAP Build Process AutomationでデプロイしたワークフローのID>",
context: {
"companycode": payload.I_PURCHASEORDERITEMAPI01.I_PURCHASEORDERAPI01.COMPANYCODE,
"purchaseorder": payload.I_PURCHASEORDERITEMAPI01.PURCHASEORDER,
"quantity": String(Number(payload.I_POSITNCONFQTYDEFICIT.ORDEREDQUANTITY) - Number(payload.I_POSITNCONFQTYDEFICIT.CONFIRMEDQUANTITY)),
"material": payload.I_POSITNCONFQTYDEFICIT.MATERIAL,
"purchasinggroup": payload.I_POSITNCONFQTYDEFICIT.PURCHASINGGROUP,
"purchasingorganization": payload.I_POSITNCONFQTYDEFICIT.PURCHASINGORGANIZATION,
"plant": payload.I_POSITNCONFQTYDEFICIT.PLANT,
"supplier": payload.I_POSITNCONFQTYDEFICIT.SUPPLIER
}
}
const SBPA = await cds.connect.to("SBPA");
const response = await SBPA.send({
method: 'POST',
path: '/workflow/rest/v1/workflow-instances',
data: data
})
res.send(`SBPA instance has been started: ${response.id}`);
} catch (err) {
console.log(`[Error] error has been caught while starting SBPA instance: ${err}`);
res.status(500);
res.send(`[Error] error has been caught while starting SBPA instance: ${err}`);
}
個別のSituationの種類ごとの具体的なdataContextの内容についてはIntelligent Situation Automationの「状況自動化の管理」アプリからご確認ください。
今回のシナリオについて、デモ動画をご用意しました。ぜひご覧ください。
本デモシナリオの実装・検証を通して見えてきた、Intelligent Situation Automationの全体像について、自分なりに図式化して、動作機序を視覚的にまとめてみます。
Intelligent Situation Automationの全体像
Intelligent Situation Automationは大きく以下の2つのコンポーネントから成り立っているようです。
これを踏まえ、以下に動作機序をまとめます。
ここに記載された内容は2023年11月時点での検証の結果明らかになったことであり、将来時点で状況が異なる可能性がある点には十分ご注意ください。
本記事では、SAP S/4HANA Cloud – Situation Handling / SAP Intelligent Situation Automation / SAP Build Process Automation の3つの製品とカスタムCAPアプリによる拡張シナリオをご紹介しました。