private void addEventListenersToSession(StatefulKnowledgeSession session) { session.addEventListener(new DefaultProcessEventListener() { @Override public void afterProcessStarted(ProcessStartedEvent event) { logger.info(">>> Firing All the Rules after process started! " + event); ((StatefulKnowledgeSession) event.getKieRuntime()).fireAllRules(); } }); }
ksession.addEventListener(listener);
@Before public void before() { context = setupWithPoolingDataSource(JBPM_PERSISTENCE_UNIT_NAME); Environment env = createEnvironment(context); if( useLocking ) { env.set(EnvironmentName.USE_PESSIMISTIC_LOCKING, true); } ksession = JPAKnowledgeService.newStatefulKnowledgeSession(createKnowledgeBase(), null, env); assertTrue("Valid KnowledgeSession could not be created.", ksession != null && ksession.getIdentifier() > 0); listener = new ProcessListener(); ksession.addEventListener(listener); }
try { StatefulKnowledgeSession ksession = createKnowledgeSession(kbase); ksession.addEventListener(countDownListener); ksession.addEventListener(new DefaultProcessEventListener() { public void beforeProcessStarted(ProcessStartedEvent event) { list.add(event.getProcessInstance().getId()); ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, kbase, null, env); ksession.addEventListener(countDownListener); AuditLoggerFactory.newInstance(Type.JPA, ksession, null); ksession.addEventListener(new DefaultProcessEventListener() { public void beforeProcessStarted(ProcessStartedEvent event) { list2.add(event.getProcessInstance().getId());
try { StatefulKnowledgeSession ksession = createKnowledgeSession(kbase); ksession.addEventListener(countDownListener); ksession.addEventListener(new DefaultProcessEventListener() { public void beforeProcessStarted(ProcessStartedEvent event) { list.add(event.getProcessInstance().getId()); ksession.addEventListener(countDownListener); AuditLoggerFactory.newInstance(Type.JPA, ksession, null); ksession.addEventListener(new DefaultProcessEventListener() { public void beforeProcessStarted(ProcessStartedEvent event) { list2.add(event.getProcessInstance().getId());
@Test(timeout=10000) @RequirePersistence public void testProcesWithHumanTaskWithTimer() throws Exception { NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("Timer", 1); KieBase kbase = createKnowledgeBase("BPMN2-SubProcessWithTimer.bpmn2"); StatefulKnowledgeSession ksession = createKnowledgeSession(kbase); ksession.addEventListener(countDownListener); TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); Map<String, Object> params = new HashMap<String, Object>(); ProcessInstance processInstance = ksession.startProcess("subproc", params); ksession.getWorkItemManager().completeWorkItem( workItemHandler.getWorkItem().getId(), null); long sessionId = ksession.getIdentifier(); Environment env = ksession.getEnvironment(); ksession.dispose(); ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, kbase, null, env); ksession.addEventListener(countDownListener); countDownListener.waitTillCompleted(); assertProcessInstanceFinished(processInstance, ksession); }
@Test(timeout=10000) @RequirePersistence public void testTimerBoundaryEventCycleISOWithPersistence() throws Exception { NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("TimerEvent", 2); // load up the knowledge base KieBase kbase = createKnowledgeBase("BPMN2-TimerBoundaryEventCycleISO.bpmn2"); StatefulKnowledgeSession ksession = createKnowledgeSession(kbase); ksession.addEventListener(countDownListener); long sessionId = ksession.getIdentifier(); Environment env = ksession.getEnvironment(); ksession.getWorkItemManager().registerWorkItemHandler("MyTask", new DoNothingWorkItemHandler()); ProcessInstance processInstance = ksession.startProcess("TimerBoundaryEvent"); assertProcessInstanceActive(processInstance); countDownListener.waitTillCompleted(); assertProcessInstanceActive(processInstance); logger.info("dispose"); ksession.dispose(); ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, kbase, null, env); ksession.addEventListener(countDownListener); assertProcessInstanceActive(processInstance); ksession.abortProcessInstance(processInstance.getId()); assertProcessInstanceFinished(processInstance, ksession); }
handler); ksession.addEventListener(new DefaultProcessEventListener() { @Override public void afterNodeLeft(ProcessNodeLeftEvent event) {
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", testHandler); ksession.addEventListener(countDownListener);
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", testHandler); ksession.addEventListener(countDownListener);
TestWorkItemHandler testHandler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", testHandler); ksession.addEventListener(new ProcessEventListener() { public void beforeVariableChanged(ProcessVariableChangedEvent arg0) {
private void addEventListenersToSession(StatefulKnowledgeSession session) { session.addEventListener(new DefaultProcessEventListener() { @Override public void afterProcessStarted(ProcessStartedEvent event) { logger.info(">>> Firing All the Rules after process started! " + event); ((StatefulKnowledgeSession) event.getKieRuntime()).fireAllRules(); } }); }
/** * Enable Rule execution and Fact manipulation listeners * @param session being enabled */ private void enableObjectListeners(StatefulKnowledgeSession session) { session.addEventListener(new TrackingAgendaEventListener()); session.addEventListener(new RuleRuntimeEventListener()); }
/** * Enable Auditing and Logging * @param session being enabled */ private void enableAuditingAndLogging(StatefulKnowledgeSession session) { session.addEventListener(new AuditTruthManagement()); session.addEventListener(new AuditRuleExecution()); }
@Test public void testAgendaFilter2() { String str = "package org.drools.compiler\n" + "rule Aaa when then end\n" + "rule Bbb when then end\n"; KnowledgeBase kbase = loadKnowledgeBaseFromString( str ); StatefulKnowledgeSession ksession = createKnowledgeSession( kbase ); org.kie.api.event.rule.AgendaEventListener ael = mock( org.kie.api.event.rule.AgendaEventListener.class ); ksession.addEventListener( ael ); RuleNameEndsWithAgendaFilter af = new RuleNameEndsWithAgendaFilter( "a" ); int rules = ksession.fireAllRules( af ); assertEquals( 1, rules ); ArgumentCaptor<org.kie.api.event.rule.AfterMatchFiredEvent> arg = ArgumentCaptor.forClass( org.kie.api.event.rule.AfterMatchFiredEvent.class ); verify( ael ).afterMatchFired(arg.capture()); assertThat( arg.getValue().getMatch().getRule().getName(), is( "Aaa" ) ); }
@Test public void testAgendaFilter4() { String str = "package org.drools.compiler\n" + "rule Aaa when then end\n" + "rule Bbb when then end\n"; KnowledgeBase kbase = loadKnowledgeBaseFromString( str ); StatefulKnowledgeSession ksession = createKnowledgeSession( kbase ); org.kie.api.event.rule.AgendaEventListener ael = mock( org.kie.api.event.rule.AgendaEventListener.class ); ksession.addEventListener( ael ); RuleNameEqualsAgendaFilter af = new RuleNameEqualsAgendaFilter( "Aaa" ); int rules = ksession.fireAllRules( af ); assertEquals( 1, rules ); ArgumentCaptor<org.kie.api.event.rule.AfterMatchFiredEvent> arg = ArgumentCaptor.forClass( org.kie.api.event.rule.AfterMatchFiredEvent.class ); verify( ael ).afterMatchFired(arg.capture()); assertThat( arg.getValue().getMatch().getRule().getName(), is( "Aaa" ) ); }
@Test public void testAgendaFilter1() { String str = "package org.drools.compiler\n" + "rule Aaa when then end\n" + "rule Bbb when then end\n"; KnowledgeBase kbase = loadKnowledgeBaseFromString( str ); StatefulKnowledgeSession ksession = createKnowledgeSession( kbase ); org.kie.api.event.rule.AgendaEventListener ael = mock( org.kie.api.event.rule.AgendaEventListener.class ); ksession.addEventListener( ael ); RuleNameStartsWithAgendaFilter af = new RuleNameStartsWithAgendaFilter( "B" ); int rules = ksession.fireAllRules( af ); assertEquals( 1, rules ); ArgumentCaptor<org.kie.api.event.rule.AfterMatchFiredEvent> arg = ArgumentCaptor.forClass( org.kie.api.event.rule.AfterMatchFiredEvent.class ); verify( ael ).afterMatchFired(arg.capture()); assertThat( arg.getValue().getMatch().getRule().getName(), is( "Bbb" ) ); }
@Test public void testAgendaFilter3() { String str = "package org.drools.compiler\n" + "rule Aaa when then end\n" + "rule Bbb when then end\n"; KnowledgeBase kbase = loadKnowledgeBaseFromString( str ); StatefulKnowledgeSession ksession = createKnowledgeSession( kbase ); org.kie.api.event.rule.AgendaEventListener ael = mock( org.kie.api.event.rule.AgendaEventListener.class ); ksession.addEventListener( ael ); RuleNameMatchesAgendaFilter af = new RuleNameMatchesAgendaFilter( ".*b." ); int rules = ksession.fireAllRules( af ); assertEquals( 1, rules ); ArgumentCaptor<org.kie.api.event.rule.AfterMatchFiredEvent> arg = ArgumentCaptor.forClass( org.kie.api.event.rule.AfterMatchFiredEvent.class ); verify( ael ).afterMatchFired(arg.capture()); assertThat( arg.getValue().getMatch().getRule().getName(), is( "Bbb" ) ); }
@Test public void testAddRemoveListeners() throws Exception { final KnowledgeBase kbase = loadKnowledgeBase( "test_AddRemoveListeners.drl" ); StatefulKnowledgeSession ksession = createKnowledgeSession( kbase ); // creating listener as a jmock proxy final RuleRuntimeEventListener wmeListener = mock( RuleRuntimeEventListener.class ); ksession.addEventListener( wmeListener ); // listener will be notified of both facts insertion ksession.insert( new Cheese( "stilton" ) ); ksession.insert( wmeListener ); // firing rules will remove listener ksession.fireAllRules(); // inserting another object into the working memory, listener should NOT be notified, // since it is no longer listening. ksession.insert( new Cheese( "brie" ) ); verify( wmeListener, times( 2 ) ).objectInserted( any( org.kie.api.event.rule.ObjectInsertedEvent.class ) ); }
@Test @Ignore public void testListenersAfterSessionReload() { // https://bugzilla.redhat.com/show_bug.cgi?id=826952 Environment env = createEnvironment(context); KieBase kbase = initializeKnowledgeBase(simpleRule); StatefulKnowledgeSession ksession = InfinispanKnowledgeService.newStatefulKnowledgeSession( kbase, null, env ); ksession.addEventListener(new DefaultAgendaEventListener()); ksession.addEventListener(new DefaultRuleRuntimeEventListener()); assertEquals(1, ksession.getRuleRuntimeEventListeners().size()); assertEquals(1, ksession.getAgendaEventListeners().size()); ksession = InfinispanKnowledgeService.loadStatefulKnowledgeSession(ksession.getIdentifier(), kbase, null, env); assertEquals(1, ksession.getRuleRuntimeEventListeners().size()); assertEquals(1, ksession.getAgendaEventListeners().size()); } }