2.1. ワークフローライブラリ¶
2.1.1. 概要¶
申請フローや承認フローの進行状況、およびワークフロー内の各タスクに対する担当ユーザの割り当てや、割り当て状態の管理をするために必要な機能を提供する。
ワークフローライブラリの説明をする上で必要な「ワークフロー定義」「ワークフローインスタンス」について、以下に記載する。
2.1.1.1. ワークフロー定義¶
ワークフローの中で実行される処理の順序や分岐の条件などを定義し、実際の申請や要件毎のワークフローのひな型となる。
ワークフロー定義は、以下のような BPMN (Business Process Model and Notation) という表記法を利用して定義する。
上記の表記で利用している各要素についての説明と、ワークフローライブラリで利用できる要素についての説明は、下記を参照。
2.1.1.2. ワークフローインスタンス¶
ワークフローを利用する個々の案件や申請と紐付けて生成され、ワークフロー定義に存在するタスクやその進行状態、 各タスクの担当ユーザなどを管理する。
タスクを終了するときに、対応するアクションなどから ワークフローの進行 などを呼び出すことで、 ワークフローインスタンスの アクティブフローノード が更新されて、ワークフローが進行する。
ワークフローが進行した後は、 ワークフロー定義 に従って進行先が判断され、次のタスク(もしくは停止イベント)まで 進行して、再度ワークフローが進行するのを待つことになる。
2.1.2. 要求¶
2.1.2.1. 実装済み¶
ワークフロー定義として、以下の処理概念に相当するフローを定義し、進行状況を制御することができる。
ワークフロー内の各タスクに対して、対象のタスクが現在処理可能かどうかに関わらず、担当ユーザを割り当てることができる。
ワークフロー内の各タスクに対して、担当ユーザを特定せず、グループ内の任意のユーザが実行できることを表す意味で、 担当グループを設定することができる。
すでに担当ユーザ/担当グループが割り当てられているタスクに対して、別の担当ユーザ/担当グループを再度割り当てなおすことができる。
ワークフロー内の一つのタスクに対して、複数の担当ユーザ/担当グループを割り当てることができ、 各担当ユーザ/担当グループが順番に、もしくは平行して処理を行うように制御することができる。
ワークフロー内の一つのタスクに対して、複数の担当ユーザ/担当グループが割り当てられていて、 並行して処理を行う場合に、AND承認、OR承認を実現できる。
2.1.2.2. 未検討¶
- 確認者不在などの場合に、現在承認待ちの承認者が承認を行うのでなく、先のステップの承認者が承認を行う ことを認めるワークフロー(引上承認)を定義できる。
2.1.3. 対象外としている機能¶
以下については、ワークフローライブラリでは機能を提供していない。必ずアプリケーションで実装する必要がある。
- ワークフローインスタンス情報に関する排他制御は行われない。必ず、ワークフローに従って処理される業務データで排他制御を行うこと。
また、以下については、アプリケーションに応じて要件が異なると想定されるため、 ワークフローライブラリでは機能を提供していない。アプリケーションで適切な設計を行い、実装する必要がある。
- ワークフローにおける処理履歴(承認履歴など)を取得する。
- ワークフローに付随する情報を保持する。(個々の案件名や申請状況のステータス名など)
- 処理対象ワークフローなどの検索を行う。
- 担当ユーザと担当グループの関連など、ユーザや権限を管理する機能
2.1.4. 制約事項¶
- タスクには、担当ユーザと担当グループのいずれかしか割り当てることはできず、一つのタスクにユーザとグループの両方が 割り当てられている状態にすることはできない。 担当ユーザが割り当てられているタスクをグループに割り当てなおす、もしくはその逆は可能である。
- 並行処理となるような分岐や合流をおこなうワークフローを定義することはできない。
- ワークフローの定義情報を、動的に変更することはできない。事前に登録されているワークフロー定義データを利用する。
2.1.5. 全体構造¶
ワークフローライブラリの全体構造については、以下を参照。
2.1.6. 提供するAPI¶
ワークフローライブラリで提供するAPIおよびその実装例については、以下を参照。
- 2.1.6.1. ワークフローAPI
- 2.1.6.1.1. ワークフローの開始
- 2.1.6.1.2. インスタンスIDの取得
- 2.1.6.1.3. 開始済みワークフローの検索
- 2.1.6.1.4. ワークフローの進行
- 2.1.6.1.5. 境界イベントによるワークフローの進行
- 2.1.6.1.6. ユーザ/グループの割り当て
- 2.1.6.1.7. 割り当て済みユーザ/グループの変更
- 2.1.6.1.8. フローノードがアクティブか否かの問い合わせ
- 2.1.6.1.9. ユーザ/グループのアクティブタスクが存在するか否かの問い合わせ
- 2.1.6.1.10. ワークフローが完了したか否かの問い合わせ
- 2.1.6.1.11. 現在有効なワークフローバージョンの取得
- 2.1.6.2. ゲートウェイの進行先ノードの判定制御
- 2.1.6.3. マルチインスタンス・タスクの終了判定