Exemple #1
0
        public virtual DecisionImpl CreateDecision()
        {
            DecisionImpl decision = new DecisionImpl(_processDefinition);

            AddNode(decision);
            return(decision);
        }
Exemple #2
0
        public override void ReadProcessData(XmlElement xmlElement, ProcessDefinitionBuildContext creationContext)
        {
            this._nodes       = new ListSet();
            this._attributes  = new ListSet();
            this._childBlocks = new ListSet();

            base.ReadProcessData(xmlElement, creationContext);

            IEnumerator iter = xmlElement.GetChildElements("attribute").GetEnumerator();

            while (iter.MoveNext())
            {
                AttributeImpl attribute = new AttributeImpl();
                attribute.ReadProcessData((XmlElement)iter.Current, creationContext);
                _attributes.Add(attribute);
            }

            iter = xmlElement.GetChildElements("activity-state").GetEnumerator();
            while (iter.MoveNext())
            {
                ActivityStateImpl activityState = new ActivityStateImpl();
                activityState.ReadProcessData((XmlElement)iter.Current, creationContext);
                _nodes.Add(activityState);
            }

            iter = xmlElement.GetChildElements("process-state").GetEnumerator();
            while (iter.MoveNext())
            {
                ProcessStateImpl processState = new ProcessStateImpl();
                processState.ReadProcessData((XmlElement)iter.Current, creationContext);
                _nodes.Add(processState);
            }

            iter = xmlElement.GetChildElements("decision").GetEnumerator();
            while (iter.MoveNext())
            {
                DecisionImpl decision = new DecisionImpl();
                decision.ReadProcessData((XmlElement)iter.Current, creationContext);
                _nodes.Add(decision);
            }

            iter = xmlElement.GetChildElements("concurrent-block").GetEnumerator();
            while (iter.MoveNext())
            {
                ConcurrentBlockImpl concurrentBlock = new ConcurrentBlockImpl();
                concurrentBlock.ReadProcessData((XmlElement)iter.Current, creationContext);
                _childBlocks.Add(concurrentBlock);
            }
        }
Exemple #3
0
        public void ProcessDecision(DecisionImpl decision, FlowImpl flow, DbSession dbSession)
        {
            //var delegateParameters = delegationService.ParseConfiguration(decision.DecisionDelegation);

            //IDecisionHandler decisionHandler = (IDecisionHandler)delegationService.GetDelegate(decision.DecisionDelegation);
            var attributes = decision.DecisionDelegation.ParseConfiguration();
            string transiationName = new EvaluationDecision().Decide(attributes["attribute"].ToString());
            TransitionImpl selectedTransition = this.GetTransition(transiationName, decision, dbSession);
            //// delegate the decision
            //TransitionImpl selectedTransition = delegationHelper.DelegateDecision(decision.DecisionDelegation, executionContext);

            //// process the selected transition
            ProcessTransition(selectedTransition, flow, dbSession);
        }
		public override void ReadProcessData(XmlElement xmlElement, ProcessDefinitionBuildContext creationContext)
		{
			this._nodes = new ListSet();
			this._attributes = new ListSet();
			this._childBlocks = new ListSet();

			base.ReadProcessData(xmlElement, creationContext);

			IEnumerator iter = xmlElement.GetChildElements("attribute").GetEnumerator();
			while (iter.MoveNext())
			{
				AttributeImpl attribute = new AttributeImpl();
				attribute.ReadProcessData((XmlElement) iter.Current, creationContext);
				_attributes.Add(attribute);
			}

			iter = xmlElement.GetChildElements("activity-state").GetEnumerator();
			while (iter.MoveNext())
			{
				ActivityStateImpl activityState = new ActivityStateImpl();
				activityState.ReadProcessData((XmlElement) iter.Current, creationContext);
				_nodes.Add(activityState);
			}

			iter = xmlElement.GetChildElements("process-state").GetEnumerator();
			while (iter.MoveNext())
			{
				ProcessStateImpl processState = new ProcessStateImpl();
				processState.ReadProcessData((XmlElement) iter.Current, creationContext);
				_nodes.Add(processState);
			}

			iter = xmlElement.GetChildElements("decision").GetEnumerator();
			while (iter.MoveNext())
			{
				DecisionImpl decision = new DecisionImpl();
				decision.ReadProcessData((XmlElement) iter.Current, creationContext);
				_nodes.Add(decision);
			}

			iter = xmlElement.GetChildElements("concurrent-block").GetEnumerator();
			while (iter.MoveNext())
			{
				ConcurrentBlockImpl concurrentBlock = new ConcurrentBlockImpl();
				concurrentBlock.ReadProcessData((XmlElement) iter.Current, creationContext);
				_childBlocks.Add(concurrentBlock);
			}
		}
        public virtual DecisionImpl CreateDecision()
		{
			DecisionImpl decision = new DecisionImpl(_processDefinition);
			AddNode(decision);
			return decision;
		}
        public void ProcessDecision(DecisionImpl decision, ExecutionContextImpl executionContext,DbSession dbSession)
        {
            // trigger actions, scheduled before the decision actually is made
            delegationService.RunActionsForEvent(EventType.BEFORE_DECISION, decision.Id, executionContext,dbSession);

            // delegate the decision
            TransitionImpl selectedTransition = delegationHelper.DelegateDecision(decision.DecisionDelegation, executionContext);

            // process the selected transition
            ProcessTransition(selectedTransition, executionContext,dbSession);

            // trigger actions, scheduled after the decision is made
            delegationService.RunActionsForEvent(EventType.AFTER_DECISION, decision.Id, executionContext,dbSession);
        }