CookBook

IM-LogicDesignerを利用してIM-Workflowの到達処理で既処理者自動承認する方法

投稿日:2023-04-03 更新日:

このCookBookでは、IM-LogicDesignerを利用して、 IM-Workflowの到達処理で既処理ユーザが自動承認する方法について紹介します。

完成イメージ

  1. サンプルのフローを申請します。
  2. ロジックフローを到達処理に設定したノードの手前のノードまで、処理対象者ユーザで承認します。
  3. ロジックフローが実行されます。
    既処理ノードの処理者が、実行対象ノードの処理対象者である場合に自動で承認します。

完成サンプル

以下の完成サンプルをダウンロードしてご活用ください。
なお、以下のサンプルはintra-mart Accel Platform 2023 Springの環境を利用して作成したものです。

IM-LogicDesignerのIM-BIS「承認」タスクは、2023 Springから到達処理で利用できるようになったため、2022 Winter以前のバージョンでは動作しません。

種類定義名補足説明
ユーザ定義(JavaScript)GetProcessHistoryLatestList処理中の未完了案件の処理履歴最新情報を取得するユーザ定義
ユーザ定義(JavaScript)Get Auth User Orgz承認者の未完了案件に対する処理権限者の所属組織情報を取得するユーザ定義
ロジックフローAuto approve上記のユーザ定義を参照し、既処理者自動承認を実行するロジックフロー

完成サンプルをご利用の際は、テナント環境セットアップでサンプルデータのインポートを行い、利用するユーザのロールに「BIS担当者」を設定してください。

レシピ

  1. ユーザ定義を作成する。
  2. 既処理者自動承認ロジックフローを作成する。
  3. BISワークフローを作成する。
  4. ユーザプログラムの到達処理を設定する。
  5. ノード到達処理を設定する。

1. ユーザ定義を作成する。

以下のユーザ定義を作成してください。

2. 既処理者自動承認ロジックフローを作成する。

2-1. 入出力設定

入出力設定の入力には、以下を設定してください。

入力項目
localeIdstring
systemMatterIdstring
nodeIdstring
preNodeResultStatusstring

入出力設定の出力には、以下を設定してください。

出力項目
mailSendFlagboolean

入出力設定の詳細は以下のドキュメントを参照してください。

[IM-Workflow 管理者操作ガイド] - [到達処理]

2-2. 定数の設定

定数ID定数値
FALSEfalse
INDEX0
LOCK_KEY_PREFIXArrivedAutoApprove_
TRUEtrue

2-3. 変数の設定

既処理者リストと既処理ノードリストを変数に定義してください。

変数項目
approveUserCdsstring[]
approveNodesstring[]

2-4. タスクの配置と接続

以下のロジックフローを作成します。

ロジックフローの処理の流れと配置するタスクは以下の通りです。

(1) 前ノード処理結果が申請、再申請、承認以外であれば終了

  • Branch(PreNodeResultStatus)(分岐)

(2) 処理履歴を取得

  • GetProcessHistoryLatestList (ユーザ定義)

(3) 処理履歴から既処理ノードリストと既処理者リストを作成

  • Loop Start 1 (繰り返し開始)
  • Branch(NodeType)(分岐)
  • Branch(Status)(分岐)
  • Branch (NodeId)(分岐)
  • Variable Operation (変数操作)
  • Loop End1 (繰り返し終了)

(4) ノードの処理対象者を取得

  • Get Process Target Users (処理対象者取得)

(5) 既処理者が処理対象者であれば、(6)へ

  • Loop Start 2 (繰り返し開始)
  • Loop Start 3(繰り返し開始)
  • Branch(ProcessTargetUser) (分岐)
  • Loop End 3(繰り返し終了)
  • Loop End 2(繰り返し終了)

(6) 処理者の所属組織を取得して承認

  • Get Auth User Orgz (ユーザ定義)
  • Lock Acquisition (ロック取得)
  • Approve (承認)
  • Lock Release (ロック解放)

2-5. プロパティ設定

(1) 前ノード処理結果が申請、再申請、承認以外であれば終了

  • Branch(PreNodeResultStatus)(分岐)

分岐条件に以下のEL式を記述してください。
入力値の前ノード処理結果 が「申請」、「再申請」、「承認」以外の場合は自動承認しないようにします 。
${ $input.preNodeResultStatus == "apply" || $input.preNodeResultStatus == "approve" || $input.preNodeResultStatus == "reapply" }

(2) 処理履歴を取得

「1. ユーザ定義を作成する。 」で作成した以下のユーザ定義を利用して処理履歴を取得します。

  • GetProcessHistoryLatestList (ユーザ定義)

以下のようにマッピング設定してください。

(3) 処理履歴から既処理ノードリストと既処理者リストを作成

  • Loop Start 1 (繰り返し開始)

繰り返し対象に処理履歴を設定してください。
im_cookbook_212823_user_latestlist1/processHistoryList

  • Branch(NodeType)(分岐)

分岐条件に以下のEL式を記述してください 。
処理履歴のノード種別がnull以外の場合かつ、「申請ノード」、「承認ノード」、「動的承認ノード」の場合、次の分岐に処理を進めます。
${ im_startLoop1.item.nodeType != null && ( im_startLoop1.item.nodeType == "3" || im_startLoop1.item.nodeType == "2" || im_startLoop1.item.nodeType == "4" ) }

ノード種別のコード値については以下のドキュメントを参照してください。
IM-Workflow CodeList - ノード種別

  • Branch(Status)(分岐)

分岐条件に以下のEL式を記述してください 。
処理履歴のステータスが「申請」、「申請(復元)」、「承認」、「承認(復元)」、「再申請」、「再申請(復元)」 である場合、次の分岐に処理を進めます。
${ im_startLoop1.item.status == "apply" || im_startLoop1.item.status == "applyrestore" || im_startLoop1.item.status == "approve" || im_startLoop1.item.status == "approverestore" || im_startLoop1.item.status == "reapply" || im_startLoop1.item.status == "reapplyrestore" }

ステータスのコード値については以下のドキュメントを参照してください。
IM-Workflow CodeList - タスクステータス

また、申請者を既処理者自動承認の対象から除く場合は、ステータスが「申請」、「申請(復元)」、「再申請」、「再申請(復元)」であることを条件から除いてください。

  • Branch (NodeId)(分岐)

分岐条件に以下のEL式を記述してください。
処理履歴のノードIDが既処理ノードリストに含まれない場合、次の「Variable Operation」タスクに処理を進めます。
${ ! contains( $variable.approveNodes, im_startLoop1.item.nodeId ) }

  • Variable Operation (変数操作)

「Branch(NodeType)」、「Branch(Status)」、「Branch (NodeId)」全てのタスクでtrueの場合、処理履歴のノードIDと処理権限者コードをそれぞれ既処理ノードリストと既処理者リストに追加します。

以下のようにマッピング設定してください。

(4) ノードの処理対象者を取得

  • Get Process Target Users (処理対象者取得)

以下のようにマッピング設定してください。

(5) 既処理者が処理対象者であれば、(6)へ

  • Loop Start 2 (繰り返し開始)

繰り返し対象に既処理者リストを設定してください。
$variable/approveUserCds

  • Loop Start 3(繰り返し開始)

繰り返し対象に「 (4) ノードの処理対象者を取得 」で取得した処理対象者リストを設定してください。
im_bisGetProcessTargetUser1/userCds

  • Branch(ProcessTargetUser) (分岐)

分岐条件に以下のEL式を記述してください。
処理対象者リストが空でないかつ、既処理者が処理対象者と一致する場合、繰り返しを抜けて承認するようにします。
${ ! isEmpty( im_startLoop3.item ) && im_startLoop3.item == im_startLoop2.item }

(6) 処理者の所属組織を取得して承認

  • Get Auth User Orgz (ユーザ定義)

以下のようにマッピング設定してください。

  • Lock Acquisition (ロック取得)

【注意】
同期ノードや縦配置ノード内の到達処理で案件を処理するIM-BISタスクを利用する場合、複数ノードでロジックフローが同時実行されるため、ロック取得してください。対象ノードが複数同時実行されない場合、ロック取得は不要です。

今回は、定数の LOCK_KEY_PREFIX と入力値の systemMatterId を連結して入力値のロックキーに設定します。

以下のようにマッピング設定してください。

  • Approve (承認)

承認タスクを到達処理で実行する際は、 asyncProcessingFlagtrue を設定します。
承認タスクの詳細は、以下のドキュメントを参照ください。
 [IM-LogicDesigner仕様書] - [承認]

所属組織リストの1つ目の情報を権限者所属組織情報に設定します。

以下のようにマッピング設定してください。

  • Lock Release (ロック解放)

解放対象である「Lock Acquisition」タスクのロックキーを「Lock Release」タスクの入力値に設定します。

以下のようにマッピング設定してください。

3. BISワークフローを作成する。

今回は、以下のようなBISワークフローを作成します。

申請と承認画面に画面アイテム「ボタン(登録)」を配置してください。

※BISワークフローの詳細は、サンプルデータをご参照ください。

4. ユーザプログラムの到達処理を設定する。

サイトマップから、ワークフローのロジックフロー管理で、「1. ロジックフローを作成する。」で作成したロジックフローのリソース設定画面を開きます。

プルダウンで「ユーザプログラム」を選択し、「到達処理」を追加してください。

次に、サイトマップ、ワークフローのコンテンツ定義から、作成したワークフローのユーザプログラムタブを開きます。

新規作成で、以下のように設定してください。

項目内容
プログラム名AutoApprove ※今回のみ
プラグイン種別到達処理
対象ノード承認ノード
プラグイン種類【到達処理】LogicDesigner
プラグイン種類 - フロー選択「2. 既処理者自動承認ロジックフローを作成する。」で作成したロジックフローを選択
実行順番1 ※今回のみ

5. ノード到達処理を設定する。

サイトマップ、ワークフローのフロー定義から、作成したワークフローのルート詳細タブを開きます。

到達処理を設定したいノードの編集ボタンを選択し、ノード設定ダイアログを開きます。

今回は、「Approve3」ノードに到達処理を設定します。

ノード到達処理で「標準から変更する」を選択し、 「4. ユーザプログラムの到達処理を設定する。 」で設定したユーザプログラムを選択してください。

以上で、到達処理で既処理者自動承認ロジックフローを実行することができます。

ぜひ、目的に合わせてロジックフローの内容を変更してみてください。

-CookBook
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

Payara 5.184 を Google Kubernetes Engine(GKE) から利用する

この CookBook では、Payara を GKE 上で実行しクラスタリングを構築する手順について紹介しています。 Payara 5.184 で Kubernetes Cluster Mode が …

no image

入力欄を増やすボタンを作成する方法

このCookBookでは、入力欄を増やすボタンを作成する方法について紹介しています。 完成イメージ 完成サンプル 以下の完成サンプルをダウンロードしてご活用ください。 このサンプルは、2020 Sum …

ガントチャートテンプレートを使ってみる

intra-mart Accel Platform 2023 Autumn に「ガントチャートテンプレート」が提供されました。この CookBook では、ガントチャートテンプレートとマスタメンテナン …

no image

リッチテーブルの任意の列を非表示にする方法

このCookBookでは、リッチテーブルの任意の列を非表示にする方法について紹介しています。 列の非表示は intra-mart Accel Platform 2022 Spring から可能です。 …

IM-LogicDesignerを利用して、IM-Workflowの到達処理で任意の参照者を追加する方法

このCookBookでは、LogicDesignerを利用して、IM-Workflowの到達処理で任意の参照者を追加する方法について紹介しています。 承認ノードの到達処理で、申請者を参照者として登録し …