zoukankan      html  css  js  c++  java
  • 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<string, object> dics =
                    new Dictionary<string, object>();
                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<string> Text { get; set; }
    
            // 如果活动返回值,则从 CodeActivity<TResult>
            // 并从 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<string> Text { get; set; }
    
            // 如果活动返回值,则从 CodeActivity<TResult>
            // 并从 Execute 方法返回该值。
            protected override void Execute(CodeActivityContext context)
            {
                context.SetValue(Text, "CodeActivity Value");
            }
        }
    
      class Program
        {
            static void Main(string[] args)
            {
                Dictionary<string, object> dics =
                    new Dictionary<string, object>();
                //输入参数
                dics.Add("arg1", "a1");
                dics.Add("arg2", "a2");
    
                WorkflowApplication instance =
                    new WorkflowApplication(new Workflow1(), dics);
                //当工作流完成
                instance.Completed =
                    new Action<WorkflowApplicationCompletedEventArgs>(workflowcompleted);
                //运行工作流
                instance.Run();
                Console.ReadLine();
    
            }
            /// <summary>
            /// 得到arg3
            /// </summary>
            /// <param name="args"></param>
            static void workflowcompleted(WorkflowApplicationCompletedEventArgs args)
            {
                Console.WriteLine(args.Outputs["arg3"].ToString());
            }
        }
    

     既能输入又能输出:

    添加代码活动DataAccess:

       public sealed class DataAccess : CodeActivity
        {
            // 定义一个字符串类型的活动输入参数
            public InOutArgument<string> Text { get; set; }
    
            // 如果活动返回值,则从 CodeActivity<TResult>
            // 并从 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<string, object> dics =
                    new Dictionary<string, object>();
                dics.Add("arg1", "a1");
                dics.Add("arg2", "a2");
                dics.Add("arg3", "a3");
    
                WorkflowApplication instance =
                    new WorkflowApplication(new Workflow1(), dics);
                instance.Completed =
                    new Action<WorkflowApplicationCompletedEventArgs>(workflowcompleted);
                instance.Run();
                Console.ReadLine();
            }
    
            static void workflowcompleted(WorkflowApplicationCompletedEventArgs args)
            {
                Console.WriteLine(args.Outputs["arg3"].ToString());
            }
        }
    
  • 相关阅读:
    Maven工程运行环境修改
    Maven中出现org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException错误
    IDEA创建maven_web工程后,右键包没有Servlet、Filter、Listener选项
    Spring中的依赖注入
    什么是JavaBean
    mybatis配置SqlMapConfig.xm时没有提示
    JDK1.8之后匿名内部类访问方法中的局部变量不用加final修饰
    架构、框架和设计模式
    CitrixSQL Server 2016高可用之SQL镜像 SQL Server mirror 带见证服务器
    CitrixPVS BDM启动模式创建虚机 BDM模式部署桌面(精华)
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/7886981.html
Copyright © 2011-2022 走看看