}
processInstances.put(processInstance.getId(), processInstance);
}
public ProcessInstance getProcessInstance(long id) {
ProcessInstance processInstance = null;
if (this.processInstances != null) {
processInstance = this.processInstances.get(id);
if (processInstance != null) {
return processInstance;
}
}
EntityManager em = (EntityManager) this.workingMemory.getEnvironment().get( EnvironmentName.ENTITY_MANAGER );
ProcessInstanceInfo processInstanceInfo = em.find( ProcessInstanceInfo.class,
id );
if ( processInstanceInfo == null ) {
return null;
}
processInstanceInfo.updateLastReadDate();
processInstance = (ProcessInstance)
processInstanceInfo.getProcessInstance(workingMemory,this.workingMemory.getEnvironment());
Process process = ((InternalRuleBase) workingMemory.getRuleBase()).getProcess( processInstance.getProcessId() );
if ( process == null ) {
throw new IllegalArgumentException( "Could not find process " + processInstance.getProcessId() );
}
processInstance.setProcess( process );
if ( processInstance.getWorkingMemory() == null ) {
processInstance.setWorkingMemory( (InternalWorkingMemory) workingMemory );
((ProcessInstanceImpl) processInstance).reconnect();
}
return processInstance;
}