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学习心得(四) ...
随机推荐
- C# 实现Bresenham算法(vs2010)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- vue自学入门-3(vue第一个例子)
1.安装后打开8080端口,http://localhost:8080/#/ 2.进入项目目录 2.默认路由 3.修改文件index.js 将Import HelloWorld一句修改为 import ...
- 跨越VLAN
跨越VLAN VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分为多个VLAN,也可以跨越物理网络障碍,将不同于子网中的用户 ...
- 组合框QGroupBox
样式: 注意:内部必须使用布局控件 import sys from PyQt5.QtCore import Qt from PyQt5.QtGui import QPixmap from PyQt5. ...
- assistant文档
资料 https://blog.csdn.net/La_vie_est_belle/article/details/82662937 contents 内容 signals 信号 Detai ...
- Linux之包管理工具总结[RPM/DPKG]-[YUM/APT]
0.关键词解释 RPM:Red Hat Package Manager(原名),RPM Package Manager(现名,递归缩写,类似于GNU的命名); 解释:RPM软件包管理器 YUM:Yel ...
- golang使用simplejson库解析复杂json
cnblogs原创 golang自带的json解析库encoding/json提供了json字符串到json对象的相互转换,在json字符串比较简单的情况下还是挺好用的,但是当json字符串比较复杂或 ...
- Principal components analysis(PCA):主元分析
在因子分析(Factor analysis)中,介绍了一种降维概率模型,用EM算法(EM算法原理详解)估计参数.在这里讨论另外一种降维方法:主元分析法(PCA),这种算法更加直接,只需要进行特征向量的 ...
- IDEA常用快捷键和常用插件集成,持续更新......
用习惯了eclipse,不容易转过来,记一下! 快捷键 psvm: main 方法快捷键 sout :syso快捷键 CTRL+O: 重写父类方法 Ctrl+Alt+V :自动补全返回值 Ctrl+S ...
- 嵌入式系统C编程之堆栈回溯
前言 在嵌入式系统C语言开发调试过程中,常会遇到各类异常情况.一般可按需添加打印信息,以便观察程序执行流或变量值是否异常.然而,打印操作会占用CPU时间,而且代码中添加过多打印信息时会显得很凌乱.此外 ...