⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 processblockimpl.cs

📁 工作流的基本资料(文档资料
💻 CS
字号:
using System.Collections;
using Iesi.Collections;
using NetBpm.Util.Xml;

namespace NetBpm.Workflow.Definition.Impl
{
	public class ProcessBlockImpl : DefinitionObjectImpl, IProcessBlock
	{
		protected internal ISet _nodes = null;
		protected internal ISet _attributes = null;
		protected internal ProcessBlockImpl _parentBlock = null;
		protected internal ISet _childBlocks = null;

		public ProcessBlockImpl ParentBlock
		{
			get { return this._parentBlock; }
			set { this._parentBlock = value; }
		}

		public ISet ChildBlocks
		{
			get { return this._childBlocks; }
			set { this._childBlocks = value; }
		}

		public ISet Nodes
		{
			get { return this._nodes; }
			set { this._nodes = value; }
		}

		public ISet Attributes
		{
			get { return this._attributes; }
			set { this._attributes = value; }
		}

		public ProcessBlockImpl()
		{
		}

		public ProcessBlockImpl(IProcessDefinition processDefinition) : base(processDefinition)
		{
			this._nodes = new ListSet();
			this._attributes = new ListSet();
			this._childBlocks = new ListSet();
		}

		public void AddNode(NodeImpl node)
		{
			_nodes.Add(node);
			node.ProcessBlock = this;
		}

		public AttributeImpl CreateAttribute()
		{
			AttributeImpl attribute = new AttributeImpl(_processDefinition);
			attribute.Scope = this;
			_attributes.Add(attribute);
			return attribute;
		}

		public ActivityStateImpl CreateActivityState()
		{
			ActivityStateImpl activityState = new ActivityStateImpl(_processDefinition);
			AddNode(activityState);
			return activityState;
		}

		public ProcessStateImpl CreateProcessState()
		{
			ProcessStateImpl processState = new ProcessStateImpl(_processDefinition);
			AddNode(processState);
			return processState;
		}

		public DecisionImpl CreateDecision()
		{
			DecisionImpl decision = new DecisionImpl(_processDefinition);
			AddNode(decision);
			return decision;
		}

		public ConcurrentBlockImpl CreateConcurrentBlock()
		{
			ConcurrentBlockImpl concurrentBlock = new ConcurrentBlockImpl(_processDefinition);
			concurrentBlock.ParentBlock = this;
			_childBlocks.Add(concurrentBlock);
			return concurrentBlock;
		}

		public override void ReadProcessData(XmlElement xmlElement, CreationContext 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 override void Validate(ValidationContext validationContext)
		{
			base.Validate(validationContext);

			// validate the attributes
			IEnumerator iter = _attributes.GetEnumerator();
			while (iter.MoveNext())
			{
				AttributeImpl attribute = (AttributeImpl) iter.Current;
				attribute.Validate(validationContext);
			}

			// validate the nodes
			iter = _nodes.GetEnumerator();
			while (iter.MoveNext())
			{
				NodeImpl node = (NodeImpl) iter.Current;
				node.Validate(validationContext);
			}

			// validate the childBlocks
			iter = _childBlocks.GetEnumerator();
			while (iter.MoveNext())
			{
				ProcessBlockImpl processBlock = (ProcessBlockImpl) iter.Current;
				processBlock.Validate(validationContext);
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -