惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - mjgforever

sp_executesql和临时表的用法 51 条 ActionScript 3.0 和 Flex 优化技术与实践 open source Flex project list Open Source Replication and Synchronization Tools Written in Java 用SyncML进行异构数据库复制 WF学习系列之六:工作流和宿主程序通讯异常引发的思考 - mjgforever - 博客园 WF学习系列之五:状态机工作流学习 WF学习系列之三:RuleSet知识点概述 WF学习系列之二:开发工作流知识点概述 WF学习系列之一:WF基本知识点概述 abstract, virtual, override, new 关键字的用法 ArcIMS 安装指南 Google推出Protocol Buffers:争夺网络时代数据格式 Protocol Buffers 简介 Protocol Buffers:Google 的数据交换格式 - mjgforever 微软vs.VMware:虚拟化中的真实战争 - mjgforever 文本文件与二进制文件 字符编码简介:ASCII,Unicode,UTF-8,GB2312 Adobe Flex的十大误解
WF学习系列之四:顺序工作流控制台应用程序模板介绍
mjgforever · 2008-12-10 · via 博客园 - mjgforever

简介

WF兼有很多角色,如编程模型、运行时引擎以及工具集等,它使我们很容易创建基于工作流的应用。这里主要分析一下VS2008下顺序工作流控制台应用程序的模板,并了解几个常见的活动。

顺序工作流控制台应用程序模板

WF提供两种类型的工作流:顺序工作流、状态机工作流。这两个工作流分别从SequentialWorkflowActivity, StateMachineWorkflowActivity派生而来。VS2008提供了顺序工作流控制台应用程序和类库两种模板,本文主要介绍顺序工作流控制台应用程序模板。

创建工作流项目

具体步骤省略,详细请参见参考文献所示。查看生成的工作流代码如下:

Code

很容易看出,新建的工作流Workflow1是从SequentialWorkflowActivity派生。

新建的工作流只有起始点,没有任何活动。这里我们添加一个Code activity。添加了这个活动后,我们发现,这个活动出现了错误,是因为ExecuteCode没有设定,这里只需双击Code activity即可,并在代码文件中添加Console.WriteLine("Hello, World!");。一个Hello, World!工作流就这样完成了。

解析工作流调用代码(宿主程序代码)

Code

注意:

1. 通过WorkflowRuntime类为工作流初始化提供可配置的运行环境

2. 通过AutoResetEvent类,协调主线程和工作流线程。

3. 通过WorkflowInstance类创建工作流实例。

创建一个比Hello, World更高级的工作流

作业:创建一个工作流,使之支持一个文件加中的所有文件拷贝到另外一个文件夹。

思路:

1.创建一个代码活动,解析从宿主程序传来的源文件夹和目的文件夹;

2.创建一个循环活动(一个个拷贝,直到所有文件拷贝完毕)

        在循环活动中嵌入代码活动,完成单个文件的拷贝

这里需要解释几个问题:

循环活动条件设置

while activity活动中,规则采用声明性规则条件,当前是第几个文件 < 总共几个文件。在后台生成如下文件workflow.rules:

Code

在后台,通过

System.Workflow.Activities.Rules.RuleConditionReference ruleconditionreference1 = new System.Workflow.Activities.Rules.RuleConditionReference();

ruleconditionreference1.ConditionName = "条件1";

this.whileActivity1.Condition = ruleconditionreference1;

进行加载到循环活动中。

宿主程序和工作流的通讯

如何向工作流中传递参数:

在工作流中定义成员变量:

public string toFolder { get; set; }

public string fromFolder { get; set; }

public int totalFiles { get; set; }

在宿主程序初始化工作流实例的时候,将参数传入

var parameters = new Dictionary<string, object>();

parameters.Add("fromFolder", @"K:"test");

parameters.Add("toFolder", @"K:"backup");

WorkflowInstance instance =

    workflowRuntime.CreateWorkflow(

        typeof(WorkflowDemo1.Workflow1), parameters);

如何从工作流中获取参数:

WorkflowCompletedEventArgs e 中,即可获取工作流中的相关信息,如:e.OutputParameters["totalFiles"]

参考文献

本翻译没有按照原文,详细请查阅

http://social.msdn.microsoft.com/content/en-us/msft/netframework/wf/learn/Intro-SequentialWorkflows