@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 testRuleTask() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-RuleTask.bpmn2", "BPMN2-RuleTask.drl"); ksession = createKnowledgeSession(kbase); List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); ProcessInstance processInstance = ksession.startProcess("RuleTask"); ksession.setGlobal("list", list); assertTrue(list.size() == 1); assertProcessInstanceFinished(processInstance, ksession); }
if (globals != null) { for (Map.Entry<String, Object> entry : globals.entrySet()) { session.setGlobal(entry.getKey(), entry.getValue()); ((InternalOrganizationalEntity) user).setId(userId); TaskServiceRequest request = new TaskServiceRequest(scope, user, null); session.setGlobal("request", request); session.insert(task); if (params != null) { if (params instanceof ContentData) { session.insert(params); session.fireAllRules(); session.dispose();
@Test public void testForEachEmptyList() { Reader source = new StringReader( workingMemory.setGlobal("myList", myList); List<String> collection = new ArrayList<String>(); Map<String, Object> params = new HashMap<String, Object>(); ProcessInstance processInstance = ( ProcessInstance ) workingMemory.startProcess("org.drools.ForEach", params); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
@Test public void testRuleTaskAcrossSessions() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-RuleTask.bpmn2", "BPMN2-RuleTask.drl"); ksession = createKnowledgeSession(kbase); ksession2 = createKnowledgeSession(kbase); List<String> list1 = new ArrayList<String>(); ksession.setGlobal("list", list1); List<String> list2 = new ArrayList<String>(); ksession2.setGlobal("list", list2); ProcessInstance processInstance1 = ksession.startProcess("RuleTask"); ProcessInstance processInstance2 = ksession2.startProcess("RuleTask"); assertProcessInstanceFinished(processInstance1, ksession); assertProcessInstanceFinished(processInstance2, ksession2); }
@Test(timeout=10000) public void traitWithEquality() { String source = "org/drools/compiler/factmodel/traits/testTraitWithEquality.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); ks.fireAllRules(); assertTrue( info.contains( "DON" ) ); assertTrue( info.contains( "EQUAL" ) ); }
@Test public void testRuleFlow() throws Exception { builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.drl" ) ) ); builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.rfm" ) ) ); KieSession workingMemory = createKieSession(true, builder.getPackages()); final List<String> list = new ArrayList<String>(); workingMemory.setGlobal( "list", list ); workingMemory.fireAllRules(); assertEquals( 0, list.size() ); final ProcessInstance processInstance = workingMemory.startProcess( "0" ); assertEquals( ProcessInstance.STATE_COMPLETED, processInstance.getState() ); assertEquals( 4, list.size() ); assertEquals( "Rule1", list.get( 0 ) ); list.subList(1,2).contains( "Rule2" ); list.subList(1,2).contains( "Rule3" ); assertEquals( "Rule4", list.get( 3 ) ); }
@Test public void testRuleTask2() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-RuleTask2.bpmn2", "BPMN2-RuleTask2.drl"); ksession = createKnowledgeSession(kbase); List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "SomeString"); ProcessInstance processInstance = ksession.startProcess("RuleTask", params); assertTrue(list.size() == 0); assertProcessInstanceFinished(processInstance, ksession); }
@Test public void testSimpleAction() throws Exception { final InternalKnowledgePackage pkg = new KnowledgePackageImpl( "pkg1" ); wm.setGlobal( "list", list ); ((Action) actionNode.getAction().getMetaData("Action")).execute( processContext ); assertEquals("hello world", list.get(0) );
@Test(timeout=10000) public void testIntermediateCatchEventTimerDurationValueFromGlobal() throws Exception { NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("timer", 1); KieBase kbase = createKnowledgeBase("BPMN2-GlobalTimerInterrupted.bpmn2"); ksession = createKnowledgeSession(kbase); ksession.addEventListener(countDownListener); ksession.setGlobal("time", "2s"); ProcessInstance processInstance = ksession.startProcess("interruptedTimer"); assertProcessInstanceActive(processInstance); // now wait for 1 second for timer to trigger countDownListener.waitTillCompleted(); assertProcessInstanceFinished(processInstance, ksession); }
@Test public void testRuleFlowInPackage() throws Exception { builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.drl" ) ) ); builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.rfm" ) ) ); final KieSession workingMemory = createKieSession(true, builder.getPackages()); final List<String> list = new ArrayList<String>(); workingMemory.setGlobal( "list", list ); workingMemory.fireAllRules(); assertEquals( 0, list.size() ); final ProcessInstance processInstance = workingMemory.startProcess( "0" ); assertEquals( ProcessInstance.STATE_COMPLETED, processInstance.getState() ); assertEquals( 4, list.size() ); assertEquals( "Rule1", list.get( 0 ) ); list.subList(1,2).contains( "Rule2" ); list.subList(1,2).contains( "Rule3" ); assertEquals( "Rule4", list.get( 3 ) ); }
@Test public void testRuleTaskSetVariableWithReconnect() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-RuleTask2.bpmn2", "BPMN2-RuleTaskSetVariableReconnect.drl"); ksession = createKnowledgeSession(kbase); List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "SomeString"); ProcessInstance processInstance = ksession.startProcess("RuleTask", params); assertTrue(list.size() == 1); assertProcessVarValue(processInstance, "x", "AnotherString"); assertProcessInstanceFinished(processInstance, ksession); }
@Test public void testSimpleAction() throws Exception { final InternalKnowledgePackage pkg = new KnowledgePackageImpl( "pkg1" ); wm.setGlobal( "list", list ); ((Action)actionNode.getAction().getMetaData("Action")).execute( processContext ); assertEquals("hello world", list.get(0) );
@Test(timeout=10000) @RequirePersistence public void testIntermediateCatchEventTimerDurationWithError() throws Exception { NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("timer", 1); KieBase kbase = createKnowledgeBase("BPMN2-IntermediateCatchEventTimerDurationWithError.bpmn2"); ksession = createKnowledgeSession(kbase); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new DoNothingWorkItemHandler()); ksession.addEventListener(countDownListener); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", 0); ProcessInstance processInstance = ksession.startProcess("IntermediateCatchEvent", params); long waitTime = 2; assertProcessInstanceActive(processInstance); // now wait for 1 second for timer to trigger countDownListener.waitTillCompleted(waitTime * 1000); assertProcessInstanceActive(processInstance); processInstance = ksession.getProcessInstance(processInstance.getId()); // reschedule it to allow to move on ksession.setGlobal("TestOK", Boolean.TRUE); ksession.execute(new UpdateTimerCommand(processInstance.getId(), "timer", waitTime + 1)); countDownListener.reset(1); countDownListener.waitTillCompleted(); assertProcessInstanceFinished(processInstance, ksession); }
@Test public void testRuleFlowUpgrade() throws Exception { workingMemory.setGlobal( "list", list ); workingMemory.fireAllRules(); assertEquals( 0, list.size() ); assertEquals( ProcessInstance.STATE_COMPLETED, processInstance.getState() ); assertEquals( 4, list.size() ); assertEquals( "Rule1", list.get( 0 ) );
@Test @RequirePersistence(true) public void testRuleTaskSetVariable() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-RuleTask2.bpmn2", "BPMN2-RuleTaskSetVariable.drl"); ksession = createKnowledgeSession(kbase); List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "SomeString"); UserTransaction ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); ProcessInstance processInstance = ksession.startProcess("RuleTask", params); ut.commit(); assertTrue(list.size() == 1); assertProcessVarValue(processInstance, "x", "AnotherString"); assertProcessInstanceFinished(processInstance, ksession); }
@Test public void testSimpleAction() throws Exception { final InternalKnowledgePackage pkg = new KnowledgePackageImpl("pkg1"); final KieSession wm = kbase.newKieSession(); wm.setGlobal("testField", "vagon"); assertEquals("vagon", wm.getGlobal("testField").toString());
@Test public void testSingleActionNode() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( new ClassPathResource( "ActionNodeTest.xml", ActionNodeTest.class ), ResourceType.DRF ); KieBase kbase = kbuilder.newKieBase(); KieSession ksession = kbase.newKieSession(); List<String> list = new ArrayList<String>(); ksession.setGlobal( "list", list ); ksession.startProcess( "process name" ); assertEquals( 1, list.size() ); assertEquals( "action node was here", list.get(0) ); } }
@Test public void testRuleFlowUpgrade() throws Exception { final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); // Set the system property so that automatic conversion can happen System.setProperty( "drools.ruleflow.port", "true" ); kbuilder.add( ResourceFactory.newClassPathResource("ruleflow.drl", ExecutionFlowControlTest.class), ResourceType.DRL); kbuilder.add( ResourceFactory.newClassPathResource("ruleflow40.rfm", ExecutionFlowControlTest.class), ResourceType.DRF); KieBase kbase = kbuilder.newKieBase(); final KieSession ksession = kbase.newKieSession(); final List list = new ArrayList(); ksession.setGlobal("list", list); ksession.fireAllRules(); assertEquals(0, list.size()); final ProcessInstance processInstance = ksession.startProcess("0"); assertEquals( ProcessInstance.STATE_COMPLETED, processInstance.getState() ); assertEquals( 4, list.size() ); assertEquals( "Rule1", list.get( 0 ) ); list.subList(1,2).contains( "Rule2" ); list.subList(1,2).contains( "Rule3" ); assertEquals( "Rule4", list.get( 3 ) ); assertEquals( ProcessInstance.STATE_COMPLETED, processInstance.getState() ); // Reset the system property so that automatic conversion should not happen System.setProperty("drools.ruleflow.port", "false"); }
@SuppressWarnings("unchecked") @Test public void testBusinessRuleTaskWithTransformation() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-RuleTaskWithTransformation.bpmn2", "BPMN2-RuleTaskWithTransformation.drl"); ksession = createKnowledgeSession(kbase); List<String> data = new ArrayList<String>(); ksession.setGlobal("data", data); Map<String, Object> params = new HashMap<String, Object>(); params.put("name", "JoHn"); ProcessInstance processInstance = ksession.startProcess("BPMN2-RuleTaskWithTransformation", params); assertProcessInstanceFinished(processInstance, ksession); data = (List<String>) ksession.getGlobal("data"); assertNotNull(data); assertEquals(1, data.size()); assertEquals("JOHN", data.get(0)); String nameVar = getProcessVarValue(processInstance, "name"); assertNotNull(nameVar); assertEquals("john", nameVar); }