您的位置:首页 > 其它

我的Windows Workflow Foundation 之旅---(3)工作流宿主

2008-11-04 18:27 369 查看
[上一节]

工作流需要一个宿主应用程序才能运行。宿主负责启动并维持工作流,工作流本身不需要了解运行时它所处的宿主是怎样的,然而这个宿主对工作流的生命周期来说却是十分重要的。

任何类型的.NET应用程序都可以作为工作流的宿主,一个工作流实例可以由Windows窗体应用程序的一个按钮开始,然后和一个Asp.net Web程序交互。在Windows窗体和Asp.net Web程序中使用相同的工作流实例,这些都被成为宿主。接下来我们了解宿主的几个概念:

1.工作流运行时

工作流运行时是宿主应用程序和工作流实例之间的通道,对工作流生命周期管理起到了重要作用。

WorkflowRuntime类表示工作流运行时,为管理运行时环境提供了许多功能。有了这个类就可以完全控制工作流实例的执行和运行时本身。

创建WorkflowRuntime实例,如下代码所示

Code

1 //创建工作流实例

2

3 WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(Demo1.Workflow1),parms);

4

5 //启动工作流

6

7 instance.Start();

8

如果WorkflowRuntime类的StartRuntime方法没有被调用,它会在一个工作流实例启动的时候被调用。

2.WorkflowInstance类

WorkflowInstance类以实例的形式表示所有的工作流。可以将它看作一个工作流实例的外包装。

得到一个新的工作流实例的方法是调用WorkflowRuntime的CreateWorkflow方法,这点在上文已经提到过,调用CreateWorkflow不会启动这个工作流,只有当WorkflowInstance的Start方法被调用以后,才会启动工作流。

下面列出了WorkflowInstance类的方法:

名称

说明

Abort

中止工作流实例。

ApplyWorkflowChanges

将更改应用到 WorkflowChanges 对象所指定的工作流实例。

EnqueueItem

将消息同步发送到指定工作流队列。

EnqueueItemOnIdle

当工作流处于空闲状态时,将消息发送到指定的工作流队列。在确认工作流计划程序处于空闲状态(即没有执行任何有效操作)之后,EnqueueItemOnIdle将一直等待,直至工作流达到空闲点并编排队列。

Equals

返回一个值,该值指示指定对象是否等于 WorkflowInstance。 (重写 Object..::.Equals(Object)。)

Finalize

允许 Object 在"垃圾回收"回收 Object 之前尝试释放资源并执行其他清理操作。 (继承自 Object。)

GetHashCode

返回此工作流实例的哈希代码。 (重写 Object..::.GetHashCode()()()。)

GetType

获取当前实例的 Type。 (继承自 Object。)

GetWorkflowDefinition

检索此工作流实例的根活动。

GetWorkflowNextTimerExpiration

返回下一个时间点,已计划在此时间点向此 WorkflowInstance传递计时器消息。

GetWorkflowQueueData

获取 WorkflowQueueInfo对象的集合,该集合包含与此工作流实例关联的工作流队列的挂起项和订阅活动。

Load

加载先前卸载的工作流实例。

MemberwiseClone

创建当前 Object 的浅表副本。 (继承自 Object。)

ReloadTrackingProfiles

重新加载此工作流实例的跟踪配置文件。

Resume

继续执行先前挂起的工作流实例。

Start

开始执行工作流实例。

Suspend

挂起工作流实例。

Terminate

以同步方式终止工作流实例。

ToString

返回表示当前 Object 的 String。 (继承自 Object。)

TryUnload

当实例处于挂起或空闲状态时,将工作流实例从内存卸载到持久性存储区。

Unload

将工作流实例从内存卸载到持久性存储区。此调用将进行阻止,直至当前计划的工作完成或事务范围结束。

3.WorkflowEnvironment 类

WorkflowEnvironment能够访问正在当前线程上执行的工作流实例的事务上下文。这个类有两个属性: WorkflowInstanceId和WorkBatch。

WorkflowInstanceId:获取与当前线程关联的工作流实例的GUID。

WorkBatch:获取当前工作批次。(允许工作流具有事务的功能)

[下一节]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐