使用silverlight构建一个工作流设计器(十八)-持久化数据到数据库(2)

2012-03-23
浏览
导读:剩下的工作就是编写更新和获取工作流xml描述的代码了。 获取工作流xml描述 /// summary /// 获取工作流xml描述 /// /summary /// param name=workflowID流程ID/param /// returns/returns [WebMethod] public strin

剩下的工作就是编写更新和获取工作流xml描述的代码了。

获取工作流xml描述

/// <summary>
/// 获取工作流xml描述
/// </summary>
/// <param name="workflowID">流程ID</param>
/// <returns></returns>
[WebMethod]
public string GetWorkFlowXM(string workflowID)
{
string xm= "";
using (ShareDesigner.Web.Class.WorkFlowDataContext dataContext = new WorkFlowDataContext())
{
WorkFlow_Process process = dataContext.WorkFlow_Processes.First(p => p.WorkFlowID == workflowID);
if (process != nul)
xm= process.WorkFlowXM;
} 
return xm;
}

更新工作流xml描述

/// <summary>
/// 更新流程xm
/// </summary>
/// <param name="workFlowXm">流程xml描述</param>
[WebMethod]
public void UpdateWorkFlowXM(string workFlowXm){
using (ShareDesigner.Web.Class.WorkFlowDataContext dataContext = new WorkFlowDataContext()){
WorkFlow_Process process = new WorkFlow_Process();
Byte[] b = System.Text.UTF8Encoding.UTF8.GetBytes(workFlowXm);
XElement xele = XElement.Load(System.Xm.XmlReader.Create(new MemoryStream(b)));
process.WorkFlowName = xele.Attribute(XName.Get("Name")).Value;
process.WorkFlowID = xele.Attribute(XName.Get("UniqueID")).Value;
process.WorkFlowXM= workFlowXm;
deleteExistsWorkFlow(process.WorkFlowID);
var partNos = from item in xele.Descendants("Activity") select item;
foreach (XElement node in partNos)
{
WorkFlow_Activity activity = new WorkFlow_Activity();
process.WorkFlow_Activities.Add(activity);
activity.ActivityID = node.Attribute(XName.Get("UniqueID")).Value;
activity.ActivityName = node.Attribute(XName.Get("ActivityName")).Value;
activity.ActivityType = node.Attribute(XName.Get("Type")).Value;
} 
dataContext.WorkFlow_Processes.InsertOnSubmit(process);
partNos = from item in xele.Descendants("Rule") select item;
WorkFlow_Rule rule = nul;
foreach (XElement node in partNos)
{                    rule = new WorkFlow_Rule();
rule.BeginActivityID = node.Attribute(XName.Get("BeginActivityUniqueID")).Value;
rule.Condition = node.Attribute(XName.Get("RuleCondition")).Value;
rule.EndActivityID = node.Attribute(XName.Get("EndActivityUniqueID")).Value;
rule.RuleID = node.Attribute(XName.Get("UniqueID")).Value;
rule.RuleName = node.Attribute(XName.Get("RuleName")).Value;
rule.RuleType = node.Attribute(XName.Get("LineType")).Value;
dataContext.WorkFlow_Rules.InsertOnSubmit(rule);
}
dataContext.SubmitChanges();
}
}

Silverlight编程模型、XAML和HTML DOM

Silverlight对象树

Silverlight中如何为浏览器外应用程序实现

Silverlight中如何为浏览器外支持配置应用

使用LINQ和ADO.NET创建Silverlight程序