@Test public void testDynamicSubProcess() throws Exception { KieBase kbase = readDynamicSubProcess(); KieSession workingMemory = kbase.newKieSession(); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "subflow"); ProcessInstance processInstance = ( ProcessInstance ) workingMemory.startProcess("com.sample.ruleflow", params); 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 testGetListeners() { // JBRULES-3378 KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); if (kbuilder.hasErrors()) { throw new RuntimeException(kbuilder.getErrors().toString()); } KieSession ksession = kbuilder.newKieBase().newKieSession(); ksession.getAgendaEventListeners(); ksession.getProcessEventListeners(); ksession.getRuleRuntimeEventListeners(); ksession.dispose(); } }
@Test public void testManualSignalState() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF ); KieBase kbase = kbuilder.newKieBase(); KieSession ksession = kbase.newKieSession(); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); Collection<NodeInstance> nodeInstances = processInstance.getNodeInstances(); assertEquals(1, nodeInstances.size()); StateNodeInstance stateInstance = (StateNodeInstance) nodeInstances.iterator().next(); assertEquals("StateA", stateInstance.getNodeName());
@Test public void testProcessInstanceResolverStrategy() throws Exception { kbuilder.add(new ClassPathResource(PROCESS_NAME, this.getClass()), ResourceType.DRF); KieBase kbase = kbuilder.newKieBase(); KieSession ksession = kbase.newKieSession(); ProcessInstance processInstance = ksession.createProcessInstance("process name", new HashMap<String, Object>()); ksession.insert(processInstance);
private void testJitting(final String drl) { final KieBase kbase = loadKnowledgeBaseFromString(drl); final KieSession ksession = kbase.newKieSession(); ksession.insert(new Person("mark", 37)); ksession.insert(new Person("mario", 38)); ksession.fireAllRules(); ksession.dispose(); }
@Override public Void call() { KieSession ksession = kbase.newKieSession(); assertThat(((InternalWorkingMemory) ksession).getAgenda().isParallelAgenda()).isTrue(); List<Integer> list = new DebugList<Integer>(); ksession.setGlobal( "list", list ); insertFacts(ksession, 11); ksession.fireAllRules(); assertThat(ksession.getObjects()).isEmpty(); assertThat(list.size()).isEqualTo(20); return null; } };
@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 @Ignore public void testTimer() { final KieSession workingMemory = kbase.newKieSession(); assertEquals(1, counter); timer.setDelay(500); timerManager.registerTimer(timer, processInstance); assertEquals(0, counter); try { Thread.sleep(1000); assertEquals(1, counter);
@Test public void testAccept() { KieBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); KieSession ksession = kbase.newKieSession(); WorkflowProcessImpl process = new WorkflowProcessImpl(); RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance(); processInstance.setState(ProcessInstance.STATE_ACTIVE); processInstance.setProcess(process); processInstance.setKnowledgeRuntime((InternalKnowledgeRuntime) ksession); ProcessInstanceResolverStrategy strategy = new ProcessInstanceResolverStrategy(); assertTrue( strategy.accept(processInstance) ); Object object = new Object(); assertTrue( ! strategy.accept(object) ); }
KieBase ruleBase = ruleContextProvider.getKieBase(scope); if (ruleBase != null) { KieSession session = ruleBase.newKieSession(); Map<String, Object> globals = ruleContextProvider.getGlobals(scope); 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 testAddDynamicWorkItem() { Reader source = new StringReader( kbuilder.add(ResourceFactory.newReaderResource(source), ResourceType.DRF); KieBase kbase = kbuilder.newKieBase(); KieSession ksession = kbase.newKieSession(); KieRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test"); TestWorkItemHandler handler = new TestWorkItemHandler(); parameters.put("TaskName", "Dynamic Task"); assertNull(handler.getWorkItem()); assertEquals(0, dynamicContext.getNodeInstances().size()); DynamicUtils.addDynamicWorkItem(dynamicContext, ksession, "Human Task", parameters); assertNotNull(handler.getWorkItem()); assertEquals(1, dynamicContext.getNodeInstances().size()); logger.close();
@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"); }
@Test public void testAddDynamicSubProcess() { Reader source = new StringReader( kbuilder.add(ResourceFactory.newReaderResource(source2), ResourceType.DRF); KieBase kbase = kbuilder.newKieBase(); KieSession ksession = kbase.newKieSession(); KieRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test"); TestWorkItemHandler handler = new TestWorkItemHandler(); parameters.put("x", "NewValue"); assertNull(handler.getWorkItem()); assertEquals(0, dynamicContext.getNodeInstances().size()); DynamicUtils.addDynamicSubProcess(dynamicContext, ksession, "org.drools.subflow", parameters); assertNotNull(handler.getWorkItem()); assertEquals(1, dynamicContext.getNodeInstances().size()); logger.close();
@Test public void testDelayedStateConstraint() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF ); KieBase kbase = kbuilder.newKieBase(); KieSession ksession = kbase.newKieSession(); List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); ProcessInstance processInstance = ksession.startProcess("org.drools.state"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertTrue(list.isEmpty()); Person person = new Person("John Doe", 30); ksession.insert(person); ksession.fireAllRules(); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals(1, list.size()); assertEquals("1", list.get(0));
@Test public void testStartNode() { KieSession ksession = kbase.newKieSession(); processInstance.setKnowledgeRuntime( (InternalKnowledgeRuntime) ksession ); assertEquals( ProcessInstance.STATE_PENDING, processInstance.getState() ); processInstance.start(); assertEquals( ProcessInstance.STATE_ACTIVE, processInstance.getState() ); mockNodeInstance.getTriggers().get(org.jbpm.workflow.core.Node.CONNECTION_DEFAULT_TYPE); assertNotNull(triggeredBy); assertEquals(1, triggeredBy.size()); assertSame(startNode.getId(), triggeredBy.get(0).getNodeId());
@Test public void testDelayedStateConstraint2() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF ); KieBase kbase = kbuilder.newKieBase(); KieSession ksession = kbase.newKieSession(); List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); ProcessInstance processInstance = ksession.startProcess("org.drools.state"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertTrue(list.isEmpty()); Person person = new Person("John Doe", 20); ksession.insert(person); ksession.fireAllRules(); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals(1, list.size()); assertEquals("2", list.get(0));
@Test public void testEndNode() { KieBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); KieSession ksession = kbase.newKieSession(); assertEquals( ProcessInstance.STATE_COMPLETED, processInstance.getState() );
@Test public void testActionVariableMVEL() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(new ReaderResource(source), ResourceType.DRF); KieBase kbase = kbuilder.newKieBase(); KieSession ksession = kbase.newKieSession(); List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); TestVariable person = new TestVariable("John Doe"); Map<String, Object> params = new HashMap<String, Object>(); ProcessInstance processInstance = ksession.startProcess("org.drools.actions", params); assertEquals(1, list.size()); assertEquals("John Doe", list.get(0)); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
@Test public void testImmediateStateConstraintPriorities1() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF ); KieBase kbase = kbuilder.newKieBase(); KieSession ksession = kbase.newKieSession(); List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); ProcessInstance processInstance = ksession.startProcess("org.drools.state"); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals(1, list.size()); assertEquals("1", list.get(0));
@Test public void testImmediateStateConstraintPriorities2() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF ); KieBase kbase = kbuilder.newKieBase(); KieSession ksession = kbase.newKieSession(); List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); ProcessInstance processInstance = ksession.startProcess("org.drools.state"); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals(1, list.size()); assertEquals("2", list.get(0));