生成エンドポイントのアップデータファイルのコンフィギュレーション

Cloud API のコンテキストでは、情報が要素リソースから対応データモデルエンティティにマップされる方法が、アップデータファイルにより定義されます。この情報は、POST と PATCH で使用されます。


アップデータファイル

以降のセクションでは、生成エンドポイント用アップデータファイルのコンフィギュレーションの概要を示します。マッピングファイルのコンフィギュレーション方法の詳細については、スキーマコンフィギュレーションの概要を参照してください。

アップデータファイル構文の概要

1 つ以上の API リソースが列挙される updaters セクションが、アップデータファイルにあります。リソースごとに、以下の属性が指定されます。

  • リソースの構造を定義する schemaDefinition
    • これは、schema.json ファイル内で宣言されたスキーマを参照します。
  • このリソースに関するマッピング情報の root として機能するデータモデルエンティティ。
  • properties のリスト
    • 各プロパティに 1 つの path 属性が含まれています。これにより、リソースプロパティごとに、リソースフィールドプロパティが書き込まれるデータモデルエンティティプロパティが定義されます。
    • プロパティの特性によっては、追加の属性が存在する場合があります。

例えば、ベースコンフィギュレーションの Activity リソースでアップデータの部分を以下に示します。

"Activity": {
  "schemaDefinition": "Activity",
  "root": "entity.Activity",
  "properties": {
    "description": {
      "path": "Activity.Description"
    },
    "mandatory": {
      "path": "Activity.Mandatory"
    },
    ...

次の点に注目します。

  • 名前が Activity であるスキーマでこのリソースは定義されます(このスキーマは、他の schema.json ファイルで定義されます)。
  • リソースマッピングのルートは entity.Activity です。
  • リソースのインスタンスごとに以下のようになります。
    • description プロパティの値が Activity エンティティの Description フィールドに書き込まれます。
    • mandatory プロパティの値が Activity エンティティの Mandatory フィールドに書き込まれます。

マッピングファイルには表示されるがアップデータファイルには表示されないプロパティが存在する場合があることに注意してください。この現象は、読み取り専用のプロパティでよく見られます。例えば、アクティビティをクローズするときにアプリケーションが設定する CloseDate プロパティが、Activity エンティティにあります。このプロパティは、読み取り可能なため、マッピングファイルに表示されます。しかし、書き込みはできないため、アップデータファイルには表示されません。

アップデータファイルにおける変更

ベースコンフィギュレーションには、API 固有の拡張アップデータファイルのセットが含まれています。これらのファイルの目的は、特定の API 用のカスタムリソースに関するアップデータ情報を定義することです。「<API>_ext-1.0.updater.json」のパターンを使用してこれらのファイルに名前が付けられます。<API> は API の内部名です。例えば、common_ext-1.0.updater.json ファイルを使用して、Common API でカスタムリソースに関するアップデータ情報を定義します。拡張マッピングファイルには、Studio で integration -> mappers -> ext -> <API>.v1 ノードを介してアクセスできます

カスタムエンティティ用のエンドポイントを生成すると、REST エンドポイントジェネレータが以下のコードを関連の拡張アップデータファイルに追加します。

    "<resourceName>": {
      "schemaDefinition": "<schemaNameForResource>",
      "root": "entity.<customEntity>",
      // TODO RestEndpointGenerator : Add updater properties here
      "properties": { }
    }
例えば、CustomEntity_Ext エンティティ用のエンドポイントを生成すると、以下が拡張アップデータファイルに追加されます。
    "CustomEntityExt": {
      "schemaDefinition": "CustomEntityExt",
      "root": "entity.CustomEntity_Ext",
      // TODO RestEndpointGenerator : Add updater properties here
      "properties": { }
    }

REST エンドポイントジェネレータでは properties 情報を提供しないことに注意してください。スキーマ定義ファイルには id フィールドしか追加されないためです。このフィールドは書き込み可能ではないため、アップデータに追加されません。

開発者は以下の作業を担当します。

  • カスタムエンティティで POST と PATCH が利用できる必要があるフィールドの決定。
  • これらのフィールドに関するアップデータ情報の追加。

例えば、CustomEntity_Ext エンティティに次の 3 つのフィールドがあるとします。

  • CustomDescription(文字列型)
  • IsActive(Boolean 型)
  • ExpirationDate(日付時刻型)

CustomDescriptionIsActive を POST と PATCH で使用できる必要があることを開発者が決定します。以下の太字で示されているコードを開発者は追加する必要があります。

    "CustomEntityExt": {
      "schemaDefinition": "CustomEntityExt",
      "root": "entity.CustomEntity_Ext",
      // TODO RestEndpointGenerator : Add updater properties here
      "properties": {
        "customDescription": {
          "path": "CustomEntity_Ext.CustomDescription"
        },
        "isActive": {
          "path": "CustomEntity_Ext.IsActive"
        }
      }
    }

また、ExpirationDate を POST と PATCH で使用禁止にする必要があることを開発者が決定します。フィールドは、GET で使用できるため、スキーマとマッパーに表示される可能性があります。ただし、POST または PATCH では使用できないため、アップデータから省略されます。

プロパティパスのアップデータ構文

スカラー

通常、データモデルエンティティのフィールドがスカラー値の場合は、path プロパティをデータモデルエンティティのフィールドに設定します。他の属性は必要ありません。次に例を示します。
    "description": {
      "path": "Activity.Description"
    },

複合データ型

複合データ型(TypekeyMonetaryAmountCurrencyAmountSpatialPoint など)のアップデータ定義する場合は、valueResolver 属性と一緒に子 typeName 属性を含める必要があります。この属性でリゾルバを指定しますが、複合データ型の構造がデータモデルエンティティにマップされる方法をリゾルバで定義します。複合データ型のアップデータ構文は次のとおりです。

"<field>": {
  "path": "<pathValue>",
  "valueResolver": {
    "typeName": "<resolverName>"
  }
},

下の表に、一般的な複合データ型のリゾルバ名を示します。

複合データ型 マッパー値
Typekey TypeKeyValueResolver
MonetaryAmount MonetaryAmountValueResolver
CurrencyAmount CurrencyAmountValueResolver
SpatialPoint SpatialPointValueResolver
例えば、Activity リソースの assignmentStatus フィールドのアップデータは次のようになります。
    "assignmentStatus": {
      "path": "Activity.AssignmentStatus",
      "valueResolver": {
        "typeName": "TypeKeyValueResolver"
      }
    },