public void removeInstance(XpdlInstance instance) { ProcessInstanceUUID instanceUUID = instance.getUUID(); removedInstances.put(instanceUUID, instance); instances.remove(instanceUUID); } public boolean isInstanceRemoved(ProcessInstanceUUID instanceUUID) {
public void addInstance(XpdlInstance instance) { ProcessInstanceUUID instanceUUID = instance.getUUID(); instances.put(instanceUUID, instance); removedInstances.remove(instanceUUID); } public void removeInstance(XpdlInstance instance) {
public void finish() { final FinishedInstanceHandler handler = ServiceEnvTool.getFinishedInstanceHandler(); handler.handleFinishedInstance(this.getUUID()); } }
public void handleFinishedInstance(XpdlInstance instance) { final Querier journal = EnvTool.getJournalQueriers(); final Recorder recorder = EnvTool.getRecorder(); List<ProcessFullInstance> ids = new ArrayList<ProcessFullInstance>(); ids.add(journal.getProcessInstance(instance.getUUID())); if (instance.getChildInstances() != null) { for (XpdlInstance child : instance.getChildInstances()) { ids.add(journal.getProcessInstance(child.getUUID())); } } for (ProcessFullInstance processInst : ids) { recorder.remove(processInst); } } }
public ProcessInstanceUUID instantiateProcess(final ProcessDefinitionUUID processUUID, Map<String, Object> variables) throws ProcessNotFoundException { FacadeUtil.checkArgsNotNull(processUUID); final XpdlProcess process = FacadeUtil.getProcessDefinition(processUUID); if (LOG.isLoggable(Level.FINE)) { LOG.fine("Starting a new instance of process : " + processUUID); } final XpdlExecution rootExecution = (XpdlExecution) process.beginProcessInstance(); rootExecution.setVariables(variables); rootExecution.signal(); if (LOG.isLoggable(Level.FINE)) { LOG.fine("Started: " + rootExecution.getXpdlInstance()); } return rootExecution.getXpdlInstance().getUUID(); }
public Set<XpdlInstance> getXpdlInstances(ProcessDefinitionUUID processUUID) { Misc.checkArgsNotNull(processUUID); Set<XpdlInstance> dbInstances = getRuntimeDbSession().getXpdlInstances(processUUID); for (XpdlInstance instance : dbInstances) { if (!buffer.containsInstance(instance.getUUID()) && !buffer.isInstanceRemoved(instance.getUUID())) { buffer.addInstance(instance); } } Set<XpdlInstance> result = new HashSet<XpdlInstance>(); for (XpdlInstance instance : buffer.getInstances().values()) { if (instance.getProcessDefinitionUUID().equals(processUUID)) { result.add(instance); } } return result; }
public void recordInstanceEnded(XpdlInstance xpdlInstance, final String userId) { Misc.checkArgsNotNull(xpdlInstance); final ProcessFullInstanceImpl instanceRecord = (ProcessFullInstanceImpl) getProcessInstance(xpdlInstance.getUUID()); Misc.badStateIfNull(instanceRecord, "Ouch! Can't find the ProcessInstance for: " + xpdlInstance); instanceRecord.setEndedDate(new Date()); instanceRecord.setEndedBy(userId); }
public TaskRunTime(TaskUUID taskUUID, String nodeName, AbstractActivity abstractActivity, XpdlExecution xpdlExecution) { this.taskUUID = taskUUID; this.activityDef = abstractActivity; this.activityId = nodeName; this.xpdlExecution = xpdlExecution; this.instanceUUID = xpdlExecution.getXpdlInstance().getUUID(); this.packageUUID = xpdlExecution.getProcessDefinition().getPackageDefinitionUUID(); this.iterationId = xpdlExecution.getIterationId(); this.activityInstanceId = xpdlExecution.getActivityInstanceId(); }
public TaskRunTime(final TaskUUID taskUUID, final String nodeName, final AbstractActivity abstractActivity, final XpdlExecution xpdlExecution) { this.taskUUID = taskUUID; this.activityDef = abstractActivity; this.activityId = nodeName; this.xpdlExecution = xpdlExecution; this.instanceUUID = xpdlExecution.getXpdlInstance().getUUID(); this.packageUUID = xpdlExecution.getProcessDefinition().getPackageDefinitionUUID(); this.iterationId = xpdlExecution.getIterationId(); this.activityInstanceId = xpdlExecution.getActivityInstanceId(); }
@Override public void execute(final ActivityExecution execution) { final XpdlExecution xpdlExecution = (XpdlExecution) execution; xpdlExecution.setCurrentActivityInstanceUUID( ServiceEnvTool.getUUIDGenerator(). getActivityInstanceUUID(xpdlExecution.getXpdlInstance().getUUID(), this.activityId)); execution.waitForSignal(); }
public void recordBodyEnded(AbstractActivity activity, XpdlExecution xpdlExecution) { Misc.checkArgsNotNull(activity, xpdlExecution); final String activityId = activity.getActivityId(); ProcessInstanceUUID instanceUUID = xpdlExecution.getXpdlInstance().getUUID(); final String iterationId = xpdlExecution.getIterationId(); final String activityInstanceId = xpdlExecution.getActivityInstanceId(); ActivityFullInstance<ActivityBody> activityInstance = getActivityInstance(instanceUUID, activityId, iterationId, activityInstanceId); ((ActivityBodyImpl)activityInstance.getBody()).setEndedDate(new Date()); }
public void recordBodyStarted(AbstractActivity activity, XpdlExecution xpdlExecution) { Misc.checkArgsNotNull(activity, xpdlExecution); final String activityId = activity.getActivityId(); ProcessInstanceUUID instanceUUID = xpdlExecution.getXpdlInstance().getUUID(); final String iterationId = xpdlExecution.getIterationId(); final String activityInstanceId = xpdlExecution.getActivityInstanceId(); ActivityFullInstance<ActivityBody> activityInstance = getActivityInstance(instanceUUID, activityId, iterationId, activityInstanceId); ((ActivityBodyImpl)activityInstance.getBody()).setStartedDate(new Date()); }
public void recordInstanceStarted(XpdlInstance instance, final String userId) { Misc.checkArgsNotNull(instance); XpdlInstance parentInstance = instance.getParentInstance(); ProcessInstanceUUID parentInstanceUUID = null; if (parentInstance != null) { parentInstanceUUID = parentInstance.getUUID(); getProcessInstance(parentInstanceUUID).addChildInstance(instance.getUUID()); } final ProcessFullInstanceImpl instanceRecord = new ProcessFullInstanceImpl(instance.getUUID(), instance.getPackageDefinitionUUID(), instance.getProcessDefinitionUUID(), parentInstanceUUID, instance.getRootExecution().getVariables()); instanceRecord.setStartedDate(new Date()); Misc.badStateIfNull(userId, "Ouch! Can't get the user id from the environment!"); instanceRecord.setStartedBy(userId); buffer.addInstance(instanceRecord); getQuerierDbSession().save(instanceRecord); }
public void handleFinishedInstance(XpdlInstance instance) { ProcessInstanceUUID instanceUUID = instance.getUUID(); if (instance.getChildInstances() != null) { for (XpdlInstance child : instance.getChildInstances()) { handleFinishedInstance(child); } } Repository repository = EnvTool.getRepository(); Set<TaskRunTime> taskRuntimes = repository.getInstanceTasks(instanceUUID); if (taskRuntimes != null) { for (TaskRunTime task : taskRuntimes) { repository.removeTask(task); } } repository.removeXpdlInstance(instanceUUID); }
public void cancel() { // cancel execution this.getRootExecution().cancel(); // record cancel ServiceEnvTool.getRecorder().recordInstanceCancelled( new ProcessInstanceCurrentInfo( this.getPackageDefinitionUUID(), this.getProcessDefinitionUUID(), this.getUUID(), this.getParentInstance() != null ? this.getParentInstance().getUUID() : null, this.getRootExecution().getVariables(), ServiceEnvTool.getUserId()) ); // execute finished instance handler if (this.getParentInstance() == null) { this.finish(); } }
public XpdlExecution getExecutionPointingOnNode( ProcessInstanceUUID instanceUUID, String nodeName, String iterationId, String activityInstanceId) { Misc.checkArgsNotNull(instanceUUID, nodeName, iterationId, activityInstanceId); XpdlInstance instance = buffer.getInstance(instanceUUID); if (instance != null) { return getExecOnNode(instance.getRootExecution(), nodeName, iterationId, activityInstanceId); } XpdlExecution exec = getRuntimeDbSession().getExecutionPointingOnNode(instanceUUID, nodeName, iterationId, activityInstanceId); if (exec != null && !buffer.isInstanceRemoved(exec.getXpdlInstance().getUUID())) { return exec; } return null; }
public void handleFinishedInstance(XpdlInstance instance) { final Querier journal = EnvTool.getJournalQueriers(); final Archiver archiver = EnvTool.getArchiver(); final Recorder recorder = EnvTool.getRecorder(); if (instance.getChildInstances() != null) { for (XpdlInstance child : instance.getChildInstances()) { handleFinishedInstance(child); } } ProcessFullInstance processInst = journal.getProcessInstance(instance.getUUID()); try { Tool.atomicArchive(processInst, recorder, archiver); } catch (AtomicArchiveException e) { throw new BonitaWrapperException(e); } } }
private boolean executeBody(final XpdlExecution xpdlExecution) { if (this.bodyStartAutomatically()) { final ActivityInstanceCurrentInfo activityInstanceCurrentInfo = new ActivityInstanceCurrentInfo( xpdlExecution.getXpdlInstance().getPackageDefinitionUUID(), xpdlExecution.getXpdlInstance().getProcessDefinitionUUID(), xpdlExecution.getXpdlInstance().getUUID(), xpdlExecution.getCurrentActivityInstanceUUID(), this.getActivityType(), this.getActivityId(), xpdlExecution.getIterationId(), xpdlExecution.getActivityInstanceId(), xpdlExecution.getScopeVariables()); ServiceEnvTool.getRecorder().recordBodyStarted(activityInstanceCurrentInfo); } return this.executeBusinessLogic(xpdlExecution); }
protected void end(final XpdlExecution xpdlExecution) { final ActivityInstanceCurrentInfo activityInstanceCurrentInfo = new ActivityInstanceCurrentInfo( xpdlExecution.getXpdlInstance().getPackageDefinitionUUID(), xpdlExecution.getXpdlInstance().getProcessDefinitionUUID(), xpdlExecution.getXpdlInstance().getUUID(), xpdlExecution.getCurrentActivityInstanceUUID(), this.getActivityType(), this.getActivityId(), xpdlExecution.getIterationId(), xpdlExecution.getActivityInstanceId(), xpdlExecution.getScopeVariables()); ServiceEnvTool.getRecorder().recordBodyEnded(activityInstanceCurrentInfo); if (!XpdlExecution.MAIN_INSTANCE_NAME.equals(xpdlExecution.getActivityInstanceId())) { final XpdlExecution activityInstanceExecution = (XpdlExecution) xpdlExecution.destroyScope(xpdlExecution.getNode()); activityInstanceExecution.end(); final XpdlExecution parent = activityInstanceExecution.getParent(); parent.removeExecution(activityInstanceExecution); this.signal(parent, AbstractActivity.ACT_INSTANCE_FINISHED, null); } else { this.executeSplit(xpdlExecution, true); } }
public void recordEnterActivity(final AbstractActivity activity, final XpdlExecution xpdlExecution) { Misc.checkArgsNotNull(activity, xpdlExecution); final NodeImpl node = xpdlExecution.getNode(); XpdlInstance instance = xpdlExecution.getXpdlInstance(); final String id = node.getName(); final PackageDefinitionUUID packageUUID = instance.getPackageDefinitionUUID(); final ProcessDefinitionUUID processUUID = instance.getProcessDefinitionUUID(); final ProcessInstanceUUID instanceUUID = instance.getUUID(); final String iterationId = xpdlExecution.getIterationId(); final String activityInstanceId = xpdlExecution.getActivityInstanceId(); final ActivityFullInstanceImpl<ActivityBody> activityRecord = new ActivityFullInstanceImpl<ActivityBody>( new ActivityInstanceUUID(instanceUUID, activity.getActivityId(), EnvTool.getRepository().getNextActivityInstanceNb(instanceUUID, activity.getActivityId())), id, packageUUID, processUUID, instanceUUID, iterationId, activityInstanceId); ActivityBody body = activity.getBody(xpdlExecution, activityRecord); activityRecord.setBody(body); ProcessFullInstance processInstance = getProcessInstance(instanceUUID); processInstance.addActivity(activityRecord); activityRecord.setVariablesBeforeReady(xpdlExecution.getScopeVariables()); }