StageOrderComparer - класс
Объект, выполняющий сортировку этапов.
Пространство имён: Tessa.Extensions.Default.Server.Workflow.KrCompilers.UserAPIСборка: Tessa.Extensions.Default.Server (в Tessa.Extensions.Default.Server.dll) Версия: 3.6.0.20
public sealed class StageOrderComparer : Comparer<Stage>
Public NotInheritable Class StageOrderComparer
Inherits Comparer(Of Stage)
public ref class StageOrderComparer sealed : public Comparer<Stage^>
[<SealedAttribute>]
type StageOrderComparer =
class
inherit Comparer<Stage>
end
- Inheritance
- Object ComparerStage StageOrderComparer
Правило сортировки.
Сортировка сначала разделяет все этапы по группам.
Сортировка для групп происходит по паре (
StageGroupOrder,
StageGroupID),
что позволяет получить уникальность каждого элемента и стабильность сортировки.
В каждой группе проводится сортировка по следующим признакам:
AtFirst & !
CanChangeOrderAtFirst &
CanChangeOrderUnspecified &
CanChangeOrderAtLast &
CanChangeOrderAtLast & !
CanChangeOrderUnspecified & !
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 этапов таким, каким его указал пользователь.
Compare | When 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)) |
Equals | Determines whether the specified object is equal to the current object. (Унаследован от Object) |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Унаследован от Object) |
GetHashCode | Serves as the default hash function. (Унаследован от Object) |
GetType | Gets the Type of the current instance. (Унаследован от Object) |
MemberwiseClone | Creates a shallow copy of the current Object. (Унаследован от Object) |
ToString | Returns a string that represents the current object. (Унаследован от Object) |