データベースに必須のプロパティ

データモデルでは、一部のエンティティフィールドが必須です。フィールドの値を指定せずにエンティティのインスタンスを作成できません。また、値は null にすることができません。例えば、ある保険会社が、すべてのアクティビティに終了日(完了予想日)を設定する必要があるというビジネスルールを適用しているとします。これを強制するために、Activity エンティティの EndDate フィールドは必須です。このようなフィールドは、データベースに必須と呼ばれることがあります。

スキーマでは、データベースに必須であることを反映するようにリソースプロパティをコンフィギュレーションできます。これを行うには、次のプロパティを設定する必要があります。

  • "requiredForCreate": true
    • この x-gw-extensions 属性は、プロパティを POST ペイロードに含める必要があることを示します。
  • "x-gw-nullable": false
    • この属性は、プロパティが指定された場合は、その値を null に設定できないことを示します。

"requiredForCreate": true 属性自体は、プロパティを POST で指定する必要があることを指示するだけです。呼び出し元がプロパティを含めるが、その値を null に設定しないようにする手段はありません。

"x-gw-nullable": false 属性自体は、プロパティが指定された場合は、その値を null に設定できないことを指示するだけです。呼び出し元がプロパティを省略しないようにする手段はありません。

2 つの式を組み合わせることによって、プロパティを POST で指定して、非 null 値に設定し、その後でプロパティが指定された場合は、必ず、非 null 値に設定する必要があることを指示します。これは、データモデルエンティティフィールドを必須に設定することと等価です。

例えば、CustomEntity_Ext エンティティに文字列の CustomDescription フィールドがあるとします。このフィールドは必須です。プロパティ宣言は次のようになります。

  "definitions": {
    "CustomEntityExt": {
      ...
      "properties": {
        ...
        "customDescription": {
          "type": "string",
          "x-gw-nullable": false,
          "x-gw-extensions": {
            "requiredForCreate": true
          }
        }
        ...
Java
Note: スキーマレベルでは、必要性という概念もあります。"required": true を指定することによって、スキーマレベルでプロパティが必須であることを指定できます。スキーマプロパティが必須に設定されている場合は、ペイロードを送信するたびにそれを指定する必要があります。これは、問題のプロパティが変更されていなくても、PATCH 用の値を指定しなければならないことを意味するため、できれば、Cloud API スキーマではやりたくない操作です。

ベースコンフィギュレーションプロパティのオーバーライド

ベースコンフィギュレーションプロパティがデータベースに必須でない場合は、前の例で示したように、それを適切なスキーマ拡張ファイルに追加して、適切なプロパティを設定することによって、データベースに必須にすることができます。

ベースコンフィギュレーションプロパティがデータベースに必須の場合は、それを非必須にすることはできません。