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

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Vercel News
Vercel News
F
Fortinet All Blogs
月光博客
月光博客
G
Google Developers Blog
博客园 - Franky
GbyAI
GbyAI
The Cloudflare Blog
I
InfoQ
雷峰网
雷峰网
WordPress大学
WordPress大学
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
T
The Blog of Author Tim Ferriss
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
小众软件
小众软件
腾讯CDC
B
Blog
量子位
V
V2EX
S
SegmentFault 最新的问题
Google DeepMind News
Google DeepMind News

博客园 - Cheek G

JQuery常用方法一览 6 bytes !! IE判定 项目小记: IFRAME引起内存泄露的解决方法 - Cheek G wcf中使用Session 整人小程序【转自CSDN】 Asp.net MVC框架学习【收藏】 Web Services 学习【收藏】 输出CSV文件并直接打开时出现SYLK异常 JS 其他(二) - Cheek G JS 其他 - Cheek G JS验证类(一) 非常NB的sql2005分页 web页局部打印 - Cheek G - 博客园 asp.net在ie7中使用FileUpload上传前预览图片 - Cheek G - 博客园 DIV背景半透明,DIV中的字不半透明 - Cheek G - 博客园 js等比例缩放图片 - Cheek G - 博客园 IIS 7 中默认页设置的小问题 文件的ContentType类型 小全 页面加载完成前显示LOADING....
WF学习日记(一)
Cheek G · 2008-11-10 · via 博客园 - Cheek G

一、什么是WF

     WF:Windows Workflow Foundation的缩写,是微软为Windows平台开发工作流应用程序的一个模块、引擎和工具,它包括了Runtime Service (运行时服务)、 Runtime Engine (运行时引擎) 和 Base Activity Library(基础Activity 库)。(具体说明参考MSDNhttp://msdn.microsoft.com/zh-cn/library/ms734631.aspx

     Workflows是Activity的集合,是寄宿于宿主(进程)的应用,而Activity可以理解为一个类库,允许开发人员自行构建,其中的属性、事件供Workflows调用。

二、WF的Workflow模型

     1.Sequential 顺序模型:流程按照预先定义好的顺序执行。

     2.State Machine 状态机模型:以事件为驱动,使流程本身转换成不同的状态,而每个状态也有其转变范围和事件。

     两种模型可以各自独立运行,也可以互相包含。

三、创建一个简单的 Hello World 程序

     1.新建一个Workflow工程,选择 Sequential Workflow Console Application  顺序工作流控制台程序

     2.双击Workflow1.cs 可以看到一个类型UML的界面(仅仅是类似)

     3.从工具栏中拖一个CODE到 Drop Activities to create a Sequential Workflow (人家已经说的很清楚了)

     4.双击codeActivity1,可以发现生成了其执行事件,我们在其中自定义一个名叫Message的属性(一定要是属性,否则后面Workflow会找不到),在刚生成的事件中键入 Console.WriteLine(Message);

     5.在工程中找到Program.cs双击打开,这是个简单的控制台程序,我们对Workflow的调用就全在using(WorkflowRuntime workflowRuntime = new WorkflowRuntime()){....} 块中了。为了调用Workflow中我们刚定的Message属性,我们定义一个  Dictionary<string,object>myArgs = new Dictionary<string,object>();用来传值,string为属性名,object为值,此处就传入"Hello World"吧........

    6.编译运行

CODE:

            using(WorkflowRuntime workflowRuntime = new WorkflowRuntime())
            {
                AutoResetEvent waitHandle = new AutoResetEvent(false);
                workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) {waitHandle.Set();};
                workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e)
                {
                    Console.WriteLine(e.Exception.Message);
                    waitHandle.Set();
                };

                //WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WFSeqDemo.Workflow1));
                Dictionary<string,object>myArgs = new Dictionary<string,object>();
                myArgs.Add("Message", "Hello World");                
                WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WFSeqDemo.Workflow1), myArgs);
                instance.Start();

                waitHandle.WaitOne();

            }