4.20. オプショナルタスク¶
IM-BPM for Accel Platform では、プロセスインスタンスの実行の流れとは関係なく、ユーザが判断したタイミングでタスクを追加できる機能を用意しています。
追加される可能性のあるタスクをあらかじめ想定しておき、プロセス定義内に配置しておくことができます。
このように定型的に定義されたタスクのことを「オプショナルタスク」と呼びます。
4.20.1. 概要¶
プロセスデザイナで「オプショナル」設定をオンにしたフローエレメントは、オプショナルタスクとして扱われます。
オプショナルタスクは他のフローエレメントと接続されておらず、プロセスインスタンスの通常の実行の流れとは独立しています。
プロセス開始時、または開始後の任意のタイミングで、プロセスインスタンスの関係者が「タスク追加」画面からタスクを追加できます。
上記の図でいうと、プロセスインスタンスの通常の実行の流れにおいては(1)~(3)のタスクのみが実行されます。
ユーザタスクAとユーザタスクBはオプショナルタスクであり、この実行の流れからは独立しています。
この2つのタスクは、それぞれタスクの追加が行われることで実行されます。
4.20.2. プロセスデザイナでの設定¶
配置したフローエレメントのプロパティにて「オプショナル」設定をオンにすることで、そのフローエレメントはオプショナルタスクとして動作します。
以下の種類のフローエレメントに対して設定可能です。
タスク
ユーザタスク
スクリプトタスク
サービスタスク
メールタスク
マニュアルタスク
受信タスク
コールアクティビティ
IM-LogicDesignerタスク
申請タスク
起票タスク
オプショナルタスクのプロパティとして、以下を設定可能です。
- 実行中のタスクを複数追加可能にする
- オンにした場合、このタスクが既に実行中であっても再度追加でき、複数個のタスクが同時に実行できます。ただし、追加したタスクがまだ実行されておらず 事前追加状態 である場合は、再度の追加は行えません。オフにした場合は同時に1つしかタスクを追加できません。
- タスク追加時のパラメータ
コラム
設定方法の詳細については、「IM-BPM プロセスデザイナ 操作ガイド」 - 「ユーザタスク」(※ユーザタスクの場合)を参照してください。
4.20.2.1. オプショナルタスクのパラメータ¶
オプショナルタスクには、パラメータを任意の数だけ定義できます。
定義したパラメータは、ユーザがタスクの追加を行う際に画面に表示され、ユーザは入力タイプに応じた値を任意で入力します。
実際にタスクが実行された際に、パラメータの値は追加されたこのタスクからのみ参照できるエグゼキューション変数に格納されます。
各パラメータには、個別に以下を定義します。
- 表示名
- このパラメータの表示名を定義します。タスクの追加を行う際に表示され、ユーザにこのパラメータを認識・区別してもらうために用いられます。
- 変数名
- このパラメータの変数としての名前を定義します。タスクが実行された際、この名前でエグゼキューションに変数が作られ、ユーザが入力した値が格納されます。
- 入力タイプ
- このパラメータの型を定義します。以下の種類から選択します。
入力タイプ 対応する変数の型 補足 文字列 string-英字 string-英数字 string-数字 integer-日付 dateカレンダーを利用して、日付を入力します。真偽値 booleanチェックボックスを利用して、 TRUE (チェックを付けた場合) / FALSE (チェックを外した場合) を入力します。複数行の文字列 string-ユーザ検索 string(ユーザコード)IM-共通マスタ 検索画面を用いて、単一のユーザを入力します。現在日を検索基準日とします。ユーザ検索(複数) serializable(ユーザコードを要素に持つ配列)IM-共通マスタ 検索画面を用いて、複数のユーザを入力します。現在日を検索基準日とします。組織検索 serializable(会社コード、組織セットコード、組織コードを要素に持つMap)IM-共通マスタ 検索画面を用いて、単一の組織を入力します。現在日を検索基準日とします。列挙値 stringIM-Repositoryの列挙型をパラメータ定義時に指定します。タスクの追加時には列挙型に紐づく列挙項目が選択肢として表示され、ユーザは択一で選択します。
- 列挙ID
- 入力タイプに「列挙値」を選択した場合に表示されます。IM-Repositoryの列挙型のIDを指定します。検索画面を用いて列挙型を選択することも可能です。
コラム
IM-Repositoryの列挙型の詳細については、「IM-Repository ユーザ操作ガイド」 - 「列挙」を参照してください。
4.20.2.2. 制約¶
オプショナルタスクは、通常のフローエレメントと異なり、以下のような制約を持ちます。
- シーケンスフローの始点・終点として指定できない
- 境界イベントを設定できない
- マルチインスタンスを設定できない
- 実行モードを非同期に設定できない
- マルチインスタンスが設定されたコンテナ内に配置できない
4.20.3. タスクの追加¶
プロセスインスタンスに対してタスクを追加するための画面のことを「タスク追加」画面と呼びます。
以下の2通りの方法で「タスク追加」画面を開き、オプショナルタスクを追加することが可能です。
- プロセス開始時にタスクを追加する場合
- プロセスデザイナでの設定が必要です。プロセス定義のプロパティとして「開始時にオプショナルタスクの追加を行う」をオンにすることで、プロセス開始時に自動的に開かれます。プロセスインスタンスの開始者がこれを行えます。
- 任意のタイミングでタスクを追加する場合
- 開始済みのプロセスインスタンスについて、プロセス詳細画面・プロセス参照画面のヘッダメニューから開くことができます。プロセスインスタンスの関係者がこれを行えます。図:「タスク追加」
タスクを追加する際には、オプショナルタスクに定義された各パラメータの値を入力する必要があります。
詳細については、前述の オプショナルタスクのパラメータ を参照してください。
コラム
「タスク追加」画面の詳細については、「IM-BPM ユーザ操作ガイド」 - 「タスクを追加する」を参照してください。
4.20.3.1. 追加されたタスクの実行タイミング¶
オプショナルタスクは、通常のフローエレメント同様、コンテナ(プロセスインスタンス自体、またはサブプロセス・イベントサブプロセス)に所属しています。
タスクを追加した際、そのオプショナルタスクが所属するコンテナの状態に応じて、追加されたタスクは以下のように振舞います。
- コンテナが実行中である場合
- 追加されたタスクは即座に実行されます。図:コンテナに所属しているオプショナルタスクが即座に実行されるプロセスの状態
- コンテナが実行中ではない場合
- 追加されたタスクは、事前追加状態として扱われ、即座には実行されません。プロセスインスタンスの実行状態が所属しているコンテナに到達し、コンテナが実行中になった際に実行されます。図:コンテナに所属しているオプショナルタスクが事前追加状態になるプロセスの状態
コラム
所属するコンテナが複数実行されている場合は、タスクの追加を行うことはできません。
コラム
コンテナに所属する追加されたタスクが実行中の場合は、コンテナは完了しません。
4.20.4. プロセスインスタンスの履歴¶
プロセスインスタンスに追加されたタスクは、プロセスインスタンスの履歴に時系列で表示されます。
履歴画面では、オプショナルタスクを追加したユーザ、および追加した際のパラメータの詳細を確認できます。
コラム
プロセスインスタンスの履歴の確認方法については、「IM-BPM ユーザ操作ガイド」 - 「処理の履歴を確認する 」を参照してください。
4.20.5. マイグレーション¶
追加されたオプショナルタスクを含むプロセスインスタンスをマイグレーションする際、オプショナルタスクを引き継ぐかを選択できます。
- 引き継がないことを選択した場合
- 移行後のプロセスインスタンスには、オプショナルタスクは追加されません。
- 引き継ぐことを選択した場合
- 移行後のプロセスインスタンスで実行中のコンテナにて、移行前のオプショナルタスクと同一のアクティビティIDを持つオプショナルタスクが追加されます。