Workflow Manager 1.0 中的关键概念

 

发布时间: 2016年5月

本主题概述了 Workflow Manager 1.0 的关键概念。

关键概念

  • Workflow Management Service

  • Workflow Client API

  • 活动

  • 工作流

  • 实例

  • 范围

  • 通知

  • DynamicValue

Workflow Management Service

Workflow Manager 1.0 公开了一个基于 REST 的服务终结点,用于发布、管理和运行工作流。为了与工作流定义及其实例交互而进行的所有通信都是通过 HTTP(S) 完成的。

有关有关工作流管理的详细信息,请参阅 Workflow Manager 1.0 服务器管理

Workflow Client API

打包在 Microsoft.Workflow.Client.dll 中的 Workflow Client API 是一组基于 .NET 的类,可用于发布、管理和运行工作流。它提供可将内部 HTTP 流量抽象化成 Workflow Management Service 的第一类 API 集。

活动

活动是一个命名实体,其中包含工作流功能的构建基块。通常,某个活动是通过其他活动(开发人员创建的自定义活动,或 Microsoft.Activities 命名空间中提供的活动)编写的。

在 Workflow Client API 中,活动由 ActivityDescription 类表示。此类的一个基本成员是 Xaml 属性,该属性表示活动的基于 XAML 的定义。

工作流

工作流是表示某个可激活或启动的工作流的命名实体。在 Client API 中,工作流由 WorkflowDescription 类表示。此类的两个关键属性为:

  1. ActivityPath - 指定要将哪个活动用作此工作流的实现体。

  2. ActivationFilter - 定义可激活此工作流实例的消息的特征。

实例

工作流实例是一个实体,表示特定工作流的实例。通过以下两种方法之一创建工作流实例:

  1. 显式创建,其方法是调用 StartWorkflow API 以启动特定工作流的新实例。

  2. 隐式创建,其方法是使用 PublishNotification API 来发布与给定工作流的 ActivationFilter 匹配的消息。请注意,一个消息可与零个、一个或多个工作流的 ActivationFilters 匹配。每个匹配的工作流的一个新工作流实例将被实例化为发布这种消息后的结果。

创建一个工作流实例后,该实例将在 Client API 中以 WorkflowInstanceInfo 类表示。

范围

范围是活动、工作流、实例、配置和子范围的命名安全容器。它还为多租户和消息(通知)提供边界。可以使用 Workflow Client API 创建和修改范围。在 Client API 中,范围由 T:Microsoft.Workflow.Client.ScopeInfo 类表示。

安装 Workflow 时,只会预先创建根范围,并且不能删除根范围。可以根据需要创建其他范围。支持多个级别的嵌套范围。工作流和活动应部署到根范围下面的范围。

每个活动工作流实例都属于一个范围。活动和工作流属于它们所发布到的范围。实例所属的范围与其工作流相同。

一个活动 XAML 可以引用和使用属于相同范围、父范围或任何上级范围(不包括根范围)的其他活动。

可以通过使用相同范围、父范围或任何上级范围(不包括根范围)中的某个活动来定义工作流。

某个范围的安全性和其他配置设置将被其所有子范围继承。

范围是命名边界。每个命名实体(活动、工作流和子范围)的名称只能在这些实体所属的范围中保持唯一。

范围也可以是 PublishNotification API 的目标,也就是说,传递给 PublishNotification 的单个消息只能激活属于目标范围的工作流。

Workflow 不托管子范围的任何特定语义。哪个范围结构适合给定的应用程序由 Workflow 的用户决定。

例如,开发 OnlineCollaborationSolution 的 ISV 可以创建顶级范围,以表示 OnlineCollaborationSolution 应用程序(例如 Contoso、Fabrikam 和 Litware)的租户。OnlineCollaborationSolution 可允许其租户在资源模型中创建表示为嵌套范围的实体,如下图中所示。

Windows Azure Workflow Scopes

通知

可以通过通知消息创建和恢复工作流实例。发布到范围的消息将会扇出,并以异步方式传递到与工作流定义的筛选器匹配的所有工作流实例。

有关有关工作流中消息的详细信息,请参阅 Workflow Manager 1.0 中的消息

DynamicValue

DynamicValue 是一个动态数据结构,可用于将复杂数据传入工作流,在工作流中操作数据,或者将数据作为 JSON 传出工作流。

有关 DynamicValue 的详细信息,请参阅了解动态值