Skip to content

Commit

Permalink
[incubator-kie-issues-1131] v7 migration to code generation
Browse files Browse the repository at this point in the history
  • Loading branch information
Abhitocode committed Oct 3, 2024
1 parent 7d7b406 commit ee9b7b5
Show file tree
Hide file tree
Showing 6 changed files with 117 additions and 116 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
<itemDefinition id="_xItem" structureRef="String" />
<itemDefinition id="_yItem" structureRef="String" />
<itemDefinition id="_nameItem" structureRef="String" />
<itemDefinition id="_surnameItem" structureRef="String" />
<itemDefinition id="_personItem" structureRef="org.jbpm.bpmn2.objects.Person" />

<process processType="Private" isExecutable="true" id="ScriptTaskFEEL" name="ScriptTask Process" tns:packageName="org.jbpm.bpmn2.activity" >
Expand All @@ -41,6 +42,7 @@
<property id="x" itemSubjectRef="_xItem"/>
<property id="y" itemSubjectRef="_yItem"/>
<property id="name" itemSubjectRef="_nameItem"/>
<property id="surname" itemSubjectRef="_surnameItem"/>
<property id="person" itemSubjectRef="_personItem"/>

<!-- nodes -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.omg.org/bpmn20" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:bpsim="http://www.bpsim.org/schemas/1.0" xmlns:color="http://www.omg.org/spec/BPMN/non-normative/color" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:drools="http://www.jboss.org/drools" id="_RSWy4J-HEei4M9OEIzmf1w" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd http://www.jboss.org/drools drools.xsd http://www.bpsim.org/schemas/1.0 bpsim.xsd" exporter="jBPM Designer" exporterVersion="1.0" expressionLanguage="http://www.mvel.org/2.0" targetNamespace="http://www.omg.org/bpmn20" typeLanguage="http://www.java.com/javaTypes">
<bpmn2:itemDefinition id="_childsItem" structureRef="java.util.List"/>
<bpmn2:itemDefinition id="_fatherIdItem" structureRef="java.lang.Long"/>
<bpmn2:itemDefinition id="_fatherIdItem" structureRef="java.lang.String"/>
<bpmn2:signal id="_ab06284f-eb30-3d3b-80aa-c35195ce2096" name="stopChild:#{fatherId}"/>
<bpmn2:itemDefinition id="_5A8FEA7B-2888-4ECE-B6FD-119A3EB5C708_multiInstanceItemType"/>
<bpmn2:itemDefinition id="__47B12FBC-C42B-4ADB-A359-5FC0C36BF7E8_SkippableInputXItem" structureRef="Object"/>
Expand Down
41 changes: 21 additions & 20 deletions jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ActivityTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
import java.util.stream.Collectors;

import org.drools.compiler.rule.builder.PackageBuildContext;
import org.jbpm.bpmn2.activity.ScriptTaskFEELModel;
import org.jbpm.bpmn2.activity.ScriptTaskFEELProcess;
import org.jbpm.bpmn2.activity.ScriptTaskModel;
import org.jbpm.bpmn2.activity.ScriptTaskProcess;
import org.jbpm.bpmn2.activity.ScriptTaskWithIOModel;
Expand Down Expand Up @@ -1805,28 +1807,27 @@ public void testBusinessRuleTaskFireLimitAsParameter() throws Exception {
}

@Test
@Disabled("On Exit not supported, see https://issues.redhat.com/browse/KOGITO-2067")
public void testScriptTaskFEEL() throws Exception {
kruntime = createKogitoProcessRuntime("BPMN2-ScriptTaskFEEL.bpmn2");

TestWorkItemHandler handler = new TestWorkItemHandler();
kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human Task", handler);

Map<String, Object> params = new HashMap<>();
params.put("name", "krisv");
public void testScriptTaskFEEL() {
Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
EventTrackerProcessListener tracker = new EventTrackerProcessListener();
ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
ProcessTestHelper.registerProcessEventListener(app, tracker);
org.kie.kogito.process.Process<ScriptTaskFEELModel> processDefinition = ScriptTaskFEELProcess.newProcess(app);
ScriptTaskFEELModel model = processDefinition.createModel();
model.setName("krisv");
Person person = new Person();
person.setName("krisv");
params.put("person", person);

KogitoProcessInstance processInstance = kruntime.startProcess("ScriptTask", params);
assertThat(((org.jbpm.workflow.instance.WorkflowProcessInstance) processInstance).getVariable("x")).isEqualTo("Entry");
assertThat(((org.jbpm.workflow.instance.WorkflowProcessInstance) processInstance).getVariable("y")).isNull();

kruntime.getKogitoWorkItemManager().completeWorkItem(handler.getWorkItem().getStringId(), null);
assertThat(getProcessVarValue(processInstance, "y")).isEqualTo("Exit");
assertThat(((org.jbpm.workflow.instance.WorkflowProcessInstance) processInstance).getVariable("surname")).isEqualTo("tester");

assertNodeTriggered(processInstance.getStringId(), "Script1");
model.setPerson(person);
ProcessInstance<ScriptTaskFEELModel> processInstance = processDefinition.createInstance(model);
processInstance.start();
assertThat(processInstance.variables().getX()).isEqualTo("Entry");
assertThat(processInstance.variables().getY()).isNull();
ProcessTestHelper.completeWorkItem(processInstance, Collections.emptyMap());
assertThat(processInstance.variables().getY()).isEqualTo("Exit");
assertThat(processInstance.variables().getSurname()).isEqualTo("tester");
Set<String> nodes = tracker.tracked().stream().map(event -> event.getNodeInstance().getNodeName()).collect(Collectors.toSet());
assertThat(nodes.contains("Script1")).isTrue();
}

@Test
Expand Down
49 changes: 26 additions & 23 deletions jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ErrorEventTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
import java.util.Map;
import java.util.Optional;

import org.jbpm.bpmn2.error.BoundaryErrorEventCatchingOnEntryExceptionModel;
import org.jbpm.bpmn2.error.BoundaryErrorEventCatchingOnEntryExceptionProcess;
import org.jbpm.bpmn2.error.BoundaryErrorEventCatchingOnExitExceptionModel;
import org.jbpm.bpmn2.error.BoundaryErrorEventCatchingOnExitExceptionProcess;
import org.jbpm.bpmn2.error.BoundaryErrorEventDefaultHandlerByErrorCodeModel;
import org.jbpm.bpmn2.error.BoundaryErrorEventDefaultHandlerByErrorCodeProcess;
import org.jbpm.bpmn2.error.BoundaryErrorEventDefaultHandlerWithErrorCodeWithStructureRefModel;
Expand Down Expand Up @@ -68,7 +72,6 @@
import org.jbpm.process.workitem.builtin.SystemOutWorkItemHandler;
import org.jbpm.test.utils.EventTrackerProcessListener;
import org.jbpm.test.utils.ProcessTestHelper;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.kie.api.event.process.DefaultProcessEventListener;
import org.kie.api.event.process.ProcessNodeLeftEvent;
Expand Down Expand Up @@ -430,31 +433,31 @@ public void testEventSubProcessErrorWithScript() throws Exception {
}

@Test
@Disabled("On Exit not supported, see https://issues.redhat.com/browse/KOGITO-2067")
public void testErrorBoundaryEventOnEntry() throws Exception {
kruntime = createKogitoProcessRuntime("BPMN2-BoundaryErrorEventCatchingOnEntryException.bpmn2");
TestWorkItemHandler handler = new TestWorkItemHandler();
kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human Task", handler);

KogitoProcessInstance processInstance = kruntime.startProcess("BoundaryErrorEventOnEntry");

assertProcessInstanceActive(processInstance.getStringId(), kruntime);
assertThat(handler.getWorkItems()).hasSize(1);
public void testErrorBoundaryEventOnEntry() {
Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
org.kie.kogito.process.Process<BoundaryErrorEventCatchingOnEntryExceptionModel> processDefinition = BoundaryErrorEventCatchingOnEntryExceptionProcess.newProcess(app);
BoundaryErrorEventCatchingOnEntryExceptionModel model = processDefinition.createModel();
ProcessInstance<BoundaryErrorEventCatchingOnEntryExceptionModel> processInstance = processDefinition.createInstance(model);
processInstance.start();
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
assertThat(workItemHandler.getWorkItems()).hasSize(1);
}

@Test
@Disabled("On Exit not supported, see https://issues.redhat.com/browse/KOGITO-2067")
public void testErrorBoundaryEventOnExit() throws Exception {
kruntime = createKogitoProcessRuntime("BPMN2-BoundaryErrorEventCatchingOnExitException.bpmn2");
TestWorkItemHandler handler = new TestWorkItemHandler();
kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human Task", handler);

KogitoProcessInstance processInstance = kruntime.startProcess("BoundaryErrorEventOnExit");

assertProcessInstanceActive(processInstance.getStringId(), kruntime);
KogitoWorkItem workItem = handler.getWorkItem();
kruntime.getKogitoWorkItemManager().completeWorkItem(workItem.getStringId(), null);
assertThat(handler.getWorkItems()).hasSize(1);
public void testErrorBoundaryEventOnExit() {
Application app = ProcessTestHelper.newApplication();
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);
org.kie.kogito.process.Process<BoundaryErrorEventCatchingOnExitExceptionModel> processDefinition = BoundaryErrorEventCatchingOnExitExceptionProcess.newProcess(app);
BoundaryErrorEventCatchingOnExitExceptionModel model = processDefinition.createModel();
ProcessInstance<BoundaryErrorEventCatchingOnExitExceptionModel> processInstance = processDefinition.createInstance(model);
processInstance.start();
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
KogitoWorkItem workItem = workItemHandler.getWorkItem();
processInstance.completeWorkItem(workItem.getStringId(), Collections.emptyMap());
assertThat(workItemHandler.getWorkItems()).hasSize(1);
}

@Test
Expand Down
80 changes: 46 additions & 34 deletions jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/FlowTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@
import org.jbpm.bpmn2.flow.InclusiveGatewayWithDefaultProcess;
import org.jbpm.bpmn2.flow.InclusiveGatewayWithHumanTasksProcessModel;
import org.jbpm.bpmn2.flow.InclusiveGatewayWithHumanTasksProcessProcess;
import org.jbpm.bpmn2.flow.InclusiveGatewayWithLoopInsideModel;
import org.jbpm.bpmn2.flow.InclusiveGatewayWithLoopInsideProcess;
import org.jbpm.bpmn2.flow.InclusiveGatewayWithLoopInsideSubprocessModel;
import org.jbpm.bpmn2.flow.InclusiveGatewayWithLoopInsideSubprocessProcess;
import org.jbpm.bpmn2.flow.InclusiveNestedInParallelNestedInExclusiveModel;
import org.jbpm.bpmn2.flow.InclusiveNestedInParallelNestedInExclusiveProcess;
import org.jbpm.bpmn2.flow.InclusiveSplitAndJoinEmbeddedModel;
Expand Down Expand Up @@ -86,10 +90,14 @@
import org.jbpm.bpmn2.flow.MultiInstanceLoopCharacteristicsProcessWithOutputCmpCondProcess;
import org.jbpm.bpmn2.flow.MultiInstanceLoopCharacteristicsProcessWithOutputModel;
import org.jbpm.bpmn2.flow.MultiInstanceLoopCharacteristicsProcessWithOutputProcess;
import org.jbpm.bpmn2.flow.MultiInstanceLoopCharacteristicsTaskWithOutputModel;
import org.jbpm.bpmn2.flow.MultiInstanceLoopCharacteristicsTaskWithOutputProcess;
import org.jbpm.bpmn2.flow.MultiInstanceLoopNumberingModel;
import org.jbpm.bpmn2.flow.MultiInstanceLoopNumberingProcess;
import org.jbpm.bpmn2.flow.MultipleGatewaysProcessModel;
import org.jbpm.bpmn2.flow.MultipleGatewaysProcessProcess;
import org.jbpm.bpmn2.loop.MultiInstanceLoopCharacteristicsProcessWithOutputAndScriptsModel;
import org.jbpm.bpmn2.loop.MultiInstanceLoopCharacteristicsProcessWithOutputAndScriptsProcess;
import org.jbpm.bpmn2.loop.MultiInstanceLoopCharacteristicsTaskModel;
import org.jbpm.bpmn2.loop.MultiInstanceLoopCharacteristicsTaskProcess;
import org.jbpm.bpmn2.objects.TestUserTaskWorkItemHandler;
Expand Down Expand Up @@ -777,50 +785,55 @@ public void testInclusiveSplitNested() {
}

@Test
@Disabled("On Exit not supported, see https://issues.redhat.com/browse/KOGITO-2067")
public void testInclusiveSplitWithLoopInside() throws Exception {
kruntime = createKogitoProcessRuntime("BPMN2-InclusiveGatewayWithLoopInside.bpmn2");

public void testInclusiveSplitWithLoopInside() {
Application app = ProcessTestHelper.newApplication();
final Map<String, Integer> nodeInstanceExecutionCounter = new HashMap<>();
kruntime.getProcessEventManager().addEventListener(new DefaultKogitoProcessEventListener() {

ProcessTestHelper.registerProcessEventListener(app, new DefaultKogitoProcessEventListener() {
@Override
public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
logger.info("{} {}", event.getNodeInstance().getNodeName(), ((NodeInstanceImpl) event.getNodeInstance()).getLevel());
Integer value = nodeInstanceExecutionCounter.get(event.getNodeInstance().getNodeName());
if (value == null) {
value = new Integer(0);
value = 0;
}

value++;
nodeInstanceExecutionCounter.put(event.getNodeInstance().getNodeName(), value);
}

});

TestWorkItemHandler handler = new TestWorkItemHandler();
TestWorkItemHandler handler2 = new TestWorkItemHandler();
kruntime.getKogitoWorkItemManager().registerWorkItemHandler("testWI", handler);
kruntime.getKogitoWorkItemManager().registerWorkItemHandler("testWI2", handler2);
Map<String, Object> params = new HashMap<>();
params.put("x", -1);
KogitoProcessInstance processInstance = kruntime.startProcess("Process_1", params);
ProcessTestHelper.registerHandler(app, "testWI", handler);
ProcessTestHelper.registerHandler(app, "testWI2", handler2);

org.kie.kogito.process.Process<InclusiveGatewayWithLoopInsideModel> processDefinition = InclusiveGatewayWithLoopInsideProcess.newProcess(app);
InclusiveGatewayWithLoopInsideModel model = processDefinition.createModel();
model.setX(-1);
ProcessInstance<InclusiveGatewayWithLoopInsideModel> processInstance = processDefinition.createInstance(model);
processInstance.start();

assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);

assertProcessInstanceActive(processInstance);
List<KogitoWorkItem> workItems = handler.getWorkItems();
assertThat(workItems).isNotNull().hasSize(2);

for (KogitoWorkItem wi : workItems) {
assertProcessInstanceActive(processInstance);
kruntime.getKogitoWorkItemManager().completeWorkItem(wi.getStringId(), null);
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
processInstance.completeWorkItem(wi.getStringId(), null);
}

assertProcessInstanceActive(processInstance);
kruntime.getKogitoWorkItemManager().completeWorkItem(handler2.getWorkItem().getStringId(), null);
assertProcessInstanceActive(processInstance);
kruntime.getKogitoWorkItemManager().completeWorkItem(handler2.getWorkItem().getStringId(), null);
assertProcessInstanceActive(processInstance);
kruntime.getKogitoWorkItemManager().completeWorkItem(handler.getWorkItem().getStringId(), null);
assertProcessInstanceCompleted(processInstance);
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
processInstance.completeWorkItem(handler2.getWorkItem().getStringId(), null);

assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
processInstance.completeWorkItem(handler2.getWorkItem().getStringId(), null);

assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
processInstance.completeWorkItem(handler.getWorkItem().getStringId(), null);

assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);

assertThat(nodeInstanceExecutionCounter).hasSize(10);
assertThat((int) nodeInstanceExecutionCounter.get("Start")).isEqualTo(1);
assertThat((int) nodeInstanceExecutionCounter.get("OR diverging")).isEqualTo(1);
Expand Down Expand Up @@ -1141,25 +1154,24 @@ public void testMultiInstanceLoopCharacteristicsProcessWithOutputCompletionCondi
}

@Test
@Disabled("On Exit not supported, see https://issues.redhat.com/browse/KOGITO-2067")
public void testMultiInstanceLoopCharacteristicsProcessWithOutputAndScripts()
throws Exception {
kruntime = createKogitoProcessRuntime("BPMN2-MultiInstanceLoopCharacteristicsProcessWithOutputAndScripts.bpmn2");
Map<String, Object> params = new HashMap<>();
public void testMultiInstanceLoopCharacteristicsProcessWithOutputAndScripts() {
Application app = ProcessTestHelper.newApplication();
List<String> myList = new ArrayList<>();
List<String> myListOut = new ArrayList<>();
List<String> scriptList = new ArrayList<>();
myList.add("First Item");
myList.add("Second Item");
params.put("list", myList);
params.put("listOut", myListOut);
params.put("scriptList", scriptList);
assertThat(myListOut).isEmpty();
KogitoProcessInstance processInstance = kruntime.startProcess("MultiInstanceLoopCharacteristicsProcessWithOutput", params);
assertProcessInstanceCompleted(processInstance);
org.kie.kogito.process.Process<MultiInstanceLoopCharacteristicsProcessWithOutputAndScriptsModel> processDefinition = MultiInstanceLoopCharacteristicsProcessWithOutputAndScriptsProcess.newProcess(app);
MultiInstanceLoopCharacteristicsProcessWithOutputAndScriptsModel model = processDefinition.createModel();
model.setList(myList);
model.setListOut(myListOut);
model.setScriptList(scriptList);
ProcessInstance<MultiInstanceLoopCharacteristicsProcessWithOutputAndScriptsModel> processInstance = processDefinition.createInstance(model);
processInstance.start();
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
assertThat(myListOut).hasSize(2);
assertThat(scriptList).hasSize(2);

}

@Test
Expand Down
Loading

0 comments on commit ee9b7b5

Please sign in to comment.