このCookBookでは、差戻し先ノードの処理対象者を再展開するフローを作成する方法について紹介しています。
IM-Workflowの仕様として、差戻し先ノードではそのノードを以前に処理した人のみが再処理を行えます。( IM-Workflow 仕様書 - 差戻し )
常にそのノードに設定された処理対象者が処理者として設定されて欲しいという業務ケースに対応する場合は、このCookBookを参考にしてフローを作成してください。
完成イメージ
・ 再展開を行うノードはノード種別が「承認」のノードのみとします。
・ 承認ノードの到達処理で処理対象者を再展開します。
・ 再展開を行うのはそのノードに差戻しで到達した場合のみとします。
・ 特定のノードから差戻しを行うときに、明示的に「再展開しない」という選択をできるようにします。
完成サンプル
以下の完成サンプルをダウンロードしてご活用ください。
- ロジックフロー定義: im_cookbook_131569_logicdesigner-data
- LogicDesignerのインポート機能からインポートしてください。
- 手順の詳細は以下のドキュメントを参照してください。
- サンプルに含まれる定義情報は以下の表の通りです。
種類 定義名 補足説明 フロー定義 ロジックフローで、案件プロパティに「再展開しないフラグ」をセットする 画面の入力内容を基に「再展開しないフラグ」を案件プロパティにセットするアクション処理用のユーザプログラムです。 フロー定義 ロジックフローで、承認ノードの処理対象者を再展開する 「前処理の処理種別」や「再展開しないフラグ」を判定材料として承認ノードの処理対象者を再展開する到達処理用のユーザプログラムです。 - IM-BIS定義 : im_cookbook_131569_bis_lump
- BISの一括インポート機能からインポートしてください。
- 手順の詳細は以下のドキュメントを参照してください。
- サンプルに含まれる定義情報は以下の表の通りです。
種類 定義名 補足説明 BIS定義 【Cookbook】ロジックフローでコンテンツ画面の内容をPDF出力する 新規アカウント作成申請を行うBIS定義です。 案件プロパティ定義 再展開しないフラグ 到達処理での処理対象者再展開可否を判断するためのフラグです。再展開しない場合に"1"をセットします。
上記のサンプルの利用条件は以下の通りです。
- intra-mart Accel Platform(Advanced) 2018 Summer(8.0.20)以降のバージョンであること
- サンプルデータのインポートが行われていること
サンプルは、intra-mart Accel Platform(Advanced) 2018 Summer(8.0.20)で動作確認を行っています。
レシピ
- IM-LogicDesigner でアクション処理用のフロー定義を作成する
- IM-LogicDesigner で到達処理用のフロー定義を作成する
- IM-BIS でBISワークフローを作成する
- ロジックフローをコンテンツ定義、フロー定義に設定する
1. IM-LogicDesigner でアクション処理用のフロー定義を作成する
「特定のノードから差戻しを行う場合に、明示的に再展開しないという選択をできるようにします。」という要件を満たすために画面で選択した値を基に判定するということが考えられます。
ただし、到達処理には画面入力値(IM-Workflow ユーザパラメータ)は引き渡されません。
そのため、当CookBookでは案件プロパティを利用し、値の引き渡しを実現します。
- 定数設定
定数ID | 定数値 | 補足説明 |
---|---|---|
NotReExpandFlagMatterPropKey | not_re_expand_flag | 案件プロパティとして登録した「再展開しないフラグ」のキーです。 |
NotReExpandFlagValue | ${$input.imwUserParameter.notReExpandFlag} | 画面から渡される値を取得するためのEL式です。「notReExpandFlag」はForma画面に配置したアイテムのフィールド識別IDを示します。 |
false | false | アクション処理の出力値「error」にセットするための値です。当CookBookでは失敗を考慮しないため一律falseとします。 |
resultStatusSendBack | sendback | 当該処理が「差戻し」であるかを判定するための値です。 |
- 入出力設定
パラメータ | 補足説明 |
---|---|
imwActionProcess - resultStatus | 行われた処理が差戻しであるかを判定するために利用します。 |
imwUserParameter | 画面で選択された値を取得するために利用します。 |
imwProcessCommon - userDataId | 案件プロパティを登録するためのキーとなるユーザデータIDを取得するために利用します。 |
入力値の詳細は以下のドキュメントを参照してください。
IM-Workflow 管理者操作ガイド - アクション処理
- フロー
-
(1) 以下のEL式を記述し、当該処理が「差戻し」であるならば処理を続行します。
${ $input.imwActionProcess.resultStatus == $const.resultStatusSendBack }
- $input.imwActionProcess.resultStatus で受け取れる値の詳細は以下のドキュメントを参照してください。
IM-Workflow CodeList - 処理結果ステータス
- $input.imwActionProcess.resultStatus で受け取れる値の詳細は以下のドキュメントを参照してください。
- (2) IM-BIS のタスク「ユーザデータ案件プロパティ情報登録・更新」を利用して「再展開しないフラグ」を登録します。
マッピング設定は以下のようにします。
2. IM-LogicDesigner で到達処理用のフロー定義を作成する
当該ノードの処理対象者再展開を実行するフロー定義を作成します。
- 定数設定
定数ID | 定数値 | 補足説明 |
---|---|---|
NotReExpandFlagMatterPropKey | not_re_expand_flag | 案件プロパティとして登録した「再展開しないフラグ」のキーです。 |
NotReExpandFlagValueTrue | 1 | 「再展開しないフラグ」がtrueを表す場合の定義値です。 |
false | false | 到達処理の出力値「mailSendFlag」にセットするための値です。当CookBookではメールを送信しないため一律falseとします。 |
resultStatusSendBack | sendback | 前処理が「差戻し」であるかを判定するための値です。 |
lastApproveNodeId | approve3 | 前処理が「再展開しないフラグ」を設定可能な承認ノードであるかを判定するための値です。 |
- 入出力設定
パラメータ | 補足説明 |
---|---|
preNodeResultStatus | 前処理が差戻しであるかを判定するために利用します。 |
preNodeId | 前処理が「再展開しないフラグ」を設定可能な承認ノードであるかを判定するために利用します。 |
userDataId | 案件プロパティ取得および削除を行うために利用します。 |
systemMatterId , nodeId | 処理対象者再展開を実行するために利用します。 |
入力値の詳細は以下のドキュメントを参照してください。
IM-Workflow 管理者操作ガイド - 到達処理
- フロー
-
(1) 以下のEL式を記述し、前処理が「差戻し」であるならば処理を続行します。
${$input.preNodeResultStatus==$const.resultStatusSendBack}
- $input.preNodeResultStatus で受け取れる値の詳細は以下のドキュメントを参照してください。
IM-Workflow CodeList - 処理結果ステータス
- $input.preNodeResultStatus で受け取れる値の詳細は以下のドキュメントを参照してください。
- (2) 以下のEL式を記述し、前処理ノードが「再展開しないフラグ」を設定可能な承認ノードであれば、案件プロパティから「再展開しないフラグ」を確認するロジックに進みます。
${$input.preNodeId==$const.lastApproveNodeId}
-
(3) IM-BIS のタスク「ユーザデータ案件プロパティ情報取得」を利用して「再展開しないフラグ」を取得します。
マッピング設定は以下のようにします。
-
(4) 以下のEL式を記述し、案件プロパティの「再展開しないフラグ」が true を表す値であればロジックを終了します。
${im_bisGetUserMatterProperty1.matterPropertyValue==$const.NotReExpandFlagValueTrue}
3. IM-BIS でBISワークフローを作成する
キーとなる「再展開しないフラグ」を設定できるノードに対するコンテンツ画面の作成方法のみ説明します。
サンプルではチェックボックスアイテムを利用し、プロパティを以下のように設定しています。
- 基本設定
- ラベル: 入力値なし
- データの定義
- 表示値: 差戻し先ノードの処理対象者を再展開しない / 送信値: 1
送信値は到達処理用のロジックフロー定義で定数設定を行った「NotReExpandFlagValueTrue」の値と同一にします。
- 表示値: 差戻し先ノードの処理対象者を再展開しない / 送信値: 1
- 詳細設定
- フィールド識別ID: notReExpandFlag
フィールド識別IDはアクション処理用のロジックフロー定義で定数設定を行った「NotReExpandFlagValue」のEL式に指定した変数名と同一にします。
- フィールド識別ID: notReExpandFlag
4. ロジックフローをコンテンツ定義、フロー定義に設定する
- 作成したロジックフローをワークフローのロジックフロー管理でリソース設定します。
- 詳細は以下のドキュメントを参照してください。
IM-Workflow 管理者操作ガイド - ロジックフローを利用する
- 詳細は以下のドキュメントを参照してください。
- コンテンツ定義でそれぞれ到達処理ユーザプログラム、アクション処理ユーザプログラムとして設定します。
- 詳細は以下のドキュメントを参照してください。
IM-Workflow 管理者操作ガイド - コンテンツ定義を登録・設定する - ユーザプログラム定義の設定を追加する
- 詳細は以下のドキュメントを参照してください。
- フロー定義で「再展開しないフラグ」を指定可能な承認ノードに対して、登録したアクション処理ユーザプログラムを設定します。
- 詳細は以下のドキュメントを参照してください。
IM-Workflow 管理者操作ガイド - フロー定義を登録・設定する - 承認ノード設定
- 詳細は以下のドキュメントを参照してください。
- フロー定義で承認ノードに対して登録した到達処理ユーザプログラムを設定します。
- 詳細は上記ドキュメントを参照してください。