Разработка бизнес-процесса
Согласно требованиям в разрабатываемом приложении вам необходимо реализовать бизнес-процесс согласования контракта. Для описания бизнес-процесса в папке проекта processes
создайте файл ContractsManagement.bpmn
.
Чтобы создать файл, справа от имени папки processes
нажмите значок (Действия) и в отобразившемся меню выберите Создать файл.
В списке файлов проекта выберите файл ContractsManagement.bpmn
. В результате в рабочей области отображается Редактор BPMN-схемы. На панели справа в Редакторе BPMN-схемы для параметра General → ID укажите имя бизнес-процесса ContractManagement
.
Теперь вы можете приступить к добавлению BPMN-элементов на схему бизнес-процесса. Используйте информацию в статье Добавление BPMN-элемента на схему бизнес-процесса и добавьте BPMN-элементы на схему. Имейте в виду, что любая схема бизнес-процесса имеет BPMN-элемент Start Event и BPMN-элемент(ы) End Event, а все BPMN-элементы на BPMN-схеме соединены BPMN-элементами Sequence Flow. Более подробная информация о BPMN-элементах согласно нотации BPMN 2.0 содержится в спецификации BPMN 2.0, а информация о специфичных для Платформы BPMN-элементах содержится в статье О бизнес-процессе.
Добавьте на BPMN-схему следующие BPMN-элементы (см. рисунок ниже):
- один BPMN-элемент Platform Universal Task (1) для описания выбора варианта в ходе выполнения бизнес-процесса;
- два BPMN-элемента Platform GraphQL Connector (2 и 3) для описания изменения статуса контракта в базе данных приложения;
- Start Event (4) перед Platform Universal Task;
- по одному BPMN-элементу End Event (5 и 6) после каждого из Platform GraphQL Connector;
- Gateway после Platform Universal Task (7);
- BPMN-элементы Sequence Flow (8, 9, 10, 11, 12, 13) между каждой парой BPMN-элементов.
Следующий рисунок демонстрирует схему бизнес-процесса согласования контракта.
![]() |
---|
Схема бизнес-процесса согласования контракта |
Настройка BPMN-элементов на схеме бизнес-процесса
Теперь вам нужно указать параметры каждого BPMN-элемента на схеме. Более подробная информация о настройке BPMN-элементов на этой схеме содержится в статьях Настройка BPMN-элемента Platform Universal Task и Настройка BPMN-элемента Platform GraphQL Connector.
Укажите следующие параметры BPMN-элемента Platform Universal Task (1):
-
Task Info → TaskInfo:
[
{
order: 0,
value: "Согласуйте, пожалуйста, контракт",
isTitle: true
},
{
order: 1,
value: "Выберите действие",
isTitle: false
}
] -
Button → Buttons:
[
{
buttonText: "Согласовать",
buttonOrder: 2,
variableName: "userChoose",
variableValue: true
},
{
buttonText: "Отклонить",
buttonOrder: 2,
variableName: "userChoose",
variableValue: false
}
]
Дважды нажмите мышью на BPMN-элементе Platform Universal Task и введите Согласование контракта
.
Укажите следующие параметры первого BPMN-элемента Platform GraphQL Connector (2):
-
documentation → Сервис: storagedata;
-
documentation → Метод: graphql;
Запрос в окне Конструктор GraphQL:
mutation UpdateContract($Id: UUID) {
update_contractsmanagement_contract(
contractsmanagement_contract: {
Status: APPROVED
}
where: { Id: { eq: $Id } }
) {
countObjectsModified
}
} -
Input mapping → Variables:
{"Id": contractId}
; -
Retries → Retries:
3
.
Дважды нажмите мышью на BPMN-элементе Platform GraphQL Connector и введите Согласован
.
Укажите следующие параметры второго BPMN-элемента Platform GraphQL Connector (3):
-
documentation → Сервис: storagedata;
-
documentation → Метод: graphql;
Запрос в окне Конструктор GraphQL:
mutation UpdateContract($Id: UUID) {
update_contractsmanagement_contract(
contractsmanagement_contract: {
Status: DECLINED
}
where: { Id: { eq: $Id } }
) {
countObjectsModified
}
} -
Input mapping → Variables:
{"Id": contractId}
; -
Retries → Retries:
3
.
Дважды нажмите мышью на BPMN-элементе Platform GraphQL Connector и введите Отклонен
.
Укажите следующие параметры BPMN-элементов Sequence Flow:
- Sequence Flow (10): Condition → Condition expression:
userChoose = true
; - Sequence Flow (11): Condition → Condition expression:
userChoose = false
.
Настройка действия для запуска бизнес-процесса
Для экранной формы ContractForm создайте еще одно действие для запуска бизнес-процесса по нажатию кнопки Сохранить п осле ввода данных. Слева на панели со списком разделов Редактора Форм в разделе Действия нажмите + и укажите следующие параметры действия:
- Имя:
StartProcessBpmn
; - Тип: DataSet;
- Сервис: mdcamundaproxy;
- Метод: startProcessByBpmnProcessId.
В списке файлов проекта выберите экранную форму ContractPage, перейдите в кодовый режим Редактора Форм и в качестве кода обработчика события создания новой записи о контракте вставьте следующий блок кода для передачи бизнес-процессу идентификатора контракта:
On-OnCreate={async (formData) => {
const dataSourceTest = getDataSource("getContract");
const res = await dataSourceTest.emit("createContract", formData);
await dataSourceTest.load({
...getValue("pagination"),
});
console.log(res);
const contractId = res?.add_contractsmanagement_contract.insertedId;
if (contractId) {
try {
await sendDataSet("StartProcessBpmn", {
bpmnProcessId: "ContractManagement",
variables: {
contractId,
},
});
} catch (error) {
throw error;
}
}
setState({
dialogMode: null,
editableRow: null,
});
}}
Предоставление прав системному пользователю system_user_mdcamundaactionconnector_client
Настройте разрешения системному пользователю system_user_mdcamundaactionconnector_client на действия с объектами или группами объектов, относящимися к сервису storagedata, который вы выбрали на этапе настройки BPMN-элемента Platform GraphQL Connector. В разделе Security консоли администрирования AdminTools в пространстве имен User выберите системного пользователя system_user_mdcamundaactionconnector_client и в открывшемся окне изменения данных о пользователе на вкладке Member of добавьте в список группу Admin_Profile разрабатываемого проекта ContractsManagement.
Более подробная информация о настройке разрешений содержится в статье Настройка разрешений субъекту на действия с объектом.
Предоставление прав пользователю приложения "Управление контрактами"
Для работы с задачами в интерфейсе BPMS Пользовательские задачи добавьте учетную запись пользователя, которую вы создали на этапе настройки модели безопасности в приложении в группу BPMS Tasklist Admin. Следуйте процедуре, описаной выше.