IKrScript - интерфейс

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

Definition

Пространство имён: Tessa.Extensions.Default.Server.Workflow.KrCompilers.UserAPI
Сборка: Tessa.Extensions.Default.Server (в Tessa.Extensions.Default.Server.dll) Версия: 3.6.0.22
C#
public interface IKrScript : ISealable, 
	IKrProcessItemScript, IKrProcessExecutionScript, IKrProcessVisibilityScript, IContextChangeableScript, IExtensionContext
Implements
IContextChangeableScript, IKrProcessExecutionScript, IKrProcessItemScript, IKrProcessVisibilityScript, IExtensionContext, ISealable

Заметки

Для каждого свойства/метода приведено описание, а также контексты, в которых доступен данный член. Если в описании не указан контекст, в котором допустимо использовать, значит свойство/метод допустимо использовать в любом контексте.
Виды скриптов:
  • Скрипт выполнения этапа - скрипты, находящиеся в строке этапа в шаблоне этапов. Запускаются в процессе выполнения;
  • Скрипт построения шаблона этапов - скрипты на основной вкладке шаблона этапов. Запускаются при построении маршрута;
  • Скрипт построения группы этапов - скрипты на основной вкладке группы этапов. Запускаются при построении маршрута;
  • Скрипт выполнения группы этапов - скрипты на основной вкладке группы этапов. Запускаются при выполнении маршрута;
  • Скрипт видимости кнопки процесса - скрипты на основной вкладке кнопки процесса. Запускаются при загрузке карточки, включенной в типовой процесс;
  • Скрипт выполнения процесса - скрипты на основной вкладке процесса. Запускаются при запуске вторичного процесса.
Режимы:
  • Синхронный режим - процесс запускается полностью в памяти. Создание процессного сателлита не происходит;
  • Асинхронный режим - процесс запускается с заполнением процессного сателлита. Для основного процесса контекстуальный и процессный сателлит совпадают, для вторичных создаются отдельные KrSecondarySatellite.
Контексты запуска:
  • Глобальный - процесс запускается без карточки. Такой процесс может быть только синхронным. Например, нажатие на кнопку процесса в правой панели.
  • Локальный - процесс запускается по карточке. Это основной процесс и кнопки процесса в левой панели.

Свойства

Action Возвращает информацию о конфигурации текущего действия.
Button Возвращает кнопку, по нажатию на которую был запущен текущий процесс.
CancellationTokenОбъект, посредством которого можно отменить асинхронную задачу.
(Унаследован от IExtensionContext)
CanChangeOrder Возвращает или задаёт значение, показывающее, можно ли менять порядок этапов шаблона.
CardCache Потокобезопасный кэш с карточками и дополнительными настройками.
CardContext Возвращает или задаёт контекст расширения, в рамках которого выполняется этап.
CardID Возвращает или задаёт идентификатор текущей карточки документа.
CardMetadata Содержит метаинформацию, необходимую для использования типов карточек совместно с пакетом карточек.
CardType Возвращает или задаёт тип текущей карточки.
CardTypeCaption Возвращает отображаемое название типа текущей карточки документа.
CardTypeID Возвращает идентификатор типа текущей карточки документа.
CardTypeName Возвращает название типа текущей карточки документа.
Confirmed Признак того, что выполняемый элемент подтвержден условием построения.
CurrentStages Возвращает подмножество этапов, относящееся только к текущему скрипту. Для скрипта выполнения этапа - это коллекция из одного текущего этапа. Для скрипта построения шаблона этапов - это коллекция из всех этапов текущего шаблона. Для скрипта построения и выполнения группы этапов - это коллекция из все этапов текущей группы. Коллекция является неизменяемой. Если необходимо добавить этап, то следует воспользоваться методов AddStageAsync(String, StageTypeDescriptor, Int32). В случае, когда нужно удалить этап, достаточно выполнить Stages.RemoveAll(Predicate); Этапы в данной коллекции являются изменяемыми.
Db Объект, используемый для выполнения SQL-запросов к текущей БД. По умолчанию уже открыто соединение к основной БД системы, но посредством вызова using (DbScope.CreateNew("connectionAlias")) { ... } можно изменить базу данных, доступную по свойству Db, может быть изменена. Пример выполнения запроса: int result = Db.SetCommand("select @Result", Db.Parameter("Result", 42)).LogCommand().ExecuteScalar<int>(). Следует учесть, что Db.Parameter("Result", 0) ведет себя нелогично и определит параметр типа nvarchar со значением DbNull, т.к. будет использована некорректная перегрузка метода Db.Parameter(). В связи с этим добавьте преобразование типа значения к object: Db.Parameter("Result", (object)0).
DbScope Объект, обеспечивающий доступ к базам данных. Позволяет открывать соединение к другим БД: using (DbScope.CreateNew("connectionAlias")) { ... }. Также определяет тип СУБД, которая используется системой: DbScope.GetDbmsAsync. Вместо вызова DbScope.Db для простоты рекомендуется использоваться свойство Db.
DifferentContextCardID Идентификатор контекста, в котором необходимо выполнить этап вместо текущего.
(Унаследован от IContextChangeableScript)
DifferentContextProcessInfo Дополнительная информация о процессе, выполняемом в другом контексте.
(Унаследован от IContextChangeableScript)
DifferentContextSetupScriptType Место, где был установлен признак выполнения в другом контексте.
(Унаследован от IContextChangeableScript)
DifferentContextWholeCurrentGroup Признак того, что необходимо выполнить в контексте карточки DifferentContextCardID всю группу.
(Унаследован от IContextChangeableScript)
DocTypeID Возвращает или задаёт идентификатор типа документа для текущей карточки, если тип карточки поддерживает типы документов.
Info Возвращает произвольное хранилище для пользовательских данных. Не является персистентным хранилищем, срок жизни не регламентируется.
InitialStages Возвращает набор этапов на момент начала текущей обработки запроса подсистемой маршрутов. Используется для поиска изменений в маршруте за время обработки запроса. Использовать в скриптах напрямую не рекомендуется.
InitiationCause Возвращает или задаёт причину запуска обработчика процесса.
Initiator Возвращает или задаёт инициатора (автора) основного процесса.
InitiatorComment Возвращает или задаёт комментарий инициатора основного процесса.
IsSealedПризнак того, что объект был защищён от изменений.
(Унаследован от ISealable)
IsStagesReadonly Возвращает или задаёт значение, показывающее, можно ли менять настройки этапов в шаблоне.
KrComponents Возвращает или задаёт включенные настройки типового решения для текущей карточки.
KrScope Объект для работы с текущим контекстом расширений типового расширения и использования разделяемых объектов карточек.
KrScriptType Текущее выполняемое действие.
KrTypesCache Кэш по типам карточек и документов, содержащих информацию по типовому решению.
MainCardAccessStrategy Возвращает или задаёт стратегия загрузки основной карточки.
MainProcessInfo Возвращает dynamic-обёртку над хранилищем Info основного процесса текущей карточки.
MainProcessInfoStorage Возвращает хранилище Info основного процесса текущей карточки.
Order Возвращает или задаёт порядок сортировки шаблона этапов. -1 если выполнение происходит без конкретного шаблона.
Position Возвращает или задаёт значение определяющее положение относительно этапов, добавленных вручную.
ProcessHolderSatellite Возвращает или задаёт процессный сателлит для текущего процесса. Процессный сателлит содержит в себе список этапов с секции KrStages с состояниями и настройками. Для основного процесса процессный сателлит совпадает с контекстуальным
ProcessID Возвращает или задаёт идентификатор текущего процесса.
ProcessInfo Возвращает dynamic-обёртку состояния (Info) процесса. Представляет из себя персистентное хранилище произвольных данных о процессе. Может использоваться различными этапами для взаимодействия между собой. Пример использования: ProcessInfo.CustomField = 5
ProcessInfoStorage Возвращает хранилище состояния (Info) процесса. Представляет из себя персистентное хранилище произвольных данных о процессе. Может использоваться различными этапами для взаимодействия между собой. Пример использования: ProcessInfoStorage["CustomField"] = 5
ProcessOwner Возвращает или задаёт владельца основного процесса.
ProcessTypeName Возвращает или задаёт тип текущего процесса.
PureProcess Возвращает информацию о конфигурации текущего вторичного процесса.
SecondaryProcess Возвращает или задаёт информацию о конфигурации текущего вторичного процесса.
Session Сессия текущего пользователя. Используйте Session.User.ID, чтобы получить идентификатор текущего пользователя.
Stage Возвращает или задаёт текущий этап.
StageGroupID Возвращает или задаёт идентификатор группы этапов для текущего скрипта.
StageGroupName Возвращает или задаёт название текущей группы этапов.
StageGroupOrder Возвращает или задаёт порядок сортировки текущей группы этапов.
StageInfo Возвращает dynamic-обёртку состояния (Info) текущего этапа. Представляет из себя персистентное хранилище произвольных данных об этапе. Может использоваться скриптами и обработчиком этапа для хранения данных между вызовами. Пример использования: StageInfo.CustomField = 5
StageInfoStorage Возвращает хранилище состояния (Info) текущего этапа. Представляет из себя персистентное хранилище произвольных данных об этапе. Может использоваться скриптами и обработчиком этапа для хранения данных между вызовами. Пример использования: StageInfoStorage["CustomField"] = 5
Stages Список этапов в маршруте.
StagesContainer Возвращает или задаёт контейнер этапов, выполняющий составление маршрута и сортировку маршрутов при пересчете. Использовать в скриптах напрямую не рекомендуется.
StageSerializer Сериализатор этапов.
TaskHistoryManager Текущий используемый менеджер истории заданий.
TaskHistoryResolver Объект для работы с группами истории заданий.
TemplateID Возвращает или задаёт идентификатор текущего шаблона этапов.
TemplateName Возвращает или задаёт название текущего шаблона этапов.
TypeID Возвращает эффективный идентификатор типа. Это тип документа, если типы документов включены для типа карточки, иначе тип карточки.
UnityContainer IoC-контейнер для получения любых необходимых зависимостей в рамках системы. Для более удобного использования есть метод Resolve<T>, о котором написано ниже. Пример использования: var cardRepository = UnityContainer.Resolve<ICardRepository>().
ValidationResult Возвращает или задаёт результат валидации текущей обработки запроса.
WorkflowProcess Возвращает или задаёт объектную модель текущего процесса. Содержит полное представление процесса, основанное на контекстуальном и процессном сателлитах.
WorkflowProcessInfo Возвращает или задаёт информацию о процессе из WorkflowAPI.
WorkflowSignalInfo Возвращает информацию о сигнале из WorkflowAPI.
WorkflowTaskInfo Возвращает информацию о задании из WorkflowAPI.

Методы

AddError Добавить сообщение в ValidationResult с уровнем Error.
AddInfo Добавить сообщение в ValidationResult с уровнем Info.
AddPerformer(Guid, String, Stage, Int32, Boolean) Добавляет исполнителя в этап с режимом множественных исполнителей Multiple. Исполнитель будет добавлен только если на указанном месте для вставки стоит другой исполнитель.
AddPerformer(String, String, Stage, Int32, Boolean) Добавляет исполнителя для этапа с режимом множественных исполнителей Multiple. Исполнитель будет добавлен только если на указанном месте для вставки стоит другой исполнитель.
AddStageAsync Добавляет новый этап в маршрут.
AddTaskHistoryRecordAsync(Guid, String, String, Guid, String, NullableGuid, String, NullableInt32, NullableInt32, NullableTimeSpan, FuncCardTaskHistoryItem, ValueTask) Асинхронно добавляет запись в текущую группу истории заданий.
AddTaskHistoryRecordAsync(NullableGuid, Guid, String, String, Guid, String, NullableGuid, String, NullableInt32, NullableInt32, NullableTimeSpan, FuncCardTaskHistoryItem, ValueTask) Асинхронно добавляет запись в указанную группу истории заданий.
AddWarning Добавить сообщение в ValidationResult с уровнем Warning.
AfterAsync Сценарий постобработки.
(Унаследован от IKrProcessItemScript)
BeforeAsync Сценарий инициализации.
(Унаследован от IKrProcessItemScript)
CardRowsAsync Возвращает строго типизированную коллекцию строк из секции основной карточки.
ConditionAsync Сценарий C#-условия.
(Унаследован от IKrProcessItemScript)
ContextChangePending Смена контекста запланирована с помощью метода RunNextStageInContextAsync(Guid, Boolean, IDictionaryString, Object)
DoNotChangeContext Отменить смену контекста.
ExecutionAsync Метод содержащий условие выполнимости процесса.
(Унаследован от IKrProcessExecutionScript)
ForEachStage Выполняет указанное действие над строкой (из коллекционной секции KrStages) этапа текущего процесса в обход объектной модели. Секция KrStages получается из ProcessHolder-сателлита.
ForEachStageInMainProcessAsync Асинхронно выполняет указанное действие над строкой (из коллекционной секции KrStages) этапа основного процесса карточки в обход объектной модели. Секция KrStages получается из контекстуального сателлита.
GetCardAsync Асинхронно возвращает dynamic-обёртку над строковыми секциями карточки документа. Может использоваться для простого и лаконичного обращения к строковым секциями.
Например:
Card.DocumentCommonInfo.Amount
Card.MyCustomSection.CustomField
GetCardObjectAsync Асинхронно возвращает полный объект текущей карточки документа.
GetCardTablesAsync Асинхронно возвращает dynamic-обёртку над коллекционными секциями карточки документа. Может использоваться для простого и лаконичного обращения к коллекционным секциями.
Например:
Card.Performers[0].UserID
GetContextualSatelliteAsync Асинхронно возвращает контекстуальный сателлит KrSatelliteTypeID текущей карточки. Данный сателлит является основным сателлитом для карточки в подсистеме маршрутов, содержит состояние карточки и инициатора, а также маршрут для вкладки "Маршруты" (т.е. контекстуальный сателлит по совместительству процессный для основного процесса).
GetCurrentTaskHistoryGroupAsync Асинхронно возвращает идентификатор текущей группы истории заданий.
GetCycleAsync Асинхронно возвращает номер текущего цикла. Является прокси для поля в ProcessInfo.Cycle основного процесса. В вторичных процессах каждое обращение вызывает сериализацию/десериализацию состояния основного процесса, поэтому следует минимизировать обращения к данному методу.
GetFilesAsync Асинхронно возвращает список файлов карточки.
GetNewCardAccessStrategy Возвращает стратегию загрузки карточки, получаемой из Info этапа по ключу NewCard.
GetNewCardAsync Асинхронно возвращает карточку из Info этапа по ключу NewCard.
GetOrAddStageAsync Возвращает или добавляет новый этап в маршрут, если он отсутствует в маршруте.
GetPrimaryProcessInfoAsync Асинхронно возвращает хранилище Info для основного процесса карточки.
GetProcessInfoForBranch(Guid) Возвращает хранилище Info ветки вторичного процесса перед стартом. Актуально только для этапа ветвления.
GetProcessInfoForBranch(String) Возвращает хранилище Info ветки вторичного процесса перед стартом. Актуально только для этапа ветвления.
GetSecondaryProcessInfoAsync Асинхронно возвращает хранилище Info для вторичного процесса карточки.
GetVersionAsync Асинхронно возвращает версию карточки.
HasKrComponents(KrComponents) Проверяет поддерживаются ли указанные компоненты настроек типового решения для текущей карточки.
HasKrComponents(KrComponents) Проверяет поддерживаются ли указанные компоненты настроек типового решения для текущей карточки.
InvokeExtraAsync(String, Object, Boolean) Асинхронно выполняет дополнительный метод, приложенный к текущему типу скрипта.
InvokeExtraAsyncT(String, Object, Boolean) Асинхронно выполняет дополнительный метод, приложенный к текущему типу скрипта и получить его результат.
IsMainProcess Текущий выполняемый процесс является основным (KrProcess)
IsMainProcessInactiveAsync Все этапы основного процесса (KrProcess) для текущей карточки находятся в состоянии Inactive .
IsMainProcessStartedAsync Возвращает признак, показывающий, что для текущей карточки запущен основной процесс (KrProcess).
NewCardAsync Возвращает dynamic обёртку над строковыми секциями карточки из Info этапа по ключу NewCard.
NewCardTablesAsync Возвращает dynamic обёртку над коллекционными секциями карточки из Info этапа по ключу NewCard.
RemovePerformer(Guid, Stage, Boolean) Удаляет исполнителя по идентификатору указанной роли для этапа с режимом множественных исполнителей Multiple.
RemovePerformer(Int32, Stage, Boolean) Удаляет исполнителя расположенному по указанному порядковому индексу для этапа с режимом множественных исполнителей Multiple.
RemovePerformer(String, Stage, Boolean) Удаляет исполнителя по роли для этапа с режимом множественных исполнителей Multiple.
RemoveStage Удаляет этап из маршрута, добавленный ранее в скриптах.
ResetSinglePerformer Сбрасывает исполнителя для этапа с режимом одиночного исполнителя Single.
ResolveT Получить из UnityContainer зависимость.
ResolveTaskHistoryGroup Возвращает группу истории заданий.
RunAfterAsync Выполняет сценарий постобработки AfterAsync.
(Унаследован от IKrProcessItemScript)
RunBeforeAsync Выполняет сценарий инициализации BeforeAsync.
(Унаследован от IKrProcessItemScript)
RunConditionAsync Выполняет C#-условие ConditionAsync.
(Унаследован от IKrProcessItemScript)
RunExecutionAsync Выполняет условие выполнимости процесса.
(Унаследован от IKrProcessExecutionScript)
RunNextStageInContextAsync Выполнить этап в другом контексте, т.е. в рамках другой карточки. Процесс будет собран и выполнен как синхронный вторичный процесс. Если метод вызывается в Before (Инициализация), то контекст будет переключен для текущего этапа. Если метод вызывается в After (Постобработка), то контекст будет переключен для следующего этапа.
RunVisibilityAsync Выполняет метод определения условия видимости.
(Унаследован от IKrProcessVisibilityScript)
SealЗащищает объект от изменений.
(Унаследован от ISealable)
SetContextualSatellite Задаёт контекстуальный сателлит KrSatelliteTypeID текущей карточки. Данный сателлит является основным сателлитом для карточки в подсистеме маршрутов, содержит состояние карточки и инициатора, а также маршрут для вкладки "Маршруты" (т.е. контекстуальный сателлит по совместительству процессный для основного процесса).
SetCycleAsync Асинхронно задаёт номер текущего цикла. Является прокси для поля в ProcessInfo.Cycle основного процесса. В вторичных процессах каждое обращение вызывает сериализацию/десериализацию состояния основного процесса, поэтому следует минимизировать обращения к данному методу.
SetSinglePerformer(Guid, String, Stage, Boolean) Устанавливает исполнителя для этапа с режимом одиночного исполнителя Single.
SetSinglePerformer(String, String, Stage, Boolean) Устанавливает исполнителя для этапа с режимом одиночного исполнителя Single.
SetStageStateAsync Асинхронно устанавливает состояние этапа в строке коллекционной секции KrStages.
Show(IDictionaryString, Object) Вывести содержимое словаря в ValidationResult с уровнем Info.
Show(IEnumerablePerformer) Вывести информацию о нескольких исполнителях в ValidationResult с уровнем Info.
Show(IEnumerableStage) Вывести информацию о нескольких этапах в ValidationResult с уровнем Info.
Show(IStorageDictionaryProvider) Вывести содержимое хранилища в ValidationResult с уровнем Info.
Show(Object) Вывести объект в ValidationResult с уровнем Info.
Show(Performer) Вывести информацию об исполнителе в ValidationResult с уровнем Info.
Show(Stage) Вывод информации об этапе в ValidationResult с уровнем Info.
Show(String, String) Вывести сообщение(message) с уточнением(details) в ValidationResult с уровнем Info.
VisibilityAsync Метод определяющий условие видимости.
(Унаследован от IKrProcessVisibilityScript)

См. также