Exemplo n.º 1
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: @Override public void execute(org.camunda.bpm.engine.impl.pvm.delegate.ActivityExecution execution) throws Exception
        public virtual void execute(ActivityExecution execution)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.impl.pvm.PvmActivity currentActivity = execution.getActivity();
            PvmActivity currentActivity = execution.Activity;

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final EscalationEventDefinitionFinder escalationEventDefinitionFinder = new EscalationEventDefinitionFinder(escalation.getEscalationCode(), currentActivity);
            EscalationEventDefinitionFinder   escalationEventDefinitionFinder   = new EscalationEventDefinitionFinder(this, escalation.EscalationCode, currentActivity);
            ActivityExecutionMappingCollector activityExecutionMappingCollector = new ActivityExecutionMappingCollector(execution);

            ActivityExecutionHierarchyWalker walker = new ActivityExecutionHierarchyWalker(execution);

            walker.addScopePreVisitor(escalationEventDefinitionFinder);
            walker.addExecutionPreVisitor(activityExecutionMappingCollector);
            walker.addExecutionPreVisitor(new OutputVariablesPropagator());

            walker.walkUntil(new WalkConditionAnonymousInnerClass(this, escalationEventDefinitionFinder));

            EscalationEventDefinition escalationEventDefinition = escalationEventDefinitionFinder.EscalationEventDefinition;

            if (escalationEventDefinition != null)
            {
                executeEscalationHandler(escalationEventDefinition, activityExecutionMappingCollector);
            }

            if (escalationEventDefinition == null || !escalationEventDefinition.CancelActivity)
            {
                leaveExecution(execution, currentActivity, escalationEventDefinition);
            }
        }
        public virtual void execute(IActivityExecution execution)
        {
            var currentActivity = execution.Activity;

            var escalationEventDefinitionFinder = new EscalationEventDefinitionFinder(this, Escalation.EscalationCode,
                                                                                      currentActivity);
            var activityExecutionMappingCollector = new ActivityExecutionMappingCollector(execution);

            var walker = new ActivityExecutionHierarchyWalker(execution);

            walker.AddScopePreVisitor(escalationEventDefinitionFinder);
            walker.AddExecutionPreVisitor(activityExecutionMappingCollector);
            walker.AddExecutionPreVisitor(new OutputVariablesPropagator());

            walker.WalkUntil((element) => escalationEventDefinitionFinder.EscalationEventDefinition != null || element == null);

            var escalationEventDefinition = escalationEventDefinitionFinder.EscalationEventDefinition;

            if (escalationEventDefinition != null)
            {
                executeEscalationHandler(escalationEventDefinition, activityExecutionMappingCollector);
            }

            if ((escalationEventDefinition == null) || !escalationEventDefinition.CancelActivity)
            {
                LeaveExecution(execution, currentActivity, escalationEventDefinition);
            }
        }