/** * @param execution */ public void setExecutionToSignal(XpdlExecution execution) { this.executionToSignal = execution; if (execution != null) { // executionToSignal is set to null when the subflow is ended. // not setting it to null can create a bug, because the executionTosignal // is removed from the db, but still referenced in the subflow instance. // // When executionToSignal is set to null, // the parent process instance has to be kept. // (to delete the subflow instance with the main instance) this.parentInstance = execution.getXpdlInstance(); this.parentInstance.addChildInstance(this); } }
/** * @param execution */ public void setExecutionToSignal(final XpdlExecution execution) { this.executionToSignal = execution; if (execution != null) { // executionToSignal is set to null when the subflow is ended. // not setting it to null can create a bug, because the executionTosignal // is removed from the db, but still referenced in the subflow instance. // // When executionToSignal is set to null, // the parent process instance has to be kept. // (to delete the subflow instance with the main instance) this.parentInstance = execution.getXpdlInstance(); this.parentInstance.addChildInstance(this); } }
@Override protected XpdlExecution newChildExecution() { XpdlExecution child = new XpdlExecution(); child.xpdlInstance = this.getXpdlInstance(); child.iterationId = this.getIterationId(); return child; }
@Override protected XpdlExecution newChildExecution() { final XpdlExecution child = new XpdlExecution(); child.xpdlInstance = this.getXpdlInstance(); child.iterationId = this.getIterationId(); return child; }
private static JoinRunTime getJoinRuntime(XpdlExecution xpdlExecution) { return getJoinRunTime(xpdlExecution.getXpdlInstance(), xpdlExecution.getNode()); }
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 void addTask(TaskRunTime task) { tasks.put(task.getUUID(), task); if (task.getXpdlExecution() != null) { instances.put(task.getInstanceUUID(), task.getXpdlExecution().getXpdlInstance()); } removedTasks.remove(task.getUUID()); } public void removeTask(TaskRunTime task) {
@Override public void begin() { XpdlInstance instance = getXpdlInstance(); instance.setInstanceState(InstanceState.INITIAL); setIterationId(Misc.getUniqueId("it")); super.begin(); }
@Override public void begin() { final XpdlInstance instance = getXpdlInstance(); instance.setInstanceState(InstanceState.INITIAL); setIterationId(Misc.getUniqueId("it")); super.begin(); }
@Override public void execute(final ActivityExecution execution) { final XpdlExecution xpdlExecution = (XpdlExecution) execution; xpdlExecution.setCurrentActivityInstanceUUID( ServiceEnvTool.getUUIDGenerator(). getActivityInstanceUUID(xpdlExecution.getXpdlInstance().getUUID(), this.activityId)); execution.waitForSignal(); }
/** * @param execution */ private static void cancelJoinXORIncomingTransitions(final XpdlExecution execution) { final NodeImpl currentNode = execution.getNode(); final XpdlInstance instance = execution.getXpdlInstance(); AbstractActivity.cancelJoinXORIncomingTransitions(instance, currentNode, currentNode.getName()); for (final Transition t : currentNode.getIncomingTransitions()) { instance.setTransitionState(t, TransitionState.ABORTED); } }
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(); }
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(); }
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); }
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 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()); }
protected boolean executeJoin(final XpdlExecution execution) { final Transition previousTransition = execution.getPreviousTransition(); final String fromName = previousTransition.getSource().getName(); final TransitionStatus fromTransition = execution.getXpdlInstance().getTransitionStatus(previousTransition); if (fromTransition.getState().equals(TransitionState.ARRIVED)) { throw new BonitaRuntimeException("transition " + fromName + "->" + this.activityId + " is already arrived in this Join."); } if (fromTransition.getState().equals(TransitionState.TAKEN)) { fromTransition.setState(TransitionState.ARRIVED); } return AbstractActivity.isJoinOk(execution.getXpdlInstance(), execution.getNode()); }
private void createNewIteration(XpdlExecution execution) { if (iterationDescriptors != null && !iterationDescriptors.isEmpty()) { String iterationUUID = Misc.getUniqueId("it"); execution.setIterationId(iterationUUID); XpdlInstance instance = execution.getXpdlInstance(); for (IterationDescriptor it : iterationDescriptors) { JoinRunTime jr = getJoinRunTime(instance, execution.getProcessDefinition().getNode(it.getJoinNodeName())); if (jr.update(iterationUUID, it.getTransitionSourceNodes())) { throw new BonitaRuntimeException("Error in iteration: join " + it.getJoinNodeName() + " has not been reinitialized"); } } } }
@Override public void signal(ActivityExecution execution, String signal, Map<String, Object> parameters) { final XpdlExecution xpdlExecution = (XpdlExecution) execution; final XpdlInstance xpdlInstance = xpdlExecution.getXpdlInstance(); xpdlInstance.setInstanceState(InstanceState.STARTED); final Recorder recorder = EnvTool.getRecorder(); recorder.recordInstanceStarted(xpdlInstance, EnvTool.getUserId()); recorder.recordEnterActivity(this, xpdlExecution); recorder.recordBodyStarted(this, xpdlExecution); recorder.recordBodyEnded(this, xpdlExecution); executeSplit(execution, false); }
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; }