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]’ ) }