チェックサム

「チェックサム」は、特定リソースの「バージョン」を特定する文字列値です。クラウド API では、ClaimCenter データベース内の基盤となるエンティティに関する情報に基づき、必要に応じてチェックサムを計算します。

ユーザーアクション、クラウド API またはその他のプロセスを通じて、プロセスがデータを変更すると、クラウド API はリソースに対して別のチェックサムを算出します。リソースを変更する前にリソースのチェックサムを調べ、以前取得したチェックサムと一致するかどうかを確認することにより、ロストアップデートを防ぐことができます。

デフォルトでは、チェックサムは、すべての GET、POST、PATCH の応答ペイロードに用意されています。

チェックサムは、以下で指定できます。

  • 要求ペイロード。これは、次の用途に適しています。
    • PATCH
    • 要求ペイロードを許可するビジネスアクション POST(POST /{activityID}/assignなど)
  • 要求オブジェクトヘッダー。これは、次の用途に適しています。
    • DELETE
    • 要求ペイロードを許可しないビジネスアクション POST

チェックサムを含む要求を送信する場合は、ClaimCenter がチェックサムを計算し、その値を送信済みのチェックサム値と比較します。

  • 値が一致する場合は、ClaimCenter では、呼び出し元アプリケーションが最後にデータを取得してからリソースが変更されなかったと判断します。要求が実行されます。
  • 値が一致しない場合は、ClaimCenter では、呼び出し元アプリケーションが最後にデータを取得してからリソースが変更されたと判断します。要求は実行されず、ClaimCenter から次のようなエラーが返されます。
    {
        "message": "The supplied checksum '1' does not match the current checksum '2' for the resource with uri '/common/v1/notes/xc:101'",
        "properties": {
            "uri": "/common/v1/notes/xc:101",
            "currentChecksum": "2",
            "suppliedChecksum": "1"
        }
    }

チェックサムの生成

チェックサムは、常に、関連するエンティティのデータベースのすべての値に基づいて Guidewire から生成される文字列値です。チェックサムは、通常、c689ec1403a489ed7bc3ca6e8ce4f73e などの複雑な文字列値になります。

リソースのチェックサムは、関連するエンティティの任意のフィールドに変更があると、変更されます。そのフィールドがクラウド API に公開されているかどうかは関係ありません。例えば、Activity エンティティに、アクティビティに関連付けられている電子メールテンプレートの ID を保存する EmailTemplate という名前のフィールドがあるとします。このフィールドはクラウド API に公開されていません。ただし、このフィールドが指定のアクティビティに合わせて、ユーザーインターフェイスやその他のプロセスを通じて変更された場合は、Activity リソースのチェックサムが増分します。

場合によっては、チェックサムが 1 などの単純な整数値に設定されているため、エンティティが変更されると、整数値が単純に 1 ずつ増えます。ただし、チェックサムが整数でも、次のチェックサムがそれよりも 1 大きい整数値になる保証はありません。Guidewire では、呼び出し元アプリケーションが次のチェックサム値を予測しないようにすることをお勧めします。クラウド API 要求のチェックサムを以前の応答で返されたチェックサムだけにするよう制限します。

複数のデータモデルエンティティにマップされるリソース

ほとんどのリソースは、1 つのデータモデルエンティティに対応しています。たとえば、Activity リソースのプロパティは、単一のデータモデルエンティティ - Activity データモデルエンティティにマップされます。

ただし、複数のデータモデルエンティティのフィールドを結合するリソースがあります。たとえば、User リソースには、User データモデルエンティティ(externalUserなど)、Credential データモデルエンティティ(username など)、および UserContact データモデルエンティティ(cellphone など)にマップされるフィールドがあります。

ベースコンフィギュレーションでは、リソースが複数のデータモデルエンティティにマップされると、基盤となるエンティティのいずれかが変更され、リソースのチェックサムが増分します。複数のデータモデルエンティティにマップされるカスタムリソースも、基盤となるデータモデルエンティティへの変更をチェックサムに反映させるようにコンフィグレーションすることができます。詳細については、1 対 1 のコンフィギュレーションを参照してください。