首页 > 代码库 > XOML方式创建和启动工作流 <第十篇>
XOML方式创建和启动工作流 <第十篇>
一、XOML使用工作流的好处
通过Xoml方式使用工作流的好处在于,它能够不重新启动程序的情况下,仅仅通过配置xoml就能够实现改变工作流,非常灵活。
创建一个WinForm程序如下:
代码如下:
namespace WinForm{ public partial class Form1 : Form { //定义工作流运行时Runtime容器 WorkflowRuntime workflowRuntime = new WorkflowRuntime(); public Form1() { InitializeComponent(); workflowRuntime.StartRuntime(); } private void button1_Click(object sender, EventArgs e) { //新建一个工作流 SequenceActivity workflow = new SequenceActivity(); workflow.Activities.Add(new MyActivity() { Message = "我已经执行啦!" }); WorkflowMarkupSerializer serializer = new WorkflowMarkupSerializer(); //将工作流保存在Xml文件里面 using(XmlWriter xr = XmlWriter.Create("MyWorkflow.xoml", new XmlWriterSettings() { CloseOutput = true })){ serializer.Serialize(xr, workflow); } MessageBox.Show("工作流创建成功!"); } private void button2_Click(object sender, EventArgs e) { //从Xml文件上执行工作流,如果你愿意,你可以将Xml数据保存在任何地方,甚至是保存在数据库里面 //然后从数据库里面读出工作流,然后执行 WorkflowInstance winstance = workflowRuntime.CreateWorkflow(XmlReader.Create("MyWorkflow.xoml")); winstance.Start(); } } public partial class MyActivity : Activity { public string Message { get; set; } protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { MessageBox.Show(Message); return base.Execute(executionContext); } }}
效果如下:
基于这种方式,可以实现制作出一套易操作的UI界面,让用户去配置流程,然后将生成的流程保存在Xml、字符串、数据库中。然后实现读取出流程,然后执行的目的。
结合XmlReader的重载,可以实现,只有一个字符串,就能够启动流程:
var xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?><SequenceActivity x:Name=\"SequenceActivity\" xmlns:ns0=\"clr-namespace:WinForm;Assembly=WinForm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/workflow\"><ns0:MyActivity Message=\"我已经执行啦!\" x:Name=\"myActivity1\" /></SequenceActivity>"; WorkflowInstance winstance = workflowRuntime.CreateWorkflow(XmlReader.Create(new StringReader(xmlStr))); winstance.Start();
XOML方式创建和启动工作流 <第十篇>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。