8.7. 新規プロセスとタスクフォームの追加

フォームは、新規プロセスの開始とヒューマンタスクの完了に使用することができます。固有のプロセス定義のフォームを作成するには、名前が {processId}.ftl というテンプレートを作成します。テンプレート自体は、HTML を使用してフォームをモデリングします。例えば、com.sample.evaluation.ftl ファイルは HTML を使用して以下のようなフォームをモデリングします。
<html><body><h2>Start Performance Evaluation</h2><hr><form action="complete" method="POST" enctype="multipart/form-data">
Please fill in your username: <input type="text" name="employee" /></BR><input type="submit" value="Complete"></form></body></html>







特定の種類のヒューマンタスクに対するタスクフォームは、{taskName}.ftl という名前のテンプレートを作成することでヒューマンタスクと関連付けることができます。フォームから現在のヒューマンタスクを表すタスクパラメーターにアクセスできるため、タスクフォームはタスクの入力項目に基づいて動的に調節することができます。タスクパラメーターは、jbpm-human-task モジュールで定義されているように、タスクモデルのオブジェクトです。これにより、タスクフォームをタスクに関連する入力データや説明をもとにカスタマイズすることができます。例えば、先ほど紹介した評価フォームはタスクパラメーターを使用してタスクの説明にアクセスして、以下のようにタスクフォームにその説明を表示します。
<html><body><h2>Employee evaluation</h2><hr>
${task.descriptions[0].text}<br/><br/>
Please fill in the following evaluation form: 
<form action="complete" method="POST" enctype="multipart/form-data">
Rate the overall performance: <select name="performance"><option value="outstanding">Outstanding</option><option value="exceeding">Exceeding expectations</option><option value="acceptable">Acceptable</option><option value="below">Below average</option></select><br/><br/>
Check any that apply:<br/><input type="checkbox" name="initiative" value="initiative">Displaying initiative<br/><input type="checkbox" name="change" value="change">Thriving on change<br/><input type="checkbox" name="communication" value="communication">Good communication skills<br/><br/><input type="submit" value="Complete"></form></body></html>


















タスクフォームは、パラメーターマッピングを使用してプロセス変数からユーザータスクノードにマッピングされる追加のタスクパラメーターにもアクセスできます。詳細は 「ヒューマンタスク」 を参照してください。これらのタスクパラメーターも直接タスクフォームの中からアクセスすることができます。例えば、タスクフォームに顧客の依頼を確認させるようにするには、ユーザータスクノードは (依頼を出した顧客の) userId、コメント(依頼の説明)、日付 (実際の依頼の日付/時間) をプロセスからタスクにタスクパラメーターとしてコピーします。そうすると、これらのパラメーターは、タスクフォームから直接アクセスできるようになります。
<html><body><h2>Request Review</h2><hr>
UserId: ${userId} <br/>
Description: ${description} <br/>
Date: ${date?date} ${date?time}
<form action="complete" method="POST" enctype="multipart/form-data">
Comment:<BR/><textarea cols="50" rows="5" name="comment"></textarea></BR><input type="submit" name="outcome" value="Accept"><input type="submit" name="outcome" value="Reject"></form></body></html>








ユーザーがタスクフォームに入力して提示したデータは、タスク完了時に結果パラメーターとして追加されます。データ要素の名前が結果パラメーターの名前として使用されます。例えば、上記の最初のタスクを完了すると、結果のパラメーターのマップに performance、initiative、change、communication と呼ばれる結果変数が含まれます。結果パラメーターには、これらの結果パラメーターを結果マッピングでプロセス変数にマッピングすることで、関連のプロセスからアクセスできます。
フォームは、(例えば jbossas/server/profile/lib ディレクトリの jar の中にあるか、jbpm コンソールサーバー war の jbpm-gwt-form.jar のサンプルフォームのセットに追加されている) クラスパスにあるか、JBoss BRMS プロセスレポジトリに格納することができます。