diff --git a/jbpm-test-coverage/src/test/java/org/jbpm/test/regression/subprocess/MulticonSubprocessTest.java b/jbpm-test-coverage/src/test/java/org/jbpm/test/regression/subprocess/MulticonSubprocessTest.java new file mode 100644 index 0000000000..70df9926dd --- /dev/null +++ b/jbpm-test-coverage/src/test/java/org/jbpm/test/regression/subprocess/MulticonSubprocessTest.java @@ -0,0 +1,90 @@ +/* + * Copyright 2017 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jbpm.test.regression.subprocess; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.assertj.core.api.Assertions; +import org.jbpm.test.JbpmTestCase; +import org.junit.Test; +import static org.junit.Assert.assertEquals; +import org.kie.api.event.process.DefaultProcessEventListener; +import org.kie.api.event.process.ProcessCompletedEvent; +import org.kie.api.event.process.ProcessNodeTriggeredEvent; +import org.kie.api.event.process.ProcessStartedEvent; +import org.kie.api.runtime.KieSession; +import org.kie.api.task.TaskService; +import org.kie.api.task.model.Task; + +public class MulticonSubprocessTest extends JbpmTestCase { + + private static final String DYNAMIC_PARENT_SUBPROCESS_PARENT = "org/jbpm/test/regression/subprocess/MulticonParentProcess.bpmn"; + private static final String DYNAMIC_PARENT_SUBPROCESS_CHILD = "org/jbpm/test/regression/subprocess/MulticonSubProcess.bpmn"; + private static final String DYNAMIC_PARENT_SUBPROCESS_ID = "MulticonParentProcess"; + + static { + System.setProperty("jbpm.enable.multi.con", "true"); + } + + @Test + public void testDuplicateTaskAfterSubProcess() throws Exception { + + addProcessEventListener(new DefaultProcessEventListener() { + @Override + public void afterNodeTriggered(ProcessNodeTriggeredEvent event) { + System.out.println(event); + } + + @Override + public void afterProcessStarted(ProcessStartedEvent event) { + System.out.println(event + " pid " + event.getProcessInstance().getId()); + } + + @Override + public void afterProcessCompleted(ProcessCompletedEvent event) { + System.out.println(event); + } + }); + + createRuntimeManager(Strategy.PROCESS_INSTANCE, "MulticonSubprocessTest", + DYNAMIC_PARENT_SUBPROCESS_PARENT, + DYNAMIC_PARENT_SUBPROCESS_CHILD); + + + KieSession ksession = getRuntimeEngine().getKieSession(); + Assertions.assertThat(ksession).isNotNull(); + Map params = new HashMap<>(); + Long pid = ksession.startProcess(DYNAMIC_PARENT_SUBPROCESS_ID, params).getId(); + assertProcessInstanceActive(pid); + + + TaskService taskService = getRuntimeEngine().getTaskService(); + List tasks = taskService.getTasksByProcessInstanceId(2); + Task task = taskService.getTaskById(tasks.get(0)); + taskService.start(task.getId(), "john"); + taskService.complete(task.getId(), "john", Collections.emptyMap()); + assertProcessInstanceCompleted(2); // sub-process is completed + assertProcessInstanceActive(pid); + + tasks = taskService.getTasksByProcessInstanceId(pid); + assertEquals(1, tasks.size()); + } + +} diff --git a/jbpm-test-coverage/src/test/resources/org/jbpm/test/regression/subprocess/MulticonParentProcess.bpmn b/jbpm-test-coverage/src/test/resources/org/jbpm/test/regression/subprocess/MulticonParentProcess.bpmn new file mode 100644 index 0000000000..6f7b4685d1 --- /dev/null +++ b/jbpm-test-coverage/src/test/resources/org/jbpm/test/regression/subprocess/MulticonParentProcess.bpmn @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _6602D1A2-AC95-4E21-8968-A44EC4CE6AA3 + + + + + + + + + + + + + + _4BD7A9F6-BEA5-4837-86A3-4D48EC5E5692 + _8D461EAE-25A9-4E49-8425-3DAA9B7ABF2E + + + + _4C2C1ABB-7B40-4E42-A7B0-6253994211C3_isBypassInputX + + + + _4C2C1ABB-7B40-4E42-A7B0-6253994211C3_isBypassInputX + + + _4C2C1ABB-7B40-4E42-A7B0-6253994211C3_isBypassInputX + + + + + _4BD7A9F6-BEA5-4837-86A3-4D48EC5E5692 + + + + + + + + _8D461EAE-25A9-4E49-8425-3DAA9B7ABF2E + _6602D1A2-AC95-4E21-8968-A44EC4CE6AA3 + + + + + _46533E34-3028-4A39-802C-02B0F578C55C_TaskNameInputX + _46533E34-3028-4A39-802C-02B0F578C55C_SkippableInputX + + + + + _46533E34-3028-4A39-802C-02B0F578C55C_TaskNameInputX + + + _46533E34-3028-4A39-802C-02B0F578C55C_TaskNameInputX + + + + _46533E34-3028-4A39-802C-02B0F578C55C_SkippableInputX + + + _46533E34-3028-4A39-802C-02B0F578C55C_SkippableInputX + + + + + john + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _TXzREG18EeuJiZDvDe2hQA + _TXzREG18EeuJiZDvDe2hQA + + diff --git a/jbpm-test-coverage/src/test/resources/org/jbpm/test/regression/subprocess/MulticonSubProcess.bpmn b/jbpm-test-coverage/src/test/resources/org/jbpm/test/regression/subprocess/MulticonSubProcess.bpmn new file mode 100644 index 0000000000..18be73bd8b --- /dev/null +++ b/jbpm-test-coverage/src/test/resources/org/jbpm/test/regression/subprocess/MulticonSubProcess.bpmn @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _25BE0F4E-7956-446A-8260-73E73E00545A + + + + + + + + _D03EE8E9-625F-445F-89C4-C2C8CE9403E1 + _96A92A45-DA7F-4F2E-9EDF-F2B824176DC3 + _4B6307DC-FACE-4AF8-9223-BB3CD633099A + + + + + _FF082490-F5DD-4C4F-A664-D41BD9ECF6A8_TaskNameInputX + _FF082490-F5DD-4C4F-A664-D41BD9ECF6A8_SkippableInputX + + + + + _FF082490-F5DD-4C4F-A664-D41BD9ECF6A8_TaskNameInputX + + + _FF082490-F5DD-4C4F-A664-D41BD9ECF6A8_TaskNameInputX + + + + _FF082490-F5DD-4C4F-A664-D41BD9ECF6A8_SkippableInputX + + + _FF082490-F5DD-4C4F-A664-D41BD9ECF6A8_SkippableInputX + + + + + john + + + + + _25BE0F4E-7956-446A-8260-73E73E00545A + _C258EF4A-864F-4727-9F4B-9558C9C4257B + _96A92A45-DA7F-4F2E-9EDF-F2B824176DC3 + + + + + + + + _C258EF4A-864F-4727-9F4B-9558C9C4257B + _D03EE8E9-625F-445F-89C4-C2C8CE9403E1 + + + + + _A911986D-4C64-4DA1-B127-44117A8AD1F1_TaskNameInputX + _A911986D-4C64-4DA1-B127-44117A8AD1F1_SkippableInputX + + + + + _A911986D-4C64-4DA1-B127-44117A8AD1F1_TaskNameInputX + + + _A911986D-4C64-4DA1-B127-44117A8AD1F1_TaskNameInputX + + + + _A911986D-4C64-4DA1-B127-44117A8AD1F1_SkippableInputX + + + _A911986D-4C64-4DA1-B127-44117A8AD1F1_SkippableInputX + + + + + john + + + + + _4B6307DC-FACE-4AF8-9223-BB3CD633099A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _lJaRgG18EeuJiZDvDe2hQA + _lJaRgG18EeuJiZDvDe2hQA + +