OrchestrationState
- 1: OrchestrationState
- 2: OrchestrationStateQuery
- 3: OrchestrationStateQueryFilter
- 4: OrchestrationStateInstanceFilter
- 5: OrchestrationStateNameVersionFilter
1 - OrchestrationState
src\DurableTask.Core\OrchestrationState.cs
Represents the state of an orchestration
类定义
OrchestrationState 是一个 DataContract :
[DataContract]
public class OrchestrationState : IExtensibleDataObject
{
}
定义有如下 DataMember:
| name | 类型 | 描述 |
|---|---|---|
| Name | string | 协调的名称 |
| Input | string | 协调的序列化输入 |
| Output | string | 协调的序列化输出 |
| OrchestrationInstance | OrchestrationInstance | 该状态代表的协调实例 |
| OrchestrationStatus | OrchestrationStatus | 当前协调状态 |
| Status | string | 字符串格式的当前协调状态 |
| ParentInstance | ParentInstance | 父实例,如果这个协调有 |
| Version | string | 协调版本 |
| Tags | IDictionary<string, string> | 与该协调相关的标记和字符串值字典 |
| Generation | int | 协调的代。重复使用的 instanceIds 将递增该值。 |
| CreatedTime | DateTime | 协调的创建时间 |
| ScheduledStartTime | DateTime | 开始协调的时间 |
| CompletedTime | DateTime | 协调完成时间 |
| LastUpdatedTime | DateTime | 协调的最后更新时间 |
| Size | long | 原始(未压缩)序列化运行时状态的大小 |
| CompressedSize | long | 压缩序列化运行时状态的大小 |
| FailureDetails | FailureDetails | 获取或设置与协调相关的故障详细信息。 |
OrchestrationState有 Version 字段定义,另外 OrchestrationState 的 OrchestrationInstance 字段也带有 version。
2 - OrchestrationStateQuery
src\DurableTask.Core\OrchestrationStateQuery.cs
Query class that can be used to filter results from the Orchestration instance store.
可用于从协调实例存储中过滤结果的查询类。
注意: 实例方法不是线程安全的。
类定义
public class OrchestrationStateQuery {
}
构造函数
public OrchestrationStateQuery()
{
FilterMap = new Dictionary<Type, OrchestrationStateQueryFilter>();
}
FilterMap()
public IDictionary<Type, OrchestrationStateQueryFilter> FilterMap { get; private set; }
GetFilters()
获取查询的 primary_filter、collection_of(secondary_filters)
public Tuple<OrchestrationStateQueryFilter, IEnumerable<OrchestrationStateQueryFilter>> GetFilters()
{
ICollection<OrchestrationStateQueryFilter> filters = FilterMap.Values;
if (filters.Count == 0)
{
return null;
}
var secondaryFilters = new List<OrchestrationStateQueryFilter>();
OrchestrationStateQueryFilter primaryFilter = filters.First();
int primaryFilterPrecedence = SafeGetFilterPrecedence(primaryFilter);
if (filters.Count > 1)
{
foreach (OrchestrationStateQueryFilter filter in filters)
{
int newPrecedence = SafeGetFilterPrecedence(filter);
if (newPrecedence > primaryFilterPrecedence)
{
secondaryFilters.Add(primaryFilter);
primaryFilter = filter;
primaryFilterPrecedence = newPrecedence;
}
else
{
secondaryFilters.Add(filter);
}
}
}
return new Tuple<OrchestrationStateQueryFilter, IEnumerable<OrchestrationStateQueryFilter>>(
primaryFilter, secondaryFilters);
}
3 - OrchestrationStateQueryFilter
src\DurableTask.Core\OrchestrationStateQueryFilter.cs
Abstract class for an orchestration state query filter
协调状态查询过滤器的抽象类
类定义
OrchestrationStateInstanceFilter 实现了 OrchestrationStateQueryFilter
public abstract class OrchestrationStateQueryFilter
{
}
这是一个空的抽象类。
它的实现有:
- OrchestrationStateInstanceFilter
- OrchestrationStateNameVersionFilter: 这个可以用来做版本过滤
4 - OrchestrationStateInstanceFilter
src\DurableTask.Core\OrchestrationStateInstanceFilter.cs
Filter for Orchestration instance filter
协调实例过滤器
类定义
OrchestrationStateInstanceFilter 实现了 OrchestrationStateQueryFilter
public class OrchestrationStateInstanceFilter : OrchestrationStateQueryFilter
{
构造函数
// 使用默认设置创建 OrchestrationStateInstanceFilter 的新实例
public OrchestrationStateInstanceFilter()
{
// default is exact match
StartsWith = false;
}
只定义有两个方法用来存取 InstanceId / ExecutionId 作为过滤器的匹配方式,另外 StartsWith 设置筛选器的匹配类型:
// 获取或设置过滤器的 InstanceId
public string InstanceId { get; set; }
// 获取或设置过滤器的 ExecutionId
public string ExecutionId { get; set; }
// 获取或设置筛选器的匹配类型:以开始或精确匹配开始
public bool StartsWith { get; set; }
5 - OrchestrationStateNameVersionFilter
src\DurableTask.Core\OrchestrationStateInstanceFilter.cs
Filter for Orchestration Name and Version
协调名称和版本过滤器
类定义
OrchestrationStateNameVersionFilter 实现了 OrchestrationStateQueryFilter
public class OrchestrationStateNameVersionFilter : OrchestrationStateQueryFilter
{
}
构造函数
// 使用默认设置创建 OrchestrationStateInstanceFilter 的新实例
public OrchestrationStateInstanceFilter()
{
// default is exact match
StartsWith = false;
}
只定义有两个方法用来存取 InstanceId / ExecutionId 作为过滤器的匹配方式,另外 StartsWith 设置筛选器的匹配类型:
public string Name { get; set; }
public string Version { get; set; }