DDD领域模型系统的工作流(十四)

网友投稿 520 2022-11-10

DDD领域模型系统的工作流(十四)

DDD领域模型系统的工作流(十四)

在自定义的Windows窗体中运行工作流:(把工作流的代码放入到文本框中)

public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Encoding utf8 = Encoding.UTF8; byte[] xmalcontent = utf8.GetBytes(textBox1.Text); MemoryStream xamlstream = new MemoryStream(xmalcontent); Activity workflow = ActivityXamlServices.Load(xamlstream); WorkflowApplication instance = new WorkflowApplication(workflow); instance.Run(); } }}

自定义节点:

在解决方案中添加

变量:

为变量和参数赋值:

输入参数:

指定到工作流中:

Dictionary dics = new Dictionary(); dics.Add("arg1", "a1"); dics.Add("arg2", "a2"); dics.Add("arg3", "a3"); WorkflowApplication instance = new WorkflowApplication(new Workflow1(), dics); instance.Run(); Console.ReadLine();

新建DataAccess

public sealed class DataAccess : CodeActivity { // 定义一个字符串类型的活动输入参数 public InArgument Text { get; set; } // 如果活动返回值,则从 CodeActivity // 并从 Execute 方法返回该值。 protected override void Execute(CodeActivityContext context) { string workflowdata = context.GetValue(Text); Console.WriteLine("Code Activity:" + workflowdata); } }

对Text进行赋值

输出参数:在被调用方进行修改

DataAccess工作单元

public sealed class DataAccess : CodeActivity { // 定义一个字符串类型的活动输入参数 public OutArgument Text { get; set; } // 如果活动返回值,则从 CodeActivity // 并从 Execute 方法返回该值。 protected override void Execute(CodeActivityContext context) { context.SetValue(Text, "CodeActivity Value"); } }

class Program { static void Main(string[] args) { Dictionary dics = new Dictionary(); //输入参数 dics.Add("arg1", "a1"); dics.Add("arg2", "a2"); WorkflowApplication instance = new WorkflowApplication(new Workflow1(), dics); //当工作流完成 instance.Completed = new Action(workflowcompleted); //运行工作流 instance.Run(); Console.ReadLine(); } ///

/// 得到arg3 /// /// static void workflowcompleted(WorkflowApplicationCompletedEventArgs args) { Console.WriteLine(args.Outputs["arg3"].ToString()); } }

既能输入又能输出:

添加代码活动DataAccess:

public sealed class DataAccess : CodeActivity { // 定义一个字符串类型的活动输入参数 public InOutArgument Text { get; set; } // 如果活动返回值,则从 CodeActivity // 并从 Execute 方法返回该值。 protected override void Execute(CodeActivityContext context) { string text = context.GetValue(this.Text); Console.WriteLine("Code Activity In:" + text); context.SetValue(Text, text.ToUpper()); } }

class Program { static void Main(string[] args) { Dictionary dics = new Dictionary(); dics.Add("arg1", "a1"); dics.Add("arg2", "a2"); dics.Add("arg3", "a3"); WorkflowApplication instance = new WorkflowApplication(new Workflow1(), dics); instance.Completed = new Action(workflowcompleted); instance.Run(); Console.ReadLine(); } static void workflowcompleted(WorkflowApplicationCompletedEventArgs args) { Console.WriteLine(args.Outputs["arg3"].ToString()); } }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:DDD领域模型数据访问权限之用户权限(十)
下一篇:Ext.js入门:Window对象与FormPanel(六)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~