Разработка бизнес-процесса
Согласно требованиям в разрабатываемом приложении вам необходимо реализовать бизнес-процесс согласования контракта. Для описания бизнес-процесса в папке проекта 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. Следуйте процедуре, описаной выше.