public void assertProcessInstanceFinished(ProcessInstance processInstance, KieSession ksession) { assertNull("Process instance has not been finished.", ksession.getProcessInstance(processInstance.getId())); }
@Test(timeout=10000) public void testEventSubprocessMessageWithLocalVars() throws Exception { NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("timer", 1); KieBase kbase = createKnowledgeBase("subprocess/BPMN2-EventSubProcessWithLocalVariables.bpmn2"); final Set<String> variablevalues = new HashSet<String>(); ProcessEventListener listener = new DefaultProcessEventListener() { @Override public void afterNodeLeft(ProcessNodeLeftEvent event) { @SuppressWarnings("unchecked") Map<String, String> variable = (Map<String, String>)event.getNodeInstance().getVariable("richiesta"); if (variable != null) { variablevalues.addAll(variable.keySet()); } } }; ksession = createKnowledgeSession(kbase); ksession.addEventListener(listener); ksession.addEventListener(countDownListener); ProcessInstance processInstance = ksession.startProcess("EventSPWithVars"); assertProcessInstanceActive(processInstance); Map<String, String> data = new HashMap<String, String>(); ksession.signalEvent("Message-MAIL", data, processInstance.getId()); countDownListener.waitTillCompleted(); processInstance = ksession.getProcessInstance(processInstance.getId()); assertThat(processInstance).isNull(); assertThat(variablevalues.size()).isEqualTo(2); assertThat(variablevalues.contains("SCRIPT1")).isTrue(); assertThat(variablevalues.contains("SCRIPT2")).isTrue(); }
String input = "this is my service input"; params.put("serviceInputItem", input ); ProcessInstance processInstance = ksession.startProcess("ServiceProcess", params); ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null); processInstance = ksession.getProcessInstance(processInstance.getId()); if( processInstance != null ) { assertThat(processInstance.getState()).isEqualTo(ProcessInstance.STATE_COMPLETED).withFailMessage("Process instance is not completed.");
@Test public void testBusinessRuleTaskWithGlobal() { final List<String> list = new ArrayList<String>(); assertNotNull(manager); assertNotNull(ksession); assertEquals(sessionId, ksession.getIdentifier()); ksession.insert(pi); ksession.startProcessInstance(pi.getId()); assertNull(ksession.getProcessInstance(pi.getId())); assertEquals(1, list.size()); assertNotNull(logs); assertEquals(0, logs.size());
@Test public void testMultipleEventBasedStartEventsDifferentPaths() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-MultipleStartEventProcessDifferentPaths.bpmn2"); ksession = createKnowledgeSession(kbase); TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); final List<Long> list = new ArrayList<Long>(); ksession.addEventListener(new DefaultProcessEventListener() { public void afterProcessStarted(ProcessStartedEvent event) { list.add(event.getProcessInstance().getId()); } }); ksession.startProcess("muliplestartevents", null); assertThat(list.size()).isEqualTo(1); WorkItem workItem = workItemHandler.getWorkItem(); long processInstanceId = ((WorkItemImpl) workItem) .getProcessInstanceId(); ProcessInstance processInstance = ksession .getProcessInstance(processInstanceId); ksession = restoreSession(ksession, true); assertThat(workItem).isNotNull(); assertThat(workItem.getParameter("ActorId")).isEqualTo("john"); ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null); assertProcessInstanceFinished(processInstance, ksession); assertNodeTriggered(processInstanceId, "Start", "Script 1", "User task", "End"); }
@Test public void testConditionalProcessFactInsertedBefore() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-IntermediateCatchEventConditionPI.bpmn2", "BPMN2-IntermediateCatchEventSignal.bpmn2"); ksession = createKnowledgeSession(kbase); Person person0 = new Person("john"); ksession.insert(person0); Map<String, Object> params0 = new HashMap<String, Object>(); params0.put("name", "john"); ProcessInstance pi0 = ksession.startProcess("IntermediateCatchEvent", params0); ksession.insert(pi0); Person person = new Person("Jack"); ksession.insert(person); Map<String, Object> params = new HashMap<String, Object>(); params.put("name", "Poul"); ProcessInstance pi = ksession.startProcess("IntermediateCatchEventPI", params); ksession.insert(pi); pi = ksession.getProcessInstance(pi.getId()); assertThat(pi).isNotNull(); Person person2 = new Person("Poul"); ksession.insert(person2); pi = ksession.getProcessInstance(pi.getId()); assertThat(pi).isNull(); }
@Test public void testBusinessRuleTask() { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() assertNotNull(manager); assertNotNull(ksession); assertEquals(sessionId, ksession.getIdentifier()); ksession.insert(pi); ksession.startProcessInstance(pi.getId()); assertNull(ksession.getProcessInstance(pi.getId())); assertNotNull(logs); assertEquals(0, logs.size()); assertNotNull(logs); assertEquals(1, logs.size());
public void assertProcessInstanceFinished(ProcessInstance processInstance, KieSession ksession) { assertNull("Process instance has not been finished.", ksession.getProcessInstance(processInstance.getId())); }
String input = "this is my service input"; params.put("serviceInputItem", input ); ProcessInstance processInstance = ksession.startProcess("ServiceProcess", params); processInstance = ksession.getProcessInstance(processInstance.getId()); assertThat(processInstance == null || processInstance.getState() == ProcessInstance.STATE_ABORTED).isTrue().withFailMessage("Process instance has not been aborted.");
@Test(timeout=10000) public void startDisposeAndReloadTimerProcess() throws Exception { NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("timer", 1); ProcessInstance processInstance = ksession.startProcess("interruptedTimer", params); long processId = processInstance.getId(); countDownListener.waitTillCompleted(); ProcessInstance processInstance = ksession.getProcessInstance(processInstanceId); if( processInstance != null ) { assertTrue("Process has not terminated.", processInstance.getState() == ProcessInstance.STATE_COMPLETED );
@Test public void testDynamicCatchEventSignal() throws Exception { KieBase kbase = createKnowledgeBase("subprocess/dynamic-signal-parent.bpmn2", "subprocess/dynamic-signal-child.bpmn2"); ProcessInstance processInstance = ksession.startProcess("src.father"); assertProcessInstanceActive(processInstance); ksession = restoreSession(ksession, true); instances.remove(processInstance.getId()); ProcessInstance child = ksession.getProcessInstance(id); assertProcessInstanceActive(child); assertNull("Child process instance has not been finished.", ksession.getProcessInstance(id));
@RequirePersistence @Test(timeout=10000) public void testNullVariableInScriptTaskProcess() throws Exception { NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("Timer", 1, true); KieBase kbase = createKnowledgeBase("BPMN2-NullVariableInScriptTaskProcess.bpmn2"); ksession = createKnowledgeSession(kbase); ksession.addEventListener(countDownListener); ProcessInstance processInstance = ksession .startProcess("nullVariableInScriptAfterTimer"); assertProcessInstanceActive(processInstance); countDownListener.waitTillCompleted(); ProcessInstance pi = ksession.getProcessInstance(processInstance.getId()); assertNotNull(pi); assertProcessInstanceActive(processInstance); ksession.abortProcessInstance(processInstance.getId()); assertProcessInstanceFinished(processInstance, ksession); }
@Test public void testPersistenceVariablesSubProcess() throws NamingException, NotSupportedException, SystemException, RollbackException, HeuristicMixedException, HeuristicRollbackException { parameters.put("f", myEntityOnlyFields); parameters.put("z", myVariableSerializable); long processInstanceId = ksession.startProcess( "com.sample.ruleflow", parameters ).getId(); assertNotNull( workItem ); ProcessInstance processInstance = ksession.getProcessInstance( processInstanceId ); assertNotNull( processInstance ); ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null ); assertNotNull( workItem ); processInstance = ksession.getProcessInstance( processInstanceId ); assertNotNull( processInstance ); ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null ); processInstance = ksession.getProcessInstance( processInstanceId ); assertNotNull( processInstance ); ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null ); assertNull( workItem ); processInstance = ksession.getProcessInstance( processInstanceId ); assertNull( processInstance );
@Test public void testExtendingInterfaceVariablePersistence() throws Exception { // Setup Environment env = createEnvironment(); String processId = "extendingInterfaceVariablePersistence"; String variableText = "my extending serializable variable text"; KieBase kbase = getKnowledgeBaseForExtendingInterfaceVariablePersistence(processId, variableText); KieSession ksession = createSession( kbase , env ); Map<String, Object> initialParams = new HashMap<String, Object>(); initialParams.put( "x", new MyVariableExtendingSerializable( variableText ) ); // Start process and execute workItem long processInstanceId = ksession.startProcess( processId, initialParams ).getId(); ksession = reloadSession( ksession, kbase, env ); long workItemId = TestWorkItemHandler.getInstance().getWorkItem().getId(); ksession.getWorkItemManager().completeWorkItem( workItemId, null ); // Test Assert.assertNull( ksession.getProcessInstance( processInstanceId ) ); }
@Test public void testEventSubprocessMessage() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-EventSubprocessMessage.bpmn2"); workItemHandler); ProcessInstance processInstance = ksession .startProcess("BPMN2-EventSubprocessMessage"); assertProcessInstanceActive(processInstance); ksession = restoreSession(ksession, true); processInstance.getId()); ksession.signalEvent("Message-HelloMessage", null); ksession.signalEvent("Message-HelloMessage", null); ksession.signalEvent("Message-HelloMessage", null); ksession.getProcessInstance(processInstance.getId()); ksession.getProcessInstance(processInstance.getId()); ksession.getProcessInstance(processInstance.getId()); ksession.getProcessInstance(processInstance.getId()); WorkItem workItem = workItemHandler.getWorkItem(); assertThat(workItem).isNotNull();
@Test public void testPersistenceVariablesWithTypeChange() throws NamingException, NotSupportedException, SystemException, RollbackException, HeuristicMixedException, HeuristicRollbackException { parameters.put("f", myEntityOnlyFields); parameters.put("z", myVariableSerializable); long processInstanceId = ksession.startProcess( "com.sample.ruleflow", parameters ).getId(); assertNotNull( workItem ); ProcessInstance processInstance = ksession.getProcessInstance( processInstanceId ); assertNotNull( processInstance ); ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null ); assertNotNull( workItem ); processInstance = ksession.getProcessInstance( processInstanceId ); assertNotNull( processInstance ); ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null ); assertNull( workItem ); processInstance = ksession.getProcessInstance( processInstanceId ); assertNull( processInstance );
@Test public void testAbortWorkItemWithVariablePersistence() throws Exception{ MyEntity myEntity = new MyEntity("This is a test Entity"); parameters.put("y", myEntity); parameters.put("z", myVariableSerializable); long processInstanceId = ksession.startProcess( "com.sample.ruleflow", parameters ).getId(); assertNotNull( workItem ); ksession.getProcessInstance( processInstanceId ); assertNotNull( processInstance ); assertEquals("SomeString", processInstance.getVariable("x")); assertEquals("This is a test Entity", ((MyEntity) processInstance.getVariable("y")).getTest()); assertEquals("This is a test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("z")).getText()); assertNull(processInstance.getVariable("a")); assertNull(processInstance.getVariable("b")); assertNull(processInstance.getVariable("c")); assertNotNull( workItem ); ksession.getProcessInstance(processInstanceId); assertNotNull(processInstance); logger.debug("######## Getting the already Persisted Variables #########");
@Test public void testSLAonCatchEventViolated() throws Exception { CountDownLatch latch = new CountDownLatch(1); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new SystemOutWorkItemHandler()); ProcessInstance processInstance = ksession.startProcess("IntermediateCatchEvent"); assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE); processInstance = ksession.getProcessInstance(processInstance.getId()); assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE); assertEquals(1, active.size()); ksession.signalEvent("MyMessage", null, processInstance.getId()); assertEquals(ProcessInstance.SLA_NA, slaCompliance); slaCompliance = getSLAComplianceForNodeInstance(processInstance.getId(), (org.jbpm.workflow.instance.NodeInstance) eventNode, NodeInstanceLog.TYPE_ENTER); assertEquals(ProcessInstance.SLA_VIOLATED, slaCompliance); slaCompliance = getSLAComplianceForNodeInstance(processInstance.getId(), (org.jbpm.workflow.instance.NodeInstance) eventNode, NodeInstanceLog.TYPE_EXIT);
@Test public void testDynamicCatchEventSignalWithVariableUpdated() throws Exception { KieBase kbase = createKnowledgeBase("subprocess/dynamic-signal-parent.bpmn2", "subprocess/dynamic-signal-child.bpmn2"); ProcessInstance processInstance = ksession.startProcess("src.father"); assertProcessInstanceActive(processInstance); ksession = restoreSession(ksession, true); instances.remove(processInstance.getId()); ProcessInstance child = ksession.getProcessInstance(id); assertProcessInstanceActive(child); assertNull("Child process instance has not been finished.", ksession.getProcessInstance(id)); ProcessInstance updatedChild = ksession.getProcessInstance(changeProcessInstanceId); assertProcessInstanceActive(updatedChild);
@Test public void testUserTaskFromKjar() { KieServices ks = KieServices.Factory.get(); assertNotNull(manager); assertNotNull(engine); ProcessInstance processInstance = engine.getKieSession().startProcess("UserTask", params); assertNotNull(tasks); assertEquals(1, tasks.size()); engine.getTaskService().complete(taskId, "john", null); processInstance = engine.getKieSession().getProcessInstance(processInstance.getId()); assertNull(processInstance);