这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

OrchestrationState

核心编程模型的 OrchestrationState 定义

1 - OrchestrationState

核心编程模型的 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

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

OrchestrationStateQueryFilter

src\DurableTask.Core\OrchestrationStateQueryFilter.cs

Abstract class for an orchestration state query filter

协调状态查询过滤器的抽象类

类定义

OrchestrationStateInstanceFilter 实现了 OrchestrationStateQueryFilter

    public abstract class OrchestrationStateQueryFilter
    {
    }

这是一个空的抽象类。

它的实现有:

  • OrchestrationStateInstanceFilter
  • OrchestrationStateNameVersionFilter: 这个可以用来做版本过滤

4 - OrchestrationStateInstanceFilter

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

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; }