注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
以下のドキュメントは TypeScript v1 関数に固有のものです。オントロジー SDK のサポートや設定可能なリソース要求など、より充実した機能を利用するには、TypeScript v2 への移行を推奨します。
TypeScript ↗ 関数は、TypeScript クラス ↗のメソッドとして宣言されます。関数が検出され、公開されるには、次の要件を満たす必要があります。
public である必要があります。functions-typescript/src/index.ts ファイルからエクスポートされている必要があります。@foundry/functions-api パッケージからインポートした次のいずれかのデコレーターを付ける必要があります。
@Function() を使用します。@OntologyEditFunction() を使用します。
@OntologyEditFunction() メソッドを使用する場合、@Edits([object type]) デコレーターでオブジェクトの来歴情報を任意で指定できます。@Edits([object type]) デコレーターがない場合、コードの静的解析により、可能な範囲でオブジェクトの来歴情報が推論されます。@Query({ apiName: "userDefinedAPIName"}) を使用します。このデコレーターは @Function デコレーターと併用せず、単独で使用する必要があります。この方法で正しくエクスポートされた関数の例を次に示します。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20import { Function, OntologyEditFunction, Query, Integer, Edits } from "@foundry/functions-api"; import { Employee, Objects, ObjectSet } from "@foundry/ontology-api"; export class MyUsefulFunctions { @Function() public incrementNumber(x: Integer): Integer { return x + 1; } @Edits(Employee) @OntologyEditFunction() public updateName(employee: Employee, newName: string): void { employee.firstName = newName; } @Query({ apiName: "getEmployeesByName" }) public async getEmployeesByName(name: string): Promise<ObjectSet<Employee>> { return Objects.search().employee().filter(employee => employee.firstName.exactMatch(name)); } }
private のメソッドや、該当するデコレーターが付けられていないメソッドは、関数レジストリに公開されません。これにより、ユーザーは再利用や整理のためにヘルパー関数やユーティリティを作成できます。
TypeScript リポジトリ内の各関数は、クラス名とメソッド名によって一意に定義されます。クラス名またはメソッド名を変更すると、その関数は新しい識別子で公開されます。