protected internal virtual bool IsReThrowingEscalationEventSubprocess(
                EscalationEventDefinition escalationEventDefinition)
            {
                var escalationHandler = escalationEventDefinition.EscalationHandler;

                return(escalationHandler.SubProcessScope && escalationHandler.Equals(ThrowEscalationActivity.FlowScope));
            }
Beispiel #2
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);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Sets an escalation definition for the given escalation code. If already an escalation
        /// with this code exists it will be used, otherwise a new escalation is created.
        /// </summary>
        /// <param name="escalationCode"> the code of the escalation </param>
        /// <returns> the builder object </returns>
        public virtual B escalation(string escalationCode)
        {
            EscalationEventDefinition escalationEventDefinition = createEscalationEventDefinition(escalationCode);

            element.EventDefinitions.add(escalationEventDefinition);

            return(myself);
        }
Beispiel #4
0
        /// <summary>
        /// Sets a catch all escalation definition.
        /// </summary>
        /// <returns> the builder object </returns>
        public virtual B escalation()
        {
            EscalationEventDefinition escalationEventDefinition = createInstance(typeof(EscalationEventDefinition));

            element.EventDefinitions.add(escalationEventDefinition);

            return(myself);
        }
Beispiel #5
0
        protected internal virtual EscalationEventDefinition createEscalationEventDefinition(string escalationCode)
        {
            Escalation escalation = findEscalationForCode(escalationCode);
            EscalationEventDefinition escalationEventDefinition = createInstance(typeof(EscalationEventDefinition));

            escalationEventDefinition.Escalation = escalation;
            return(escalationEventDefinition);
        }
Beispiel #6
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void getEventDefinition()
        public virtual void getEventDefinition()
        {
            EscalationEventDefinition eventDefinition = eventDefinitionQuery.filterByType(typeof(EscalationEventDefinition)).singleResult();

            assertThat(eventDefinition).NotNull;
            assertThat(eventDefinition.Escalation.Name).isEqualTo("escalation");
            assertThat(eventDefinition.Escalation.EscalationCode).isEqualTo("1337");
            assertThat(eventDefinition.Escalation.Structure.Id).isEqualTo("itemDef");
        }
        protected internal virtual IPvmScope GetScopeForEscalation(EscalationEventDefinition escalationEventDefinition)
        {
            var escalationHandler = escalationEventDefinition.EscalationHandler;

            if (escalationEventDefinition.CancelActivity)
            {
                return(escalationHandler.EventScope);
            }
            return(escalationHandler.FlowScope);
        }
        protected internal virtual void LeaveExecution(IActivityExecution execution, IPvmActivity currentActivity,
                                                       EscalationEventDefinition escalationEventDefinition)
        {
            //execution tree could have been expanded by triggering a non-interrupting event
            ExecutionEntity replacingExecution = (ExecutionEntity)execution.ReplacedBy;

            ExecutionEntity leavingExecution =
                (ExecutionEntity)(replacingExecution != null ? replacingExecution : execution);

            Leave(leavingExecution);
        }
Beispiel #9
0
        protected internal virtual PvmScope getScopeForEscalation(EscalationEventDefinition escalationEventDefinition)
        {
            PvmActivity escalationHandler = escalationEventDefinition.EscalationHandler;

            if (escalationEventDefinition.CancelActivity)
            {
                return(escalationHandler.EventScope);
            }
            else
            {
                return(escalationHandler.FlowScope);
            }
        }
Beispiel #10
0
        protected internal virtual void executeEscalationHandler(EscalationEventDefinition escalationEventDefinition, ActivityExecutionMappingCollector activityExecutionMappingCollector)
        {
            PvmActivity       escalationHandler   = escalationEventDefinition.EscalationHandler;
            PvmScope          escalationScope     = getScopeForEscalation(escalationEventDefinition);
            ActivityExecution escalationExecution = activityExecutionMappingCollector.getExecutionForScope(escalationScope);

            if (!string.ReferenceEquals(escalationEventDefinition.EscalationCodeVariable, null))
            {
                escalationExecution.setVariable(escalationEventDefinition.EscalationCodeVariable, escalation.EscalationCode);
            }

            escalationExecution.executeActivity(escalationHandler);
        }
        protected internal virtual void executeEscalationHandler(EscalationEventDefinition escalationEventDefinition,
                                                                 ActivityExecutionMappingCollector activityExecutionMappingCollector)
        {
            var escalationHandler = escalationEventDefinition.EscalationHandler;
            var escalationScope   = GetScopeForEscalation(escalationEventDefinition);
            IActivityExecution escalationExecution =
                activityExecutionMappingCollector.GetExecutionForScope(escalationScope);

            if (!ReferenceEquals(escalationEventDefinition.EscalationCodeVariable, null))
            {
                escalationExecution.SetVariable(escalationEventDefinition.EscalationCodeVariable,
                                                Escalation.EscalationCode);
            }

            escalationExecution.ExecuteActivity(escalationHandler);
        }
Beispiel #12
0
            protected internal virtual bool isMatchingEscalationCode(EscalationEventDefinition escalationEventDefinition)
            {
                string escalationCode = escalationEventDefinition.EscalationCode;

                return(string.ReferenceEquals(escalationCode, null) || escalationCode.Equals(this.escalationCode));
            }
Beispiel #13
0
            public virtual void visit(PvmScope scope)
            {
                IList <EscalationEventDefinition> escalationEventDefinitions = scope.Properties.get(BpmnProperties.ESCALATION_EVENT_DEFINITIONS);

                this.escalationEventDefinition = findMatchingEscalationEventDefinition(escalationEventDefinitions);
            }
            public virtual void Visit(IPvmScope scope)
            {
                var escalationEventDefinitions = scope.Properties.Get(BpmnProperties.EscalationEventDefinitions);

                escalationEventDefinition = FindMatchingEscalationEventDefinition(escalationEventDefinitions);
            }
        public override object Create(object parent, IParseContext context, XElement element)
        {
            EventDefinition eventDefinition = null;
            var             localName       = Helper.GetRealLocalName(element);

            switch (localName)
            {
            case "cancelEventDefinition":
                eventDefinition = new CancelEventDefinition();
                break;

            case "errorEventDefinition":
                var errorEventDefinition = new ErrorEventDefinition();
                eventDefinition = errorEventDefinition;
                var errorRef = element.GetAttribute("errorRef");
                if (errorRef != null)
                {
                    context.AddReferenceRequest <Error>(errorRef, x => errorEventDefinition.ErrorRef = x);
                }
                break;

            case "timerEventDefinition":
                eventDefinition = new TimerEventDefinition();
                break;

            case "terminateEventDefinition":
                eventDefinition = new TerminateEventDefinition();
                break;

            case "messageEventDefinition":
                var messageEventDefinition = new MessageEventDefinition();
                eventDefinition = messageEventDefinition;

                var operationRef = element.GetAttribute("operationRef");
                if (operationRef != null)
                {
                    context.AddReferenceRequest <Operation>(operationRef, x => messageEventDefinition.OperationRef = x);
                }

                var messageRef = element.GetAttribute("messageRef");
                if (messageRef != null)
                {
                    context.AddReferenceRequest <Message>(messageRef, x => messageEventDefinition.MessageRef = x);
                }
                break;

            case "conditionalEventDefinition":
                eventDefinition = new ConditionalEventDefinition();
                break;

            case "compensateEventDefinition":
                var compensateEventDefinition = new CompensateEventDefinition();
                eventDefinition = compensateEventDefinition;

                compensateEventDefinition.WaitForCompletion = element.GetBoolean("waitForCompletion");
                var activityRef = element.GetAttribute("activityRef");
                if (activityRef != null)
                {
                    context.AddReferenceRequest <Activity>(activityRef, x => compensateEventDefinition.ActivityRef = x);
                }
                break;

            case "signalEventDefinition":
                var signalEventDefinition = new SignalEventDefinition();
                eventDefinition = signalEventDefinition;

                var signalRef = element.GetAttribute("signalRef");
                if (signalRef != null)
                {
                    context.AddReferenceRequest <Signal>(signalRef, x => signalEventDefinition.SignalRef = x);
                }
                break;

            case "escalationEventDefinition":
                eventDefinition = new EscalationEventDefinition()
                {
                    EscalationRef = element.GetAttribute("escalationRef")
                };
                break;

            case "linkEventDefinition":
                eventDefinition = new LinkEventDefinition()
                {
                    Name   = element.GetAttribute("name"),
                    Target = element.GetAttribute("target")
                };
                break;
            }

            if (this.callback != null)
            {
                this.callback(parent, context, element, eventDefinition);
            }

            base.Init(eventDefinition, context, element);

            context.Push(eventDefinition);

            return(eventDefinition);
        }