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());
}
}
DDD领域模型系统的工作流(十四)的更多相关文章
- 我是如何一步步编码完成万仓网ERP系统的(十四)库存 3.库存日志
https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...
- 我是如何一步步编码完成万仓网ERP系统的(十)产品库设计 6.属性项和类别关联
https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...
- 我是如何一步步编码完成万仓网ERP系统的(十二)库存 1.概述
https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...
- 如何一步一步用DDD设计一个电商网站(十四)—— 回顾与总结
本系列所有文章 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念 如何一步一步用DDD设计一个电商网站(二)—— 项目架构 如何一步一步用DDD设计一个电商网站(三)—— 初涉核心域 如 ...
- Android系统--输入系统(十四)Dispatcher线程情景分析_dispatch前处理
Android系统--输入系统(十四)Dispatcher线程情景分析_dispatch前处理 1. 回顾 我们知道Android输入系统是Reader线程通过驱动程序得到上报的输入事件,还要经过处理 ...
- centos Linux系统日常管理1 cpuinfo cpu核数 命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ,lsof ,pidof 第十四节课
centos Linux系统日常管理1 cpuinfo cpu核数 命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十四)——开发环境容器调试小技巧
之前有很多同学提到如何做容器调试,特别是k8s环境下的容器调试,今天就讲讲我是如何调试的.大家都知道在vs自带的创建项目模板里勾选docker即可通过F5启动docker容器调试.但是对于启动在k8s ...
- DDD领域模型和充血对象
DDD领域模型 官方说法 领域驱动设计,它是对面向对象的的分析和设计(OOAD,Object Orient Analysis Design)的一个补充,对技术框架进行了分层规划,同时对每个类进行了策略 ...
- 我的MYSQL学习心得(十四) 备份和恢复
我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) ...
随机推荐
- 自动部署tomcat,并以普通用户身份运行 for centos6
#!/bin/bash ######## install jdk install_jdk () { rpm -e ‘rpm -qa |grep jdk’ wget \ --no-check-certi ...
- 虚方法virtual、抽象方法abstract、接口interface区别
接口.抽象类.抽象方法.虚方法: 这四个名词时非常容易混淆的: 首先说一下接口 与抽象类 的异同: 相同点: 1.他们都不能实例化自己,也就是说都是用来被继承的. 2.抽象类中的抽象方法和接口方法一样 ...
- MySQL复制框架
一.复制框架 开始接触复制时,看到各种各样的复制,总想把不同类型对应起来,结果越理越乱~究其原因就是对比了不同维度的属性,不同维度得出的结果集之间必然存在交集,没有必要将不同维度的属性安插到成对的萝卜 ...
- Android五种数据存储方式
android 五种数据存储 :SharePreferences.SQLite.Contert Provider.File.网络存储 Android系统提供了四种存储数据方式.分别为:SharePre ...
- 重新学习Servlet
package javax.servlet; import java.io.IOException; public interface Servlet { public void init(Servl ...
- 转载-通俗理解BN(Batch Normalization)
转自:参数优化方法 1. 深度学习流程简介 1)一次性设置(One time setup) -激活函数(Activation functions) - 数据预处理(Data Prep ...
- xpath与nodejs解析xml
测试xpath的工具 http://www.freeformatter.com/xpath-tester.html#ad-output http://www.xpathtester.com/test ...
- 移动端中遇到的坑(bug)!!!
1.模拟单选点击的时候,在ios手机下,点击下面的内容选择,会出现页面闪一闪!! 解决方案:样式重置html的时候加上这句 -webkit-tap-highlight-color: rgba(0, ...
- mybatis框架之foreach标签
foreach一共有三种类型,分别为List,[](array),Map三种,下面表格是我总结的各个属性的用途和注意点. foreach属性 属性 描述 item 循环体中的具体对象.支持属性的点路径 ...
- zabbix3.0.4关于java服务端程序内存溢出的处理
关于java服务端程序内存溢出的处理 java服务端程序内存溢出会产生jvm.log文件,此时程序会挂掉,无法正常处理业务,需要重启服务 思路: 当存在jvm.log这个文件的时候则触发clean_j ...