このCookBookでは、IM-LogicDesignerを利用して、IM-Workflowの未処理案件の処理対象者を再展開する方法について紹介しています。
人事異動を重ねることで、未処理案件の中には処理対象者が適切に設定されず、誰も処理できない案件が生まれることがあります。
ここでは、一定期間や特定条件に合致した未処理案件の処理対象者を再展開し、処理対象者がいない案件を確認する方法を紹介します。
ここでは、処理の流れを分かりやすくするため、Forma標準アプリで画面を作成していますが、ロジックフローをジョブとして実行することも可能です。
完成イメージ
フロー、フローのアクティブノード、申請した日付の期間を指定し、指定した内容を基に検索した未処理案件のアクティブノードの処理対象者を再展開するFormaアプリのサンプルです。
また、処理対象者再展開後、処理対象者が0人の案件はグリッドテーブルに表示されます。
このサンプルを実行することで、古い案件の処理対象者を修正し、処理できるユーザがいない案件を確認することができます。
完成サンプル
以下の完成サンプルをダウンロードしてご活用ください。
なお、以下のサンプルはintra-mart Accel Platform 2018 Summerの環境を利用して作成したものです。
使用するアプリケーションは以下の通りです。
- IM-LogicDesigner
- IM-Workflow
- IM-FormaDesigner
- IM-BIS
IM-LogicDesignerの「未処理案件一覧取得」タスク、「処理対象者再展開」タスク、「処理対象者取得」タスクは2018 Summerに追加された機能の為、2018 Summerより前のバージョンでは動作しません。
- ロジックフロー定義 : im_cookbook_149450_logicdesigner.zip
- IM-LogicDesignerのインポート機能からインポートしてください。ロジックフローが登録されます。
- 手順の詳細は以下のドキュメントをご覧ください。
[IM-LogicDesigner ユーザ操作ガイド] - [インポートを行う]
- データソース定義 : im_cookbook_149450_datasource.zip
- Forma管理画面のデータソース定義インポート機能からインポートしてください。データソース定義が登録されます。
- 手順の詳細は以下のドキュメントをご覧ください。
[IM-FormaDesigner for Accel Platform 作成者 操作ガイド] - [「データソース定義インポート」画面の機能と各部の説明]
- アプリケーション情報 : im_cookbook_149450_forma_application.zip
- Forma管理画面のアプリケーション情報インポート機能からインポートしてください。Formaアプリケーション情報が登録されます。
- 手順の詳細は以下のドキュメントをご覧ください。
[IM-FormaDesigner for Accel Platform 作成者 操作ガイド] - [「アプリケーション情報インポート」画面の機能と各部の説明]
完成サンプルをご利用の際は、テナント環境セットアップでサンプルデータインポートを行い、利用するユーザのロールに「テナント管理者」を設定してください。
また、インポートしたFormaアプリのメニュー設定が必要です。詳細は以下をご覧ください。
[IM-FormaDesigner for Accel Platform 作成者 操作ガイド] - [メニューを設定する]
レシピ
- 未処理案件一覧情報を取得するロジックフローを作成する。
- 未処理案件のアクティブノードの処理対象者を再展開するロジックフローを作成する。
- データソース定義を作成する。
- 未処理案件の処理対象者を再展開するFormaアプリを作成する
- 実行画面で確認する。
1. 未処理案件一覧情報を取得するロジックフローを作成する。
このフローは、Formaアプリで入力する検索項目(フローID、ノードID、期間)を基に検索項目に合致する未処理案件の案件情報を返却するロジックフローです。
先ず、IM-LogicDesignerで、カテゴリ「IM-BIS」から、「未処理案件一覧取得」タスクを配置します。
入出力設定は以下の通り設定します。
入力項目 | データ型 |
---|---|
applyDateFrom | date |
applyDateTo | date |
flowId | string |
localeId | string |
nodeId | string |
出力項目 | データ型 |
---|---|
info | object[] |
lastProcessDate | date |
matterName | string |
systemMatterId | string |
「未処理案件一覧取得」タスクは、取得する案件の申請された日付の期間と、フローID、ロケールID、ノードIDを指定することで、任意のフローの任意のノードの任意の期間に合致する未処理案件の情報を一覧で取得できます。
「未処理案件一覧取得」タスクのマッピング設定は以下の通りです。
- ロジックフロー入力値applyDateFromを「未処理案件一覧取得」タスクの入力値applyDateFromにマッピングします。
- ロジックフロー入力値applyDateToを「未処理案件一覧取得」タスクの入力値applyDateToにマッピングします。
- ロジックフロー入力値flowIdを「未処理案件一覧取得」タスクの入力値flowIdにマッピングします。
- ロジックフロー入力値localeIdを「未処理案件一覧取得」タスクの入力値localeIdにマッピングします。
- ロジックフロー入力値nodeIdを「未処理案件一覧取得」タスクの入力値nodeIdにマッピングします。
「終了」タスクでは、Formaアプリで処理対象者を再展開する際に、確認したい情報を出力値に紐づけます。
systemMatterIdは必須です。
「終了」タスクのマッピング設定は以下の通りです。
- 「未処理案件一覧取得」タスクの出力値lastprocessDateをロジックフローの出力値lastprocessDateにマッピングします。
- 「未処理案件一覧取得」タスクの出力値matterNameをロジックフローの出力値matterNameにマッピングします。
- 「未処理案件一覧取得」タスクの出力値systemMatterIdをロジックフローの出力値systemMatterIdにマッピングします。
2. 未処理案件のアクティブノードの処理対象者を再展開するロジックフローを作成する。
このフローでは、「1. 未処理案件一覧情報を取得するロジックフローを作成する。」で作成したフローの出力値とFormaアプリで入力するノードIDを基に、取得した案件一覧の該当するアクティブノードの処理対象者を再展開するロジックフローを作成します。
また、再展開後、処理対象者がいない場合はその案件のシステム案件IDをFormaアプリに返却します。
先ず、IM-LogicDesignerで、カテゴリ「IM-BIS」から、「処理対象者再展開」タスク、「処理対象者取得」タスクを用いて以下のように配置します。
入出力設定は以下の通り設定します。
入力項目 | データ型 |
---|---|
systemMatterId | string[] |
nodeId | string |
出力項目 | データ型 |
---|---|
systemMatterId | string[] |
imfrSoaResult | object |
imfrErrorFlag | boolean |
imfrMessage | string[] |
「処理対象者再展開」タスクは1つの案件の1つのアクティブノードに設定されている処理対象者を再展開します。
そのため、取得した完了案件一覧の案件1つずつに繰り返し「処理対象者再展開」タスクで処理する必要があります。
よって、「繰り返し」タスクの繰り返し対象に、入力値のsystemMatterIdを指定します。
次に「処理対象者再展開」タスクに再展開する案件と再展開するアクティブノードのノードIDを指定します。
「処理対象者再展開」タスクのマッピング設定は以下の通りです。
- ロジックフロー入力値nodeIdを「処理対象者再展開」タスクの入力値nodeIdにマッピングします。
- 「繰り返し」タスクの出力値itemを「処理対象者再展開」タスクの入力値systemMatterIdにマッピングします。
次に「処理対象者取得」タスクに再展開した案件と再展開したアクティブノードのノードIDを指定します。
「処理対象者取得」タスクのマッピング設定は以下の通りです。
- ロジックフロー入力値nodeIdを「処理対象者取得」タスクの入力値nodeIdにマッピングします。
- 「繰り返し」タスクの出力値itemを「処理対象者取得」タスクの入力値systemMatterIdにマッピングします。
次に、「分岐」タスク、「変数操作」タスクを用いて、処理対象者再展開後の処理対象者がいない案件を一覧にします。
よって、「分岐」タスクの条件式に、以下の式を指定してください。
${empty im_bisGetProcessTargetUser1.userCds}
「変数操作」タスクでは、文字列の配列変数を作成し、以下のようにマッピングします。
「終了」タスクでは、処理対象者がいない案件の一覧をFormaアプリに渡します。
また、処理が正常終了したことをFormaアプリに表示するため、「暗黙的に連携するレスポンスパラメータ」を利用します。詳細は以下のドキュメントをご覧ください。
[IM-BIS for Accel Platfoem IM-BIS 仕様書] - [暗黙的に連携するレスポンスパラメータの仕様]
例として、「終了」タスクのマッピング設定を以下の通り設定します。
- 処理対象者がいない案件のシステム案件ID一覧をロジックフロー出力値systemMatterIdにマッピングします。
- 真偽値falseをロジックフロー出力値imfrErrorFlagにマッピングします。
- 文字列"success"をロジックフロー出力値imfrMessageにマッピングします。
3. データソース定義を作成する。
上記で作成した2つのロジックフローを、IM-LogicDesignerのデータソース定義として設定してください。
データソース定義設定の方法は、以下のドキュメントをご覧ください。
[IM-BIS システム管理者 操作ガイド] - [「データソース - 編集[LogicDesigner]」画面の操作手順]
4. 未処理案件の処理対象者を再展開するFormaアプリを作成する
作成した2つのロジックフローを外部連携し、任意の期間の未処理案件の処理対象者を再展開することができるFormaアプリを作成します。
先ず、Forma管理画面の「Formaアプリ作成」-「アプリ一覧」からアプリケーションを作成してください。
[IM-FormaDesigner for Accel Platform 作成者 操作ガイド] - [6. IM-FormaDesigner でのIM-Workflowから利用できるアプリケーションの作成]
以下のアイテムを配置してください。
画像は例です。
配置するアイテムと説明
アイテムのラベル | アイテムの種類 | 説明 |
---|---|---|
display | イベントボタン | グリッドテーブルに再展開する未処理案件の情報を表示します。 |
re expand executable user | イベントボタン | グリッドテーブルに表示されている案件の指定されたノードIDの処理対象者を再展開します。 |
flowId | 文字列 | 検索するフローのフローIDを入力します。 |
nodeId | 文字列 | 検索するフローのアクティブノードのノードIDを入力します。 |
search period | 期間 | 検索する案件申請日の期間を入力します。 |
matter | グリッドテーブル | 再展開する案件情報が表示されます。 カラムは、完了案件一覧情報を取得するロジックフロー作成時に出力値に指定した値のカラムを定義します。今回は、matterName、systemMatterIdを文字列、lastProcessDateを日付型で定義してください。 |
not assigned matters | グリッドテーブル | 処理対象者再展開後、アクティブノードに処理対象者がいない案件の一覧が表示されます。 カラムには、systemMatterIdを文字列で定義してください。 |
次に、配置した2つのイベントボタンにそれぞれアクション処理を設定します。
アクション設定の方法は以下のドキュメントをご覧ください。
[IM-BIS for Accel Platform IM-BIS 仕様書] - [1. アクション設定]
サンプルでは、作成したロジックフローを実行する前に、入力値をチェックするカスタムスクリプトを設定しています。
詳細は以下のドキュメントをご覧ください。
[IM-BIS for Accel Platform IM-BIS 仕様書] - [1. アクション設定] - [1.8. カスタムスクリプト設定画面の機能と各部の説明]
先ず、「display」ボタンのアクション設定を行います。
最初に作成した未処理案件一覧情報を取得するロジックフローを呼び、データマッパーで以下のように紐づけを行います。
リクエスト
画面アイテムのラベル名 | ロジックフローの入力項目 |
---|---|
flowId | flowId |
nodeId | nodeId |
serch period(期間の初め) | applyDateFrom |
serch period(期間の終わり) | applyDateTo |
アイテムと紐づけず、定数でロケールIDを指定。例:ja | localeId |
レスポンス
レスポンス値では、未処理案件一覧情報を取得するロジックフロー作成時に出力値に指定した値を紐づけます。
画面アイテムのラベル名 | ロジックフローの出力項目 |
---|---|
matterテーブルのMatterNameカラム | matterName |
matterテーブルのsystemMatterIdカラム | systemMatterId |
matterテーブルのlastProcessDateカラム | lastProcessDate |
「re expand executable user」ボタンでは、2つ目に作成した未処理案件のアクティブノードの処理対象者を再展開するロジックフローを呼び、データマッパーで以下のように紐づけを行います。
リクエスト
画面アイテムのラベル名 | ロジックフローの入力項目 |
---|---|
matterテーブルのsystemMatterIdカラム | systemMatterId |
nodeId | nodeId |
レスポンス
画面アイテムのラベル名 | ロジックフローの出力項目 |
---|---|
not assigned mattersテーブルのsystemMatterIdカラム | systemMatterId |
以上で、未処理案件の処理対象者を再展開することができるFormaアプリが作成できました。
5. 実行画面で確認する。
最後に、実行画面で作成したFormaアプリを用いて動作を確認します。
- Formaアプリを開き、フローID、ノードID、検索する期間を入力し、「display」ボタンをクリック、グリッドテーブルに表示された案件を確認します。
- 「re expand executable user」ボタンをクリックします。処理対象者がいない案件が「not assigned matters」テーブルに表示されるため、確認してください。
- 画面上部に成功メッセージが表示されれば処理対象者の再展開が完了です。
このサンプルは例外処理がついていないため、検索する期間のTO、FROMが矛盾している場合、エラーが発生します。
処理対象者の再展開では、処理対象者標準プラグイン結果キャッシュが有効な場合、古い情報で展開される可能性があります。必要に応じて以下のジョブを実行する、または、「ジョブネット即時実行」タスクを用いて2つ目に作成したロジックフローの頭に繋げ、実行してください。
[intra-mart Accel Platform IM-Workflow 仕様書] - [「 処理対象者標準プラグイン結果キャッシュ削除 」ジョブ]
また、「完了案件一覧取得」タスクから案件の完了日時が取得できるため、一定期間過ぎた完了案件の確認対象者を削除することも可能です。