www.pudn.com > VMLForAspnet.rar > WorkFlowBLL.cs


using System; 
 
namespace VML.WorkFlow 
{ 
	///  
	/// WorkFlowBLL 的摘要说明。 
	///  
	public class WorkFlowBLL 
	{ 
		public WorkFlowBLL() 
		{ 
			// 
			// TODO: 在此处添加构造函数逻辑 
			// 
		} 
 
		public  System.Xml.XmlDataDocument TransWorkFlowMap(int WorkFlowID) 
		{ 
			//取得原有系统的工作流程数 
			VML.OnlySp.Flow data=new VML.OnlySp.Flow(); 
			VML.WorkFlow.WorkFlow WorkFlowmap=new WorkFlow(); 
			data.ReadXml(System.Web.HttpContext.Current.Request.MapPath("WorkFlowData.xml")); 
			//data=new VML.WorkFlow.WorkFlowDAL().GetFlowItems(WorkFlowID); 
			//将数据转化为现在格式 
				this.TransData(WorkFlowmap,data); 
			System.Xml.XmlDataDocument xmlDoc = new System.Xml.XmlDataDocument(WorkFlowmap);	 
			return	xmlDoc; 
		} 
 
		///  
		/// 建立新的流程的初始数据 
		///  
		///  
		public  System.Xml.XmlDataDocument CreateEmptyFlowData() 
		{ 
			//可考虑加入起始节点 
			VML.WorkFlow.WorkFlow WorkFlowmap=new WorkFlow(); 
			//加入起始节点 
			VML.WorkFlow.WorkFlow.WorkFlowItemRow ItemR=WorkFlowmap.WorkFlowItem.NewWorkFlowItemRow(); 
			//转换为现有对象属性 
			ItemR.ItemID=0; 
			ItemR.Name="开始节点"; 
			ItemR.LimiteDate="0"; 
			ItemR.PosX="1000px"; 
			ItemR.PosY="1400px"; 
			WorkFlowmap.WorkFlowItem.Rows.Add(ItemR); 
			//加入结束点 
			VML.WorkFlow.WorkFlow.WorkFlowItemRow ItemEndR=WorkFlowmap.WorkFlowItem.NewWorkFlowItemRow(); 
			//转换为现有对象属性 
			ItemEndR.ItemID=-1; 
			ItemEndR.Name="结否节点"; 
			ItemEndR.LimiteDate="0"; 
			ItemEndR.PosX="5000px"; 
			ItemEndR.PosY="1400px"; 
			WorkFlowmap.WorkFlowItem.Rows.Add(ItemEndR); 
			System.Xml.XmlDataDocument xmlDoc = new System.Xml.XmlDataDocument(WorkFlowmap);	 
			return	xmlDoc; 
		} 
 
		///  
		/// 保存数据到数据库 
		///  
		///  
		public void SaveWorkFlowData(string XMLData) 
		{ 
			VML.OnlySp.Flow data=new VML.OnlySp.Flow(); 
			System.Xml.XmlDocument doc=new System.Xml.XmlDocument(); 
			doc.LoadXml(XMLData); 
			doc.Save(System.Web.HttpContext.Current.Request.MapPath("WorkFlowData.xml")); 
			 
		} 
 
 
		private void TransData(VML.WorkFlow.WorkFlow WorkFlowmap, 
			VML.OnlySp.Flow data) 
		{ 
			//因为我不需要位置信息了,所以呢,可以顺序读取。 
			foreach(VML.OnlySp.Flow.OnlySp_FlowDetailRow FlowR in data.OnlySp_FlowDetail.Rows) 
			{ 
				VML.WorkFlow.WorkFlow.WorkFlowItemRow ItemR=WorkFlowmap.WorkFlowItem.NewWorkFlowItemRow(); 
				//转换为现有对象属性 
				ItemR.ItemID=FlowR.DepartID; 
				ItemR.Name=FlowR.Name; 
				ItemR.LimiteDate=FlowR.LimiteDate.ToString(); 
				ItemR.PosX=FlowR.PosX; 
				ItemR.PosY=FlowR.PosY; 
				WorkFlowmap.WorkFlowItem.Rows.Add(ItemR); 
				//取得前置部门集合 
				string[] priDepIDs=FlowR.PriDepID.Split(',');//更正无前置时的错误 
				if(FlowR.PriDepID!="") 
				{ 
					foreach(string depID in priDepIDs) 
					{ 
						//增加关系 
						VML.WorkFlow.WorkFlow.RelationRow RelR=WorkFlowmap.Relation.NewRelationRow(); 
						RelR.MasterItem=int.Parse(depID); 
						RelR.SecondItem=FlowR.DepartID; 
						WorkFlowmap.Relation.Rows.Add(RelR); 
					} 
				} 
			} 
		} 
	} 
}