private String getRuleSetEventType() { InternalKnowledgeRuntime kruntime = getProcessInstance().getKnowledgeRuntime(); if (kruntime instanceof StatefulKnowledgeSession) { return "RuleFlowGroup_" + getRuleFlowGroup() + "_" + ((StatefulKnowledgeSession) kruntime).getIdentifier(); } else { return "RuleFlowGroup_" + getRuleFlowGroup(); } }
public void afterRuleFlowGroupDeactivated(final RuleFlowGroupDeactivatedEvent event) { if (kruntime instanceof StatefulKnowledgeSession) { signalManager.signalEvent( "RuleFlowGroup_" + event.getRuleFlowGroup().getName() + "_" + ((StatefulKnowledgeSession) kruntime).getIdentifier(), null ); } else { signalManager.signalEvent( "RuleFlowGroup_" + event.getRuleFlowGroup().getName(), null ); } } } );
@Test public void multipleKSessionDifferentIdTest() { KieBase kbase1 = KnowledgeBaseFactory.newKnowledgeBase(); KieBase kbase2 = KnowledgeBaseFactory.newKnowledgeBase(); StatefulKnowledgeSession ksession1 = createSession(kbase1); StatefulKnowledgeSession ksession2 = createSession(kbase2); Assert.assertNotSame(ksession1.getIdentifier(), ksession2.getIdentifier()); }
public void registerTimer(final TimerInstance timer, String processId, Map<String, Object> params) { try { kruntime.startOperation(); timer.setId(++timerId); timer.setProcessInstanceId(-1l); timer.setSessionId(((StatefulKnowledgeSession) kruntime).getIdentifier()); timer.setActivated(new Date()); Trigger trigger = null; if (timer.getCronExpression() != null) { Date startTime = new Date(timerService.getCurrentTime() + 1000); trigger = new CronTrigger(timerService.getCurrentTime(), startTime, null, -1, timer.getCronExpression(), null, null); // cron timers are by nature repeatable timer.setPeriod(1); } else { trigger = new IntervalTrigger(timerService.getCurrentTime(), null, null, timer.getRepeatLimit(), timer.getDelay(), timer.getPeriod(), null, null); } StartProcessJobContext ctx = new StartProcessJobContext(timer, trigger, processId, params, this.kruntime); JobHandle jobHandle = this.timerService.scheduleJob(startProcessJob, ctx, trigger); timer.setJobHandle(jobHandle); timers.put(timer.getId(), timer); } finally { kruntime.endOperation(); } }
@Before public void setUp() throws Exception { context = setupWithPoolingDataSource(JBPM_PERSISTENCE_UNIT_NAME); env = createEnvironment(context); kbase = createBase(); StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env); sessionId = ksession.getIdentifier(); ksession.dispose(); }
@Test public void multipleSessionsWithSameProcessAndDifferentIdTest() { String processId = "signalProcessTest"; String eventType = "myEvent"; RuleFlowProcess process1 = ProcessCreatorForHelp.newSimpleEventProcess( processId, eventType ); RuleFlowProcess process2 = ProcessCreatorForHelp.newSimpleEventProcess( processId, eventType ); KieBase kbase1 = createKieBase(process1); KieBase kbase2 = createKieBase(process2); StatefulKnowledgeSession ksession1 = createSession(kbase1); StatefulKnowledgeSession ksession2 = createSession(kbase2); Assert.assertNotSame(ksession1.getIdentifier(), ksession2.getIdentifier()); Long processInstance1Id = ksession1.startProcess(processId).getId(); Long processInstance2Id = ksession2.startProcess(processId).getId(); Assert.assertNotSame(processInstance1Id, processInstance2Id); }
@Test @Ignore("beta4 phreak") public void testStartTimerCycleFromDiscDRL() throws Exception { KieBase kbase = createKnowledgeBaseFromDisc("rules-timer.drl"); StatefulKnowledgeSession ksession = createKnowledgeSession(kbase); long sessionId = ksession.getIdentifier(); Environment env = ksession.getEnvironment(); final List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); ( (SingleSessionCommandService) ( (CommandBasedStatefulKnowledgeSession) ksession ).getRunner() ).getKieSession() .addEventListener(new TriggerRulesEventListener(ksession)); ksession.fireAllRules(); Thread.sleep(5000); assertEquals(2, list.size()); logger.info("dispose"); ksession.dispose(); ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, kbase, null, env); AuditLoggerFactory.newInstance(Type.JPA, ksession, null); final List<String> list2 = new ArrayList<String>(); ksession.setGlobal("list", list2); ( (SingleSessionCommandService) ( (CommandBasedStatefulKnowledgeSession) ksession ).getRunner() ).getKieSession() .addEventListener(new TriggerRulesEventListener(ksession)); ksession.fireAllRules(); Thread.sleep(6000); assertEquals(3, list2.size()); }
@Test @Ignore("beta4 phreak") public void testStartTimerCycleFromClasspathDRL() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("rules-timer.drl"); StatefulKnowledgeSession ksession = createKnowledgeSession(kbase); long sessionId = ksession.getIdentifier(); Environment env = ksession.getEnvironment(); final List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); ( (SingleSessionCommandService) ( (CommandBasedStatefulKnowledgeSession) ksession ).getRunner() ).getKieSession() .addEventListener(new TriggerRulesEventListener(ksession)); ksession.fireAllRules(); Thread.sleep(5000); assertEquals(2, list.size()); logger.info("dispose"); ksession.dispose(); ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, kbase, null, env); AuditLoggerFactory.newInstance(Type.JPA, ksession, null); final List<String> list2 = new ArrayList<String>(); ksession.setGlobal("list", list2); ( (SingleSessionCommandService) ( (CommandBasedStatefulKnowledgeSession) ksession ).getRunner() ).getKieSession() .addEventListener(new TriggerRulesEventListener(ksession)); ksession.fireAllRules(); Thread.sleep(5000); assertEquals(3, list2.size()); }
@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); }
@Before public void before() { context = setupWithPoolingDataSource(JBPM_PERSISTENCE_UNIT_NAME); // load up the knowledge base Environment env = PersistenceUtil.createEnvironment(context); env.set(OBJECT_MARSHALLING_STRATEGIES, new ObjectMarshallingStrategy[] { new ProcessInstanceResolverStrategy(), new JPAPlaceholderResolverStrategy(env), new SerializablePlaceholderResolverStrategy(ClassObjectMarshallingStrategyAcceptor.DEFAULT) } ); if( useLocking ) { env.set(USE_PESSIMISTIC_LOCKING, true); } KieBase kbase = loadKnowledgeBase(); // create session ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env); Assert.assertTrue("Valid KnowledgeSession could not be created.", ksession != null && ksession.getIdentifier() > 0); }
@Test public void testPersistenceState() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( new ClassPathResource( "StateProcess.rf" ), ResourceType.DRF ); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilder.getKnowledgePackages() ); StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env ); long id = ksession.getIdentifier(); ProcessInstance processInstance = ksession.startProcess( "org.drools.test.TestProcess" ); logger.debug( "Started process instance {}", processInstance.getId() ); ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env ); processInstance = ksession.getProcessInstance( processInstance.getId() ); assertNotNull( processInstance ); ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env ); ksession.insert(new ArrayList<Object>()); ksession.fireAllRules(); ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env ); processInstance = ksession.getProcessInstance( processInstance.getId() ); assertNull( processInstance ); }
@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); }
long id = ksession.getIdentifier();
@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); }
long id = ksession.getIdentifier();
long sessionId = ksession.getIdentifier(); Environment env = ksession.getEnvironment();
@Test public void createProcessStartItDisposeAndLoadItAgain() { String processId = "minimalProcess"; String workName = "MyWork"; KieBase kbase = createKieBase(ProcessCreatorForHelp.newProcessWithOneWork( processId, workName )); StatefulKnowledgeSession ksession = createSession(kbase); long ksessionId = ksession.getIdentifier(); DummyWorkItemHandler handler = new DummyWorkItemHandler(); ksession.getWorkItemManager() .registerWorkItemHandler(workName, handler); long process1Id = ksession.startProcess(processId).getId(); ksession = disposeAndReloadSession(ksession, ksessionId, kbase); ksession.getWorkItemManager().registerWorkItemHandler(workName, handler); long workItemId = handler.getLatestWorkItem().getId(); ksession.getWorkItemManager().completeWorkItem(workItemId, null); Assert.assertNotNull(ksession); Assert.assertNull( ksession.getProcessInstance( process1Id ) ); }
long ksession1Id = ksession1.getIdentifier(); StatefulKnowledgeSession ksession2 = createSession(kbase); long ksession2Id = ksession2.getIdentifier();
long id = ksession.getIdentifier();
long id = ksession.getIdentifier();