public void testStartProcessWithLinking() { LogUtil.info(getClass().getName(), ">>> testStartProcessWithLinking"); // start and get instant id of 1st process String packageVersion = workflowManager.getCurrentPackageVersion(packageId); WorkflowProcessResult result = workflowManager.processStart(packageId + "#" + packageVersion + "#" + processId); String process1Id = result.getProcess().getInstanceId(); LogUtil.info( getClass().getName(), "------------- process one id : " + process1Id + " -------------"); // start 2nd process with 1st process instant id and get 2nd process instant id WorkflowProcessResult nextResult = workflowManager.processStartWithLinking( packageId + "#" + packageVersion + "#" + processId, null, null, process1Id); String process2Id = nextResult.getProcess().getInstanceId(); LogUtil.info( getClass().getName(), "------------- process two id : " + process2Id + " -------------"); // check process linking data is correct or not WorkflowProcessLink link = workflowManager.getWorkflowProcessLink(process2Id); LogUtil.info( getClass().getName(), "------------- origin process id : " + link.getOriginProcessId() + " -------------"); workflowManager.internalDeleteWorkflowProcessLink(link); Assert.assertNotNull(link); Assert.assertTrue( process1Id.equals(link.getOriginProcessId()) && process1Id.equals(link.getParentProcessId())); }
public void testCopyProcess() { LogUtil.info(getClass().getName(), ">>> testCopyProcess"); boolean valid = false; // start and get instance id of the 1st process String packageVersion = workflowManager.getCurrentPackageVersion(packageId); WorkflowProcessResult result = workflowManager.processStart(packageId + "#" + packageVersion + "#" + processId); String processInstanceId = result.getProcess().getInstanceId(); LogUtil.info( getClass().getName(), "------------- process one id : " + processInstanceId + " -------------"); // abort running activities and start activity B String firstActivityDef = "A"; String desiredActivityDef = "B"; boolean started = workflowManager.activityStart(processInstanceId, desiredActivityDef, true); if (started) { // start 2nd process from the 1st process instance id WorkflowProcessResult nextResult = workflowManager.processCopyFromInstanceId( processInstanceId, packageId + "#" + packageVersion + "#" + processId, true); WorkflowProcess processStarted = nextResult.getProcess(); if (processStarted != null) { // check for the aborted and running activities String newProcessId = processStarted.getInstanceId(); Collection<WorkflowActivity> activityList = workflowManager.getActivityList(newProcessId, 0, 1000, null, null); for (WorkflowActivity act : activityList) { if (act.getState().startsWith("open")) { if (firstActivityDef.equals(act.getActivityDefId())) { valid = false; break; } if (desiredActivityDef.equals(act.getActivityDefId())) { valid = true; } } } LogUtil.info( getClass().getName(), "------------- new process id : " + newProcessId + " ------------- " + valid); // cleanup WorkflowProcessLink link = workflowManager.getWorkflowProcessLink(newProcessId); workflowManager.internalDeleteWorkflowProcessLink(link); } } Assert.assertTrue(valid); }