分析概要ウィジェット関数

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

関数

このウィジェットはドキュメントテンプレートでのみ利用可能です。

オブジェクト上の関数 ウィジェットでは、TypeScript関数を使用して、テンプレートからドキュメントが生成されるときに挿入される値を計算することができます。

関数を入力パラメーターと接続して、生成時にパラメーターを渡すことができます。また、オブジェクト上の関数 セクションは、セクションジェネレーターテーブル行ジェネレーターなどのジェネレーターセクションにネストすることもできます。これにより、オブジェクトセットの各オブジェクトに対して別々の値を計算することができます。ジェネレーター内部でバッチ処理された関数を設定することをお勧めします。

notepad_functions_on_objects_section

バッチ処理された関数

バッチ処理された関数とは、オブジェクトセットを引数として受け取り、オブジェクトセット内の各オブジェクトに対する結果を返す関数です。ユーザーは、ジェネレーターセクション内にネストされたオブジェクト上の関数 セクションに対してバッチ処理された関数を設定することができます。

以下は、バッチ処理された関数を設定したオブジェクト上の関数 セクションの例です:

notepad_widgets_batched_function

バッチ処理された関数を使用すると、テンプレートからドキュメントを生成する時間が大幅に短縮されます。これは、関数の実行にかかるオーバーヘッドコストが原因です。非バッチ処理関数は、オブジェクトセット内の各オブジェクトに対して1回ずつ実行する必要がありますが、バッチ処理関数はオブジェクトセット全体で1回だけ実行すればよいからです。

オブジェクト上の関数 セクションをバッチ処理された関数で設定する場合、オブジェクトセット引数はジェネレーターからのオブジェクトセットで設定する必要があります。このテンプレート入力は、周囲のジェネレーターセクションで設定されたオブジェクトセットを参照します。

バッチ処理された関数には、オブジェクトセット引数以外の引数がある場合があります。

経験豊富な Foundry ユーザーは、関数を利用したプロパティに馴染みがあるかもしれません。バッチ処理された関数は、関数を利用したプロパティと同様のものです。

バッチ処理された関数の作成

バッチ処理された関数は、オブジェクトセットを引数として取り、各オブジェクトを対応する結果にマッピングするFunctionsMapを返します。詳細については、受け入れ可能な関数の入力と出力のセクションを参照してください。

たとえば、Flight Alert オブジェクトを取り込み、その遅延に基づいてアラートの緊急性を計算する非バッチ処理関数を考えてみましょう:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 @Function() public getAlertUrgency(flightAlert: FlightAlertWorkshopTutorial): string { const hoursDelayed = flightAlert.timeOfDelayHours if (hoursDelayed! > 4) { return "High"; } // 4時間以上の遅延の場合、緊急度は「High」 else if (hoursDelayed! > 2) { return "Medium"; } // 2時間以上4時間以下の遅延の場合、緊急度は「Medium」 else { return "Low"; } // 2時間以下の遅延の場合、緊急度は「Low」 }

この関数のバッチ版は FlightAlertWorkshopTutorial オブジェクトのセットを入力とし、FunctionsMap<FlightAlertWorkshopTutorial, string> を返します。返された FunctionsMap は、FlightAlertWorkshopTutorial オブジェクトとその緊急性をマッピングしています。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 @Function() public flightAlertCalculateUrgency(flightAlerts: ObjectSet<FlightAlertWorkshopTutorial>): FunctionsMap<FlightAlertWorkshopTutorial, string> { const map = new FunctionsMap<FlightAlertWorkshopTutorial, string>(); flightAlerts.all().forEach(flightAlert => { const hoursDelayed = flightAlert.timeOfDelayHours // フライトの遅延時間が4時間以上の場合、緊急度を「高」と設定 if (hoursDelayed! > 4) { map.set(flightAlert, "High") } // フライトの遅延時間が2時間以上4時間未満の場合、緊急度を「中」と設定 else if (hoursDelayed! > 2) { map.set(flightAlert, "Medium") } // フライトの遅延時間が2時間未満の場合、緊急度を「低」と設定 else { map.set(flightAlert, "Low") } }); return map; }

受け入れられる関数の入力と出力

非バッチ関数に必要な出力

非バッチ関数は、Notepad テンプレートで使用するために、以下のいずれかのタイプを返す必要があります:

  • Boolean
  • Date
  • Double
  • Float
  • Integer
  • Long
  • String

バッチ関数に必要な入力と出力

有効なバッチ関数は、少なくとも 1 つの引数として ObjectSet<K> タイプを持ち、戻り値のタイプとして FunctionsMap<K, V> を持つ必要があります。タイプ V は、以下の受け入れられるタイプのいずれかでなければなりません:

  • Boolean
  • Date
  • Double
  • Float
  • Integer
  • Long
  • String

セットやリストを引数として持つ関数は現在、有効なバッチ関数として認められていません。

ウィジェットプロパティ

  • バッチ/非バッチ: バッチ関数または非バッチ関数を設定するかどうかを選択できます。関数ウィジェットがジェネレーターセクション内にネストされている場合にのみ表示されます。
  • 関数: 実行する関数。上記でバッチオプションが選択されている場合、バッチ関数のみが利用可能です。
  • 関数バージョン: 実行する関数のバージョン。
  • 関数入力: 関数に渡す値。利用可能なパラメーターは選択された関数によって定義されます。
  • 関数結果: 実行後に関数によって生成された出力。結果はプレーンテキストや Markdown などのさまざまな形式で解析できます。Markdown 解析は現在、非バッチ関数のみサポートされています。

A Notepad with a Markdown preview generated by a functions on objects widget.

テンプレート設定

  • 関数入力: 選択された関数に応じて、異なる予想入力値をパラメーターによってテンプレート化できます。

埋め込まれた Functions on Objects セクションもこの方法でジェネレーターセクションに接続できます。