StageOrderComparer - класс

Объект, выполняющий сортировку этапов.

Definition

Пространство имён: Tessa.Extensions.Default.Server.Workflow.KrCompilers.UserAPI
Сборка: Tessa.Extensions.Default.Server (в Tessa.Extensions.Default.Server.dll) Версия: 3.6.0.20
C#
public sealed class StageOrderComparer : Comparer<Stage>
Inheritance
Object    ComparerStage    StageOrderComparer

Заметки

Правило сортировки.

Сортировка сначала разделяет все этапы по группам. Сортировка для групп происходит по паре (StageGroupOrder, StageGroupID), что позволяет получить уникальность каждого элемента и стабильность сортировки.

В каждой группе проводится сортировка по следующим признакам:

AtFirst & !CanChangeOrder

AtFirst & CanChangeOrder

Unspecified & CanChangeOrder

AtLast & CanChangeOrder

AtLast & !CanChangeOrder

Unspecified & !CanChangeOrder - положение не меняют.

Внутри каждой такой подгруппы производится дополнительная сортировка по TemplateOrder. Это поле хранит TemplateOrder из карточки шаблона этапов KrStageTemplates. Данный TemplateOrder не имеет отношения к обычному Order в таблице этапов карточки.

Последним ключом сортировки является TemplateStageOrder этапов из шаблона. Это необходимо для переноса порядка сортировки из дочернего маршрута шаблона в целый маршрут документа.

Важным свойством является стабильность [!:Enumerable.OrderBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>)] сортировки. Источник: https://docs.microsoft.com/ru-ru/dotnet/api/system.linq.enumerable.orderby абзац "комментарии", предпоследнее предложение. "This method performs a stable sort; that is, if the keys of two elements are equal, the order of the elements is preserved." Это позволяет при сортировке сохранить порядок Unspecified этапов таким, каким его указал пользователь.

Конструкторы

StageOrderComparerИнициализирует новый экземпляр класса StageOrderComparer

Свойства

Методы

CompareWhen overridden in a derived class, performs a comparison of two objects of the same type and returns a value indicating whether one object is less than, equal to, or greater than the other.
(Переопределяет ComparerTCompare(T, T))
EqualsDetermines whether the specified object is equal to the current object.
(Унаследован от Object)
FinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Унаследован от Object)
GetHashCodeServes as the default hash function.
(Унаследован от Object)
GetTypeGets the Type of the current instance.
(Унаследован от Object)
MemberwiseCloneCreates a shallow copy of the current Object.
(Унаследован от Object)
ToStringReturns a string that represents the current object.
(Унаследован от Object)

См. также