jbpm 5.4 を使用してアプリケーションを開発しています。ワークフローを drools-guvnor にデプロイしました。次のように変数定義を追加しました task1_lname_out, task1_fname_out 次に、DataInputSet と DataOutputSet を Task1 にマップしました。
これは私の Task1-taskform.ftl です
<html>
<body>
<form action="CompleteTaskServlet" method="post" enctype="multipart/form-data">
First Name : <input name="task1_fname_out" type="text"><br>
Second Name : <input name="task1_lname_out" type="text">
<input value="Complete" type="submit"></form>
</body>
</html>
上記のタスクフォームに入力した後、タスクを完了します。次のコードを使用して、タスクデータでタスクを完了します。
Map<String,Object> result=new HashMap();
try {
taskService=API.getTaskService();
Task task = taskService.getTask(taskid);
result.put("Result", "taskInput");//here i can set the input parameter
BlockingGetContentResponseHandler contentResponseHandler =newBlockingGetContentResponseHandler();
ByteArrayOutputStream bos=new ByteArrayOutputStream();
ObjectOutputStream outS;
if(result!=null){
outS=new ObjectOutputStream(bos);
outS.writeObject(result);
outS.close();
contentData=new ContentData();
contentData.setContent(bos.toByteArray());
contentData.setAccessType(AccessType.Inline);
}
taskService.start(taskid, user);
taskService.complete(taskid, user, contentData);
contentResponseHandler.waitTillDone(5000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
};
drools guvnor から、DataInputSet と Association を適切にマッピングしました (プロセス変数は DataInputSet にマッピングされました)。次に、次のタスク フォーム Task2-taskform.ftl にアクセスします。
<html>
<body>
First Name:${task1_fname_out}<br>
Last Name: ${task1_lname_out}
<form action="CompleteTaskServlet" method="post" enctype="multipart/form-data">
Age : <input name="task2_age_in" type="text">
<br>
<input value="Complete" type="submit"></form>
</body></html>
次に、このような結果にアクセスします。
Map<String,Object> results=new HashMap<String,Object>();
long contentId=task.getTaskData().getOutputContentId();
if (contentId != -1) {
Content contents=taskService.getContent(contentId);
Object result=ContentMarshallerHelper.unmarshall(contents.getContent(),null);
results.put("Result",result);
if (result instanceof Map) {
Map<?,?> map=(Map<?,?>)result;
for (Map.Entry<?,?> entry : map.entrySet()) {
if (entry.getKey() instanceof String) {
results.put((String)entry.getKey(),entry.getValue());
out.print("entry.getValue()::"+entry.getValue());
}
}
}
}
私の問題は、Task2-taskform.ftl が Task1-taskform の出力結果を表示しないことです。Jbpm コンソールを介してすべて正常に動作するため、DataInput および出力マッピングにエラーはありません。
この問題を解決するのを手伝ってください。私のコードの次の行についてはわかりません。
result.put("Result", "taskInput");
私はこの点にこだわりました。私を助けてください ???