SDKリファレンス - object_definitions

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

オブジェクト定義は、ターゲットアプリケーションの特定のリソースを表します。 たとえば、SalesforceリードやSnowflake行のスキーマを表します。

これらの定義はハッシュの配列として保存され、入力フィールドと出力フィールドの両方で使用されます。

オブジェクト定義によるコードの重複の回避

オブジェクト定義を1か所に保存し、カスタムコネクター全体で再利用します。

構造

ruby
    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は、オブジェクト定義に引数が定義されているかどうかに基づいて、スキーマが静的か動的かを判断します。 スキーマを静的から動的に変更することは後方互換性のない変更と見なされます。変更を有効にするには、レシピの実行を停止し、スキーマを更新する必要があります。

静的オブジェクト定義

ruby
lead: {
  fields: lambda do
    [
      { name: "name", type: :boolean },
      { name: "email" },
      { name: "number"}
    ]
  end
}

動的オブジェクト定義

ruby
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関数はこの配列を返します。

ruby
    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を参照してください。

ruby
    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は、個別に動的生成して組み合わせることができます。

ruby
    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: