Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[incubator-kie-issues-1131] test migration from V7 to code generation-28 #3651

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.DataOutputAssignmentCustomExpressionLangModel;
import org.jbpm.bpmn2.activity.DataOutputAssignmentCustomExpressionLangProcess;
import org.jbpm.bpmn2.activity.ScriptTaskModel;
import org.jbpm.bpmn2.activity.ScriptTaskProcess;
import org.jbpm.bpmn2.activity.ScriptTaskWithIOModel;
Expand Down Expand Up @@ -89,6 +91,8 @@
import org.jbpm.bpmn2.subprocess.CallActivityWithBoundaryEventProcess;
import org.jbpm.bpmn2.subprocess.CallActivityWithIOexpressionModel;
import org.jbpm.bpmn2.subprocess.CallActivityWithIOexpressionProcess;
import org.jbpm.bpmn2.subprocess.ErrorsBetweenProcessModel;
import org.jbpm.bpmn2.subprocess.ErrorsBetweenProcessProcess;
import org.jbpm.bpmn2.subprocess.InputMappingUsingValueModel;
import org.jbpm.bpmn2.subprocess.InputMappingUsingValueProcess;
import org.jbpm.bpmn2.subprocess.MainGroupAssignmentModel;
Expand Down Expand Up @@ -125,6 +129,7 @@
import org.jbpm.test.util.ProcessCompletedCountDownProcessEventListener;
import org.jbpm.test.utils.EventTrackerProcessListener;
import org.jbpm.test.utils.ProcessTestHelper;
import org.jbpm.workflow.core.WorkflowProcess;
import org.jbpm.workflow.core.impl.DataAssociation;
import org.jbpm.workflow.core.impl.DataDefinition;
import org.jbpm.workflow.core.node.ActionNode;
Expand Down Expand Up @@ -168,6 +173,7 @@
import org.kie.kogito.internal.process.runtime.KogitoWorkItem;
import org.kie.kogito.internal.process.runtime.KogitoWorkflowProcessInstance;
import org.kie.kogito.process.ProcessInstance;
import org.kie.kogito.process.impl.AbstractProcess;
import org.kie.kogito.process.workitems.InternalKogitoWorkItem;

import static org.assertj.core.api.Assertions.assertThat;
Expand Down
40 changes: 28 additions & 12 deletions jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/CompensationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
import org.jbpm.bpmn2.compensation.BookingModel;
import org.jbpm.bpmn2.compensation.BookingProcess;
import org.jbpm.bpmn2.compensation.CancelResourceProcess;
import org.jbpm.bpmn2.compensation.InSubSubProcessModel;
import org.jbpm.bpmn2.compensation.InSubSubProcessProcess;
import org.jbpm.bpmn2.compensation.IntermediateThrowEventModel;
import org.jbpm.bpmn2.compensation.IntermediateThrowEventProcess;
import org.jbpm.bpmn2.compensation.ParallelOrderedCompensationIntermediateThrowEventModel;
Expand Down Expand Up @@ -195,22 +197,36 @@ public void orderedCompensation() {

@Test
public void compensationInSubSubProcesses() throws Exception {
kruntime = createKogitoProcessRuntime("org/jbpm/bpmn2/compensation/BPMN2-InSubSubProcess.bpmn2");
Application app = ProcessTestHelper.newApplication();

TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler);
Map<String, Object> params = new HashMap<>();
params.put("x", "0");
KogitoProcessInstance processInstance = kruntime.startProcess("InSubSubProcess", params);
ProcessTestHelper.registerHandler(app, "Human Task", workItemHandler);

kruntime.signalEvent("Compensation", "_C-2", processInstance.getStringId());
org.kie.kogito.process.Process<InSubSubProcessModel> definition = InSubSubProcessProcess.newProcess(app);
InSubSubProcessModel model = definition.createModel();
model.setX("0");

kruntime.getKogitoWorkItemManager().completeWorkItem(workItemHandler.getWorkItem().getStringId(), null);
kruntime.getKogitoWorkItemManager().completeWorkItem(workItemHandler.getWorkItem().getStringId(), null);
kruntime.getKogitoWorkItemManager().completeWorkItem(workItemHandler.getWorkItem().getStringId(), null);
ProcessInstance<InSubSubProcessModel> processInstance = definition.createInstance(model);
processInstance.start();

processInstance.send(Sig.of("Compensation", "_C-2"));

processInstance.completeWorkItem(workItemHandler.getWorkItem().getStringId(), null);
processInstance.completeWorkItem(workItemHandler.getWorkItem().getStringId(), null);
processInstance.completeWorkItem(workItemHandler.getWorkItem().getStringId(), null);

assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
assertThat(processInstance.variables().getX()).isEqualTo("2");

/*the nodes have no connection in the bpmn file,
java.lang.IllegalStateException: Process could not be validated ![Process 'Default Process' [InSubSubProcess]: Node 'Boundary Compensate 3' [_X-1] Event has no outgoing connection
Process 'Default Process' [InSubSubProcess]: Node 'Compensate Handler 3' [_X-2] Action has no incoming connection.,
Process 'Default Process' [InSubSubProcess]: Node 'Boundary Compensate 2' [_Y-1] Event has no outgoing connection,
Process 'Default Process' [InSubSubProcess]: Node 'Compensate Handler 2' [_Y-2] Action has no incoming connection.,
Process 'Default Process' [InSubSubProcess]: Node 'Compensate Handler 3' [_X-2] Has no connection to the start node.,
Process 'Default Process' [InSubSubProcess]: Node 'Compensate Handler 2' [_Y-2] Has no connection to the start node.]*/
*/

// compensation activity (assoc. with script task) signaled *after* script task
assertProcessInstanceCompleted(processInstance.getStringId(), kruntime);
assertProcessVarValue(processInstance, "x", "2");
}

@Test
Expand Down
67 changes: 44 additions & 23 deletions jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/DataTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@
import org.jbpm.bpmn2.core.Association;
import org.jbpm.bpmn2.core.DataStore;
import org.jbpm.bpmn2.core.Definitions;
import org.jbpm.bpmn2.data.AssociationModel;
import org.jbpm.bpmn2.data.AssociationProcess;
import org.jbpm.bpmn2.data.CorrelationKeyModel;
import org.jbpm.bpmn2.data.CorrelationKeyProcess;
import org.jbpm.bpmn2.data.DataInputAssociationsLazyCreatingModel;
import org.jbpm.bpmn2.data.DataInputAssociationsLazyCreatingProcess;
import org.jbpm.bpmn2.data.DataInputAssociationsModel;
Expand All @@ -50,6 +54,8 @@
import org.jbpm.bpmn2.data.DataOutputAssociationsProcess;
import org.jbpm.bpmn2.data.DataOutputAssociationsXmlNodeModel;
import org.jbpm.bpmn2.data.DataOutputAssociationsXmlNodeProcess;
import org.jbpm.bpmn2.data.DataStoreModel;
import org.jbpm.bpmn2.data.DataStoreProcess;
import org.jbpm.bpmn2.data.Evaluation2Model;
import org.jbpm.bpmn2.data.Evaluation2Process;
import org.jbpm.bpmn2.data.Evaluation3Model;
Expand All @@ -60,7 +66,6 @@
import org.jbpm.bpmn2.data.ImportProcess;
import org.jbpm.bpmn2.flow.DataOutputAssociationsHumanTaskModel;
import org.jbpm.bpmn2.flow.DataOutputAssociationsHumanTaskProcess;
import org.jbpm.bpmn2.xml.ProcessHandler;
import org.jbpm.process.core.datatype.impl.type.ObjectDataType;
import org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler;
import org.jbpm.test.utils.ProcessTestHelper;
Expand All @@ -71,7 +76,6 @@
import org.kie.kogito.internal.process.runtime.KogitoWorkItem;
import org.kie.kogito.internal.process.runtime.KogitoWorkItemHandler;
import org.kie.kogito.internal.process.runtime.KogitoWorkItemManager;
import org.kie.kogito.internal.process.runtime.KogitoWorkflowProcessInstance;
import org.kie.kogito.process.ProcessInstance;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
Expand Down Expand Up @@ -106,31 +110,46 @@ public void testDataObject() {

@Test
public void testDataStore() throws Exception {
kruntime = createKogitoProcessRuntime("org/jbpm/bpmn2/data/BPMN2-DataStore.bpmn2");
KogitoProcessInstance processInstance = kruntime.startProcess("DataStore");
Definitions def = (Definitions) processInstance.getProcess()
.getMetaData().get("Definitions");
assertThat(def.getDataStores()).isNotNull().hasSize(1);
Application app = ProcessTestHelper.newApplication();

org.kie.kogito.process.Process<DataStoreModel> processDefinition = DataStoreProcess.newProcess(app);
DataStoreModel model = processDefinition.createModel();
org.kie.kogito.process.ProcessInstance<DataStoreModel> instance = processDefinition.createInstance(model);
instance.start();

/*
* metaData is not present, I think it is protected and hence cannot import.
* How to get process metadata from the process object(only then we can get the definition metadata)
*/

Definitions def = (Definitions) instance.process().metaData().get("Definitions");
assertThat(def.getDataStores()).isNotNull().hasSize(1);
DataStore dataStore = def.getDataStores().get(0);
assertThat(dataStore.getId()).isEqualTo("employee");
assertThat(dataStore.getName()).isEqualTo("employeeStore");
assertThat(((ObjectDataType) dataStore.getType()).getClassName()).isEqualTo(String.class.getCanonicalName());

}

@Test
public void testAssociation() throws Exception {
kruntime = createKogitoProcessRuntime("org/jbpm/bpmn2/data/BPMN2-Association.bpmn2");
KogitoProcessInstance processInstance = kruntime.startProcess("Association");
List<Association> associations = (List<Association>) processInstance.getProcess().getMetaData().get(ProcessHandler.ASSOCIATIONS);
assertThat(associations).isNotNull().hasSize(1);
Application app = ProcessTestHelper.newApplication();
org.kie.kogito.process.Process<AssociationModel> processDefinition = AssociationProcess.newProcess(app);
AssociationModel model = processDefinition.createModel();
org.kie.kogito.process.ProcessInstance<AssociationModel> instance = processDefinition.createInstance(model);
instance.start();

/*
* metaData is not present, I think it is protected and hence cannot import.
* How to get process metadata from the process object(only then we can get the definition metadata)
*/

Definitions def = (Definitions) instance.process().metaData().get("Definitions");
List<Association> associations = def.getAssociations();
assertThat(associations).isNotNull().hasSize(1);
Association assoc = associations.get(0);
assertThat(assoc.getId()).isEqualTo("_1234");
assertThat(assoc.getSourceRef()).isEqualTo("_1");
assertThat(assoc.getTargetRef()).isEqualTo("_2");

}

@Test
Expand Down Expand Up @@ -482,17 +501,19 @@ public void executeWorkItem(KogitoWorkItem workItem, KogitoWorkItemManager mgr)
instance.start();
}

@Test
public void testDefaultProcessVariableValue() throws Exception {

kruntime = createKogitoProcessRuntime("org/jbpm/bpmn2/data/BPMN2-CorrelationKey.bpmn2");

Map<String, Object> parameters = new HashMap<String, Object>();

KogitoWorkflowProcessInstance processInstance = (KogitoWorkflowProcessInstance) kruntime.startProcess("CorrelationKey", parameters);
public void testDefaultProcessVariableValue() {
Application app = ProcessTestHelper.newApplication();
org.kie.kogito.process.Process<CorrelationKeyModel> processDefinition = CorrelationKeyProcess.newProcess(app);
CorrelationKeyModel model = processDefinition.createModel();
org.kie.kogito.process.ProcessInstance<CorrelationKeyModel> instance = processDefinition.createInstance(model);
instance.start();

assertThat(processInstance.getVariable("procVar")).isEqualTo("defaultProc");
assertThat(processInstance.getVariable("intVar")).isEqualTo(1);
/*
* CorrelationKeyModel class does not have methods named getProcVar and getIntVar .
* This is due to acutal variables/methods being different in the CorrelationKeyModel class.
*/
assertThat(model.getProcVar()).isEqualTo("defaultProc");
assertThat(model.getIntVar()).isEqualTo(1);

}

Expand Down
Loading