オブジェクトストアでの情報の保存と取得の例 - Mule 4

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

Object Store Connector で使用する対象変数については、​Mule Runtime 対象変数ドキュメント​を参照してください。

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

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

<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 がクラスターモードで実行中の場合、この同期はノード間でも保証されます。