ProcessEngineService.svc — веб-сервис, который реализован в сервисной модели Creatio для запуска бизнес-процессов. Веб-сервис используется при интеграции внешнего приложения с Creatio.
Запустить бизнес-процесс из внешнего приложения
Доступ к объектам Creatio предоставляет веб-сервис ProcessEngineService.svc.
Функциональность сервиса ProcessEngineService.svc реализована в классе Terrasoft.Core.Service.Model.ProcessEngineService. Основные методы сервиса ProcessEngineService.svc:
- Execute() — запускает бизнес-процесс. Позволяет передать набор входящих параметров бизнес-процесса и вернуть результат его выполнения.
- ExecProcElByUId() — запускает отдельный элемент бизнес-процесса. Запускать на выполнение можно только элемент выполняющегося процесса.
Запустить бизнес-процесс из front-end части
Способы запуска бизнес-процесса из front-end части:
- С помощью метода executeProcess() модуля ProcessModuleUtilities.
- С помощью метода execute() класса Terrasoft.RunProcessRequest.
Запустить бизнес-процесс с помощью метода executeProcess()
Чтобы запустить бизнес-процесс из front-end части, используйте метод executeProcess() модуля ProcessModuleUtilities пакета NUI. Этот модуль предоставляет удобный интерфейс для выполнения запросов к сервису ProcessEngineService.svc.
Чтобы запустить бизнес-процесс из схемы клиентского модуля:
- В модуль страницы, из которой вызывается сервис, в качестве зависимости подключите модуль ProcessModuleUtilities.
- Вызовите метод executeProcess(args) модуля ProcessModuleUtilities. В качестве параметра укажите объект args.
Свойства объекта args:
- sysProcessName — имя вызываемого процесса (необязательное свойство, если указано свойство sysProcessId).
- sysProcessId — уникальный идентификатор вызываемого процесса (необязательное свойство, если указано свойство sysProcessName).
- parameters — объект, свойствами которого являются входящие параметры вызываемого процесса.
Запустить бизнес-процесс с помощью метода execute()
-
Создайте класс RunProcessRequest. В этом классе укажите свойства запускаемого процесса и необходимые результирующие параметры.
- schemaName — имя вызываемого процесса (поле Код (Code) дизайнера процессов).
- schemaUId — уникальный идентификатор вызываемого процесса.
- parameterValues — объект, свойствами которого являются входящие параметры вызываемого процесса.
- resultParameterNames — массив параметров, значения которых необходимо получить при завершении процесса.
- Вызовите метод execute() класса RunProcessRequest.
Запустить бизнес-процесс из back-end части
Чтобы запустить бизнес-процесс из back-end части, вызовите методExecute() интерфейса Terrasoft.Core.Process.IProcessExecutor. Интерфейс IProcessExecutor предоставляет набор перегрузок метода Execute() для решения пользовательских задач. Интерфейс IProcessExecutor описан в Библиотеке .NET классов.
Запустить бизнес-процесс без параметров
Способы запуска бизнес-процесса без передачи и получения параметров приведены в таблице ниже.
processSchemaName — название схемы бизнес-процесса. | ||
processSchemaUId — уникальный идентификатор схемы бизнес-процесса. |
Запустить бизнес-процесс с передачей входящих параметров
Способы запуска бизнес-процесса с передачей входящих параметров приведены в таблице ниже.
processSchemaName — название схемы бизнес-процесса. parameterValues — коллекция входящих параметров типа "ключ-значение". В коллекции параметров ключ — имя параметра в бизнес-процессе, значение — значение параметра, которое приведено к строковому типу. |
||
processSchemaUId — уникальный идентификатор схемы бизнес-процесса. parameterValues — коллекция входящих параметров типа "ключ-значение". |
Примеры запуска бизнес-процесса представлены ниже.
Запустить бизнес-процесс с получением одного исходящего параметра
Способы запуска бизнес-процесса с получением одного исходящего параметра приведены в таблице ниже.
processSchemaName — название схемы бизнес-процесса. resultParameterName — название исходящего параметра. |
||
processSchemaName — название схемы бизнес-процесса. resultParameterName — название исходящего параметра. parameterValues — коллекция входящих параметров типа "ключ-значение". |
||
processSchemaUId — уникальный идентификатор схемы бизнес-процесса. resultParameterName — название исходящего параметра. |
||
processSchemaUId — уникальный идентификатор схемы бизнес-процесса. resultParameterName — название исходящего параметра. parameterValues — коллекция входящих параметров типа "ключ-значение". |
Примеры запуска бизнес-процесса представлены ниже.
Запустить бизнес-процесс с получением нескольких исходящих параметров
Способы запуска бизнес-процесса с получением нескольких исходящих параметров приведены в таблице ниже.
processSchemaName — название схемы бизнес-процесса. resultParameterNames — коллекция исходящих параметров. |
||
processSchemaName — название схемы бизнес-процесса. parameterValues — коллекция входящих параметров типа "ключ-значение". resultParameterNames — коллекция исходящих параметров. |
||
processSchemaUId — уникальный идентификатор схемы бизнес-процесса. resultParameterNames — коллекция исходящих параметров. |
||
processSchemaUId — уникальный идентификатор схемы бизнес-процесса. parameterValues — коллекция входящих параметров типа "ключ-значение". resultParameterNames — коллекция исходящих параметров. |
Примеры запуска бизнес-процесса представлены ниже.
Запуск бизнес-процесса с получением коллекции исходящих параметров возвращает объект типа ProcessDescriptor. Чтобы получить значения исходящих параметров, используйте свойство ResultParameterValues типа IReadOnlyDictionary<string, object> класса Terrasoft.Core.Process.ProcessDescriptor. Класс ProcessDescriptor описан в Библиотеке .NET классов.
1. Создать процесс добавления контакта
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлен бизнес-процесс.
- Перейдите в дизайнер процессов.
-
Заполните свойства бизнес-процесса:
- Название (Name) — "Add New External Contact".
- Код (Code) — "UsrAddNewExternalContact".
Для остальных свойств используйте значения по умолчанию.
-
Добавьте параметры бизнес-процесса.
С помощью параметров в процесс передаются данные добавляемого контакта — имя и телефон.
Значения параметров бизнес-процесса, которые необходимо заполнить, представлены в таблице ниже.
Заголовок
(Title)Код
(Code)Тип данных
(Data type)Параметр ContactName "Имя контакта" ("Contact Name") "ContactName" "Текст (50 символов)" ("Text (50 characters)") Параметр ContactPhone "Телефон контакта" ("Contact Phone") "ContactPhone" "Текст (50 символов)" ("Text (50 characters)") -
Добавьте элемент Задание-сценарий (ScriptTask).
-
Заполните значения свойств элемента:
- Название (Name) — "Add contact".
- Код (Code) — "ScriptTaskAddContact".
-
Реализуйте логику добавления нового контакта.
Чтобы редактировать код сценария, дважды щелкните по элементу на диаграмме. На панели настройки элемента откроется окно для ввода и редактирования программного кода.
-
- Нажмите на кнопку Сохранить (Save) на панели инструментов дизайнера процессов.
2. Создать процесс чтения всех контактов
Бизнес-процесс, который формирует перечень всех контактов, также содержит один элемент Задание-сценарий (ScriptTask).
Чтобы создать процесс чтения всех контактов:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлен бизнес-процесс.
- Перейдите в дизайнер процессов.
-
Заполните свойства бизнес-процесса:
- Название (Name) — "Get All Contacts".
- Код (Code) — "UsrGetAllContacts".
Для остальных свойств используйте значения по умолчанию.
-
Добавьте параметр бизнес-процесса.
Заполните значения параметра бизнес-процесса:
- Заголовок (Title) — "Contact List".
- Код (Code) — "ContactList".
- Тип данных (Data type) — "Строка неограниченной длины" ("Unlimited length text").
Параметр возвращает перечень всех контактов приложения в виде JSON-объекта.
-
Добавьте элемент Задание-сценарий (ScriptTask).
-
Заполните значения свойств элемента:
- Название (Name) — "Get all contacts".
- Код (Code) — "ScriptTaskGetAllContacts".
-
Реализуйте логику чтения контактов.
Чтобы редактировать код сценария, дважды щелкните по элементу на диаграмме. На панели настройки элемента откроется окно для ввода и редактирования программного кода.
-
- Нажмите на кнопку Сохранить (Save) на панели инструментов дизайнера процессов.
Результат выполнения примера
-
Запустить выполнение бизнес-процессов из строки браузера.
-
Запустите процесс создания нового контакта. Для этого в строку навигации браузера введите URL, который приведен ниже.
В результате в приложении будет добавлен новый контакт.
-
Запустите процесс чтения всех контактов. Для этого в строку навигации браузера введите URL, который приведен ниже.
В результате в окне браузера отображается JSON-объект, который содержит коллекцию контактов.
-
-
Запустить выполнение бизнес-процессов из консольного приложения.
Исходный код консольного пользовательского приложения, который предназначен для запуска бизнес-процессов с помощью сервиса ProcessEngineService.svc, доступен на GitHub.
- Выполните аутентификацию. Для этого используйте сервис аутентификации AuthService.svc. Используйте пример, который доступен в статье Реализовать аутентификацию на C#.
-
В исходный код класса Program добавьте строковое поле, которое содержит базовый URL сервиса.
-
В исходный код класса Program добавьте метод GET для выполнения запуска бизнес-процесса создания нового контакта.
-
В исходный код класса Program добавьте метод GET для выполнения запуска бизнес-процесса чтения вскх контактов Creatio.
-
Реализуйте вызов добавленныех методов в основном методе приложения после успешной аутентификации.
1. Реализовать пользовательский бизнес-процесс Проведение встречи
- Создайте бизнес-процесс Проведение встречи (Conducting a meeting). Для этого реализуйте пример, который приведен в статье Отправить email-сообщение при помощи процесса документации по настройке процессов.
-
Добавьте параметр бизнес-процесса.
Заполните значения параметра бизнес-процесса.
- Заголовок (Title) — "Meeting contact".
- Код (Code) — "ProcessSchemaContactParameter".
- Тип данных (Data type) — "Уникальный идентификатор" ("Unique identifier").
-
В свойство Контакт (Contact) действия процесса Позвонить клиенту (Call customer) добавьте входящий параметр "[#Meeting contact#]".
2. Реализовать пользовательское действие страницы контрагента
- Создать схему замещающей модели представления страницы контрагента. Для этого воспользуйтесь инструкцией, которая приведена в статье Добавить действие на страницу записи.
-
Добавьте локализуемую строку с текстом пункта меню, который планируется добавить.
- В контекстном меню узла Локализуемые строки (Localizable strings) нажмите кнопку .
-
Заполните свойства локализуемой строки.
- Код (Code) — "CallProcessCaption".
- Значение (Value) — "Назначить встречу" ("Schedule a meeting").
- Для добавления локализуемой строки нажмите Добавить (Add).
-
Реализуйте логику работы пункта меню.
- В качестве зависимости подключите модуль ProcessModuleUtilities.
-
В свойстве methods реализуйте методы:
- callCustomProcess() — метод-обработчик действия. Реализует метод executeProcess() модуля ProcessModuleUtilities, в который в качестве параметра передаются имя созданного бизнес-процесса и объект с проинициализированными входящими параметрами для процесса.
- isAccountPrimaryContactSet() — проверяет наличие у контрагента основного контакта.
- getActions() — переопределенный базовый метод. Возвращает коллекцию действий замещающей страницы.
Исходный код схемы замещающей модели представления страницы контрагента представлен ниже.
- На панели инструментов дизайнера модуля нажмите Сохранить (Save).
3. Реализовать пользовательское действие страницы раздела
- Создать схему замещающей модели представления страницы раздела. Для этого воспользуйтесь инструкцией, которая приведена в статье Добавить действие на страницу записи.
- Добавьте локализуемую строку с текстом пункта меню, который планируется добавить. Для этого выполните шаг 2 алгоритма создания схемы замещающей модели представления страницы контрагента.
-
Реализуйте логику работы пункта меню. Для этого в свойстве methods реализуйте метод isAccountPrimaryContactSet(), который проверяет наличие основного контакта у выбранного контрагента.
Исходный код схемы замещающей модели представления страницы раздела представлен ниже.
- На панели инструментов дизайнера модуля нажмите Сохранить (Save).
Результат выполнения примера
Чтобы посмотреть результат выполнения примера:
- Очистите кэш браузера.
- Обновите страницу раздела Контрагенты (Accounts).
В результате выполнения примера на страницу контрагента добавлено действие Назначить встречу (Schedule a meeting). Это действие активно при наличии основного контакта контрагента.
В результате выбора действия Назначить встречу (Schedule a meeting) запускается пользовательский бизнес-процесс Проведение встречи (Holding a meeting). В качестве параметра бизнес-процесса используется основной контакт контрагента.
1. Реализовать пользовательский бизнес-процесс Результирующие параметры
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлен бизнес-процесс.
-
На панели инструментов реестра раздела нажмите Добавить —> Бизнес-процесс (Add —> Business process).
-
Заполните свойства бизнес-процесса.
- Заголовок (Title) — "Результирующие параметры" ("Result parameters").
- Код (Code) — "UsrParametersProcess".
Для остальных свойств используйте значения по умолчанию.
-
Добавьте параметры бизнес-процесса.
Значения параметров бизнес-процесса, которые необходимо заполнить, представлены в таблице ниже.
Заголовок
(Title)Код
(Code)Тип данных
(Data type)Направление
(Direction)"Основной контакт" ("Primary contact") "Process Schema "Contact Parameter "Уникальный идентификатор" ("Unique identifier") "Входящий" ("Input") "Возраст контакта" ("Contact age") "Process Contact "Age "Целое число" ("Integer") "Исходящий" ("Output") "Должность" ("Full job title") "Process Full "Job "Текст (500 символов)" ("Text (500 characters)") "Исходящий" ("Output") -
Реализовать чтение данных.
-
В рабочую область дизайнера процессов добавьте элемент Читать данные (Read data).
-
Заполните свойства элемента.
- Какой режим чтения данных использовать? (Which data read mode to use?) — выберите "Читать первую запись из выборки" ("Read the first record in the selection").
- Из какого объекта читать данные? (Which object to read data from?) — выберите "Контакт" ("Contact").
- Как отфильтровать записи? (How to filter records?) — установите фильтр по колонке Id. В качестве значения колонки укажите значение входящего параметра "Основной контакт" ("Primary contact").
-
-
Добавьте значения исходящих параметров.
- На панели свойств бизнес-процесса перейдите на вкладку Параметры (Parameters).
- Для параметра Должность (Full job title) в поле Значение (Value) укажите "[#Read data.First item of resulting collection.Full job title#]".
- Для параметра Возраст контакта (Contact age) в поле Значение (Value) укажите "[#Read data.First item of resulting collection.Age#]".
- На панели инструментов дизайнера бизнес-процессов нажмите Сохранить (Save).
2. Создать схему замещающей модели представления страницы контрагента
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
-
На панели инструментов реестра раздела нажмите Добавить —> Замещающая модель представления (Add —> Replacing view model).
-
Заполните свойства схемы.
- Код (Code) — "AccountPageV2".
- Заголовок (Title) — "Страница редактирования контрагента" ("Account edit page").
- Родительский объект (Parent object) — выберите "AccountPageV2".
-
Добавьте локализуемую строку с текстом пункта меню, который планируется добавить.
- В контекстном меню узла Локализуемые строки (Localizable strings) нажмите кнопку .
-
Заполните свойства локализуемой строки.
- Код (Code) — "CallProcessParametersCaption".
- Значение (Value) — "Получить параметры" ("Recieve parameters").
- Для добавления локализуемой строки нажмите Добавить (Add).
-
Реализуйте логику работы пункта меню.
Для этого в свойстве methods реализуйте методы:
- isAccountPrimaryContactSet() — проверяет наличие у контрагента основного контакта и определяет видимость добавленного пункта меню.
- callCustomProcess() — метод-обработчик действия. Запускает выполнение бизнес-процесса и в информационном окне отображает значения результирующих параметров.
- getActions() — переопределенный базовый метод. Возвращает коллекцию действий замещающей страницы.
Исходный код схемы замещающей модели представления страницы контрагента представлен ниже.
- На панели инструментов дизайнера модуля нажмите Сохранить (Save).
В совмещенном режиме пользовательское действие страницы контрагента не отображается.
3. Создать схему замещающей модели представления страницы раздела
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
-
На панели инструментов реестра раздела нажмите Добавить —> Замещающая модель представления (Add —> Replacing view model).
-
Заполните свойства схемы.
- Код (Code) — "AccountSectionV2".
- Заголовок (Title) — "Раздел контрагенты" ("Accounts section").
- Родительский объект (Parent object) — выберите "AccountSectionV2".
- Добавьте локализуемую строку с текстом пункта меню, который планируется добавить. Для этого выполните шаг 4 алгоритма создания схемы замещающей модели представления страницы контрагента.
-
Реализуйте логику работы пункта меню. Для этого в свойстве methods реализуйте метод isAccountPrimaryContactSet(), который проверяет наличие основного контакта у выбранного контрагента и определяет видимость добавленного пункта меню.
Исходный код схемы замещающей модели представления страницы раздела представлен ниже.
- На панели инструментов дизайнера модуля нажмите Сохранить (Save).
Результат выполнения примера
Чтобы посмотреть результат выполнения примера:
- Обновите страницу раздела Контрагенты (Accounts).
- Откройте страницу контрагента (например, Vertigo Systems).
В результате выполнения примера на страницу контрагента добавлено действие Получить параметры (Recieve parameters).
В результате выбора действия Получить параметры (Receive parameters) запускается пользовательский бизнес-процесс Результирующие параметры (Result parameters). В качестве входящего параметра бизнес-процесс используется основной контакт контрагента. В качестве результирующих параметров бизнес-процесс отображаются должность и возраст основного контакта контрагента.
Действие активно при наличии основного контакта контрагента. (т. е. заполнено поле Основной контакт (Primary contact). Например, для контрагента Wilson & Young действие неактивно.
Пользовательское действие Получить параметры (Receive parameters) также отображается на странице раздела Контрагенты (Accounts) и активно для выбранного контрагента с основным контактом.
Строка запроса
Метод запроса на запуск бизнес-процессов.
Адрес приложения Creatio.
Путь к сервису запуска бизнес-процессов. Неизменяемая часть запроса.
Адрес веб-сервиса запуска бизнес-процессов. Неизменяемая часть запроса.
Метод веб-сервиса запуска бизнес-процессов.
Основные методы:
- Execute() — запуск бизнес-процесса. Позволяет передавать набор входящих параметров и возвращать результат выполнения веб-сервиса.
- ExecProcElByUId() — запуск отдельного элемента бизнес-процесса. Запускать на выполнение можно только элемент выполняющегося процесса. Если элемент процесса выполнен на момент вызова метода, то повторно такой элемент не выполняется.
Используется для метода Execute().
Название схемы бизнес-процесса. Название схемы бизнес-процесса можно узнать в разделе Конфигурация (Configuration).
Используется для метода Execute().
Переменная для кода параметра процесса. Неизменяемая часть запроса.
Используется для метода Execute().
Код параметра процесса, который хранит результат выполнения процесса. Если параметр не задан, то веб-сервис запустит указанный бизнес-процесс без ожидания результата его выполнения. Если в вызываемом процессе отсутствует данный код параметра, веб-сервис вернет значение null.
Используется для метода Execute().
Переменная для кода входящих параметров бизнес-процесса. Если передается несколько входящих параметров, то объедините их символом &.
Используется для метода Execute().
Значения входящих параметров бизнес-процесса.
Используется для метода ExecProcElByUId().
Идентификатор запускаемого элемента процесса.
Тело ответа
Коллекция объектов.
Экземпляры объектов коллекции.
Название поля Id.
Идентификаторы экземпляров объектов коллекции.
Имена полей field1, field2, ... экземпляров объектов object1, object2, ... коллекции.
Значения полей field1, field2, ... экземпляров объектов object1, object2, ... коллекции. Может присутствовать только для GET и POST запросов.