//注册人工服务 HornetQHTWorkItemHandler hornetQHTWorkItemHandler = new HornetQHTWorkItemHandler(ksession); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", hornetQHTWorkItemHandler);
BlockingTaskOperationResponseHandler responseHandler2 = new BlockingTaskOperationResponseHandler(); client.start(taskId, userId, responseHandler2); responseHandler.waitTillDone(2000);
// then retrieve the task to extract the workItemId, where the process instance is waiting BlockingGetTaskResponseHandler taskResponseHandler = new BlockingGetTaskResponseHandler(); client.getTask(taskId, taskResponseHandler); responseHandler.waitTillDone(1000);
// first the task as completed on the task server BlockingTaskOperationResponseHandler taskOperationHandler = new BlockingTaskOperationResponseHandler();
//设置任务处理的全局参数 ContentData contentData = ContentMarshallerHelper.marshal(data, hornetQHTWorkItemHandler.getMarshallerContext(), null); if (data != null) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream out; try { out = new ObjectOutputStream(bos); out.writeObject(data); out.close(); contentData = new ContentData(); contentData.setContent(bos.toByteArray()); contentData.setAccessType(AccessType.Inline); } catch (IOException e) { e.printStackTrace(); } } client.complete(taskId, userId, contentData, taskOperationHandler);
taskOperationHandler.waitTillDone(1000); org.jbpm.task.Task task = taskResponseHandler.getTask(); try { // force completition of the workItem associated with the task, on which the process instance is waiting final Map<String, Object> results = new HashMap<String, Object>(); results.put("isback", "0"); ksession.getWorkItemManager().completeWorkItem(task.getTaskData().getWorkItemId(), results); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
也就是说这个 isback何如传入 :
//连接TaskServer
connect();
BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
List<Status> status=new ArrayList<Status>();
status.add(Status.InProgress);
status.add(Status.Ready );
client.getTasksAssignedAsPotentialOwnerByStatus(userId, status, "en-UK", responseHandler);
List<TaskSummary> tasks = responseHandler.getResults();
System.err.print("||||||||||||||||||||||||||||||||||||||||||"+tasks.size());
//通过流程实例ID获取taskId
//TaskBO taskBo = (wfTaskService.getUnassigenTask(processInstanceId)).get(0);
//long taskId = taskBo.getId();
long taskId = tasks.get(0).getId();
//注册人工服务
HornetQHTWorkItemHandler hornetQHTWorkItemHandler = new HornetQHTWorkItemHandler(ksession);
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", hornetQHTWorkItemHandler);
BlockingTaskOperationResponseHandler responseHandler2 = new BlockingTaskOperationResponseHandler();
client.start(taskId, userId, responseHandler2);
responseHandler.waitTillDone(2000);
// then retrieve the task to extract the workItemId, where the process instance is waiting
BlockingGetTaskResponseHandler taskResponseHandler = new BlockingGetTaskResponseHandler();
client.getTask(taskId, taskResponseHandler);
responseHandler.waitTillDone(1000);
// first the task as completed on the task server
BlockingTaskOperationResponseHandler taskOperationHandler = new BlockingTaskOperationResponseHandler();
//设置任务处理的全局参数
ContentData contentData = ContentMarshallerHelper.marshal(data, hornetQHTWorkItemHandler.getMarshallerContext(), null);
if (data != null) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out;
try {
out = new ObjectOutputStream(bos);
out.writeObject(data);
out.close();
contentData = new ContentData();
contentData.setContent(bos.toByteArray());
contentData.setAccessType(AccessType.Inline);
} catch (IOException e) {
e.printStackTrace();
}
}
client.complete(taskId, userId, contentData, taskOperationHandler);
taskOperationHandler.waitTillDone(1000);
org.jbpm.task.Task task = taskResponseHandler.getTask(); try {
// force completition of the workItem associated with the task, on which the process instance is waiting
final Map<String, Object> results = new HashMap<String, Object>();
results.put("isback", "0");
ksession.getWorkItemManager().completeWorkItem(task.getTaskData().getWorkItemId(), results);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
执行这行代码 :
ksession.getWorkItemManager().completeWorkItem(task.getTaskData().getWorkItemId(), results);异常,找不到可以分支的有效路径;我觉得还是分支的时候参数的问题,求大神指导