1.はじめに
RAPベースの Fioriアプリ開発において、一覧から複数行を選択し、一括でアクションを実行したいという要件は珍しくありません。
今回の記事は一括処理の定義方法を紹介します。
2.通常パターン
まずはmetadataで特に指定せず、アクションを書いて動かしてみます。
※一応想定としては、製造指図をリリースするアクションです。
{
position: 10,
importance: #HIGH,
type: #FOR_ACTION,
dataAction: 'order_release',
label: '指図リリース'
}
デバッグでアクションに入ってきた製造指図を確認すると、3行選択したのに1行しか設定されていないことが分かります。

F8で実行すると、2行目に選択した製造指図が設定されています。

つまり、一覧で複数行を選択して実行しているように見えても、実際には 1 行ずつアクションが呼ばれている という動きになっています。
そのため、通常の定義方法では「一括処理」にはならず、裏側ではループ的に個別実行が繰り返されているだけ、という挙動になるわけです。
3. 一括処理を有効化するには?
複数行をまとめてアクションに渡したい場合は、metadataで明示的に「複数行を対象にする」設定を行う必要があります。
invocationGrouping: #CHANGE_SETを追加します。
{
position: 10,
importance: #HIGH,
type: #FOR_ACTION,
dataAction: 'order_release',
label: '指図リリース',
invocationGrouping: #CHANGE_SET
}
デバッグでアクションに入ってきた製造指図を確認すると、しっかり3行設定されています!

4.まとめ
以上、アクション一括処理の方法でした。
このような細かいテクニックは忘れがちなので、備忘録としてどんどん載せたいと考えています。短い記事にはなると思いますが、、、
・デフォルトの #FOR_ACTION では複数選択しても裏では 1 行ずつ処理される
・一括処理を実現するには invocationGrouping: #CHANGE_SET を指定する

