Одной из задач интеграции внешнего приложения с Creatio является запуск бизнес-процессов. С этой целью в сервисной модели Creatio реализован веб-сервис ProcessEngineService.svc. Назначение ProcessEngineService.svc — запуск бизнес-процессов.
Запуск бизнес-процессов из внешнего приложения
Основные методы сервиса ProcessEngineService.svc:
- Execute() — запускает бизнес-процесс. Позволяет передать набор входящих параметров бизнес-процесса и вернуть результат его выполнения.
- ExecProcElByUId() — запускает отдельный элемент бизнес-процесса. Запускать на выполнение можно только элемент выполняющегося процесса.
Запуск бизнес-процесса из front-end части
Для запуска бизнес-процесса из клиентской схемы используется модуль ProcessModuleUtilities пакета NUI. Этот модуль предоставляет удобный интерфейс для выполнения запросов к сервису ProcessEngineService.svc.
Чтобы запустить бизнес-процесс из клиентской схемы:
- Подключите в качестве зависимости модуль ProcessModuleUtilities в модуль страницы, из которой вызывается сервис.
- Вызовите метод executeProcess(args) модуля ProcessModuleUtilities, передав ему в качестве параметра объект args с такими свойствами:
Свойство | Описание |
---|---|
sysProcessName | Имя вызываемого процесса (необязательное свойство в случае, если определено свойство sysProcessId). |
sysProcessId | Уникальный идентификатор вызываемого процесса (необязательное свойство, если определено свойство sysProcessName). |
parameters |
Объект, свойствами которого являются входящие параметры вызываемого процесса. |
1. Создать процесс добавления контакта
- Создайте пользовательский пакет и установите его в качестве текущего.
- Перейдите в дизайнер процессов.
-
Заполните значения свойств бизнес-процесса:
- Название (Name) — "Add New External Contact".
- Код (Code) — "UsrAddNewExternalContact".
Для остальных свойств оставьте значения по умолчанию.
-
Добавьте параметры бизнес-процесса.
С помощью параметров в процесс передаются реквизиты добавляемого контакта — имя и телефон.
Значения свойств параметра ContactName:
- Заголовок (Title) — "Имя контакта" ("Contact Name").
- Код (Code) — "ContactName".
- Тип данных (Data type) — "Текст (50 символов)" ("Text (50 characters)").
Значения свойств параметра ContactPhone:
- Заголовок (Title) — "Телефон контакта" ("Contact Phone").
- Код (Code) — "ContactPhone".
- Тип данных (Data type) — "Текст (50 символов)" ("Text (50 characters)").
-
Добавьте элемент Задание-сценарий (ScriptTask).
Значения свойств элемента:
- Название (Name) — "Add contact".
- Код (Code) — "ScriptTaskAddContact".
-
Реализуйте логику добавления нового контакта.
Чтобы редактировать код сценария, дважды щелкните по элементу на диаграмме. На панели настройки элемента откроется окно для ввода и редактирования программного кода.
- После внесения изменений сохраните бизнес-процесс, нажав на кнопку Сохранить (Save) на панели инструментов дизайнера процессов.
2. Создать процесс чтения контактов
Бизнес-процесс, формирующий список всех контактов, также содержит один элемент Задание-сценарий (ScriptTask), в котором реализуется необходимая логика.
Значения свойств бизнес-процесса:
- Название (Name) — "Get All Contacts".
- Код (Code) — "UsrGetAllContacts".
Для остальных свойств оставьте значения по умолчанию.

Процесс UsrGetAllContacts содержит единственный параметр ContactList, через который процесс будет возвращать список всех контактов системы в виде JSON-объекта. Тип параметра — строка неограниченной длины.

Логику выборки контактов реализуйте в элементе процесса Задание-сценарий (ScriptTask).
Значения свойств элемента:
- Название (Name) — "Get all contacts".
- Код (Code) — "ScriptTaskGetAllContacts".
После внесения изменений сохраните и опубликуйте бизнес-процесс.
3. Запустить выполнение бизнес-процессов из строки навигации браузера
Поскольку вызов метода сервиса возможен с помощью GET-запроса, то для выполнения запуска бизнес-процесса можно использовать браузер.
Для запуска процесса создания нового контакта в строку навигации браузера введите URL:
После перехода по указанному URL, в приложении будет добавлен новый контакт.

Для запуска процесса чтения всех контактов в строку навигации браузера введите URL:
После выполнения перехода по указанному URL, в окне браузера будет отображен JSON-объект, содержащий коллекцию контактов.

4. Запустить выполнение бизнес-процессов из консольного приложения
Полностью исходный код консольного пользовательского приложения, предназначенного для запуска бизнес-процессов с помощью сервиса ProcessEngineService.svc, доступен на GitHub.
Чтобы запустить выполнение бизнес-процессов из консольного приложения:
- Выполните аутентификацию. Для этого предназначен сервис аутентификации AuthService.svc. Консольное приложение для выполнения аутентификации можно взять за основу для примера, приведенного ниже.
- Для формирования запросов к сервису ProcessEngineService.svc в исходный код класса Program добавьте строковое поле, содержащее базовый URL сервиса.
- Для выполнения запуска бизнес-процесса добавления контакта в исходный код класса Program добавьте метод GET.
- Добавьте метод запуска процесса чтения контактов.
- Вызов добавленных методов выполните в главном методе программы после успешной аутентификации.

Чтобы запустить бизнес-процесс из JavaScript-кода клиентской схемы, необходимо:
- В модуль страницы, из которой вызывается сервис, подключить в качестве зависимости модуль ProcessModuleUtilities. Этот модуль предоставляет удобный интерфейс для выполнения запросов к сервису ProcessEngineService.svc.
- Вызвать метод executeProcess(args) модуля ProcessModuleUtilities, передав ему в качестве параметра объект args с такими свойствами:
Свойство | Описание |
---|---|
sysProcessName | Имя вызываемого процесса (необязательное свойство в случае, если определено свойство sysProcessId). |
sysProcessId | Уникальный идентификатор вызываемого процесса (необязательное свойство в случае, если определено свойство sysProcessName). |
parameters |
Объект, свойствами которого являются входящие параметры вызываемого процесса. |
1. Создать и настроить пользовательский бизнес-процесс "Проведение встречи"
- Создайте бизнес-процесс.
В примере используется бизнес-процесс "Проведение встречи", создание которого детально описано в разделе "Как работать с email" документации по настройке процессов .

- Добавьте в бизнес-процесс параметр.
Заполните свойства параметра:
- Заголовок (Title) — "Meeting contact".
- Код (Code) — "ProcessSchemaContactParameter".
- Тип данных (Data type) — "Уникальный идентификатор" ("Unique identifier").

- В свойствах первого действия процесса Позвонить клиенту (Call customer) заполните поле Контакт (Contact) входящим параметром процесса.

2. Создать замещающую страницу контрагента и добавить на нее действие
Добавление действия на страницу записи подробно описано в статье Добавить действие на страницу записи.
В схему замещающего модуля страницы записи и схему раздела контрагента добавьте локализуемую строку CallProcessCaption с заголовком действия, например, "Назначить встречу" ("Schedule a meeting").
Дополнительно в объявлении модуля страницы записи подключите в качестве зависимости модуль ProcessModuleUtilities.
Исходные коды схемы раздела и страницы записи раздела Контрагенты (Accounts) приведены ниже.
3. Добавить необходимые методы в схемы
Для запуска процесса воспользуйтесь методом executeProcess() модуля ProcessModuleUtilities, в который в качестве параметра необходимо передать объект со следующими свойствами:
- имя созданного бизнес-процесса,
- объект с проинициализированными входящими параметрами для процесса.
В исходном коде, приведенном ниже, это реализовано в методе callCustomProcess(). Также реализованы методы проверки существования основного контакта isAccountPrimaryContactSet() и добавления элементов меню действий getActions().
Исходный код замещающего модуля страницы записи:
Для корректного отображения действия в меню действий в совмещенном режиме отображения страницы с вертикальным реестром добавьте реализацию метода isAccountPrimaryContactSet() в схему раздела.
Исходный код замещающего модуля схемы раздела:
Результат выполнения примера
После сохранения схем и обновления страницы приложения в меню действий страницы контрагента появится новое действие Назначить встречу (Schedule a meeting) . Это действие будет доступным только в случае наличия основного контакта для активной записи реестра. При выполнении действия будет запущен пользовательский бизнес-процесс "Проведение встречи" ("Holding a meeting"). При этом в параметр бизнес-процесса будет передан основной контакт контрагента.


Строка запроса
Метод запроса на запуск бизнес-процессов.
Адрес приложения Creatio.
Путь к сервису запуска бизнес-процессов. Неизменяемая часть запроса.
Адрес веб-сервиса запуска бизнес-процессов. Неизменяемая часть запроса.
Метод веб-сервиса запуска бизнес-процессов.
Основные методы:
- Execute() — запуск бизнес-процесса. Позволяет передавать набор входящих параметров и возвращать результат выполнения веб-сервиса.
- ExecProcElByUId() — запуск отдельного элемента бизнес-процесса. Запускать на выполнение можно только элемент выполняющегося процесса. Если элемент процесса, запускаемый методом ExecProcElByUId(), уже выполнен на момент вызова метода, то повторно такой элемент выполняться не будет.
Используется для метода Execute().
Название схемы бизнес-процесса. Название схемы бизнес-процесса можно узнать в разделе Конфигурация (Configuration).
Используется для метода Execute().
Переменная для кода параметра процесса. Неизменяемая часть запроса.
Используется для метода Execute().
Код параметра процесса, который хранит результат выполнения процесса. Если этот параметр не задан, то веб-сервис запустит указанный бизнес-процесс без ожидания результата его выполнения. Если в вызываемом процессе отсутствует данный код параметра, веб-сервис вернет значение null.
Используется для метода Execute().
Переменная для кода входящих параметров бизнес-процесса. Если передается несколько входящих параметров, то они должны быть объединены символом &.
Используется для метода Execute().
Значения входящих параметров бизнес-процесса.
Используется для метода ExecProcElByUId().
Идентификатор запускаемого элемента процесса.
Заголовки запроса
Заголовок ForceUseSession отвечает за принудительное использование уже существующей сессии. Отсутствует необходимость использования в запросе к сервису аутентификации AuthService.svc.
Аутентификационный cookie.
Тело ответа
Коллекция объектов.
Экземпляры объектов коллекции.
Название поля Id.
Идентификатор экземпляра объекта коллекции.
Имена полей field1, field2, ... экземпляров объектов object1, object2, ... коллекции.
Значения полей field1, field2, ... экземпляров объектов object1, object2, ... коллекции. Может присутствовать только для GET и POST запросов.