|
26 | 26 | import java.util.List;
|
27 | 27 | import java.util.Map;
|
28 | 28 | import java.util.Objects;
|
| 29 | +import java.util.Set; |
| 30 | +import java.util.stream.Collectors; |
29 | 31 |
|
30 | 32 | import org.drools.compiler.rule.builder.PackageBuildContext;
|
31 | 33 | import org.jbpm.bpmn2.activity.ScriptTaskModel;
|
|
56 | 58 | import org.jbpm.bpmn2.objects.HelloService;
|
57 | 59 | import org.jbpm.bpmn2.objects.Person;
|
58 | 60 | import org.jbpm.bpmn2.objects.TestWorkItemHandler;
|
| 61 | +import org.jbpm.bpmn2.subprocess.CallActivityModel; |
| 62 | +import org.jbpm.bpmn2.subprocess.CallActivityProcess; |
| 63 | +import org.jbpm.bpmn2.subprocess.CallActivitySubProcessProcess; |
| 64 | +import org.jbpm.bpmn2.subprocess.InputMappingUsingValueModel; |
| 65 | +import org.jbpm.bpmn2.subprocess.InputMappingUsingValueProcess; |
| 66 | +import org.jbpm.bpmn2.subprocess.SingleTaskWithVarDefModel; |
| 67 | +import org.jbpm.bpmn2.subprocess.SingleTaskWithVarDefProcess; |
59 | 68 | import org.jbpm.bpmn2.subprocess.SubProcessWithEntryExitScriptsModel;
|
60 | 69 | import org.jbpm.bpmn2.subprocess.SubProcessWithEntryExitScriptsProcess;
|
| 70 | +import org.jbpm.bpmn2.subprocess.SubProcessWithTerminateEndEventModel; |
| 71 | +import org.jbpm.bpmn2.subprocess.SubProcessWithTerminateEndEventProcess; |
| 72 | +import org.jbpm.bpmn2.subprocess.SubProcessWithTerminateEndEventProcessScopeModel; |
| 73 | +import org.jbpm.bpmn2.subprocess.SubProcessWithTerminateEndEventProcessScopeProcess; |
| 74 | +import org.jbpm.bpmn2.task.ReceiveTaskModel; |
| 75 | +import org.jbpm.bpmn2.task.ReceiveTaskProcess; |
61 | 76 | import org.jbpm.bpmn2.task.SendTaskModel;
|
62 | 77 | import org.jbpm.bpmn2.task.SendTaskProcess;
|
63 | 78 | import org.jbpm.bpmn2.test.RequirePersistence;
|
|
85 | 100 | import org.jbpm.workflow.instance.WorkflowRuntimeException;
|
86 | 101 | import org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl;
|
87 | 102 | import org.jbpm.workflow.instance.node.DynamicUtils;
|
| 103 | +import org.jbpm.workflow.instance.node.EndNodeInstance; |
| 104 | +import org.jbpm.workflow.instance.node.StartNodeInstance; |
88 | 105 | import org.jbpm.workflow.instance.node.WorkItemNodeInstance;
|
89 | 106 | import org.junit.jupiter.api.Disabled;
|
90 | 107 | import org.junit.jupiter.api.Test;
|
|
94 | 111 | import org.kie.api.definition.process.NodeContainer;
|
95 | 112 | import org.kie.api.definition.process.Process;
|
96 | 113 | import org.kie.api.definition.process.WorkflowElementIdentifier;
|
| 114 | +import org.kie.api.event.process.ProcessNodeEvent; |
97 | 115 | import org.kie.api.event.process.ProcessNodeTriggeredEvent;
|
98 | 116 | import org.kie.api.event.process.ProcessStartedEvent;
|
99 | 117 | import org.kie.api.event.process.ProcessVariableChangedEvent;
|
@@ -453,25 +471,26 @@ public void testUserTaskVerifyParameters() throws Exception {
|
453 | 471 | }
|
454 | 472 |
|
455 | 473 | @Test
|
456 |
| - public void testCallActivityWithContantsAssignment() throws Exception { |
457 |
| - kruntime = createKogitoProcessRuntime( |
458 |
| - "org/jbpm/bpmn2/subprocess/BPMN2-SingleTaskWithVarDef.bpmn2", |
459 |
| - "org/jbpm/bpmn2/subprocess/BPMN2-InputMappingUsingValue.bpmn2"); |
460 |
| - |
461 |
| - TestWorkItemHandler handler = new TestWorkItemHandler(); |
462 |
| - kruntime.getKogitoWorkItemManager().registerWorkItemHandler("CustomTask", handler); |
463 |
| - Map<String, Object> params = new HashMap<>(); |
464 |
| - KogitoProcessInstance processInstance = kruntime.startProcess("InputMappingUsingValue", params); |
| 474 | + public void testCallActivityWithContantsAssignment() { |
| 475 | + Application app = ProcessTestHelper.newApplication(); |
| 476 | + TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); |
| 477 | + ProcessTestHelper.registerHandler(app, "CustomTask", workItemHandler); |
| 478 | + org.kie.kogito.process.Process<SingleTaskWithVarDefModel> singleTaskWithVarDefModelProcess = SingleTaskWithVarDefProcess.newProcess(app); |
| 479 | + SingleTaskWithVarDefModel singleTaskWithVarDefModel = singleTaskWithVarDefModelProcess.createModel(); |
| 480 | + ProcessInstance<SingleTaskWithVarDefModel> singleTaskWithVarDefModelProcessInstance = singleTaskWithVarDefModelProcess.createInstance(singleTaskWithVarDefModel); |
| 481 | + org.kie.kogito.process.Process<InputMappingUsingValueModel> processDefinition = InputMappingUsingValueProcess.newProcess(app); |
| 482 | + InputMappingUsingValueModel model = processDefinition.createModel(); |
| 483 | + org.kie.kogito.process.ProcessInstance<InputMappingUsingValueModel> instance = processDefinition.createInstance(model); |
| 484 | + instance.start(); |
465 | 485 |
|
466 |
| - org.kie.kogito.internal.process.runtime.KogitoWorkItem workItem = handler.getWorkItem(); |
| 486 | + assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE); |
| 487 | + KogitoWorkItem workItem = workItemHandler.getWorkItem(); |
467 | 488 | assertThat(workItem).isNotNull();
|
468 |
| - |
469 | 489 | Object value = workItem.getParameter("TaskName");
|
470 | 490 | assertThat(value).isNotNull().isEqualTo("test string");
|
471 | 491 |
|
472 |
| - kruntime.getKogitoWorkItemManager().completeWorkItem(workItem.getStringId(), null); |
473 |
| - |
474 |
| - assertProcessInstanceCompleted(processInstance); |
| 492 | + singleTaskWithVarDefModelProcessInstance.completeWorkItem(workItem.getStringId(), Collections.emptyMap()); |
| 493 | + assertThat(instance).extracting(ProcessInstance::status).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED); |
475 | 494 | }
|
476 | 495 |
|
477 | 496 | @Test
|
@@ -499,16 +518,18 @@ public void testSubProcessWithEntryExitScripts() throws Exception {
|
499 | 518 | }
|
500 | 519 |
|
501 | 520 | @Test
|
502 |
| - public void testCallActivity() throws Exception { |
503 |
| - kruntime = createKogitoProcessRuntime("org/jbpm/bpmn2/subprocess/BPMN2-CallActivity.bpmn2", |
504 |
| - "org/jbpm/bpmn2/subprocess/BPMN2-CallActivitySubProcess.bpmn2"); |
| 521 | + public void testCallActivity() { |
| 522 | + Application app = ProcessTestHelper.newApplication(); |
| 523 | + org.kie.kogito.process.Process<CallActivityModel> processDefinition = CallActivityProcess.newProcess(app); |
| 524 | + CallActivityModel model = processDefinition.createModel(); |
| 525 | + model.setX("oldValue"); |
| 526 | + ProcessInstance<CallActivityModel> instance = processDefinition.createInstance(model); |
505 | 527 |
|
506 |
| - Map<String, Object> params = new HashMap<>(); |
507 |
| - params.put("x", "oldValue"); |
508 |
| - KogitoProcessInstance processInstance = kruntime.startProcess( |
509 |
| - "CallActivity", params); |
510 |
| - assertProcessInstanceCompleted(processInstance); |
511 |
| - assertThat(((KogitoWorkflowProcessInstance) processInstance).getVariable("y")).isEqualTo("new value"); |
| 528 | + CallActivitySubProcessProcess.newProcess(app); |
| 529 | + |
| 530 | + instance.start(); |
| 531 | + assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED); |
| 532 | + assertThat(instance.variables().getY()).isEqualTo("new value"); |
512 | 533 | }
|
513 | 534 |
|
514 | 535 | @Test
|
@@ -650,36 +671,46 @@ public void testMultiinstanceSubProcessWrongStartEvent() throws Exception {
|
650 | 671 | }
|
651 | 672 |
|
652 | 673 | @Test
|
653 |
| - public void testSubProcessWithTerminateEndEvent() throws Exception { |
654 |
| - kruntime = createKogitoProcessRuntime("org/jbpm/bpmn2/subprocess/BPMN2-SubProcessWithTerminateEndEvent.bpmn2"); |
655 |
| - final List<String> list = new ArrayList<>(); |
656 |
| - kruntime.getProcessEventManager().addEventListener(new DefaultKogitoProcessEventListener() { |
| 674 | + public void testSubProcessWithTerminateEndEvent() { |
| 675 | + Application app = ProcessTestHelper.newApplication(); |
| 676 | + EventTrackerProcessListener listener = new EventTrackerProcessListener(); |
| 677 | + ProcessTestHelper.registerProcessEventListener(app, listener); |
| 678 | + org.kie.kogito.process.Process<SubProcessWithTerminateEndEventModel> processDefinition = SubProcessWithTerminateEndEventProcess.newProcess(app); |
| 679 | + SubProcessWithTerminateEndEventModel model = processDefinition.createModel(); |
| 680 | + |
| 681 | + org.kie.kogito.process.ProcessInstance<SubProcessWithTerminateEndEventModel> instance = processDefinition.createInstance(model); |
| 682 | + instance.start(); |
| 683 | + Set<NodeInstance> processNodeEvents = listener.tracked().stream() |
| 684 | + .map(ProcessNodeEvent::getNodeInstance) |
| 685 | + .collect(Collectors.toSet()); |
| 686 | + assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED); |
| 687 | + assertThat(processNodeEvents).hasSize(7); |
657 | 688 |
|
658 |
| - @Override |
659 |
| - public void afterNodeTriggered(ProcessNodeTriggeredEvent event) { |
660 |
| - list.add(event.getNodeInstance().getNodeName()); |
661 |
| - } |
662 |
| - }); |
663 |
| - KogitoProcessInstance processInstance = kruntime.startProcess("SubProcessWithTerminateEndEvent"); |
664 |
| - assertProcessInstanceCompleted(processInstance); |
665 |
| - assertThat(list).hasSize(7); |
666 | 689 | }
|
667 | 690 |
|
668 | 691 | @Test
|
669 |
| - public void testSubProcessWithTerminateEndEventProcessScope() |
670 |
| - throws Exception { |
671 |
| - kruntime = createKogitoProcessRuntime("org/jbpm/bpmn2/subprocess/BPMN2-SubProcessWithTerminateEndEventProcessScope.bpmn2"); |
672 |
| - final List<String> list = new ArrayList<>(); |
673 |
| - kruntime.getProcessEventManager().addEventListener(new DefaultKogitoProcessEventListener() { |
| 692 | + public void testSubProcessWithTerminateEndEventProcessScope() { |
| 693 | + |
| 694 | + Application app = ProcessTestHelper.newApplication(); |
| 695 | + final List<String> nodeList = new ArrayList<>(); |
| 696 | + EventTrackerProcessListener listener = new EventTrackerProcessListener() { |
674 | 697 |
|
675 | 698 | @Override
|
676 | 699 | public void afterNodeTriggered(ProcessNodeTriggeredEvent event) {
|
677 |
| - list.add(event.getNodeInstance().getNodeName()); |
| 700 | + NodeInstance nodeInstance = event.getNodeInstance(); |
| 701 | + if (!(nodeInstance instanceof EndNodeInstance || nodeInstance instanceof StartNodeInstance)) { |
| 702 | + nodeList.add(nodeInstance.getNodeName()); |
| 703 | + } |
678 | 704 | }
|
679 |
| - }); |
680 |
| - KogitoProcessInstance processInstance = kruntime.startProcess("SubProcessWithTerminateEndEventProcessScope"); |
681 |
| - assertProcessInstanceCompleted(processInstance); |
682 |
| - assertThat(list).hasSize(5); |
| 705 | + }; |
| 706 | + ProcessTestHelper.registerProcessEventListener(app, listener); |
| 707 | + org.kie.kogito.process.Process<SubProcessWithTerminateEndEventProcessScopeModel> processDefinition = SubProcessWithTerminateEndEventProcessScopeProcess.newProcess(app); |
| 708 | + SubProcessWithTerminateEndEventProcessScopeModel model = processDefinition.createModel(); |
| 709 | + |
| 710 | + org.kie.kogito.process.ProcessInstance<SubProcessWithTerminateEndEventProcessScopeModel> instance = processDefinition.createInstance(model); |
| 711 | + instance.start(); |
| 712 | + assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_COMPLETED); |
| 713 | + assertThat(nodeList).hasSize(3); |
683 | 714 | }
|
684 | 715 |
|
685 | 716 | @Test
|
@@ -883,17 +914,19 @@ public void testSendTask() {
|
883 | 914 |
|
884 | 915 | @Test
|
885 | 916 | public void testReceiveTask() throws Exception {
|
| 917 | + Application app = ProcessTestHelper.newApplication(); |
886 | 918 | kruntime = createKogitoProcessRuntime("org/jbpm/bpmn2/task/BPMN2-ReceiveTask.bpmn2");
|
887 | 919 | ReceiveTaskHandler receiveTaskHandler = new ReceiveTaskHandler(kruntime);
|
888 |
| - |
889 |
| - kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Receive Task", |
890 |
| - receiveTaskHandler); |
891 |
| - KogitoWorkflowProcessInstance processInstance = (KogitoWorkflowProcessInstance) kruntime |
892 |
| - .startProcess("ReceiveTask"); |
893 |
| - assertProcessInstanceActive(processInstance); |
| 920 | + ProcessTestHelper.registerHandler(app, "Receive Task", receiveTaskHandler); |
| 921 | + org.kie.kogito.process.Process<ReceiveTaskModel> processDefinition = ReceiveTaskProcess.newProcess(app); |
| 922 | + ReceiveTaskModel model = processDefinition.createModel(); |
| 923 | + org.kie.kogito.process.ProcessInstance<ReceiveTaskModel> instance = processDefinition.createInstance(model); |
| 924 | + instance.start(); |
| 925 | + assertThat(instance).extracting(ProcessInstance::status).isEqualTo(ProcessInstance.STATE_ACTIVE); |
894 | 926 | receiveTaskHandler.setKnowledgeRuntime(kruntime);
|
895 | 927 | receiveTaskHandler.messageReceived("HelloMessage", "Hello john!");
|
896 |
| - assertProcessInstanceFinished(processInstance, kruntime); |
| 928 | + ProcessTestHelper.completeWorkItem(instance, "john", Collections.emptyMap()); |
| 929 | + assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED); |
897 | 930 | }
|
898 | 931 |
|
899 | 932 | @Test
|
|
0 commit comments