SDKリファレンス - object_definitions
オブジェクト定義は、ターゲットアプリケーションの特定のリソースを表します。 たとえば、SalesforceリードやSnowflake行のスキーマを表します。
これらの定義はハッシュの配列として保存され、入力フィールドと出力フィールドの両方で使用されます。
オブジェクト定義によるコードの重複の回避
オブジェクト定義を1か所に保存し、カスタムコネクター全体で再利用します。
構造
object_definitions: {
[Unique_object_definition_name]: {
fields: lambda do |connection, config_fields, object_definitions|
Array
end
},
[Another_unique_object_definition_name]: {
...
}
},| 属性 | 説明 |
|---|---|
| キー | fields |
| タイプ | ラムダ関数 |
| 必須 | True |
| 説明 | このラムダ関数は、その親object_definitionのキーがアクションまたはトリガーで呼び出されるたびに呼び出されます。 HTTPリクエストを実行して、メタデータエンドポイントからスキーマを動的に構築できます。 このラムダ関数の出力は、入力フィールドまたは出力フィールドを表すハッシュの配列である必要があります。 これはWorkato Schemaと呼ばれます。 詳細についてはWorkato Schemaを参照してください |
| 指定可能な引数 | connection - コネクションで定義された、ユーザー指定の入力を表すハッシュです。 config_fields - このオブジェクト定義を参照したアクションまたはトリガーの設定フィールドから取得した、ユーザー指定の入力を表すハッシュです。 object_definitions - 他のobject_definitionsを参照できるようにします。 |
| 想定される出力 | 配列 |
オブジェクト定義の引数を定義
使用しない場合でも、オブジェクト定義の引数を定義する必要があります。 Workatoは、オブジェクト定義に引数が定義されているかどうかに基づいて、スキーマが静的か動的かを判断します。 スキーマを静的から動的に変更することは後方互換性のない変更と見なされます。変更を有効にするには、レシピの実行を停止し、スキーマを更新する必要があります。
静的オブジェクト定義
lead: {
fields: lambda do
[
{ name: "name", type: :boolean },
{ name: "email" },
{ name: "number"}
]
end
}動的オブジェクト定義
lead: {
fields: lambda do |connection, config_fields, object_definitions|
[
{ name: "name", type: :boolean },
{ name: "email" },
{ name: "number"}
]
end
}Workatoでは、将来の変更によって問題が発生しないように、すべてのobject_definitionsを動的に(引数付きで)定義することを推奨しています。
例 - fields
Object_definitionsは静的にして、単に配列を保存できます。 このオブジェクト定義が参照されると、fields lambda関数はこの配列を返します。
object_definitions: {
lead: {
fields: lambda do |connection, config_fields, object_definitions|
[
{ name: "name", type: :boolean },
{ name: "email" },
{ name: "number"}
]
end
}
}Object_definitionsは動的にして、メタデータエンドポイントにHTTPリクエストを行うこともできます。 このオブジェクト定義が参照されると、fields lambda関数はこのリクエストを行い、レスポンスを受信して、参照元のinput_fieldsまたはoutput_fields lambda関数に返すことができる同じ配列へレスポンスを整形する必要があります。 input_fieldsおよびoutput_fieldsの定義の詳細については、Workato Schemaを参照してください。
object_definitions: {
form: {
fields: lambda do |connection|
get("https://api.unbounce.com/pages/#{connection['page_id']}/form_fields")["formFields"].
map { |field| { name: field["id"] } }
end
}
}例 - 複数のobject_definitionsからのスキーマの構築
コードをDRYに保つため、スキーマ定義を別個のobject_definitionsに論理的に分割することを推奨します。 これらのobject_definitionsは、個別に動的生成して組み合わせることができます。
object_definitions: {
create_object_output: {
fields: lambda do |connection, config_fields, object_definitions|
if config_fields['object'] == 'customer'
[
{
name: 'customer',
type: 'object',
properties: object_definitions['customer_schema']
},
{
name: 'card',
type: 'object',
properties: object_definitions['card_schema']
}
]
elsif config_fields['object'] == 'subscription'
[
{
name: 'customer',
type: 'object',
properties: object_definitions['customer_schema']
},
{
name: 'subscription',
type: 'object',
properties: object_definitions['subscription_schema']
},
{
name: 'card',
type: 'object',
properties: object_definitions['card_schema']
}
]
end
end
}
}Last updated: