Microsoft Windows Workflow Foundation Step by Step Charpter 2
今天学习了第二章,下在尝试着把这一章翻译出来
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, 我们的工厂就不会创建一个新的实例而是会使用存在的实例.因此,我们需要添加方法去实现创建一个实例.更重要的事,我们要使用静态方法,以至于不需要重新创建一个工厂的实例.
...{
lock(_syncRoot)
...{
if(null == _workflowRuntime)
...{
_workflowRuntime = new WorkflowRuntime();
}
}
}
6.
Microsoft Windows Workflow Foundation Step by Step Charpter 2相关推荐
- Microsoft Windows Workflow Foundation 入门:开发人员演练
有关向 Windows 平台添加工作流支持的初步知识 Microsoft Windows Workflow Foundation (WWF) 是一个可扩展框架,用于在 Windows 平台上开发工作流 ...
- Microsoft Windows Workflow Foundation 入门
Microsoft Windows Workflow Foundation 的包含在 .Net Framework 3.0 中,除此之外i,基于它做开发还要安装 Visual Studio 2005 ...
- Microsoft Windows Workflow Foundation
Dino Esposito Solid Quality Learning 适用于: Microsoft Windows Workflow Foundation Microsoft Windows Vi ...
- Microsoft Windows Workflow Foundation 4.0 Cookbook
目前本书已全球发行: 本文转自 xhinkerx 51CTO博客,原文链接:http://blog.51cto.com/xhinker/480966,如需转载请自行联系原作者
- Windows WorkFlow Foundation学习资源
微软主站 Microsoft Windows Workflow Foundation 入门:开发人员演练 转载于:https://www.cnblogs.com/zwx/archive/2007/01 ...
- Windows workflow foundation入门
Microsoft Windows Workflow Foundation (WWF) 是一个可扩展框架,用于在 Windows 平台上开发工作流解决方案.作为即将问世的 Microsoft WinF ...
- WWF(Windows Workflow Foundation)的简介
转自 dudu blog Windows Workflow Foundation简介(翻译): Windows Workflow Foundation是帮助您在Windows平台上快速建立 ...
- 书讯--Microsoft Windows Communication Foundation Step by Step
SOA 观念提出后,经过多年的时间终于开始发酵.微软世界里因 WCF 的出现,简化了实做的基础.SOA 强调如下的重点: l 一切技术遵循公开标准 l 服务定义的边界明确 l 服务自主而不 ...
- WWF(Windows Workflow Foundation)开发环境的建立。 .NET 技术前瞻,WWF,Windows,Workflow,Foundation...
1.安装WindowsSDK for Vista,有1.14G之巨,可以从MS的网站上下载,不过需要验证WINDOWS,可以去讯雷区用WindowsSDK为关键字搜索下载. 2.安装Virsul St ...
最新文章
- DeepMind网红博士300页论文出炉:面向NLP的神经迁移学习
- 胡言乱语集锦-大数据,手机,传统,养生
- Flask实战2问答平台-完成登录注册功能
- c++ include 路径_程序员应如何理解include
- Spring Cloud:查看注册到Eureka上的应用信息
- 如何申请outlook.com的邮箱
- 如何正确实现 Java 中的 HashCode
- 【数据分析学习】Pandas学习记录
- xilinx官方教程ug871利用HLS实现RealFFT
- 熵权法求权重python代码
- 统计软件 | Jamovi简介
- 一网打尽!炫酷枪火打击视频+图文+源码!哔哔哔......
- Calendar设置HOUR_OF_DAY获取0点0分0秒一直输出12点
- 0基础实现微信推送天气,生日等(女朋友快乐眼)
- QuickBI-云数据库数据源
- 跨平台桌面应用的开发框架——Electron
- 中国的手机支付在全球遥遥领先
- labview中java联合编程_LabVIEW与MATLAB混合编程的实现
- Java 通过EasyExcel导出的Excel文档的字体,背景色,自动列宽等符合要求
- aix系统中514端口占用取消