protected void executeActivityInstance(final Execution internalExecution) { final boolean canContinue = executeBody(internalExecution); if (canContinue) { end(internalExecution); } else { internalExecution.waitForSignal(); } }
final InternalActivityDefinition activity = execution.getNode(); if (AbstractActivity.BODY_FINISHED.equals(signal)) { end(internalExecution); } else if (AbstractActivity.ACT_INSTANCE_FINISHED.equals(signal)) { if (activity.getMultiInstantiationDefinition() != null || activity.getMultipleInstancesInstantiator() != null) { } else if (EventConstants.CONNECTORS_AUTOMATIC_ON_ENTER_EXECUTED.equals(signal)) { ConnectorExecutor.executeConnectors(activity, execution, Event.automaticOnExit); end(internalExecution);
protected void executeActivityInstance(XpdlExecution xpdlExecution) { final Recorder recorder = EnvTool.getRecorder(); recorder.recordEnterActivity(this, xpdlExecution); boolean canContinue = executeBody(xpdlExecution); if (canContinue) { end(xpdlExecution); } else { xpdlExecution.waitForSignal(); } }
public void signal(ActivityExecution execution, String signal, Map<String, Object> parameters) { XpdlExecution xpdlExecution = (XpdlExecution) execution; if (BODY_FINISHED.equals(signal)) { end(xpdlExecution); } else if (ACT_INSTANCE_FINISHED.equals(signal)) { xpdlExecution.setWaitingForActivityInstanceNb(xpdlExecution.getWaitingForActivityInstanceNb() - 1); if (xpdlExecution.getWaitingForActivityInstanceNb() == 0) { // TODO: cancel remaining activity instances executeSplit(xpdlExecution, false); } } else if (signal != null && deadlines != null) { for (String deadline : deadlines) { if (deadline.equals(signal)) { Authentication.setUserId("SYSTEM"); // By default, a deadline does not propagate execution xpdlExecution.waitForSignal(); String activityId = xpdlExecution.getNode().getName(); JavaHook javaHook = new JavaHook(signal, JavaHook.Type.onDeadline, true); HookExecutor.executeHook(xpdlExecution, activityId, javaHook); return; } } } }
public void signal(final ActivityExecution execution, final String signal, final Map<String, Object> parameters) { final XpdlExecution xpdlExecution = (XpdlExecution) execution; if (AbstractActivity.BODY_FINISHED.equals(signal)) { this.end(xpdlExecution); } else if (AbstractActivity.ACT_INSTANCE_FINISHED.equals(signal)) { xpdlExecution.setWaitingForActivityInstanceNb(xpdlExecution.getWaitingForActivityInstanceNb() - 1); if (xpdlExecution.getWaitingForActivityInstanceNb() == 0) { if (xpdlExecution.getExecutions() != null) { for (final OpenExecution execToAbort : new ArrayList<OpenExecution>(xpdlExecution.getExecutions())) { ((XpdlExecution) execToAbort).abort(); } } this.executeSplit(xpdlExecution, false); } } else if (signal != null && this.deadlines != null) { for (final String deadline : this.deadlines) { if (deadline.equals(signal)) { Authentication.setUserId(BonitaConstants.SYSTEM_USER); // By default, a deadline does not propagate execution xpdlExecution.waitForSignal(); final String activityId = xpdlExecution.getNode().getName(); final JavaHook javaHook = new JavaHook(signal, JavaHook.Type.onDeadline, true); EngineEnvTool.getHookExecutor() .executeHook(xpdlExecution, activityId, javaHook); return; } } } }
protected void executeActivityInstance(final XpdlExecution xpdlExecution) { xpdlExecution.setCurrentActivityInstanceUUID( ServiceEnvTool.getUUIDGenerator(). getActivityInstanceUUID(xpdlExecution.getXpdlInstance().getUUID(), this.activityId)); final Recorder recorder = ServiceEnvTool.getRecorder(); final XpdlInstance xpdlInstance = xpdlExecution.getXpdlInstance(); final ActivityInstanceCurrentInfo activityInstanceCurrentInfo = new ActivityInstanceCurrentInfo( xpdlInstance.getPackageDefinitionUUID(), xpdlInstance.getProcessDefinitionUUID(), xpdlInstance.getUUID(), xpdlExecution.getCurrentActivityInstanceUUID(), this.getActivityType(), this.getActivityId(), xpdlExecution.getIterationId(), xpdlExecution.getActivityInstanceId(), xpdlExecution.getScopeVariables()); recorder.recordEnterActivity(activityInstanceCurrentInfo); final boolean canContinue = this.executeBody(xpdlExecution); if (canContinue) { this.end(xpdlExecution); } else { xpdlExecution.waitForSignal(); } }