【问题标题】:Task form complete in jbpm 5.4(edited)在 jbpm 5.4 中完成的任务表(已编辑)
【发布时间】:2014-12-16 08:02:32
【问题描述】:

我正在使用 jbpm 5.4 开发应用程序。我已经在 drools-guvnor 中部署了我的工作流程。我添加了如下变量定义 task1_lname_out,task1_fname_out 然后我为 Task1 映射了 DataInputSet 和 DataOutputSet。在 Task1 中,我将 DataOutputSet 映射到了变量定义。

这是我的 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 控制台一切正常。

请帮我解决这个问题?我不确定我的代码中是否有以下行。

 result.put("Result", "taskInput");

我一直坚持这一点。请帮帮我???

【问题讨论】:

    标签: workflow drools jbpm drools-guvnor drools-flow


    【解决方案1】:

    您是否将流程中的结果数据映射到第一个任务中的流程变量,然后将这些变量映射回第二个任务中的任务输入参数?数据不会自动传递,您必须定义要在流程实例中存储哪些数据以便以后使用,以及要传递哪些数据作为以后任务的输入。

    【讨论】:

    • 我使用变量定义来添加流程变量以及DataInputSet和DataOutputSet来映射drools guvnor中的任务输入和输出。那我应该从代码层面做什么呢?
    • 如果我在渲染后使用 rest api 完成任务(/gwt-console-server/rs/form/task/{id}/complete)一切正常。但我想自己完成任务。我哪里错了?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    相关资源
    最近更新 更多