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