# 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 |
型 | lambda 関数 |
必須 | 必須です。 |
説明 | この lambda 関数は、アクションまたはトリガーで親の object_definition のキーが呼び出されるたびに呼び出されます。HTTP リクエストを作成して、メタデータエンドポイントから動的にスキーマを構築することが可能です。この lambda 関数の出力は、入力項目または出力項目を表すハッシュからなる配列にします。これは Workato スキーマと呼ばれます。詳細についてはこちらを参照してください。 |
使用可能な引数 | connection - connection で定義されたユーザー入力を表すハッシュ。config_fields - このオブジェクト定義を参照したアクションまたはトリガーのコンフィギュレーション項目においてユーザーが入力した内容を表すハッシュ。object_definitions - これを利用すると他の object_definition を参照できます。 |
期待される出力 | Array |
TIP
複数の object_definition を同一の lambda 関数 input_fields
内または lambda 関数 output_fields
内で呼び出し、統合して、より大きな上位集合となる項目セットを表示することもできます。
例 - fields
object_definition は、1つの配列を格納するだけの静的なものにもできます。このオブジェクト定義が参照されると、lambda 関数 fields
はその配列を返します。
object_definitions: {
lead: {
fields: lambda do
[
{ name: "name", type: :boolean },
{ name: "email" },
{ name: "number"}
]
end
}
}
object_definition は動的なものにして、メタデータエンドポイントに対する HTTP リクエストを実行することもできます。このオブジェクト定義が参照されると、lambda 関数 fields
はそのようなリクエストを実行し、レスポンスを受信して、そのレスポンスを同じ配列に取り込み、それを参照元である lambda 関数 input_fields
または lambda 関数 output_fields
に返すことができます。この input_fields
や output_fields
(これらは Workato スキーマと呼ばれます) の定義について、詳しくはこちらを参照してください。
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_definition からスキーマを構築
コードにおいて DRY 原則を保つため、スキーマ定義を別々の object_definition に論理的に分割することをお勧めします。そうした object_definition は、個々に動的に生成することができ、つなぎ合わせることもできます。
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: 2023/8/31 1:07:14