【问题标题】:How to configure multiple service tasks (for custom workitem handlers) inside a single process in bpmn (jbpm6)如何在 bpmn (jbpm 6) 中的单个进程内配置多个服务任务(用于自定义工作项处理程序)
【发布时间】:2015-01-01 05:42:05
【问题描述】:

我是 jbpm6 的新手。我能够使用自定义工作项处理程序配置和运行单个服务任务。 但是,当我尝试在单个进程中配置多个服务任务时,它不起作用。 有人可以帮忙吗?提前致谢!

以下是我针对单个服务任务的工作代码。

    <itemDefinition id="_sItem" structureRef="String" />
    <itemDefinition id="_2_InMessageType" structureRef="java.lang.String" />
    <message id="_2_InMessage" itemRef="_2_InMessageType" />

    <interface id="_handlingServiceInterface" name="myService">
        <operation id="_handlingServiceOperation" name="">
            <inMessageRef>_2_InMessage</inMessageRef>
        </operation>
    </interface>

    <process id="SingleNode_Process" isExecutable="true"
        processType="Private" name="Service Process">
        <property id="s" itemSubjectRef="_2_InMessageType" />

        <startEvent id="start-state" name="Start" />

        <serviceTask id="node" name="myservice" implementation="Other"
            operationRef="_handlingServiceOperation">
        </serviceTask>

   <endEvent id="end-state" name="End">
            <terminateEventDefinition />
        </endEvent>

    <sequenceFlow id="flow_N1000C" sourceRef="start-state"
            targetRef="node" />
   <sequenceFlow id="flow_N10017" sourceRef="node"
            targetRef="end-state" />

    </process>




ProcessInstance processInstance = null;
        KieHelper kieHelper = new KieHelper();

        KieBase kbase = kieHelper.addResource(ResourceFactory
                    .newClassPathResource("test.bpmn"))
                    .build();

        KieSession ksession = kbase.newKieSession();

        try{
            ksession.getWorkItemManager().registerWorkItemHandler("Service Task",  new MyTaskHandler());
        }
        catch (Exception ex){
                System.err.println("WorkitemHandler==>"+ex.toString());
        }


        try{
            processInstance = ksession.startProcess("SingleNode_Process");
        }

        catch(WorkflowRuntimeException e){
            System.err.println("processInstance Exception ==>"+e.toString());

        }

        ksession.dispose();

我希望有多个 servicetask 指向不同的自定义 WorkItemHandlers,上面。

【问题讨论】:

    标签: java jbpm bpmn


    【解决方案1】:

    在这种情况下,您覆盖了“服务任务”节点。您需要做的是编写一个单独的工作项处理程序。文档是here

    基本步骤是:

    1. 创建工作项定义work item definition - wid
    2. 创建 java 工作项处理程序handler class
    3. 将 wid 拖放到 bpmn
    4. 注册处理程序(类似于您为“上面的服务任务”所做的),使用 您在wid定义中使用的字符串:[“name”:“

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      相关资源
      最近更新 更多