intra-mart Accel Platform IM-LogicDesigner仕様書 第27版 2025-10-01

5.2.1.18.8. エンティティデータの更新[ロックあり]

IM-Repositoryの楽観的排他制御に対応したエンティティデータの更新を行うタスクです。
楽観的排他制御により、ロックキー optimisticLockKey に指定した値とデータ更新時の値が一致しない場合はエラーが発生します。
エンティティに楽観的排他制御の設定がない場合は、通常のエンティティデータの更新タスクと同様に動作します。

5.2.1.18.8.1. プロパティ

項目名 必須/任意 初期値 説明
エンティティID 必須 text なし 検索アイコンをクリックし、「エンティティ検索」ダイアログで対象のエンティティを選択してください。

5.2.1.18.8.2. 入力値

im_repositoryEntityDataUpdateWithLock <object> *
  ├─ updateData <imr_entity> *
  │    └─ %entity data%
  └─ optimisticLockKey <imr_entity>
       └─ %optimistic lock key%
項目名 必須/任意 配列/リスト 説明
im_repositoryEntityDataUpdateWithLock 必須 object なし  
updateData 必須 imr_entity なし  
%エンティティデータ% エンティティ項目が辞書項目/エイリアスで主キー、必須の場合は必須、それ以外は任意 下記参照 - -
optimisticLockKey エンティティに楽観的排他制御設定がある場合は必須 imr_entity なし -
%排他制御項目のLogicDesignerの変数名% 任意 %排他制御項目のLogicDesignerのデータ型% なし エンティティの排他制御項目が自動的に生成されます。
エンティティデータはプロパティ「エンティティID」を設定すると自動的に生成されます。
生成されるパラメータは以下の条件を満たしているエンティティ項目です。
  • エンティティ項目が、辞書項目/エイリアスの場合
    IM-Repositoryの辞書項目「用途」→「データ」で IM-LogicDesignerの「データ型」 と「変数名」 を設定していること。ただし、データ定義にて外部参照設定が行われている項目は対象外です。
    また、楽観的排他制御時の自動採番を無効化していない場合は、排他制御に使用するエンティティ項目は対象外です。
    各パラメータの型はIM-LogicDesignerの「データ型」、キー名はIM-LogicDesignerの「変数名」 です。

  • エンティティ項目が、サブエンティティの場合
    サブエンティティの「変数名」 を設定していること。
    各パラメータの型はエンティティとサブエンティティの多重度が1:1の場合は imr_entity(エンティティのobject)、多重度が1:nの場合は array 、キー名は「変数名」 です。

5.2.1.18.8.3. 出力値

im_repositoryEntityDataUpdateWithLock <object>
  └─ count <integer>
項目名 配列/リスト 説明
im_repositoryEntityDataUpdateWithLock object なし -
count integer なし 更新件数

コラム

楽観的排他制御エラー発生時は、処理結果情報のエラーメッセージ errorMessage に以下のメッセージが設定されます。
[E.IWP.LOGIC.FLOW.00251] 他のユーザによってエンティティデータが更新されています。(entityId=%entityId%)

例外処理で楽観的排他制御エラーかどうかを判定する場合は、処理結果情報のエラーメッセージによる条件判定を行います。
条件式: ${ $task_result.errorMessage.startsWith( ‘[E.IWP.LOGIC.FLOW.00251]’ ) }