Refine search
private KieRuntime extractIfNeeded(KieRuntime ksession) { if (ksession instanceof CommandBasedStatefulKnowledgeSession) { return ((SingleSessionCommandService) ((CommandBasedStatefulKnowledgeSession) ksession).getRunner()).getKieSession(); } return ksession; }
@Override public Void execute(org.kie.api.runtime.Context context) { TransactionManager tm = (TransactionManager) initialKsession.getEnvironment().get(EnvironmentName.TRANSACTION_MANAGER); if (manager.hasEnvironmentEntry("IS_JTA_TRANSACTION", false)) { if (initialKsession instanceof CommandBasedStatefulKnowledgeSession) { ExecutableRunner commandService = ((CommandBasedStatefulKnowledgeSession) initialKsession).getRunner(); ((SingleSessionCommandService) commandService).destroy(); } else { ((RegistryContext) context).lookup( KieSession.class ).destroy(); && tm.getStatus() != TransactionManager.STATUS_ROLLEDBACK && tm.getStatus() != TransactionManager.STATUS_COMMITTED) { TransactionManagerHelper.registerTransactionSyncInContainer(tm, new OrderedTransactionSynchronization(5, "PPIRM-"+initialKsession.getIdentifier()) {
@Test @RequirePersistence public void testRuleTaskWithFactsWithPersistence() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-RuleTaskWithFact.bpmn2", "BPMN2-RuleTask3.drl"); ksession = createKnowledgeSession(kbase); ( (SingleSessionCommandService) ( (CommandBasedStatefulKnowledgeSession) ksession ).getRunner() ).getKieSession() .addEventListener(new TriggerRulesEventListener(ksession)); ksession.addEventListener(new DebugAgendaEventListener()); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "SomeString"); ProcessInstance processInstance = ksession.startProcess("RuleTask", params); assertProcessInstanceFinished(processInstance, ksession); params = new HashMap<String, Object>(); try { processInstance = ksession.startProcess("RuleTask", params); fail("Should fail"); } catch (Exception e) { e.printStackTrace(); } params = new HashMap<String, Object>(); params.put("x", "SomeString"); processInstance = ksession.startProcess("RuleTask", params); assertProcessInstanceFinished(processInstance, ksession); }
@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()); }
public long getStatefulKnowledgeSessionId(StatefulKnowledgeSession ksession) { if ( ksession instanceof CommandBasedStatefulKnowledgeSession ) { SingleSessionCommandService commandService = (SingleSessionCommandService) ((CommandBasedStatefulKnowledgeSession) ksession).getRunner(); return commandService.getSessionId(); } throw new IllegalArgumentException( "StatefulKnowledgeSession must be an a CommandBasedStatefulKnowledgeSession" ); }
@Override public RequestContext createContext() { KieSession ksession = interceptedService.getKieSession(); RequestContext context = RequestContext.create(ksession.getClass().getClassLoader()).with( ksession ); return context; } }
@Test @RequirePersistence public void testRuleTaskWithFactsWithPersistence() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-RuleTaskWithFact.bpmn2", "BPMN2-RuleTask3.drl"); ksession = createKnowledgeSession(kbase); ( (SingleSessionCommandService) ( (CommandBasedStatefulKnowledgeSession) ksession ).getRunner() ).getKieSession() .addEventListener(new TriggerRulesEventListener(ksession)); ksession.addEventListener(new DebugAgendaEventListener()); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "SomeString"); ProcessInstance processInstance = ksession.startProcess("RuleTask", params); assertProcessInstanceFinished(processInstance, ksession); params = new HashMap<String, Object>(); try { processInstance = ksession.startProcess("RuleTask", params); fail("Should fail"); } catch (Exception e) { e.printStackTrace(); } params = new HashMap<String, Object>(); params.put("x", "SomeString"); processInstance = ksession.startProcess("RuleTask", params); assertProcessInstanceFinished(processInstance, ksession); }
@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()); }
public RequestContext execute( Executable executable, RequestContext ctx ) { executeNext(executable, ctx); try { KieSession ksession = interceptedService.getKieSession(); java.lang.reflect.Field sessionInfoField = PersistableRunner.class.getDeclaredField( "sessionInfo" ); sessionInfoField.setAccessible(true); java.lang.reflect.Field jpmField = PersistableRunner.class.getDeclaredField("jpm"); jpmField.setAccessible(true); Object jpm = jpmField.get(interceptedService); Object sessionInfo = sessionInfoField.get(interceptedService); if ( ( (InternalExecutable) executable ).canRunInTransaction() ) { executeNext(new SingleCommandExecutable( new PersistCommand(sessionInfo, jpm, ksession) ), ctx); } } catch (Exception e) { throw new RuntimeException("Couldn't force persistence of session info", e); } return ctx; }
@Override public Void execute(org.kie.api.runtime.Context context) { TransactionManager tm = (TransactionManager) initialKsession.getEnvironment().get(EnvironmentName.TRANSACTION_MANAGER); if (manager.hasEnvironmentEntry("IS_JTA_TRANSACTION", false)) { if (initialKsession instanceof CommandBasedStatefulKnowledgeSession) { ExecutableRunner commandService = ((CommandBasedStatefulKnowledgeSession) initialKsession).getRunner(); ((SingleSessionCommandService) commandService).destroy(); } else { ((RegistryContext) context).lookup( KieSession.class ).destroy(); TransactionManagerHelper.registerTransactionSyncInContainer(tm, new OrderedTransactionSynchronization(5, "PCRM-" + initialKsession.getIdentifier()) {
( (SingleSessionCommandService) ( (CommandBasedStatefulKnowledgeSession) ksession ).getRunner() ).getKieSession() .addEventListener(new TriggerRulesEventListener(ksession)); ( (SingleSessionCommandService) ( (CommandBasedStatefulKnowledgeSession) ksession ).getRunner() ).getKieSession() .addEventListener(new TriggerRulesEventListener(ksession));
protected TimerManager getTimerManager(KieSession ksession) { KieSession internal = ksession; if (ksession instanceof CommandBasedStatefulKnowledgeSession) { internal = ( (SingleSessionCommandService) ( (CommandBasedStatefulKnowledgeSession) ksession ).getRunner() ).getKieSession(); } return ((InternalProcessRuntime) ((StatefulKnowledgeSessionImpl) internal).getProcessRuntime()).getTimerManager(); }
@Override public Void execute(org.kie.api.runtime.Context context) { TransactionManager tm = (TransactionManager) initialKsession.getEnvironment().get(EnvironmentName.TRANSACTION_MANAGER); if (manager.hasEnvironmentEntry("IS_JTA_TRANSACTION", false)) { if (initialKsession instanceof CommandBasedStatefulKnowledgeSession) { ExecutableRunner commandService = ((CommandBasedStatefulKnowledgeSession) initialKsession).getRunner(); ((SingleSessionCommandService) commandService).destroy(); } else { ((RegistryContext) context).lookup( KieSession.class ).destroy(); && tm.getStatus() != TransactionManager.STATUS_ROLLEDBACK && tm.getStatus() != TransactionManager.STATUS_COMMITTED) { TransactionManagerHelper.registerTransactionSyncInContainer(tm, new OrderedTransactionSynchronization(5, "PPIRM-"+initialKsession.getIdentifier()) {
( (SingleSessionCommandService) ( (CommandBasedStatefulKnowledgeSession) ksession ).getRunner() ).getKieSession() .addEventListener(new TriggerRulesEventListener(ksession)); ( (SingleSessionCommandService) ( (CommandBasedStatefulKnowledgeSession) ksession ).getRunner() ).getKieSession() .addEventListener(new TriggerRulesEventListener(ksession));
protected TimerManager getTimerManager(KieSession ksession) { KieSession internal = ksession; if (ksession instanceof CommandBasedStatefulKnowledgeSession) { internal = ((SingleSessionCommandService) ((CommandBasedStatefulKnowledgeSession) ksession).getRunner()).getKieSession(); } return ((InternalProcessRuntime) ((StatefulKnowledgeSessionImpl) internal).getProcessRuntime()).getTimerManager(); }
@Override public Void execute(org.kie.api.runtime.Context context) { TransactionManager tm = (TransactionManager) initialKsession.getEnvironment().get(EnvironmentName.TRANSACTION_MANAGER); if (manager.hasEnvironmentEntry("IS_JTA_TRANSACTION", false)) { if (initialKsession instanceof CommandBasedStatefulKnowledgeSession) { ExecutableRunner commandService = ((CommandBasedStatefulKnowledgeSession) initialKsession).getRunner(); ((SingleSessionCommandService) commandService).destroy(); } else { ((RegistryContext) context).lookup( KieSession.class ).destroy(); TransactionManagerHelper.registerTransactionSyncInContainer(tm, new OrderedTransactionSynchronization(5, "PCRM-" + initialKsession.getIdentifier()) {