Перейти к содержанию

API скриптов

В данном разделе представлена информация о свойствах и методах, которые могут использоваться при написании сценариев.

Доступные свойства:

  • Сontext - контекст выполнения в обработчике WorkflowEngine.

    // Меняем у экземпляра процесса имя Context.ProcessInstance.Name = "New name for process";

  • DbScope - объект, обеспечивающий доступ к базам данных.

    // Создаем новое подключение к базе по другому connectionString using (dbScope.CreateNew("SomeConnectionString)) { ... }

  • Container - IoC-контейнер для получения любых необходимых зависимостей в рамках системы.

    // Резолвим объект из Unity-контейнера Container.Resolve<IRoleRepository>();

  • ValidationResult - результат валидации. В него можно записывать данные, которые будут отображены пользователю после выполнения обработки.

    // Добавляем в результат валидации ответ обработки ValidationResult.AddInfo(this, "Some process answer");

  • Session - сессия текущего пользователя.

    // Получаем из сессии имя текущего сотрудника var userName = Session.User.Name;

  • StoreCardObject - объект карточки, в контексте сохранения которой происходит обработка процесса.

    // Получаем задание из карточки, переданной из клиента, которое было завершено StoreCardObject.Tasks.FirstOrDefault(x => x.Action == CardTaskAction.Completed);

  • CardObject - объект карточки, в контексте которой происходит выполнение процесса. Данный объект содержит экземпляр карточки после основного сохранения и будет сохранен по окончанию обработки в случае, если в нем есть изменения. Данное свойство устарело, рекомендуется использовать метод GetCardObjectAsync.

    // Проверяем, есть ли в карточке файлы if (CardObject.Files.Count > 0) { ... }

  • CardID - идентификатор карточки, в контексте которой происходит выполнение процесса.

  • Card - представление строковых секций карточки посредством dynamic-полей. Данное свойство устарело, рекомендуется использовать метод GetCardAsync.

    // Устанавливаем в секцию DocumentCommonInfo в поле Amount значение 10000 Card.DocumentCommonInfo.Amount = 10000;

  • Tables - представление коллекционных секций карточки посредством dynamic-полей. Данное свойство устарело, рекомендуется использовать метод GetTablesAsync.

    // Возвращает список строк в секции OutgoingRefDocs Tables.OutgoingRefDocs.Count

  • Tasks - список текущих активных заданий в контексте обработки. Список никогда не равен null. Через данное свойство списком можно также управлять.

    // Устанавливаем во все новые задания значение в определенное поле foreach(var task in Tasks) { if(task.State == CardRowState.Inserted) { task.Card.Sections["MagicSection"].RawFields["MagicNumber"] = 42; } }

  • Task - возвращает первое задание из списка текущий активных заданий. Возвращает null, если список пустой. Может использоваться, например, для получения данных завершаемого пользователем задания, т.к. это задание добавляется в Tasks первым.

    // Записываем в сигнал комментарий завершаемого задания if(Task != null) { Signal.Comment = Task.Section["KrTask"].RawFields.TryGet<string>("Comment"); }

  • FileContainer - контейнер с файлами карточки, в контексте которой происходит работа с процессом. Данное свойство устарело, рекомендуется использовать метод GetFileContainerAsync.

    // Добавляем файл в карточку с именем Test.txt и текстом "Новый файл" FileContainer .BuildFile("Test.txt") .SetContentText("Новый файл", System.Text.Encoding.Default) .AddWithNotification();

  • Action - представление параметров текущего действия посредством dynamic-полей.

    // Устанавливаем в текущем действии в параметр SomeParam строковое значение "Value" Action.SomeParam = "Value";

  • ActionObject - объект текущего действия. Имеет тип WorkflowActionStateStorage.

    // записываем в переменную идентификатор текущего действия var actionID = ActionObject.ID;

  • ActionHash - параметры текущего действия в виде структуры IDictionary<string, object>.

    // Устанавливаем в текущем действии в параметр SomeParam строковое значение "Value" ActionHash["SomeParam"] = "Value";

  • Node - представление параметров текущего экземпляра узла посредством dynamic-полей.

    // Устанавливаем в текущем узле в параметр SomeParam строковое значение "Value" Node.SomeParam = "Value";

  • NodeObject - объект текущего экземпляра узла. Имеет тип WorkflowNodeStateStorage.

    // записываем в переменную идентификатор текущего узла var nodeID = NodeObject.ID;

  • NodeHash - параметры текущего экземпляра узла в виде структуры IDictionary<string, object>.

    // Устанавливаем в текущем узле в параметр SomeParam строковое значение "Value" NodeHash["SomeParam"] = "Value";

  • Process - представление параметров текущего экземпляра процесса посредством dynamic-полей.

    // Устанавливаем в текущем процессе в параметр SomeParam строковое значение "Value" Process.SomeParam = "Value";

  • ProcessObject - объект текущего экземпляра процесса. Имеет тип WorkflowProcessStateStorage.

    // записываем в переменную идентификатор текущего процесса var processID = ProcessObject.ID;

  • ProcessHash - параметры текущего экземпляра процесса в виде структуры IDictionary<string, object>.

    // Устанавливаем в текущем процессе в параметр SomeParam строковое значение "Value" ProcessHash["SomeParam"] = "Value";

  • Signal - представление параметров текущего сигнала посредством dynamic-полей.

    // Устанавливаем в текущем сигнале в параметр SomeParam строковое значение "Value" Signal.SomeParam = "Value";

  • SignalObject - объект сигнала, который в данный момент обрабатывается.

    // Устанавливаем в текущем сигнале тип сигнала CustomSignalType SignalObject.Type = "CustomSignalType";

  • SignalHash - параметры текущего сигнала в виде структуры IDictionary<string, object>.

    // Устанавливаем в текущем сигнале в параметр SomeParam строковое значение "Value" SignalHash["SomeParam"] = "Value";

  • Cancel - значение типа bool, которое определяет, нужно ли остановить обработку текущего сигнала.

    // Отменяет обработку сигнала Cancel = true;

Доступные методы:

  • GetCardObjectAsync - метод для получения объекта карточки, в контексте которой происходит выполнение процесса. Данный метод возвращает экземпляр карточки после основного сохранения, а все изменения данного экземпляра будут сохранены по окончанию обработки.

    // Проверяем, есть ли в карточке файлы var cardObj = await this.GetCardObjectAsync(); if (cardObj.Files.Count > 0) { ... }

  • GetCardAsync - метод возвращает представление строковых секций карточки посредством dynamic-полей.

    // Устанавливаем в секцию DocumentCommonInfo в поле Amount значение 10000 (await GetCardAsync()).DocumentCommonInfo.Amount = 10000;

  • GetTablesAsync - метод возвращает представление коллекционных секций карточки посредством dynamic-полей.

    // Возвращает список строк в секции OutgoingRefDocs (await GetTablesAsync()).OutgoingRefDocs.Count

  • GetFileContainerAsync - метод возвращает контейнер с файлами карточки, в контексте которой происходит работа с процессом.

    // Добавляем файл в карточку с именем Test.txt и текстом "Новый файл" (await GetFileContainerAsync()) .BuildFile("Test.txt") .SetContentText("Новый файл", System.Text.Encoding.Default) .AddWithNotification();

  • SetMainCard(Guid cardID) - метод для установки основной карточки процесса по ее ID.

    var amount = Card.DocumentCommonInfo.Amount; // вернет сумму из текущей карточки, к которой относится процесс SetMainCard(someCardID); // устанавливаем новую карточку как текущую var amount2 = Card.DocumentCommonInfo.Amount; // вернет сумму из другой карточки с идентификатором someCardID, к которой теперь относится процесс

  • GetTask(Guid taskID) - метод для получения объекта задания по его ID из карточки. Если задание не найдено, метод вернет null.

    // Получаем родительское задание для текущего задания в контексте обработки, если для него есть родительское задание if (Task?.ParentRowID.HasValue) { var parentTask = GetTask(Task.ParentRowID); }

  • AddInfo(string text) - метод для добавления сообщения в ValidationResult с уровнем Info.

    // Добавляем сообщение в ValidationResult AddInfo("Text to user");

  • AddInfo(string format, params object[] args) - метод для добавления сообщения с форматом в ValidationResult с уровнем Info.

  • AddWarning(string text) - метод для добавления сообщения в ValidationResult с уровнем Warning.

  • AddWarning(string format, params object[] args) - метод для добавления сообщения с форматом в ValidationResult с уровнем Warning.

  • AddError(string text) - метод для добавления сообщения в ValidationResult с уровнем Error.

  • AddError(string format, params object[] args) - метод для добавления сообщения с форматом в ValidationResult с уровнем Error.

API скриптов в условиях для кнопок бизнес-процессов

В связи с тем, что проверка условий на доступ к тайлам осуществляется вне контекста выполнения обработки процесса, API скриптов в условиях для тайлов упрощено.

Доступные свойства:

  • DbScope - объект, обеспечивающий доступ к базам данных.

  • Container - IoC-контейнер для получения любых необходимых зависимостей в рамках системы.

  • Session - сессия текущего пользователя.

  • CardObject - объект карточки, в контексте которой происходит выполнение нажатия кнопки. Не задан для тайлов запуска глобального процесса.

  • CardID - идентификатор карточки, в контексте которой происходит выполнение процесса. Не задан для тайлов запуска глобального процесса.

  • Card - представление строковых секций карточки посредством dynamic-полей. Не задан для тайлов запуска глобального процесса.

  • Tables - представление коллекционных секций карточки посредством dynamic-полей. Не задан для тайлов запуска глобального процесса.

  • Context - общий контекст компиляции для условий кнопок бизнес-процесса. Имеет тип IWorkFlowEngineTileContext. Данный объект контекста имеет следующие свойства:

    • Info - можно использовать как хранилище любой дополнительной информации. Имеет тип IDictionary<string, object?>.
    • ProcessInstances - здесь хранятся экземпляры бизнес-процессов по идентификатору процесса и идентификатору карточки. Используется в качестве кэша для методов TryGetProcessInstanceAsync и GetAllProcessInstancesAsync, описанных ниже. Имеет тип IDictionary<(Guid ProcessTemplateID, Guid? CardID), IList<WorkflowProcessStateStorage>>.

Доступные методы:

  • TryGetProcessInstanceAsync - получает экземпляр бизнес-процесса, к которому принадлежит кнопка или null, если экземпляров процессов для кнопки нет.

    #script // Получаем, активный процесс для кнопки. var processInstance = await this.TryGetProcessInstanceAsync(); if (processInstance is WorkflowProcessStateStorage instance) { ... }

Note

Метод TryGetProcessInstanceAsync получает первый экземпляр бизнес-процесса. Когда экземпляров несколько и/или необходимо получить все, используйте метод GetAllProcessInstancesAsync.

  • GetAllProcessInstancesAsync - получает все экземпляры бизнес-процессов, к которым принадлежит кнопка или пустой список, если экземпляров процессов для кнопки нет.

    #script // Получаем, все активные процессы для кнопки. var processInstances = await this.GetAllProcessInstancesAsync(); foreach (WorkflowProcessStateStorage instance in processInstances) { ... }

Back to top