Workflow Manager 1.0 配置和外部变量

 

Workflow Manager 1.0 提供所需的功能让用户设置执行期间要使用的配置值,在为流程建模时启用常见且成熟的最佳实践,例如,避免使用可能会在程序定义(在此情况下为工作流)中更改的硬编码参数。Workflow 应用程序作者可以设置与某个工作流定义关联的应用程序设置。这些应用程序设置是一个键值对列表,在概念上与 .NET AppSettings 类似。此列表可以包含键与值的任意集,以表示工作流的相关信息。

本主题内容

  • 设置配置

  • 使用工作流中的配置信息

  • ExternalVariables 和 UserStatus

  • ExternalVariables 与配置

设置配置

通过 WorkflowDescription.Configuration 在工作流定义级别建立配置应用程序设置。下面的代码演示了有关如何设置应用程序设置的示例(通过将项目添加到 AppSettingsWorkflowConfiguration 集合)。

sampleConfigValueWorkflow.Configuration = new WorkflowConfiguration();
sampleConfigValueWorkflow.Configuration.AppSettings.Add("configSetting1", "configuration value");      
sampleConfigValueWorkflow.Configuration.AppSettings.Add("anotherConfigSetting", "another value");      
System_CAPS_note注意

WorkflowConfiguration 提供了不可以直接通过 WF 中的编程模型使用的其他配置设置,例如节流选项。

可以通过将 WorkflowConfiguration 对象设置为 ScopeInfo.DefaultWorkflowConfiguration,来将某个默认工作流配置设置到给定范围中的所有工作流。设置此默认配置后,该范围中的所有 WorkflowDefinitions 将使用这些配置设置。WorkflowDefinitions 可通过提供自身的 WorkflowConfiguration 来覆盖这些配置设置。

使用工作流中的配置信息

工作流作者可以通过 GetConfigurationValue 活动使用给定工作流的配置中的应用程序设置。GetConfigurationValue 接受应用程序设置的名称,以及用于存储应用程序设置的输出变量。它还接受一个可选默认值,当找不到请求的应用程序设置时,会将该值分配给输出变量。以下屏幕截图中的工作流演示了使用前一示例中指定的 GetConfigurationActivity 设置的 configSetting1。

Workflow Configuration Activity Properties

ExternalVariables 和 UserStatus

ExternalVariables 可让工作流作者在工作流中为全局状态建模。ExternalVariables 将通过 ExternalVariables 属性添加到 WorkflowDefinition,并对该工作流中的所有活动可见。也就是说,这些变量将对工作流的所有实现子级(包括工作流中使用的自定义活动的实现)可见。ExternalVariables 可以是工作流中允许的任一类型(允许的类型列表中的类型)。

System_CAPS_note注意

有关有关允许的类型的详细信息,请参阅 Workflow Manager 1.0 受信任图面

可以映射 ExternalVariables。也就是说,当工作流已持久化时,可以使用 WorkflowInstanceInfo.MappedVariables 来访问这些变量。如果某个 ExternalVariable 未标记为已映射,它将另存为实例状态的一部分,但不可使用 WorkflowInstanceInfo 进行访问。

使用 ExternalVariableValue<T> activity 访问 ExternalVariable 值。为了设置 ExternalVariable 的值,已使用 ExternalVariableReference<T> 作为左值(例如,在 Assign 中)。

System_CAPS_note注意

ExternalVariableValue<T> 受工作流设计器的支持,但是,ExternalVariableReference<T> 目前只受代码的支持。

Workflow Manager 1.0 还引入了名为 UserStatus 的第一类映射 ExternalVariable(使用 UserStatus 属性访问),以及一个用于通过工作流对它进行设置的名为 SetUserStatus 的活动。这里提供的是在只需要一个 ExternalVariable 的最常见情况下使用 ExternalVariable 的简单入门体验。

ExternalVariables 与配置

下表比较了 Workflow Configuration 和 ExternalVariables 的功能。

功能

配置

ExternalVariables

粒度级

定义或更高级别(例如范围)

实例

允许的类型

String

允许的类型列表中的任一类型

可由工作流实例更改

活动图面

GetConfigurationValue

ExternalVariablesValue<T>

ExternalVariableReference<T>

可映射