• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
初出茅庐
我的技术之路....每天前进一小步
博客园    首页    新随笔    联系   管理    订阅  订阅

WF学习日记(一)

一、什么是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();

            }

 

posted @ 2008-11-10 16:27  Cheek G  阅读(331)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3