2.2.1. サンプルアプリケーション概要

サンプルアプリケーションでは、 申請情報を登録し、登録された申請情報をもとにワークフローを進行する機能を実装している。

申請の種類は、以下の二種類である。

  • 交通費申請
  • ローン申請

2.2.1.1. ワークフロー定義

サンプルアプリケーションで実装しているワークフロー定義をそれぞれ以下に示す。

  • 交通費申請
../../../../../_images/WF1101.png
  • ローン申請
../../../../../_images/WF1102.png

上記の①~④の説明箇所は以下のとおり

番号 処理内容 実装方法
ワークフローを開始する。 ワークフローの開始
確認タスクを承認タスクへ進行させる。 ワークフローの進行
確認タスクを再申請タスクへ進行させる。 境界イベントの実行
内部自動審査タスクの進行先ノードを判定する。 進行先ノードの判定制御ロジックの実装

2.2.1.2. 画面遷移

サンプルとして提供する画面遷移は下記のとおり。 これらの画面のいくつかの機能でワークフローAPIを呼び出すことで、前述のワークフローを実現している。 また、ローン申請承認機能のうち内部自動審査はバッチ処理で実現しているため、本遷移には含まれていない。

../../../../../_images/screenTransition.png

2.2.1.3. ワークフローライブラリに関連する機能

ワークフローライブラリに関連する以下の機能は、アプリケーション側で実装する必要がある。

  • ワークフローに付随する情報の保持
  • ワークフローにおける処理履歴の保持
  • タスクにアサインするユーザ/グループや権限の管理

サンプルアプリケーションでどのように実現しているかについて、以下のテーブル定義を元に説明する。

  • 申請情報および履歴テーブルの定義
../../../../../_images/workItemsAndHistories.png
  • ワークフローにおけるタスクの担当ユーザに関連するテーブルの定義
../../../../../_images/assigned.png

2.2.1.3.1. ワークフローに付随する情報の保持

ワークフローに付随する情報として、申請状況のステータスを申請情報のテーブルで保持している。

ワークフロー進行中の申請状況のステータス名は案件ごとに異なる。 そのため、申請状況のステータスは業務データとして管理する必要がある。

例えば、交通費申請の「再申請」タスクが処理可能となっている場合のステータス名は、 確認タスクから差戻された場合には「確認差戻」となり、申請者が自ら引戻した場合は「確認引戻」となる。

2.2.1.3.2. ワークフローにおける処理履歴の保持

申請に対する処理の内容および処理の結果を 対応する履歴テーブルに登録することで、処理履歴を保持している。 処理内容および処理結果は申請情報の種類によって異なるため、 申請情報の種類ごとに履歴テーブルを定義している。

2.2.1.3.3. タスクにアサインするユーザ/グループや権限の管理

Nablarchの認可チェックモデルを利用して、タスクの担当ユーザおよび担当グループを管理している。 また、ワークフローの各フローに対応するリクエストに認可チェックを設定することで、タスクの権限設定を行っている。

たとえば、ローン申請判定処理を行うリクエストは判定者グループのみに認可チェックされており、 それ以外のグループに属するユーザでは判定処理が実行できない。