今天学习了第二章,下在尝试着把这一章翻译出来

chapter 2 The workflwo runtime.

当你在WF(workflow foundation)中执行任务,我们必须察看一些东西既WorkflowRuntime。WorkflowRuntime开始于每一个Workflow任务。当执行任务时,在不同的状态下,WorkflowRuntime都会监视每一个事件。同样WorkflowRuntime还会监听我们在Workflow中所加的每一个服务。(我们会在第五章中讨论这些服务)

Workflow的加构图

Workflow同你的应用程序同时执行。实际上,Workflow要求你的应用程序做为一个宿主。这个宿主可以是windows Forms Application, aconsole application, an ASP.NET Web application or windows service。WorkflowRunTime同你的应用程序一起在AppDomain中执行,而且有且只有一个WorkflowRunTime在每一个AppDomain中。如果尝试创建第二个WorkflowRunTime在一个单独的AppDomain中会引起InvalidOperationException异常。

我们通过创建一组逻辑活动去建立Workflow 应用程序----“Workflow”。这些逻辑活动是未了完成你所要求的Workflow的任务。当你去建立一个WorkflowRunTime,本质上是希望去处理这些逻辑活动然后去执行他们。这就要运用Workflow instance。包含了一堆逻辑活动的Workflow instance在当前执行Workflow任务。当我们回忆第一章时,逻辑活动执行你所提供的代码并且根据输入数据做出决定。接下面一章来,我们就会介绍Workflow instances。

在你程序中建立Workflow

在上一章当中,我们通过VS2005去建立一个简单的Workflow程序。(....此段无关紧要)

因此如何在你的程序中建立一个Workflow。除了运行你的Workflow,你还需要添加Workflow引用,并提供必需的代码来执行Workflow。并进行管理。在这种情况下,添加Workflow引用同添加其他.NET引用一样。并且我们可以获取Workflow中的不同的状态,如闲置或者遇到了无法处理的异常。在随后,我们可以看到这里有一系列的异常我们可以处理,

Note Workflow可以在不同的程序中创建,包括Windows Forms, Windows Presentation Foundation application. console application. ASP.NET Web application, Windows Services。

现在,让我们来建立一个基于.NET console application的Workflow。这会帮助我们了解Workflow。

1.启动VS2005 。

2.在文件菜单中,选择新建然后选择工程。

3.展开C#,选择Windows

4.选择Consowl Application

5.在文件名中输入workflowHost

6.在文件路径中(自己决定)

7.点击OK

我们创建一个console application,但这没有什么有趣的。现在我们开始添加Workflow组件。但在此之前,我想说的是我非常喜欢VS2005的智能化设计,这样可以帮助我们自动的导入引用。

添加Workflow引用

1,在VS2005 solution中,右击Reference然后选择Add Reference.

2. 在Add reference对话框中,寻找System.Workflow.Runtimg并选择他。

3 单击OK

现在,VS2005就会添加在Workflow中所要用的引用。接下来,我们还需加入一些代码来让WorkflowRuntime工作。

建立WorkflowRuntime

1.在编辑器中打开program.cs

2.写入以下代码

using System;

using System.Collections.Generic;

using System.Text

3.在System.Text后添加下面代码

using System.Workflow.Runtimg;

4.在主函数中,添加下面代码

WorkflowRuntimg workflowRuntime = new WorkflwoRuntime();

5.现在,我们编译程序以确保没有错误。我们在本章当中都会运用到整个程序。

研究WorkflowRuntime

现在,我们在WorkflwoHost程序中拥有一个WorkflowRuntime实例。接下来我们就来研究WorkflowRuntime。就像其他类型一样,WorkflowRuntime也拥有一系列的方法我属性。图2-1是属性,图2-2是方法。

图2-1

属性                                          目的

IsStarted          用来确定WorkflowRuntime是否启动并准本接受Workflow instance. 在程序调用StartRuntimg 之前IsStarted为false,在程序调用StopRuntimg之前IsStarted为true。注意,我们不能添加核心服务党WorkflowRuntime在运行的时候

Name               获取或设置WorkflowRuntime的名字。你不能再WorkflowRuntime运行的时候来设置名字,否则会产生InvalidOperationException.

图2-2

方法                                         目的

AddService     添加指定的服务到WorkflowRuntime.会有有限的服务可以被添加

CreateWorkflow    建立Workflow instance,包括任何的指定的参数.如果WorkflowRuntime没有被开启,CreateWorkflow 会调用StartRuntime.

GetWorkflow         获取Workflow instance.

StartRuntime       开始WorkflowRuntime和WorkflowRuntime服务,并记录Started 事件

StopRuntime       停止WorkflowRuntime和WorkflowRuntime服务,并记录Stopped事件

除了比较常用的方法和属性,WorkflowRuntime还有其他的一些方法我们将在以后介绍. 在后面我们还将介绍在执行WorkflowRuntime中产生的不同的状态.基本上, 在调用WorkflowRuntime中必须包括使用一些简单的方法和处理一些事件.

建立WorkflowRuntime工厂

在这里,我在强调一遍,每一个AppDomain只能建立一个WorkflowRuntime.

无论在什么时候, 当我们听到"使用单独实例", 我自然会想到使用工厂模式和单独模式.这单独模式,就是一个机器来确定不论多少次在你程序中调用单个实例,只有一个实例会被初始化. 这会主要用于那些消耗很多资源的实例.

使用单独模式就是要在你程序中创建一个单独的实例. 而工厂模式.包括一个被用来去创建其他实例的媒介.例如,我们并不想去建立自己的车,而是我们从汽车厂那个购买.

单独模式同工厂模式结合起来是非常强大的.因为工厂可以保证只有一个实例会被创建.这正好满足我们的需要.因为在我们程序中,有不同的程序想创建WorkflowRuntime.让我们看一下如何去创建WorkflowRuntime工厂.

创建WorkflowRuntime工厂

1.我们需要添加WorkflowHost工程,右击工程名字,在Add menu选择Class

2.Class已经被选择上了,我们直接输入名字:WorkflwoFactory.cs

3.就像我们添加主程序那样,我们需要在WorkflowFactory上添加引用,

using System;

using System.Collections.Generic;

using System.Text;

using System.Workflow.Runtime;

4.我们使用using直接引入WorkflowRuntime引用到我们的文件中,而且,我们需要添加代码到WorkflwoFactory类中

class WorkflowFactory

{

}

并不算多的代码,但我们需要添加他

private static WorkflowRuntime _WorkflowRuntime = null;

private static object _syncRoot = new object();

private static object _syncRoot = new object();

5.注意_workflowRuntime被初始化为null.我们的工厂会识别这个并创建WorkflowRuntime实例. 如果WorkflowRuntime不为null, 我们的工厂就不会创建一个新的实例而是会使用存在的实例.因此,我们需要添加方法去实现创建一个实例.更重要的事,我们要使用静态方法,以至于不需要重新创建一个工厂的实例.

public static WorkflowRuntime GetWorkflowRuntime()
...{
    lock(_syncRoot)
   ...{
       if(null == _workflowRuntime)
      ...{
          _workflowRuntime = new WorkflowRuntime();
      }
   }
}

6.

Microsoft Windows Workflow Foundation Step by Step Charpter 2相关推荐

  1. Microsoft Windows Workflow Foundation 入门:开发人员演练

    有关向 Windows 平台添加工作流支持的初步知识 Microsoft Windows Workflow Foundation (WWF) 是一个可扩展框架,用于在 Windows 平台上开发工作流 ...

  2. Microsoft Windows Workflow Foundation 入门

    Microsoft Windows Workflow Foundation 的包含在 .Net Framework 3.0 中,除此之外i,基于它做开发还要安装 Visual Studio 2005 ...

  3. Microsoft Windows Workflow Foundation

    Dino Esposito Solid Quality Learning 适用于: Microsoft Windows Workflow Foundation Microsoft Windows Vi ...

  4. Microsoft Windows Workflow Foundation 4.0 Cookbook

    目前本书已全球发行: 本文转自 xhinkerx 51CTO博客,原文链接:http://blog.51cto.com/xhinker/480966,如需转载请自行联系原作者

  5. Windows WorkFlow Foundation学习资源

    微软主站 Microsoft Windows Workflow Foundation 入门:开发人员演练 转载于:https://www.cnblogs.com/zwx/archive/2007/01 ...

  6. Windows workflow foundation入门

    Microsoft Windows Workflow Foundation (WWF) 是一个可扩展框架,用于在 Windows 平台上开发工作流解决方案.作为即将问世的 Microsoft WinF ...

  7. WWF(Windows Workflow Foundation)的简介

    转自 dudu blog Windows Workflow Foundation简介(翻译):       Windows Workflow Foundation是帮助您在Windows平台上快速建立 ...

  8. 书讯--Microsoft Windows Communication Foundation Step by Step

    SOA 观念提出后,经过多年的时间终于开始发酵.微软世界里因 WCF 的出现,简化了实做的基础.SOA 强调如下的重点: l   一切技术遵循公开标准 l   服务定义的边界明确 l   服务自主而不 ...

  9. WWF(Windows Workflow Foundation)开发环境的建立。 .NET 技术前瞻,WWF,Windows,Workflow,Foundation...

    1.安装WindowsSDK for Vista,有1.14G之巨,可以从MS的网站上下载,不过需要验证WINDOWS,可以去讯雷区用WindowsSDK为关键字搜索下载. 2.安装Virsul St ...

最新文章

  1. DeepMind网红博士300页论文出炉:面向NLP的神经迁移学习
  2. 胡言乱语集锦-大数据,手机,传统,养生
  3. Flask实战2问答平台-完成登录注册功能
  4. c++ include 路径_程序员应如何理解include
  5. Spring Cloud:查看注册到Eureka上的应用信息
  6. 如何申请outlook.com的邮箱
  7. 如何正确实现 Java 中的 HashCode
  8. 【数据分析学习】Pandas学习记录
  9. xilinx官方教程ug871利用HLS实现RealFFT
  10. 熵权法求权重python代码
  11. 统计软件 | Jamovi简介
  12. 一网打尽!炫酷枪火打击视频+图文+源码!哔哔哔......
  13. Calendar设置HOUR_OF_DAY获取0点0分0秒一直输出12点
  14. 0基础实现微信推送天气,生日等(女朋友快乐眼)
  15. QuickBI-云数据库数据源
  16. 跨平台桌面应用的开发框架——Electron
  17. 中国的手机支付在全球遥遥领先
  18. labview中java联合编程_LabVIEW与MATLAB混合编程的实现
  19. Java 通过EasyExcel导出的Excel文档的字体,背景色,自动列宽等符合要求
  20. aix系统中514端口占用取消

热门文章

  1. 国内10大技术网站,你最爱和哪个玩耍?
  2. HBase (1)---数据模型
  3. 如何从零开始搭建一个网站
  4. 建议先倒杯水,这次的货是真的干
  5. android studio 61歌曲服务器搭建 歌曲app 下载 完整代码
  6. 外挂太多怎么解?云上找出路
  7. 已知一个靶点,如何获取旗下相关的生物实验,临床试验,以及上市药物数据.
  8. 一文教你掌握广义估计方程
  9. 环境变量是什么?如何配置环境变量
  10. 卷积神经网络中Attention注意力机制(CBAM)