@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); }
@Test public void testDeployWithCustomDeploymentDescriptor() throws Exception { assertEquals("org.jbpm.persistence.jpa", descriptor.getPersistenceUnit()); assertEquals("org.jbpm.persistence.jpa", descriptor.getAuditPersistenceUnit()); assertEquals(AuditMode.JPA, descriptor.getAuditMode()); assertEquals(PersistenceMode.JPA, descriptor.getPersistenceMode()); assertEquals(RuntimeStrategy.PER_REQUEST, descriptor.getRuntimeStrategy()); assertNotNull(engine); Object service = engine.getKieSession().getGlobal("service"); assertNotNull(service); assertTrue(service instanceof ArrayList);
private void testAccumulate(final String accumulateFunction, final Number expectedResult) { // DROOLS-1265 final String drl = "import org.drools.compiler.oopath.model.*;\n" + "global java.lang.Object globalVar\n" + "\n" + "rule R when\n" + " accumulate ( Adult( $child: /children ) ; $accumulateResult: " + accumulateFunction + "($child.getAge()) )\n" + "then\n" + " kcontext.getKieRuntime().setGlobal(\"globalVar\", $accumulateResult);\n" + "end\n"; final KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL ) .build() .newKieSession(); final Man bob = new Man( "Bob", 40 ); bob.addChild( new Child( "Charles", 12 ) ); bob.addChild( new Child( "Debbie", 8 ) ); ksession.insert( bob ); ksession.fireAllRules(); final Number result = (Number) ksession.getGlobal("globalVar"); if (result instanceof Double) { Assertions.assertThat(expectedResult.doubleValue()).isEqualTo(result.doubleValue()); } else { Assertions.assertThat(expectedResult.longValue()).isEqualTo(result.longValue()); } }
@Override public List<SocialActivitiesEvent> executeAllRules() { List<SocialActivitiesEvent> events = new ArrayList<SocialActivitiesEvent>(); try { KieServices ks = KieServices.Factory.get(); KieContainer kContainer = ks.getKieClasspathContainer(); KieSession kSession = kContainer.newKieSession( "social-session" ); List<SocialActivitiesEvent> socialEvents = new ArrayList<SocialActivitiesEvent>(); kSession.setGlobal( "socialEvents", socialEvents ); kSession.setGlobal( "queryAPI", this ); kSession.fireAllRules(); events = (List<SocialActivitiesEvent>) kSession.getGlobal( "socialEvents" ); } catch ( Exception e ) { throw new RulesExecutionQueryException( e ); } return events; }
@Test public void testKieSessionsPool() { KieContainerSessionsPool pool = getKieContainer().newKieSessionsPool( 1 ); KieSession ksession = pool.newKieSession(); try { checkKieSession( ksession ); } finally { ksession.dispose(); } try { ksession.insert( "test2" ); fail("it shouldn't be possible to operate on a disposed session even if created from a pool"); } catch (Exception e) { } KieSession ksession2 = pool.newKieSession(); // using a pool with only one session so it should return the same one as before assertSame( ksession, ksession2 ); assertNull( ksession2.getGlobal( "list" ) ); checkKieSession( ksession2 ); pool.shutdown(); try { ksession.insert( "test3" ); fail("after pool shutdown all sessions created from it should be disposed"); } catch (IllegalStateException e) { } try { pool.newKieSession(); fail("after pool shutdown it shouldn't be possible to get sessions from it"); } catch (IllegalStateException e) { } }
@Test @SuppressWarnings("unchecked") public void testMarshallingProcessInstancesAndGlobals() throws Exception { ksession.getEnvironment().set("org.jbpm.rule.task.waitstate", true); List<Object> list = new ArrayList<Object>(); ksession.setGlobal( "list", list ); ksession.insert( p ); ksession.startProcess("org.test.ruleflow"); assertEquals(1, ksession.getProcessInstances().size()); assertEquals(1, ksession.getProcessInstances().size()); ksession.fireAllRules(); assertEquals( 1, ((List<Object>) ksession.getGlobal("list")).size()); assertEquals( p, ((List<Object>) ksession.getGlobal("list")).get(0)); assertEquals(0, ksession.getProcessInstances().size());
@Override @SuppressWarnings("unchecked") public List<SocialActivitiesEvent> executeAllRules() { List<SocialActivitiesEvent> events = new ArrayList<>(); try { KieServices ks = KieServices.Factory.get(); KieContainer kContainer = ks.getKieClasspathContainer(); KieSession kSession = kContainer.newKieSession("social-session"); List<SocialActivitiesEvent> socialEvents = new ArrayList<>(); kSession.setGlobal("socialEvents", socialEvents); kSession.setGlobal("maxResults", Integer.MAX_VALUE); kSession.setGlobal("queryAPI", this); kSession.fireAllRules(); events = (List<SocialActivitiesEvent>) kSession.getGlobal("socialEvents"); } catch (Exception e) { throw new RulesExecutionQueryException(e); } return events; }
@Test public void testDeployWithFullCustomDeploymentDescriptor() throws Exception { assertEquals("org.jbpm.persistence.jpa", descriptor.getPersistenceUnit()); assertEquals("org.jbpm.persistence.jpa", descriptor.getAuditPersistenceUnit()); assertEquals(AuditMode.JPA, descriptor.getAuditMode()); assertEquals(PersistenceMode.JPA, descriptor.getPersistenceMode()); assertEquals(RuntimeStrategy.PER_PROCESS_INSTANCE, descriptor.getRuntimeStrategy()); Object service = kieSession.getGlobal("service"); assertNotNull(service); assertTrue(service instanceof ArrayList);
private void testAccumulateCollection(final String accumulateFunction, final Integer... expectedResults) { final String drl = "import org.drools.compiler.oopath.model.*;\n" + "global java.util.Collection<Integer> globalVar\n" + "\n" + "rule R when\n" + " accumulate ( Adult( $child: /children ) ; $accumulateResult: " + accumulateFunction + "($child.getAge()) )\n" + "then\n" + " kcontext.getKieRuntime().setGlobal(\"globalVar\", $accumulateResult);\n" + "end\n"; final KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL ) .build() .newKieSession(); final Man bob = new Man( "Bob", 40 ); bob.addChild( new Child( "Charles", 12 ) ); bob.addChild( new Child( "Debbie", 8 ) ); ksession.insert( bob ); ksession.fireAllRules(); final Collection<Integer> result = (Collection<Integer>) ksession.getGlobal("globalVar"); Assertions.assertThat(result).containsExactlyInAnyOrder(expectedResults); } }
@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());
@Override @SuppressWarnings("unchecked") public List<SocialActivitiesEvent> executeAllRules() { List<SocialActivitiesEvent> events = new ArrayList<>(); try { KieServices ks = KieServices.Factory.get(); KieContainer kContainer = ks.getKieClasspathContainer(); KieSession kSession = kContainer.newKieSession("social-session"); List<SocialActivitiesEvent> socialEvents = new ArrayList<>(); kSession.setGlobal("socialEvents", socialEvents); kSession.setGlobal("maxResults", Integer.MAX_VALUE); kSession.setGlobal("queryAPI", this); kSession.fireAllRules(); events = (List<SocialActivitiesEvent>) kSession.getGlobal("socialEvents"); } catch (Exception e) { throw new RulesExecutionQueryException(e); } return events; }
@Test public void testSetGlobals() throws Exception { KieSession ksession = (KieSession) context.getBean("ksessionForCommands"); assertNotNull(ksession); assertEquals(1, ksession.getObjects().size()); assertTrue(ksession.getObjects().toArray()[0] instanceof Person); Person p1 = (Person) ksession.getObjects().toArray()[0]; assertNotNull(p1); //if the rules should have fired without any invoke of fireAllRules, then the setHappy(true) should have been called for (Object object : ksession.getObjects()) { if (object instanceof Person) { assertTrue(((Person) object).isHappy()); } } Object list = ksession.getGlobal("persons"); assertNotNull(list); assertTrue(list instanceof ArrayList); assertEquals(1, ((ArrayList) list).size()); Person p = (Person) ((ArrayList) list).get(0); assertNotNull(p); assertEquals(p, p1); }
@Test public void testHierarchy() throws Exception { KieSession ksession = genSession("test_ExtHierarchy.drl"); ksession.setGlobal("list",new LinkedList()); ksession.fireAllRules(); assertEquals(1, ((List) ksession.getGlobal("list")).size()); }
String maxResults ) { List<SocialActivitiesEvent> events = new ArrayList<SocialActivitiesEvent>(); try { List<SocialActivitiesEvent> socialEvents = new ArrayList<SocialActivitiesEvent>(); kSession.setGlobal( "socialEvents", socialEvents ); kSession.setGlobal( "queryAPI", this ); kSession.setGlobal( "maxResults", new Integer( maxResults ) ); for ( String key : globals.keySet() ) { kSession.setGlobal( key, globals.get( key ) ); kSession.fireAllRules( new AgendaFilter() { @Override public boolean accept( Match match ) { events = (List<SocialActivitiesEvent>) kSession.getGlobal( "socialEvents" );
@Test public void testSetGlobals() throws Exception { KieSession ksession = (KieSession) context.getBean("ksessionForCommands"); assertNotNull(ksession); assertEquals(1, ksession.getObjects().size()); assertTrue(ksession.getObjects().toArray()[0] instanceof Person); Person p1 = (Person) ksession.getObjects().toArray()[0]; assertNotNull(p1); //if the rules should have fired without any invoke of fireAllRules, then the setHappy(true) should have been called for (Object object : ksession.getObjects()) { if (object instanceof Person) { assertTrue(((Person) object).isHappy()); } } Object list = ksession.getGlobal("persons"); assertNotNull(list); assertTrue(list instanceof ArrayList); assertEquals(1, ((ArrayList) list).size()); Person p = (Person) ((ArrayList) list).get(0); assertNotNull(p); assertEquals(p, p1); }
@Test public void testNullFieldOnCompositeSink() throws Exception { final KieBase kbase = loadKnowledgeBase("test_NullFieldOnCompositeSink.drl"); KieSession ksession = createKnowledgeSession(kbase); final List list = new ArrayList(); ksession.setGlobal("list", list); ksession.insert(new Attribute()); ksession.insert(new Message()); ksession = SerializationHelper.getSerialisedStatefulKnowledgeSession(ksession, true); ksession.fireAllRules(); assertEquals(1, ((List) ksession.getGlobal("list")).size()); assertEquals("X", ((List) ksession.getGlobal("list")).get(0)); }
String maxResults) { List<SocialActivitiesEvent> events = new ArrayList<>(); try { List<SocialActivitiesEvent> socialEvents = new ArrayList<>(); kSession.setGlobal("socialEvents", socialEvents); kSession.setGlobal("queryAPI", this); kSession.setGlobal("maxResults", new Integer(maxResults)); for (String key : globals.keySet()) { globals.get(key)); kSession.fireAllRules(new AgendaFilter() { @Override public boolean accept(Match match) { events = (List<SocialActivitiesEvent>) kSession.getGlobal("socialEvents"); } catch (Exception e) { throw new RulesExecutionQueryException(e);
@Test public void testSetGlobals() throws Exception { KieSession ksession = (KieSession) container.getComponentInstance("ksessionForCommands"); assertNotNull(ksession); assertEquals(1, ksession.getObjects().size()); assertTrue(ksession.getObjects().toArray()[0] instanceof Person); Person p1 = (Person) ksession.getObjects().toArray()[0]; assertNotNull(p1); //if the rules should have fired without any invoke of fireAllRules, then the setHappy(true) should have been called for (Object object : ksession.getObjects()) { if (object instanceof Person) { assertTrue(((Person) object).isHappy()); } } Object list = ksession.getGlobal("persons"); assertNotNull(list); assertTrue(list instanceof ArrayList); assertEquals(1, ((ArrayList) list).size()); Person p = (Person) ((ArrayList) list).get(0); assertNotNull(p); assertEquals(p, p1); }
@SuppressWarnings("unchecked") @Test public void testFunction() throws Exception { KieBase kbase = loadKnowledgeBase( "test_FunctionInConsequence.drl" ); KieSession ksession = createKnowledgeSession(kbase); final List<Integer> list = new ArrayList<Integer>(); ksession.setGlobal( "list", list ); final Cheese stilton = new Cheese( "stilton", 5 ); ksession.insert( stilton ); ksession.fireAllRules(); assertEquals( new Integer( 5 ), ((List<Integer>) ksession.getGlobal( "list" )).get( 0 ) ); }
String maxResults) { List<SocialActivitiesEvent> events = new ArrayList<>(); try { List<SocialActivitiesEvent> socialEvents = new ArrayList<>(); kSession.setGlobal("socialEvents", socialEvents); kSession.setGlobal("queryAPI", this); kSession.setGlobal("maxResults", new Integer(maxResults)); for (String key : globals.keySet()) { globals.get(key)); kSession.fireAllRules(new AgendaFilter() { @Override public boolean accept(Match match) { events = (List<SocialActivitiesEvent>) kSession.getGlobal("socialEvents"); } catch (Exception e) { throw new RulesExecutionQueryException(e);