注意: この技法は、Bonita BPM 6.0~6.5.x バージョンのレガシーなタスクリストに適用されるだけでなく、Bonita BPM 7.3 以降の新しいタスクリストにも適用できます。
目標: Bonita Studioを活用しタスク名とタスクの説明で案件情報を挿入することによって、ユーザーの快適性と効率を最適化します。
プロセスの作図段階では、タスク名には作業の一般的な総称、たとえば「申請を検証する」のような総称名が名が付けれています。開発のためには、その名前が有用です。しかしながら、そのプロセスが実行される段階、つまりユーザー視点では、それぞれの案件(プロセス インスタンス)毎に特定のビジネス情報をタスク名に付加し、ユーザーが自身のタスクリストから所望のタスクを効率的に選別できるよう配慮する必要があります。
前提条件:プロセスのサンプルを作成する
プール
まず、新しいプロセス図を作成します。そして、最初のプール内にプロセスをモデル化します:
- プールの周りの空白域をクリックして、ダイアグラムの名前を「申請管理」に変更します
- プールの名前を「休暇申請管理」に変更します
- レーンの名前を「マネージャ」に変更します
- 開始イベントの名前を「新しい休暇申請」に変更します
- プールレベル(プロセス起案フォームの初期化)で新しい休暇申請の提出が発生するので、「申請を提出する」タスクは必要ありません。ただ、ヒューマンタスクのデフォルト名を「申請を検証する」に変更するだけです
- 終了イベントを追加し、名前を「ハッピーエンド」に変更します
プールは次のようになります:
データモデル
その後、休暇申請データを保持するビジネスオブジェクトを定義します。
- メニューオプションで開発 > ビジネス データモデル > 管理… の順で移動します
- LeaveRequest(先頭を大文字「L」で)と命名したビジネス・オブジェクトを次の4つの属性と共に追加し ます(注意:日付型は 7.5.0 以降でサポートされた「DATE ONLY」を使用):
- startDate:DATE ONLY、「必須」として設定
- endDate:DATE ONLY、「必須」として設定
- requesterName:STRING、休暇申請を提出した従業員
- status:STRING、申請が「提出済み」または「承認済み」の状態を表す
- 「終了」をクリックします
データモデルは次のようになります:
変数
このビジネス・オブジェクトが各プロセスインスタンスでインスタンス化されることを可能にするためには、プールレベルのビジネス変数を作成します:
- プールの「データ」ペイン >「プール変数 」タブ > 「ビジネス変数」のテーブルに移動して、leaveRequest(先頭を小文字の「L」で)という名前のビジネス変数を追加します
- 「ビジネス オブジェクト」で LeaveRequest(1つのオブジェクトのみを持っている場合はデフォルト値として自動選択されます)を選択します
- 「終了」をクリックします
プロセス起案フォームの初期化
プロセスが起案フォームに必要な情報を取得するために、コントラクトを作成します:
- 「実行」ペイン > 「コントラクト」タブに移動して、ビジネス変数から入力コントラクトを生成するために「データから追加…」をクリックします
- 「ビジネス変数」オプションを選択して、leaveRequest 変数を選択します
- 「次へ」をクリックします
- requesterNameとstatus は、フォームからの入力情報をインスタンス化のために必要としないので、選択を解除します
入力コントラクトにマッピングされているビジネスデータの属性のデフォルト値は、入力コントラクトを基に生成されたスクリプトで自動的に設定されます - 「終了」をクリックし、2回表示されるダイアログの警告を慎重に読み、OK、OK で終了させます
- 「実行」ペイン > 「コントラクト」タブで、COMPLEX 型の入力コントラクトが作成され、選択した leaveRequest のビジネス変数の属性に下図に示すようにマッピングされます
私たちはまた、実際のBPMプロジェクトでは、各入力コントラクトに説明を追加することを推奨します。このフォームをプロジェクトのユーザー検証テストフェーズで使用する場合は、自動生成されたフォームでエンドユーザー入力項目のヘルプとしてこの説明が使用されます。
休暇申請が提出されるた時、status とrequesterName のデフォルト値は既に設定されている必要があります。そのためには、インスタンス初期化のスクリプトを次のように編集します:
- 「データ」ペイン >「プール変数 」タブ >「ビジネス変数」テーブルに戻ります
- leaveRequest クリックし「編集…」ボタンをクリックします
- 「デフォルト値」フィールドの右側にある鉛筆アイコンをクリックします
- 表示されたスクリプトに
leaveRequestVar.status = "提出済み" def initiator = BonitaUsers.getProcessInstanceInitiator(apiAccessor,processInstanceId); leaveRequestVar.requesterName = "$initiator.firstName $initiator.lastName"
を追加します。追加後は、次のようになります:
def leaveRequestVar = new com.company.model.LeaveRequest() leaveRequestVar.startDate = leaveRequestInput.startDate leaveRequestVar.endDate = leaveRequestInput.endDate leaveRequestVar.status = "提出済み" def initiator = BonitaUsers.getProcessInstanceInitiator(apiAccessor,processInstanceId); leaveRequestVar.requesterName = "$initiator.firstName $initiator.lastName" return leaveRequestVar
- OK、OK をクリックします
プロセス起案フォーム
Studio は、コントラクトの要件に基づいてテスト用のフォームを生成します。これは、この技法集で時間を節約するために使用するフォームです。
「申請を検証する」タスク
この技法集では、このタスク上にフォームのコントラクトを指定しないでください。タスクが完了すると、申請状態を「提出済み」から「検証済み」に切り替える操作だけを作成します。
- 「申請を検証する」のタスクをクリックします
- 「実行」ペイン > 「データ操作」タブに移動します
- 「追加」をクリックします
- 左のオペランドで、leaveRequest を選択します
- 中央の演算子として「Javaメソッドを使用」を選択し、そして「setStatus(String) – void」を選択します
- OK をクリックします
- 右オペランドには、「承認済み」を書き込みます
このデータ操作は、下図のように示されます:
これで、このプロセスの準備ができました。
これからは、本題のユーザーのタスクリストに表示されるタスク名を一意に設定する方法について説明します。
表示オプションを設定する
各案件(リクエスト)に対し、タスクは申請者名、申請の開始日、終了日、および状態を表示します。タスクを提出されると、状態が変更され、タスクは検証者名も表示することができます。
ベストプラクティスとして、私たちは、タスク定義の静的な情報を「表示名」フィールドに表示し、案件の進行過程で変化する動的な情報を「タスクの説明」と「完了後の説明」 のフィールドに表示することを推奨します。
したがって:
- 開始日、終了日、および申請者名は、タスク名で扱います
- ステータスと検証名は、説明で扱います
この表示オプションを設定するには:
- 「申請を検証する」のタスクをクリックします
- 「全般」ペイン > 「ポータル」タブに移動します
表示名
タスクの表示名は、申請者の姓名、および休暇の開始日と終了日を使用します。
- 「表示名」フィールドの右隣にある鉛筆アイコンをクリックして式エディタを表示します
- 「スクリプト」式のタイプを選択します
- 式の名前を buildValidateRequestDisplayName() にします
- 次のスクリプトを入力します
return "${leaveRequest.requesterName}さんの休暇申請を検証: ${leaveRequest.startDate} ~ ${leaveRequest.endDate}".toString()
- OK をクリックします
タスクの説明
動的な情報として、ここではステータスが扱われています:
- 「タスクの説明」フィールドの右隣にある鉛筆アイコンをクリックして式エディタを表示します
- 「スクリプト」式のタイプを選択します
- 式の名前を buildValidateRequestDisplayDescription() にします
- 次のスクリプトを入力します
return "${leaveRequest.status}".toString()
- OK をクリックします
完了後の説明
検証された時の申請のステータス、および検証者名が「完了したタスク」のフィルタのユーザータスクリスト に表示されます。それを定義するには:
- 「完了後に説明」フィールドの右隣にある鉛筆アイコンをクリックして式エディタを表示します
- 「スクリプト」式のタイプを選択します
- 式の名前を buildValidateRequestDescAfterCompletion() にします
- 次のスクリプトを入力します
def executedBy = BonitaUsers.getUser(apiAccessor, apiAccessor.processAPI.getHumanTaskInstance(activityInstanceId).executedBy); return "${executedBy.firstName} ${executedBy.lastName}さんが${leaveRequest.status}".toString()
- OK をクリックします
独自のプロジェクトのためにこれらの機能を再利用する場合には、スクリプトの結果が 255 文字を超えていないことを確認してください。
タスクリストに表示する
- プロセス図を保存します
- プールを実行します。デフォルトでログインされるユーザーは Walter Bates です
- デフォルトの起案フォームに2つの日付を記入します
- 「開始」をクリックします
送信されたら、タスクリストにタスク名が文脈化されていることがわかります。
タスクの準備が完了したときに、一度、この文脈の編集が行われます。
注意:以下の命令セットは、唯一Bonita BPM 7.3.0 以降でのタスクリストにのみ適用されます。それより前のバージョンでは、「説明」フィールドがデフォルトで表示されます。
この「説明」欄を表示して「提出済み」の状況を確認するには:
- リストの右上にある「設定ホイール」アイコン(歯車)をクリックします
- 表示された設定ボックス内の「説明」を選択します
- 設定ボックスの外側をクリックすると、設定ボックスが閉じられ、テーブルに「説明」欄を表示するようになります。この設定はブラウザのローカルストレージに保存されます
さて、下図に示すように、「提出済み」のステータスを表示している「説明」欄を確認できます。
- ログアウトします
- helen.kelly (helen.kelly が Walter Batesのマネージャであるものとして)でログインします
- 右側のタスク「実行」ボタンをクリックします
- 「完了したタスク」のフィルターに移動します
下図に示すように、「説明」欄には、タスクを実行した人の名前とステータスで編集した「完了後の説明」が表示されています。
あなたが「完了後の説明」フィールドを使用しない場合、「説明」欄には「タスクの説明」フィールドの情報が表示されたままになります(つまり、この例では「提出済み」)。
Studio のテクニカルなタスクの名前と説明は開発には有用ですが、上記で紹介した各タスクの「表示名」、「タスクの説明」および「完了後の説明」の情報は、タスクリスト内の各案件に対して一意になるので、より効率的で便利なタスクリストをユーザーに提供できます。
単語ベース検索機能を使ってタスク名を検索する
もう一つの別の機能である「単語ベース検索」を使用して、エンドユーザーの効率性と満足度を向上させることができます:
あなたはユーザーがタスク名を効率的に検索できるよう検索オプションを設定できます。たとえば、タスク名の先頭文字列を入力して前方一致検索したり、単語を入力して部分一致検索して、タスク全体から該当タスクを絞り込むことができます。
詳しくは、単語ベース検索を参照。
注意:単語ベース検索の設定は、ユーザーが経験するいくつかの遅延でパフォーマンスの低下を招く恐れがあります。この機能をオンにすると、お使いの環境にいくつかのテストが必要です。