.getCommandService() .execute(setProcInstVariablesCommand);
protected void processEventListeners(StatefulKnowledgeSession ksession, Map<String, Object> variables, SessionTemplate template) { List<String> eventListeners = template.getEventListeners(); if (eventListeners != null) { for (String eventListenerDef : eventListeners) { try { EventListener listener = (EventListener) eval(eventListenerDef, variables); if (listener instanceof WorkingMemoryLogger) { // it is enough to create instance of it as it will register all the listeners internally } else if (listener instanceof ProcessEventListener) { ksession.addEventListener((ProcessEventListener) listener); } else if (listener instanceof AgendaEventListener) { ksession.addEventListener((AgendaEventListener) listener); } else if (listener instanceof WorkingMemoryEventListener) { ksession.addEventListener((WorkingMemoryEventListener) listener); } else if (listener instanceof org.drools.event.AgendaEventListener) { ((StatefulKnowledgeSessionImpl) ((KnowledgeCommandContext) ((CommandBasedStatefulKnowledgeSession) ksession) .getCommandService().getContext()).getStatefulKnowledgesession() ) .session.addEventListener((org.drools.event.AgendaEventListener)listener); } } catch (Exception e) { logger.error("Addition of event listener " + eventListenerDef + " failed due to " + e.getMessage(), e); } } } }
public WorkingMemoryLogger(final KnowledgeRuntimeEventManager session) { if (session instanceof StatefulKnowledgeSessionImpl) { WorkingMemoryEventManager eventManager = ((StatefulKnowledgeSessionImpl) session).session; eventManager.addEventListener( (WorkingMemoryEventListener) this ); eventManager.addEventListener( (AgendaEventListener) this ); eventManager.addEventListener( (RuleBaseEventListener) this ); InternalProcessRuntime processRuntime = ((StatefulKnowledgeSessionImpl) session).session.getProcessRuntime(); if (processRuntime != null) { processRuntime.addEventListener( (ProcessEventListener) this ); } } else if (session instanceof StatelessKnowledgeSessionImpl) { ((StatelessKnowledgeSessionImpl) session).workingMemoryEventSupport.addEventListener( this ); ((StatelessKnowledgeSessionImpl) session).agendaEventSupport.addEventListener( this ); ((StatelessKnowledgeSessionImpl) session).processEventSupport.addEventListener( this ); ((StatelessKnowledgeSessionImpl) session).getRuleBase().addEventListener( this ); } else if (session instanceof CommandBasedStatefulKnowledgeSession) { ReteooWorkingMemoryInterface eventManager = ((StatefulKnowledgeSessionImpl)((KnowledgeCommandContext)((CommandBasedStatefulKnowledgeSession) session).getCommandService().getContext()).getStatefulKnowledgesession()).session; eventManager.addEventListener( (WorkingMemoryEventListener) this ); eventManager.addEventListener( (AgendaEventListener) this ); InternalProcessRuntime processRuntime = eventManager.getProcessRuntime(); eventManager.addEventListener( (RuleBaseEventListener) this ); if (processRuntime != null) { processRuntime.addEventListener( (ProcessEventListener) this ); } } else { throw new IllegalArgumentException("Not supported session in logger: " + session.getClass()); } }
ReteooWorkingMemoryInterface rwmi = ((StatefulKnowledgeSessionImpl)((KnowledgeCommandContext)cbsks.getCommandService().getContext()).getStatefulKnowledgesession()).session; if (el instanceof WorkingMemoryEventListener) { rwmi.addEventListener((WorkingMemoryEventListener)el);