Warning

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

16 - オントロジー編集関数の作成

この内容は、learn.palantir.com でも以下の内容をご覧いただけますが、アクセシビリティの観点から、ここに掲載しています。

📖 タスクの概要

ユーザーの Workshop モジュールは、アラートの割り当てや(再)優先度付けに関する意思決定を助けるための多くのデータと可視化を提供します。次に、アラートの深刻度の定性的評価に基づいて、補償バウチャーや顧客への手紙を提供できるようにしたいと考えています。

一部の組織では、パイプラインやバックグラウンド Function にエンコードされた一連のルールに基づいて、バウチャープロセスを完全に自動化することができます。しかし、今回の実装では、アナリストが3つの可能な深刻度レベルから選択できるようにし、それぞれのレベルが、乗客のフライヤーステータスプロパティ(例えば、Platinum ステータスの乗客は Silver ステータスの乗客よりも大きなバウチャーを受け取ることが期待される)を考慮したビジネスロジックに基づいてバウチャーアクションをトリガーします。バウチャーの決定は、その後、乗客の status プロパティに記載され、下流でさらなるアクションが取られます。

📚 推薦文献(約2分間の読み物)

Function でオントロジー内のデータを変更したい場合(一時的な、プレゼンテーションレベルの変更とは異なる)、@OntologyEditFunction() デコレータを使用し、他にもいくつかの要件が必要になります。これらの要件についてはこちらを参照してください。これにより、以下の説明がより明確になります。

🔨 タスクの説明

  1. Functions リポジトリの ../src/index.ts ファイルを開きます。

  2. MyFunctions クラスの内部にある(ただし、上部にはない)新しい Function 用のスペースを確保します。

  3. 以下に示すコードブロックを挿入し、@Function() デコレータや public... 行が上の Function と同じ位置になるようにします。また、以下の置換を行ってください。

    • jmeierAlertVoucher: jmeier 関数名を あなたの 名前に置き換えます。
    • JmeierFlightAlert: この API 名を あなたの フライトアラートオブジェクトタイプの API 名に置き換えます。
    • jmeierPassenger: これを あなたの フライトアラートと あなたの 乗客オブジェクトタイプ間のリンクの OMA で表示される API 名に置き換えます。下の拡大可能な画像を参照してください。

  4. もし Code Assist が実行されている場合、@OntologyEditFunction が認識されないことにすぐに気付くでしょう。これまでの演習では、不足しているタイプを手動で Functions API インポートステートメントに追加していましたが、Code Assist 機能を使って自動的に追加することもできます。

    • 赤く下線が引かれたテキストにマウスオーバーし、以下の画像に示すように左側の黄色い電球(💡)アイコンをクリックします。
  5. ポップアップメニューから import '@OntologyEditFunction' from module "foundry/functions-api" を選択します。デコレータがインポートステートメントに追加されます。

    • もし Code Assist が実行されていないか、💡 アイコンが表示されない場合は、OntologyEditFunction を手動で Functions API インポートステートメントに追加してください。

    @OntologyEditFunction()
            // 入力は、1) "alert" としてエイリアスされた単一のフライトアラートと 2) "severity" レーティングです。OntologyEditFunctions では、
            // "void" タイプを返す必要があります。
            public jmeierAlertVoucher(alert : JmeierFlightAlert, severity : string): void {
    
                // 与えられたアラートに関連付けられた乗客を取得します。ここで、jmeierPassenger はリンクタイプの API 名であり、
                // オブジェクトタイプの API 名ではありません。乗客とフライトアラートのオブジェクトタイプ間のリンクの API 名を
                // OMA から取得してください。
                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";
                }
    
            }