public JPAWorkingMemoryDbLogger(WorkingMemory workingMemory) { super(workingMemory); InternalProcessRuntime processRuntime = ((InternalWorkingMemory) workingMemory).getProcessRuntime(); if (processRuntime != null) { processRuntime.addEventListener( (ProcessEventListener) this ); } }
/** * Retrieve the {@link ProcessInstanceManager} object from the ObjectOutput- or ObjectInputStream. * The stream object will secretly also either be a {@link MarshallerReaderContext} or a * {@link MarshallerWriteContext}. * @param streamContext The marshaller stream/context. * @return A {@link ProcessInstanceManager} object. */ public static ProcessInstanceManager retrieveProcessInstanceManager(Object streamContext) { ProcessInstanceManager pim = null; if ( streamContext instanceof MarshallerWriteContext ) { MarshallerWriteContext context = (MarshallerWriteContext) streamContext; pim = ((ProcessRuntimeImpl) ((InternalWorkingMemory) context.wm).getProcessRuntime()).getProcessInstanceManager(); } else if ( streamContext instanceof MarshallerReaderContext ) { MarshallerReaderContext context = (MarshallerReaderContext) streamContext; pim = ((ProcessRuntimeImpl) ((InternalWorkingMemory) context.wm).getProcessRuntime()).getProcessInstanceManager(); } else { throw new UnsupportedOperationException( "Unable to retrieve " + ProcessInstanceManager.class.getSimpleName() + " from " + streamContext.getClass().getName() ); } return pim; }
public void execute(InternalWorkingMemory workingMemory) { ((DefaultSignalManager) ((InternalProcessRuntime) workingMemory.getProcessRuntime()).getSignalManager()).internalSignalEvent(type, event); }
public void writeProcessTimers(MarshallerWriteContext outCtx) throws IOException { outCtx.writersByClass.put( ProcessJobContext.class, new TimerManager.ProcessTimerOutputMarshaller() ); outCtx.writersByClass.put( StartProcessJobContext.class, new TimerManager.ProcessTimerOutputMarshaller() ); ProtobufMessages.ProcessData.Builder _pdata = (ProtobufMessages.ProcessData.Builder) outCtx.parameterObject; TimerManager timerManager = ((InternalProcessRuntime) ((InternalWorkingMemory) outCtx.wm).getProcessRuntime()).getTimerManager(); long timerId = timerManager.internalGetTimerId(); _pdata.setExtension( JBPMMessages.timerId, timerId ); }
public void readProcessTimers(MarshallerReaderContext inCtx) throws IOException, ClassNotFoundException { inCtx.readersByInt.put( ProtobufMessages.Timers.TimerType.PROCESS_VALUE, new TimerManager.ProcessTimerInputMarshaller() ); ProtobufMessages.ProcessData _pdata = (ProtobufMessages.ProcessData) inCtx.parameterObject; TimerManager timerManager = ((InternalProcessRuntime) ((InternalWorkingMemory) inCtx.wm).getProcessRuntime()).getTimerManager(); timerManager.internalSetTimerId( _pdata.getExtension( JBPMMessages.timerId ) ); // // int token; // while ( (token = inCtx.readShort()) != PersisterEnums.END ) { // switch ( token ) { // case PersisterEnums.TIMER : { // TimerInstance timer = readTimer( inCtx ); // timerManager.internalAddTimer( timer ); // break; // } // case PersisterEnums.DEFAULT_TIMER : { // InputMarshaller.readTimer( inCtx ); // break; // } // } // } }
@Test public void testInternalNodeSignalEvent() { Reader source = new StringReader(process); builder.addRuleFlow(source); KieSession session = createKieSession(builder.getPackages()); final List<ProcessEvent> processEventList = new ArrayList<ProcessEvent>(); final ProcessEventListener listener = createProcessEventListener(processEventList); ((InternalWorkingMemory)session).getProcessRuntime().addEventListener(listener); ProcessInstance processInstance = ((InternalWorkingMemory)session).getProcessRuntime().startProcess("org.drools.core.event"); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals("MyValue", ((VariableScopeInstance) ((org.jbpm.process.instance.ProcessInstance) processInstance) .getContextInstance(VariableScope.VARIABLE_SCOPE)).getVariable("MyVar")); assertEquals( 28, processEventList.size() ); for (ProcessEvent e: processEventList) { logger.debug(e.toString()); } assertEquals( "org.drools.core.event", ((ProcessStartedEvent) processEventList.get(2)).getProcessInstance().getProcessId()); }
assertEquals(0, myList.size()); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(1, ((InternalProcessRuntime) ((InternalWorkingMemory) session).getProcessRuntime()).getTimerManager().getTimers().size());
public void deserialize(MarshallerReaderContext inCtx, Timer timer) throws ClassNotFoundException { JBPMMessages.ProcessTimer ptimer = timer.getExtension(JBPMMessages.procTimer); TimerService ts = inCtx.wm.getTimerService(); long processInstanceId = ptimer.getTimer().getProcessInstanceId(); Trigger trigger = ProtobufInputMarshaller.readTrigger(inCtx, ptimer.getTrigger()); TimerInstance timerInstance = ProtobufProcessMarshaller.readTimer(inCtx, ptimer.getTimer()); TimerManager tm = ((InternalProcessRuntime) inCtx.wm.getProcessRuntime()).getTimerManager(); // check if the timer instance is not already registered to avoid duplicated timers if (!tm.getTimerMap().containsKey(timerInstance.getId())) { ProcessJobContext pctx = new ProcessJobContext(timerInstance, trigger, processInstanceId, inCtx.wm.getKnowledgeRuntime(), false); Date date = trigger.hasNextFireTime(); if (date != null) { long then = date.getTime(); long now = pctx.getKnowledgeRuntime().getSessionClock().getCurrentTime(); // overdue timer if (then < now) { trigger = new OverdueTrigger(trigger, pctx.getKnowledgeRuntime()); } } JobHandle jobHandle = ts.scheduleJob(processJob, pctx, trigger); timerInstance.setJobHandle(jobHandle); pctx.setJobHandle(jobHandle); tm.getTimerMap().put(timerInstance.getId(), timerInstance); } } }
assertEquals(0, myList.size()); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(1, ((InternalProcessRuntime) ((InternalWorkingMemory) session).getProcessRuntime()).getTimerManager().getTimers().size()); session.halt();
assertEquals(0, myList.size()); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(1, ((InternalProcessRuntime) ((InternalWorkingMemory) session).getProcessRuntime()).getTimerManager().getTimers().size());
assertEquals(0, myList.size()); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(1, ((InternalProcessRuntime) ((InternalWorkingMemory) session).getProcessRuntime()).getTimerManager().getTimers().size());
assertEquals(0, myList.size()); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(1, ((InternalProcessRuntime) ((InternalWorkingMemory) session).getProcessRuntime()).getTimerManager().getTimers().size()); assertEquals(0, ((InternalProcessRuntime) ((InternalWorkingMemory) session).getProcessRuntime()).getTimerManager().getTimers().size());
assertEquals(0, myList.size()); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(1, ((InternalProcessRuntime) ((InternalWorkingMemory) session).getProcessRuntime()).getTimerManager().getTimers().size());
((InternalWorkingMemory) session).getProcessRuntime().signalEvent("myEvent", "Jack"); session.fireAllRules(); assertEquals(2, myList.size());
assertEquals(0, myList.size()); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(1, ((InternalProcessRuntime) ((InternalWorkingMemory) session).getProcessRuntime()).getTimerManager().getTimers().size());
assertEquals(0, myList.size()); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(2, ((InternalProcessRuntime) ((InternalWorkingMemory) session).getProcessRuntime()).getTimerManager().getTimers().size());
((InternalWorkingMemory) session).getProcessRuntime().signalEvent("MyEvent", "MyValue"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
((InternalWorkingMemory) session).getProcessRuntime().signalEvent("MyEvent", "MyValue"); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals("MyValue", ((VariableScopeInstance)
((InternalWorkingMemory) session).getProcessRuntime().signalEvent("MyEvent", "MyValue"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
((InternalWorkingMemory) session).getProcessRuntime().signalEvent("MyEvent", "MyValue"); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals("MyValue", ((VariableScopeInstance)