注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
ユーザーの Workshop モジュールは、アラートの割り当てや(再)優先順位付けについて意思決定を支援するデータや可視化を豊富に提供しています。次に、アラートの重大度に関する質的評価に基づいて、補償バウチャーや顧客への手紙を提供できるようにしましょう。
一部の組織では、パイプラインやバックグラウンド Function にエンコードされた一連のルールに基づいて、バウチャープロセスを完全に自動化することができます。ただし、私たちの実装では、アナリストが 3 つの可能な重大度レベルから選択できるようにし、それぞれが乗客のフライヤーステータスプロパティを考慮したビジネスロジックに基づいてバウチャーアクションをトリガーします(例えば、Platinum
ステータスの乗客は、Silver
ステータスの乗客よりも大きなバウチャーを受け取ることが予想されます)。バウチャーの決定は、その後、乗客の status
プロパティに格納され、下流でのさらなるアクションが可能となります。
Function でオントロジーのデータを変更したい場合(一時的な、プレゼンテーションレベルの変更ではない場合)、@OntologyEditFunction()
デコレータといくつかの他の要件を使用する必要があります。以下の手順を明確にするために、こちらでこれらの要件について読んでください。
Functions リポジトリの ../src/index.ts
ファイルを開きます。
MyFunctions クラスの下部(ただし、まだ内部)に新しい Function 用のスペースを確保します。
下記のコードブロックを挿入し、@Function()
デコレータと public...
行が上の Function と揃うようにします。また、以下の置換を行います。
jmeierAlertVoucher
: jmeier
関数名を自分の名前に置き換えます。JmeierFlightAlert
: この API 名をあなたのフライトアラートオブジェクトタイプの API 名に置き換えます。jmeierPassenger
: これを、OMA に表示されるあなたのフライトアラートとあなたの乗客オブジェクトタイプ間のリンクの API 名に置き換えます。下の拡大可能な画像を参照してください。コードアシストが実行されている場合は、@OntologyEditFunction
が認識されないことにすぐに気付くでしょう。以前の演習では、不足しているタイプを手動で Functions API インポートステートメントに追加しましたが、コードアシスト機能を使用して自動的に追加することもできます。
ポップアップメニューから import '@OntologyEditFunction' from module "foundry/functions-api"
を選択します。デコレータがインポートステートメントに追加されます。
@OntologyEditFunction()
// 入力は 1) "alert" というエイリアスのついた単一のフライトアラートと 2) "severity" 評価です。OntologyEditFunctions では、
// "void" タイプを返す必要があります。
public jmeierAlertVoucher(alert : JmeierFlightAlert, severity : string): void {
// 与えられたアラートに関連付けられた乗客を取得します。ここでの jmeierPassenger は、リンクタイプの
// API 名であり、オブジェクトタイプの API 名ではありません。OMA を参照して、乗客とフライトアラート
// オブジェクトタイプ間のリンクの API 名を取得してください。
const passengers = alert.jmeierPassengers.all();
// 各乗客について、フライヤーステータス + 与えられた "severity" の組み合わせを評価し、ビジネスロジックに
// 従って "status" プロパティにバウチャー決定をプッシュします。
for (const passenger of passengers) {
if (severity === "Max" && ((passenger.flyerStatus === "Platinum") || (passenger.flyerStatus === "Gold"))) {
passenger.status = "Provide $500 Travel Voucher";
}
else if (severity === "Med" && ((passenger.flyerStatus === "Platinum") || (passenger.flyerStatus === "Gold"))
|| severity === "Max" && passenger.flyerStatus === "Silver") {
passenger.status = "Provide $250 Travel Voucher";
}
else if (severity === "Min" && ((passenger.flyerStatus === "Platinum") || (passenger.flyerStatus === "Gold"))
|| severity === "Med" && passenger.flyerStatus === "Silver") {
passenger.status = "Provide Upgrade Voucher";
}
// 上記の基準を満たさない顧客(例: ステータスが "None" の場合)は、手紙を受け取ります。
else passenger.status = "Provide Customer Letter";
}
}