Как настроить несколько сервисных задач (для пользовательских обработчиков рабочих элементов) внутри одного процесса в bpmn (jbpm6)

Я новичок в 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();

Я хотел бы иметь несколько сервисных задач, указывающих на разные настраиваемые обработчики WorkItemHandler, указанные выше.


person user2775569    schedule 01.01.2015    source источник


Ответы (1)


В этом случае вы переопределяете узел «Сервисная задача». Что вам нужно сделать, так это написать отдельный обработчик рабочего элемента. Документация находится здесь

Основные шаги:

  1. Создайте определение рабочего элемента определение рабочего элемента — wid
  2. Создайте обработчик рабочего элемента Java класс обработчика< /а>
  3. Перетащите wid на bpmn
  4. Register handler (similar to what you did for "Service Task Above"), use string you used in wid definition: [ "name" : "
person Grady G Cooper    schedule 11.03.2015