protected void addInterceptors(KieSession ksession) { PersistableRunner runner = (PersistableRunner) ((CommandBasedStatefulKnowledgeSession) ksession).getRunner(); runner.addInterceptor(new OptimisticLockRetryInterceptor()); // even though it's added always TransactionLockInterceptor is by default disabled so won't do anything runner.addInterceptor(new TransactionLockInterceptor(ksession.getEnvironment())); runner.addInterceptor(new ExecutionErrorHandlerInterceptor(ksession.getEnvironment())); }
PersistableRunner service = new PersistableRunner( kbase, config, env ); Long sessionId = service.getSessionId(); StartProcessCommand startProcessCommand = new StartProcessCommand(); startProcessCommand.setProcessId( "org.drools.test.TestProcess" ); ProcessInstance processInstance = service.execute( startProcessCommand ); logger.info( "Started process instance {}", processInstance.getId() ); service.dispose(); service = new PersistableRunner( sessionId, kbase, config, GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand(); getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() ); processInstance = service.execute( getProcessInstanceCommand ); assertNotNull( processInstance ); service.dispose(); service = new PersistableRunner( sessionId, kbase, config, getProcessInstanceCommand = new GetProcessInstanceCommand(); getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() ); processInstance = service.execute( getProcessInstanceCommand ); assertNull( processInstance );
kbase.addPackages( kpkgs ); PersistableRunner service = new PersistableRunner( kbase, config, env ); Long sessionId = service.getSessionId(); StartProcessCommand startProcessCommand = new StartProcessCommand(); startProcessCommand.setProcessId( "org.drools.test.TestProcess" ); ProcessInstance processInstance = service.execute( startProcessCommand ); logger.info( "Started process instance {}", processInstance.getId() ); service = new PersistableRunner( sessionId, kbase, config, GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand(); getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() ); processInstance = service.execute( getProcessInstanceCommand ); assertNull( processInstance );
checkEnvironment( this.env ); initTransactionManager( this.env ); try { transactionOwner = txm.begin(); registerRollbackSync(); initExistingKnowledgeSession( sessionId, kbase, conf, persistenceContext ); registerUpdateSync(); txm.commit( transactionOwner ); } catch (SessionNotFoundException e){ rollbackTransaction( e, transactionOwner, false ); rollbackTransaction( re, transactionOwner ); throw re; } catch ( Exception t1 ) { rollbackTransaction( t1, transactionOwner ); throw new RuntimeException( "Wrapped exception see cause",
checkEnvironment( this.env ); initTransactionManager( this.env ); initNewKnowledgeSession(kbase, conf); try { transactionOwner = txm.begin(); registerRollbackSync(); registerUpdateSync(); txm.commit( transactionOwner ); } catch ( RuntimeException re ) { rollbackTransaction( re, transactionOwner ); throw re; } catch ( Exception t1 ) { rollbackTransaction( t1, transactionOwner ); throw new RuntimeException( "Wrapped exception see cause",
addInterceptor(iterator.next(), false); initKieSessionMBeans(this.ksession);
public long getStatefulKnowledgeSessionId(StatefulKnowledgeSession ksession) { if ( ksession instanceof CommandBasedStatefulKnowledgeSession ) { PersistableRunner commandService = (PersistableRunner) ((CommandBasedStatefulKnowledgeSession) ksession).getRunner(); return commandService.getSessionId(); } throw new IllegalArgumentException( "StatefulKnowledgeSession must be an a CommandBasedStatefulKnowledgeSession" ); }
public RequestContext createContext() { return PersistableRunner.this.createContext(); } }
public void addInterceptor(ChainableRunner interceptor) { addInterceptor(interceptor, true); }
PersistableRunner service = new PersistableRunner( ruleBase, config, env ); Long sessionId = service.getSessionId(); StartProcessCommand startProcessCommand = new StartProcessCommand(); startProcessCommand.setProcessId( "org.drools.test.TestProcess" ); RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance) service.execute( startProcessCommand ); logger.info( "Started process instance {}", processInstance.getId() ); long processInstanceId = processInstance.getId(); WorkItem workItem = handler.getWorkItem(); assertNotNull( workItem ); service.dispose(); service = new PersistableRunner( sessionId, ruleBase, config, GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand(); getProcessInstanceCommand.setProcessInstanceId( processInstanceId ); processInstance = (RuleFlowProcessInstance) service.execute( getProcessInstanceCommand ); assertNotNull( processInstance ); getProcessInstanceCommand = new GetProcessInstanceCommand(); getProcessInstanceCommand.setProcessInstanceId( subProcessInstanceId ); RuleFlowProcessInstance subProcessInstance = (RuleFlowProcessInstance) service.execute( getProcessInstanceCommand ); assertNotNull( subProcessInstance ); service.dispose();
protected void addInterceptors(KieSession ksession) { PersistableRunner runner = (PersistableRunner) ((CommandBasedStatefulKnowledgeSession) ksession).getRunner(); runner.addInterceptor(new OptimisticLockRetryInterceptor()); // even though it's added always TransactionLockInterceptor is by default disabled so won't do anything runner.addInterceptor(new TransactionLockInterceptor(ksession.getEnvironment())); runner.addInterceptor(new ExecutionErrorHandlerInterceptor(ksession.getEnvironment())); }
PersistableRunner service = new PersistableRunner( kbase, config, env ); Long sessionId = service.getSessionId(); ProcessInstance processInstance = service.execute( startProcessCommand ); logger.info( "Started process instance {}", processInstance.getId() ); WorkItem workItem = handler.getWorkItem(); assertNotNull( workItem ); service.dispose(); service = new PersistableRunner( sessionId, kbase, config, GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand(); getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() ); processInstance = service.execute( getProcessInstanceCommand ); assertNotNull( processInstance ); service.dispose(); service = new PersistableRunner( sessionId, kbase, config, CompleteWorkItemCommand completeWorkItemCommand = new CompleteWorkItemCommand(); completeWorkItemCommand.setWorkItemId( workItem.getId() ); service.execute( completeWorkItemCommand );
public StatefulKnowledgeSession newKieSession(KieBase kbase, KieSessionConfiguration configuration, Environment environment) { if ( configuration == null ) { configuration = SessionConfiguration.newInstance(); } if ( environment == null ) { throw new IllegalArgumentException( "Environment cannot be null" ); } CommandExecutor commandService = buildCommandService( kbase, mergeConfig( configuration ), environment ); if (commandService instanceof SingleSessionCommandService) { ((PersistableRunner) commandService).addInterceptor(new ManualPersistInterceptor((SingleSessionCommandService) commandService)); try { Class<?> clazz = Class.forName("org.jbpm.persistence.ManualPersistProcessInterceptor"); Constructor<?> c = clazz.getConstructor(SingleSessionCommandService.class); ChainableRunner interceptor = (ChainableRunner) c.newInstance( commandService ); ((PersistableRunner) commandService).addInterceptor((ChainableRunner) interceptor ); } catch (ClassNotFoundException e) { //Expected of non-jbpm based projects } catch (Exception e) { //something unexpected happened throw new RuntimeException("Something wrong initializing manual process persistor interceptor", e); } } return new CommandBasedStatefulKnowledgeSession( (ExecutableRunner) commandService ); }
PersistableRunner service = new PersistableRunner( kbase, config, env ); Long sessionId = service.getSessionId(); StartProcessCommand startProcessCommand = new StartProcessCommand(); startProcessCommand.setProcessId( "org.drools.test.TestProcess" ); ProcessInstance processInstance = service.execute( startProcessCommand ); logger.info( "Started process instance {}", processInstance.getId() ); ut.commit(); WorkItem workItem = handler.getWorkItem(); assertNotNull( workItem ); service.dispose(); service = new PersistableRunner( sessionId, kbase, config, GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand(); getProcessInstanceCommand.setProcessInstanceId( processInstance.getId() ); processInstance = service.execute( getProcessInstanceCommand ); assertNotNull( processInstance ); ut.commit(); service.dispose(); service = new PersistableRunner( sessionId, kbase, config,
public StatefulKnowledgeSession loadKieSession(int id, KieBase kbase, KieSessionConfiguration configuration, Environment environment) { if ( configuration == null ) { configuration = SessionConfiguration.newInstance(); } if ( environment == null ) { throw new IllegalArgumentException( "Environment cannot be null" ); } CommandExecutor commandService = buildCommandService( new Long(id), kbase, mergeConfig( configuration ), environment ); if (commandService instanceof SingleSessionCommandService) { ((PersistableRunner) commandService).addInterceptor(new ManualPersistInterceptor((SingleSessionCommandService) commandService)); try { Class<?> clazz = Class.forName("org.jbpm.persistence.ManualPersistProcessInterceptor"); Constructor<?> c = clazz.getConstructor(PersistableRunner.class); ChainableRunner interceptor = (ChainableRunner) c.newInstance(commandService); ((PersistableRunner) commandService).addInterceptor(interceptor); } catch (ClassNotFoundException e) { //Expected of non-jbpm based projects } catch (Exception e) { //something unexpected happened throw new RuntimeException("Something wrong initializing manual process persistor interceptor", e); } } return new CommandBasedStatefulKnowledgeSession( (ExecutableRunner) commandService ); }
public StatefulKnowledgeSession loadKieSession(Long id, KieBase kbase, KieSessionConfiguration configuration, Environment environment) { if ( configuration == null ) { configuration = SessionConfiguration.newInstance(); } if ( environment == null ) { throw new IllegalArgumentException( "Environment cannot be null" ); } CommandExecutor commandService = buildCommandService( id, kbase, mergeConfig( configuration ), environment ); if (commandService instanceof SingleSessionCommandService) { ((PersistableRunner) commandService).addInterceptor(new ManualPersistInterceptor((SingleSessionCommandService) commandService)); try { Class<?> clazz = Class.forName("org.jbpm.persistence.ManualPersistProcessInterceptor"); Constructor<?> c = clazz.getConstructor(SingleSessionCommandService.class); ChainableRunner interceptor = (ChainableRunner) c.newInstance(commandService); ((PersistableRunner) commandService).addInterceptor(interceptor); } catch (ClassNotFoundException e) { //Expected of non-jbpm based projects } catch (Exception e) { //something unexpected happened throw new RuntimeException("Something wrong initializing manual process persistor interceptor", e); } } return new CommandBasedStatefulKnowledgeSession( (ExecutableRunner) commandService ); }
sscs.addInterceptor(new LoggingInterceptor()); sscs.addInterceptor(new FireAllRulesInterceptor()); sscs.addInterceptor(new LoggingInterceptor()); List<?> list = new ArrayList<Object>(); ksession.setGlobal( "list", list );
@Test public void testInterceptor() { String str = ""; str += "package org.kie.test\n"; str += "global java.util.List list\n"; str += "rule rule1\n"; str += "when\n"; str += " Integer(intValue > 0)\n"; str += "then\n"; str += " list.add( 1 );\n"; str += " System.out.println(\"ADDED\");\n"; str += "end\n"; str += "\n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", str ); ks.newKieBuilder( kfs ).buildAll(); KieBase kbase = ks.newKieContainer(ks.getRepository().getDefaultReleaseId()).getKieBase(); KieSession ksession = InfinispanKnowledgeService.newStatefulKnowledgeSession( kbase, null, env ); PersistableRunner sscs = (PersistableRunner) ((CommandBasedStatefulKnowledgeSession) ksession).getRunner(); sscs.addInterceptor(new LoggingInterceptor()); sscs.addInterceptor(new FireAllRulesInterceptor()); sscs.addInterceptor(new LoggingInterceptor()); List<?> list = new ArrayList<Object>(); ksession.setGlobal( "list", list ); ksession.insert( 1 ); ksession.insert( 2 ); ksession.insert( 3 ); ksession.getWorkItemManager().completeWorkItem(0, null); assertEquals( 3, list.size() ); }