解决方案 »

  1.   

    环节处理中设计到退回处理, 不知道这张流程图 定义是否有问题 ,求大神指导哇  用的JBPM5.4
      

  2.   


    也就是说这个 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();
    }
      

  3.   

    不知道楼上的代码,出传入的isback是否正确,
    执行这行代码 :
    ksession.getWorkItemManager().completeWorkItem(task.getTaskData().getWorkItemId(), results);异常,找不到可以分支的有效路径;我觉得还是分支的时候参数的问题,求大神指导
      

  4.   

    小弟,最近也在研究jBPM5.4相关的东西,觉得这门技术太强大了,但因为学习成本和曲线,只能望而却步。这方面的大牛不嫌弃小弟愚钝的话,加这个群:63531367,希望能在相互讨论和分享中收获很多。。谢谢。。