# 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_fieldsoutput_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