例: オブジェクトストアの情報を保存および取得する方法

Object Store Connector は、Store (<os:store/>) および Retrieve (<os:retrieve/>) 操作を提供します。

オブジェクトストアの情報の保存

オブジェクトストアを使用して値を次のように保存できます。

<os:store key="state">
  <os:value>
    <![CDATA[#[
      output application/json
       ---
       {
          "id": attributes.queryParams.id,
          "timestamp": now(),
          "name": payload.name
        }
      ]]]>
  </os:value>
</os:store>

Store 操作を使用し、failIfPresent パラメータの値に応じて、新しい値を保存するか、既存の値を更新することができます。このパラメータが false (デフォルト) に設定されている場合、そのキーに関連付けられている既存の値があれば上書きされます。パラメータが true に設定されている場合、代わりに OS:KEY_ALREADY_EXISTS エラーが発生します。

null 値の保存はできません。ただし一般的には、次のように式またはトランスフォーメーションを評価して値を取得します。

  • 値が null ではないことを検査します。

  • 値が存在すれば保存します。

  • それ以外の場合は、何も行いません。

failOnNullValue パラメータでこのユースケースが簡略化されます。デフォルト (true) では、null 値が指定されると OS:NULL_VALUE エラーが発生します。ただし、パラメータが false に設定されている場合、null 値が指定されるとこの操作では何も行われません。エラーは発生せず、値は変更されません。

オブジェクトストアの情報の取得

Retrieve 操作は、特定の オブジェクトストアキーの値を取得します。

キーを使用して 1 つの値を次のように取得できます。

<os:retrieve key="userId" />

ストアにキーが存在しない場合、次のような操作を使用してデフォルト値を指定できます。

<os:retrieve key="timestamp">
  <os:default-value>#[now()]</os:default-value>
</os:retrieve>

複雑な構造のデフォルトは次のように指定します。

<os:retrieve key="state">
  <os:default-value>
    <![CDATA[#[
     output application/json
     ---
     {
        "id": attributes.queryParams.id,
        "timestamp": now(),
        "name": payload.name
      }
    ]]]>
  </os:default-value>
</os:retrieve>

defaultValue パラメータは、特定のキーに値が存在しないケースを処理します。このパラメータを指定せず、操作で null 値に解決された場合、OS:KEY_NOT_FOUND エラーが発生します。それ以外の場合、defaultValue が返されますが保存されません。

すべてのオブジェクトストア操作はキーレベルで同期されます。操作の実行中、他の操作は同じオブジェクトストア上の同じキーにアクセスできません。Runtime がクラスタモードで実行中の場合、この同期はノード間でも保証されます。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub