@Test(expected=IllegalArgumentException.class) public void testNotExistingVarBooleanStructureRefOnStart() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-BooleanStructureRef.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); Map<String, Object> params = new HashMap<String, Object>(); params.put("not existing", "invalid boolean"); ksession.startProcess("StructureRef", params); }
@Test public void testMultiInstanceLoopCharacteristicsProcessWithOutputCompletionCondition() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-MultiInstanceLoopCharacteristicsProcessWithOutputCmpCond.bpmn2"); ksession = createKnowledgeSession(kbase); Map<String, Object> params = new HashMap<String, Object>(); List<String> myList = new ArrayList<String>(); List<String> myListOut = new ArrayList<String>(); myList.add("First Item"); myList.add("Second Item"); params.put("list", myList); params.put("listOut", myListOut); assertEquals(0, myListOut.size()); ProcessInstance processInstance = ksession.startProcess( "MultiInstanceLoopCharacteristicsProcessWithOutput", params); assertProcessInstanceCompleted(processInstance); assertEquals(1, myListOut.size()); }
@Test public void testEscalationEndEventProcess() throws Exception { KieBase kbase = createKnowledgeBase("escalation/BPMN2-EscalationEndEvent.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); ProcessInstance processInstance = ksession.startProcess("EscalationEndEvent"); assertProcessInstanceAborted(processInstance.getId(), ksession); }
@Test public void testSubProcessCancel() throws Exception { KieSession workingMemory = createStatefulKnowledgeSessionFromRule(true); org.jbpm.process.instance.ProcessInstance processInstance = ( org.jbpm.process.instance.ProcessInstance ) workingMemory.startProcess("com.sample.ruleflow"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(2, workingMemory.getProcessInstances().size()); processInstance.setState(ProcessInstance.STATE_ABORTED); assertEquals(1, workingMemory.getProcessInstances().size()); }
@Test(expected=IllegalArgumentException.class) public void testInvalidBooleanStructureRefOnStart() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-BooleanStructureRef.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); Map<String, Object> params = new HashMap<String, Object>(); params.put("test", "invalid boolean"); ksession.startProcess("StructureRef", params); }
@Test public void testMultiInstanceLoopCharacteristicsProcessWithOutput() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-MultiInstanceLoopCharacteristicsProcessWithOutput.bpmn2"); ksession = createKnowledgeSession(kbase); Map<String, Object> params = new HashMap<String, Object>(); List<String> myList = new ArrayList<String>(); List<String> myListOut = new ArrayList<String>(); myList.add("First Item"); myList.add("Second Item"); params.put("list", myList); params.put("listOut", myListOut); assertEquals(0, myListOut.size()); ProcessInstance processInstance = ksession.startProcess( "MultiInstanceLoopCharacteristicsProcessWithOutput", params); assertProcessInstanceCompleted(processInstance); assertEquals(2, myListOut.size()); }
@Test public void testIndependentSubProcessCancel() throws Exception { KieSession workingMemory = createStatefulKnowledgeSessionFromRule(false); org.jbpm.process.instance.ProcessInstance processInstance = ( org.jbpm.process.instance.ProcessInstance ) workingMemory.startProcess("com.sample.ruleflow"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(2, workingMemory.getProcessInstances().size()); processInstance.setState(ProcessInstance.STATE_ABORTED); assertEquals(0, workingMemory.getProcessInstances().size()); }
@Test public void testErrorEndEventProcess() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ErrorEndEvent.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); ProcessInstance processInstance = ksession.startProcess("ErrorEndEvent"); assertProcessInstanceAborted(processInstance.getId(), ksession); }
@Test public void testExclusiveSplit() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ExclusiveSplit.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); ksession.getWorkItemManager().registerWorkItemHandler("Email", new SystemOutWorkItemHandler()); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "First"); params.put("y", "Second"); ProcessInstance processInstance = ksession.startProcess("com.sample.test", params); assertThat(processInstance.getState()).isEqualTo(ProcessInstance.STATE_COMPLETED); }
@Test public void testRuleFlowActionDialects() throws Exception { builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "test_ActionDialects.rfm" ) ) ); final KieSession session = createKieSession(true, builder.getPackages()); List<String> list = new ArrayList<String>(); session.setGlobal( "list", list ); session.startProcess( "ActionDialects" ); assertEquals( 2, list.size() ); assertEquals( "mvel was here", list.get( 0 ) ); assertEquals( "java was here", list.get( 1 ) ); }
@Test public void testSubProcess() throws Exception { KieSession workingMemory = createStatefulKnowledgeSessionFromRule(true); ProcessInstance processInstance = ( ProcessInstance ) workingMemory.startProcess("com.sample.ruleflow"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(2, workingMemory.getProcessInstances().size()); workingMemory.insert(new Person()); workingMemory.fireAllRules(); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals(0, workingMemory.getProcessInstances().size()); }
@Test public void testMultipleMessageSignalSubprocess() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-MultipleMessageSignalSubprocess.bpmn2"); ksession = createKnowledgeSession(kbase); ProcessInstance processInstance = ksession.startProcess("com.sample.bpmn.Multiple_MessageSignal_Subprocess"); logger.debug("Parent Process ID: " + processInstance.getId()); ksession.signalEvent("Message-Message 1","Test",processInstance.getId()); assertProcessInstanceActive(processInstance.getId(), ksession); ksession.signalEvent("Message-Message 1","Test",processInstance.getId()); assertProcessInstanceCompleted(processInstance.getId(), ksession); }
@Test public void testExclusiveSplitDefault() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ExclusiveSplitDefault.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); ksession.getWorkItemManager().registerWorkItemHandler("Email", new SystemOutWorkItemHandler()); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "NotFirst"); params.put("y", "Second"); ProcessInstance processInstance = ksession.startProcess("com.sample.test", params); assertThat(processInstance.getState()).isEqualTo(ProcessInstance.STATE_COMPLETED); }
@Test public void testDMNBusinessRuleTaskByDecisionName()throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper( "dmn/BPMN2-BusinessRuleTaskDMNByDecisionName.bpmn2", "dmn/0020-vacation-days.dmn"); ksession = createKnowledgeSession(kbase); // first run 16, 1 and expected days is 5 Map<String, Object> params = new HashMap<String, Object>(); params.put("age", 16); params.put("yearsOfService", 1); ProcessInstance processInstance = ksession.startProcess("BPMN2-BusinessRuleTask", params); assertProcessInstanceFinished(processInstance, ksession); BigDecimal vacationDays = (BigDecimal) ((WorkflowProcessInstance) processInstance).getVariable("vacationDays"); assertEquals(BigDecimal.valueOf(5), vacationDays); }
@Test public void testProcessCustomDescriptionMetaData() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ProcessCustomDescriptionMetaData.bpmn2"); ksession = createKnowledgeSession(kbase); Map<String, Object> params = new HashMap<String, Object>(); ProcessInstance processInstance = ksession.startProcess("Minimal", params); assertProcessInstanceCompleted(processInstance); String description = ((org.jbpm.process.instance.impl.ProcessInstanceImpl)processInstance).getDescription(); assertNotNull(description); assertEquals("my process with description", description); }
@Test public void testErrorBoundaryEventOnBusinessRuleTask() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-ErrorBoundaryEventOnBusinessRuleTask.bpmn2", "BPMN2-ErrorBoundaryEventOnBusinessRuleTask.drl"); ksession = createKnowledgeSession(kbase); ksession.addEventListener(new RuleAwareProcessEventLister()); ProcessInstance processInstance = ksession.startProcess("BPMN2-ErrorBoundaryEventOnBusinessRuleTask"); assertProcessInstanceFinished(processInstance, ksession); assertNodeTriggered(processInstance.getId(), "start", "business rule task error attached", "error1"); }
@Test public void compensationInvokingSubProcess() throws Exception { KieSession ksession = createKnowledgeSession("compensation/BPMN2-UserTaskCompensation.bpmn2"); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new SystemOutWorkItemHandler()); Map<String, Object> params = new HashMap<String, Object>(); params.put("compensation", "True"); ProcessInstance processInstance = ksession.startProcess("UserTaskCompensation", params); assertProcessInstanceCompleted(processInstance.getId(), ksession); assertProcessVarValue(processInstance, "compensation", "compensation"); }
@Test public void testCallActivityWithDataAssignment() throws Exception { KieBase kbase = createKnowledgeBase("subprocess/AssignmentProcess.bpmn2", "subprocess/AssignmentSubProcess.bpmn2"); ksession = createKnowledgeSession(kbase); Map<String, Object> params = new HashMap<String, Object>(); params.put("name", "oldValue"); ProcessInstance processInstance = ksession.startProcess("assignmentProcess", params); assertProcessInstanceCompleted(processInstance); assertEquals("Hello Genworth welcome to jBPMS!", ((WorkflowProcessInstance) processInstance).getVariable("message")); }
@Test public void testInvalidBooleanStructureRefOnStartVerifyErrorMsg() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-BooleanStructureRef.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); try { Map<String, Object> params = new HashMap<String, Object>(); params.put("test", "invalid boolean"); ksession.startProcess("StructureRef", params); } catch (IllegalArgumentException e) { assertEquals("Variable 'test' has incorrect data type expected:Boolean actual:java.lang.String", e.getMessage()); } }
@Test public void testCallActivity() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-CallActivity.bpmn2", "BPMN2-CallActivitySubProcess.bpmn2"); ksession = createKnowledgeSession(kbase); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "oldValue"); ProcessInstance processInstance = ksession.startProcess( "ParentProcess", params); assertProcessInstanceCompleted(processInstance); assertEquals("new value", ((WorkflowProcessInstance) processInstance).getVariable("y")); }