//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: public void execute(org.camunda.bpm.engine.impl.pvm.delegate.ActivityExecution execution) throws Exception public virtual void execute(ActivityExecution execution) { execution.inactivate(); lockConcurrentRoot(execution); PvmActivity activity = execution.Activity; if (activatesGateway(execution, activity)) { LOG.activityActivation(activity.Id); IList <ActivityExecution> joinedExecutions = execution.findInactiveConcurrentExecutions(activity); string defaultSequenceFlow = (string)execution.Activity.getProperty("default"); IList <PvmTransition> transitionsToTake = new List <PvmTransition>(); // find matching non-default sequence flows foreach (PvmTransition outgoingTransition in execution.Activity.OutgoingTransitions) { if (string.ReferenceEquals(defaultSequenceFlow, null) || !outgoingTransition.Id.Equals(defaultSequenceFlow)) { Condition condition = (Condition)outgoingTransition.getProperty(BpmnParse.PROPERTYNAME_CONDITION); if (condition == null || condition.evaluate(execution)) { transitionsToTake.Add(outgoingTransition); } } } // if none found, add default flow if (transitionsToTake.Count == 0) { if (!string.ReferenceEquals(defaultSequenceFlow, null)) { PvmTransition defaultTransition = execution.Activity.findOutgoingTransition(defaultSequenceFlow); if (defaultTransition == null) { throw LOG.missingDefaultFlowException(execution.Activity.Id, defaultSequenceFlow); } transitionsToTake.Add(defaultTransition); } else { // No sequence flow could be found, not even a default one throw LOG.stuckExecutionException(execution.Activity.Id); } } // take the flows found execution.leaveActivityViaTransitions(transitionsToTake, joinedExecutions); } else { LOG.noActivityActivation(activity.Id); } }
public virtual void complete(ActivityExecution execution) { IList <PvmTransition> outgoingTransitions = execution.Activity.OutgoingTransitions; if (outgoingTransitions.Count == 0) { execution.end(true); } else { execution.leaveActivityViaTransitions(outgoingTransitions, Collections.EMPTY_LIST); } }
public virtual void execute(ActivityExecution execution) { PvmActivity activity = execution.Activity; IList <PvmTransition> outgoingTransitions = execution.Activity.OutgoingTransitions; execution.inactivate(); IList <ActivityExecution> joinedExecutions = execution.findInactiveConcurrentExecutions(activity); int nbrOfExecutionsToJoin = execution.Activity.IncomingTransitions.Count; int nbrOfExecutionsJoined = joinedExecutions.Count; if (nbrOfExecutionsJoined == nbrOfExecutionsToJoin) { LOG.debug("parallel gateway '" + activity.Id + "' activates: " + nbrOfExecutionsJoined + " of " + nbrOfExecutionsToJoin + " joined"); execution.leaveActivityViaTransitions(outgoingTransitions, joinedExecutions); } else { LOG.debug("parallel gateway '" + activity.Id + "' does not activate: " + nbrOfExecutionsJoined + " of " + nbrOfExecutionsToJoin + " joined"); } }
/* * Incoming execution is transformed into an event scope, * new, non-concurrent execution leaves activity */ public virtual void complete(ActivityExecution execution) { ActivityExecution outgoingExecution = execution.Parent.createExecution(); outgoingExecution.Concurrent = false; outgoingExecution.Activity = execution.Activity; // eventscope execution execution.Concurrent = false; execution.Active = false; ((PvmExecutionImpl)execution).EventScope = true; IList <PvmTransition> outgoingTransitions = execution.Activity.OutgoingTransitions; if (outgoingTransitions.Count == 0) { outgoingExecution.end(true); } else { outgoingExecution.leaveActivityViaTransitions(outgoingTransitions, Collections.EMPTY_LIST); } }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: public void execute(org.camunda.bpm.engine.impl.pvm.delegate.ActivityExecution execution) throws Exception public virtual void execute(ActivityExecution execution) { // Join PvmActivity activity = execution.Activity; IList <PvmTransition> outgoingTransitions = execution.Activity.OutgoingTransitions; execution.inactivate(); lockConcurrentRoot(execution); IList <ActivityExecution> joinedExecutions = execution.findInactiveConcurrentExecutions(activity); int nbrOfExecutionsToJoin = execution.Activity.IncomingTransitions.Count; int nbrOfExecutionsJoined = joinedExecutions.Count; if (nbrOfExecutionsJoined == nbrOfExecutionsToJoin) { // Fork LOG.activityActivation(activity.Id, nbrOfExecutionsJoined, nbrOfExecutionsToJoin); execution.leaveActivityViaTransitions(outgoingTransitions, joinedExecutions); } else { LOG.noActivityActivation(activity.Id, nbrOfExecutionsJoined, nbrOfExecutionsToJoin); } }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: public void completed(org.camunda.bpm.engine.impl.pvm.delegate.ActivityExecution execution) throws Exception public virtual void completed(ActivityExecution execution) { IList <PvmTransition> outgoingTransitions = execution.Activity.OutgoingTransitions; execution.leaveActivityViaTransitions(outgoingTransitions, null); }
/// <summary> /// Actual implementation of leaving an activity. /// </summary> /// <param name="execution"> /// The current execution context </param> /// <param name="checkConditions"> /// Whether or not to check conditions before determining whether or /// not to take a transition. </param> protected internal virtual void performOutgoingBehavior(ActivityExecution execution, bool checkConditions, IList <ActivityExecution> reusableExecutions) { LOG.leavingActivity(execution.Activity.Id); string defaultSequenceFlow = (string)execution.Activity.getProperty("default"); IList <PvmTransition> transitionsToTake = new List <PvmTransition>(); IList <PvmTransition> outgoingTransitions = execution.Activity.OutgoingTransitions; foreach (PvmTransition outgoingTransition in outgoingTransitions) { if (string.ReferenceEquals(defaultSequenceFlow, null) || !outgoingTransition.Id.Equals(defaultSequenceFlow)) { Condition condition = (Condition)outgoingTransition.getProperty(BpmnParse.PROPERTYNAME_CONDITION); if (condition == null || !checkConditions || condition.evaluate(execution)) { transitionsToTake.Add(outgoingTransition); } } } if (transitionsToTake.Count == 1) { execution.leaveActivityViaTransition(transitionsToTake[0]); } else if (transitionsToTake.Count >= 1) { if (reusableExecutions == null || reusableExecutions.Count == 0) { execution.leaveActivityViaTransitions(transitionsToTake, Arrays.asList(execution)); } else { execution.leaveActivityViaTransitions(transitionsToTake, reusableExecutions); } } else { if (!string.ReferenceEquals(defaultSequenceFlow, null)) { PvmTransition defaultTransition = execution.Activity.findOutgoingTransition(defaultSequenceFlow); if (defaultTransition != null) { execution.leaveActivityViaTransition(defaultTransition); } else { throw LOG.missingDefaultFlowException(execution.Activity.Id, defaultSequenceFlow); } } else if (outgoingTransitions.Count > 0) { throw LOG.missingConditionalFlowException(execution.Activity.Id); } else { if (((ActivityImpl)execution.Activity).CompensationHandler && isAncestorCompensationThrowing(execution)) { execution.endCompensation(); } else { LOG.missingOutgoingSequenceFlow(execution.Activity.Id); execution.end(true); } } } }