注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
現在、Functionsでサポートされている唯一の言語はTypeScriptです。このリファレンスは、TypeScript Functionsでの入力および出力タイプに関する詳細なドキュメンテーションを提供します。
レジストリに公開するためには、TypeScript Functionはすべての入力パラメーターに明示的な型注釈を持つ必要があり、明確な戻り値の型を指定する必要があります。
Typescript関数内から外部APIを呼び出すことはできません。アクションの一部として外部APIを呼び出すには、webhooksを使用します。
現在、Functionsで利用可能なすべてのサポートされている入力と出力のタイプは以下のとおりです:
boolean
string
Integer
、Long
、Float
、Double
number
タイプが一つしかありません。しかし、さらなる型の検証と構造を提供するために、上記のエイリアスのみを@foundry/functions-api
からエクスポートしてサポートしています。これらのタイプを入力と出力として使用するためには、これらのタイプをインポートしてください。LocalDate
およびTimestamp
タイプは、時間情報に使用されます。
Date
タイプをサポートしています。しかし、日付とタイムスタンプを区別するために、@foundry/functions-api
からエクスポートされるより具体的なタイプを提供しています。LocalDate
はカレンダーの日付を表し、Timestamp
は時間の瞬間を表します。入力パラメーターについては、オプションのパラメーターはvarName?: <type>
として宣言されます。例えば、オプションの整数パラメーターvalue
を持つ関数は、パラメーターとしてvalue?: Integer
を持つでしょう。
関数は、<type> | undefined
のタイプを指定することで、オプションの戻り値タイプを宣言することができます。例えば、Integer
または値を返さない可能性がある関数は、戻り値のタイプとしてInteger | undefined
を持つでしょう。
string[]
は文字列の値のリストです)
Integer[][]
は整数値のリストのリストです)Set<string>
は文字列の値のセットです)@foundry/functions-api
パッケージのFunctionsMap
を使用してサポートされています。FunctionsMap<K, V>
表記を使用して宣言できます。ここでK
はキータイプ、V
は
値のタイプです。キーはスカラータイプまたはオントロジーオブジェクト(例えば、FunctionsMap<Employee, string>
)であることができます。値は任意のサポートされているタイプであることができます。集計は、オントロジーオブジェクト上でのbucketed aggregationsを取得する際に返されるタイプであり、他のプラットフォームの部分、例えばWorkshopのチャートで使用するためにFunctionsから返されることができます。
2つの集計タイプがサポートされています:
TwoDimensionalAggregation
は、単一のバケットキーを数値(Double
として表現)にマップします。例えば、TwoDimensionalAggregation<string>
は、各バケットに対する数値をstring
バケットキーにマップします。これは特定の職種の従業員の数を表すような集計を表現するために使用できます。ThreeDimensionalAggregation
は、2つのバケットキーを数値にマップします。例えば、ThreeDimensionalAggregation<string, string>
は、string
バケットキーをネストしたバケットの配列にマップします。これらのネストしたバケットはそれぞれ、数値にマップするstring
キーを持っています。これは各従業員の職種と自宅オフィスごとの従業員数を表すような集計を表現するために使用できます。両方の集計タイプは関数から返され、Workshop Chartsなどのプラットフォームの他の部分で使用可能になります。
集計はいくつかのタイプでキー付けすることができます:
boolean
バケットは、true
またはfalse
の値を表しますstring
バケットは、カテゴリ値を表すために使用できますIRange
(@foundry/functions-api
から)バケットは、バケットキーが値の範囲である集計を表します。これらは、ヒストグラムまたはチャートの日付軸を表すために使用できます。
Integer
とDouble
を含む、は数値上のバケット化された集計を表しますLocalDate
とTimestamp
を含む、は日付範囲のバケット化された集計を表しますオブジェクトタイプは、インターフェースが生成される前にリポジトリにインポートする必要があります。オントロジーのインポートについて詳しくはこちら。
オントロジーで設定された各オブジェクトタイプは、Functionsコードで使用するためのTypeScriptインターフェースに変換されます。すべての生成されたタイプは@foundry/ontology-api
パッケージからエクスポートされます。詳細は、TypeScriptのオントロジーAPIの詳細なドキュメンテーションをご覧ください。
objectRid
またはオブジェクトタイプと主キーを渡す必要がありますオブジェクトのコレクションを関数に入力および出力する方法は2つあります:具体的なオブジェクトのコレクション(配列やセットなど)またはオブジェクトセット。
employees: Employee[]
またはemployees: Set<Employee>
を取ることができ、従業員オブジェクトの配列やセットを受け取ることができます
objectRids
またはオブジェクトロケーターのリストを渡す必要があります@foundry/ontology-api
からエクスポートされるObjectSet<>
インターフェースを使用して、オブジェクトセットを関数に渡すことができます。例えば、あなたの関数はemployees: ObjectSet<Employee>
を取ることができ、従業員のオブジェクトセットを受け取ることができます。オブジェクトセットはフィルタリング、検索、集計操作を可能にします。オブジェクトセットAPIについて詳しくはこちら。
objectSetRid
を渡す必要があります。オブジェクトセットサービスは、一時的な時間でオブジェクトセットを保存することを許可し、関数のパラメーターとして使用するための短期間のオブジェクトセットを作成することを可能にしますObjectSet<>
インターフェースを使用することは、配列よりも好ましいことが多いです。なぜなら、それはより良いパフォーマンスを実現し、10,000以上のオブジェクトを関数に渡すことができるからです。
プリンシパルは、Foundryユーザーアカウントまたはグループを表します。これらのタイプは、関数に渡され、ユーザーまたはグループに関連する情報、例えばグループの名前やユーザーの名前やメールアドレスにアクセスすることを許可します。すべてのプリンシパルタイプは@foundry/functions-api
パッケージからエクスポートされます。
User
は常にユーザー名を持ち、firstName
、lastName
、またはemail
を持つことができます。また、Principal
に関連するすべてのフィールドも含まれています。Group
は名前を持ちます。また、Principal
に関連するすべてのフィールドも含まれています。Principal
はUser
またはGroup
のいずれかです。与えられたPrincipal
がUser
かGroup
かを判断するために、type
フィールドを調べることができます。User
とGroup
の特定のフィールドに加えて、Principal
にはid
、realm
、およびattributes
の辞書があります。User
、Group
、またはPrincipal
をパラメーターとして関数に渡すだけでなく、@foundry/functions-api
からエクスポートされるUsers
オブジェクトを使用して、UsersまたはGroupsをアドホックに取得することができます
getUserByIdAsync
メソッドは、userIdをstring
として取り、Promise<User>
を返しますgetGroupByIdAsync
メソッドは、groupIdをstring
として取り、Promise<Group>
を返します通知タイプは関数から返され、プラットフォームで送信するべき通知を柔軟に設定することができます。例えば、User
やオブジェクトタイプなどのパラメーターを取り、設定されたメッセージを持つ通知を返す関数を作成することができます。
Notification
は2つのフィールドから構成されます:ShortNotification
とEmailNotificationContent
。ShortNotification
は通知の要約版を表し、Foundryプラットフォーム内で表示されます。短いheading
、content
、およびLink
のコレクションを含みます。EmailNotificationContent
は通知のリッチバージョンを表し、外部のメール経由で送信することができます。subject
、ヘッドレスHTMLからなるbody
、およびLink
のコレクションを含みます。Link
はユーザー向けのlabel
とlinkTarget
を持っています。LinkTarget
はURL、OntologyObject
、またはFoundry内の任意のリソースのrid
であることができます。Notifications APIの使用方法の例については、how-to guideを参照してください。
また、Functionsで使用するためのカスタム入力および出力タイプを定義することもできます。カスタムタイプはTypeScriptインターフェースとして定義されるか、またはインラインの匿名タイプとして定義することができます。
?
オプショントークンまたはフィールドのタイプがundefined
とのユニオンを通じてサポートされています。カスタムタイプの例:
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
import { Function, LocalDate } from "@foundry/functions-api"; import { Employee } from "@foundry/ontology-api"; interface EmployeeGraph { value: Employee; // 値としての社員情報 connections: EmployeeGraph[]; // その社員との関連性を持つ他の社員情報 } interface EmployeeFilter { maxStartDate?: LocalDate; // ?トークンを使用してオプションにしています role: string | undefined; // undefinedとのユニオンを使用してオプションにしています } // この関数は、名前付きカスタムタイプを入力として受け取り、名前付きカスタムタイプを出力します @Function() public myEmployeeSearchAround(root: Employee, filter: EmployeeFilter): EmployeeGraph { ... } // この関数は、匿名のカスタムタイプを出力します @Function() public getAverageAndMedianAge(employees: Employee[]): { average: Double, median: Integer } { ... }
Promise<Integer>
を返す関数は、関数リポジトリに単に Integer
を返すものとして表示されます。関数パラメーターのデータ型を宣言することに加えて、パラメーターの取り扱いに関していくつかのオプションがあります。
TypeScript 関数は、オプションのパラメーターとデフォルト値を持つパラメーターに対応しています。関数パラメーターがオプションの場合、関数リポジトリにそのように公開され、クライアントがそのパラメーターを渡さずに関数を実行できるようになります。これは、特定のユースケースで上書きできる簡単なデフォルトを関数に提供するのに役立ちます。
以下は、オプションのパラメーターを持つ関数の例です:
Copied!1 2 3 4 5 6 7 8 9 10
@Edits(Ticket) @OntologyEditFunction() public updateDueDate(ticket: Ticket, dueDate?: LocalDate): void { if (dueDate) { ticket.dueDate = dueDate; } else { // デフォルトで、期限を来週に設定 ticket.dueDate = LocalDate.now().plusDays(7); } }
以下はデフォルト値を持つ例の Function です:
Copied!1 2 3 4 5
@Function() // 顧客のリスクファクターを計算する関数 public computeRiskFactor(customer: Customer, weight: Double = 0.75): Double { // ここにコードを記述 }
weight
の値は、クライアントが特定の値を渡さない限り、デフォルトで 0.75
になります。
Functionの定義に、JSDoc の仕様に準拠したドキュメントが含まれている場合、このドキュメントは検出され、Functionリポジトリに公開されます。これにより、ユーザーは機能の説明に基づいて機能を検索でき、Functionの各入力パラメーターが意味する内容についてさらに詳しく説明できます。
以下は、リポジトリに公開されるドキュメントが付いた機能の例です:
Copied!1 2 3 4 5 6 7 8 9 10 11 12
/** * 与えられた2つの映画に対して、類似性スコアを計算します。ここで、0は全くの無関連性を、 * 1は完全な類似性を表します。 * * @param movie1 比較する最初の映画 * @param movie2 比較する二番目の映画 * @param weight 類似性アルゴリズムに使用する閾値 */ @Function() public computeSimilarityScore(movie1: Movie, movie2: Movie, weight: Double = 0.75): Double { }