Перейти к основному содержимому

Разработка бизнес-процесса

Согласно требованиям в разрабатываемом приложении вам необходимо реализовать бизнес-процесс согласования контракта. Для описания бизнес-процесса в папке проекта processes создайте файл ContractsManagement.bpmn.

Чтобы создать файл, справа от имени папки processes нажмите значок UG_additional_menu_icon.png (Действия) и в отобразившемся меню выберите Создать файл.

В списке файлов проекта выберите файл ContractsManagement.bpmn. В результате в рабочей области отображается Редактор BPMN-схемы. На панели справа в Редакторе BPMN-схемы для параметра GeneralID укажите имя бизнес-процесса 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-элементов.

Следующий рисунок демонстрирует схему бизнес-процесса согласования контракта.

TG_bpmn_scheme_marked.png
Схема бизнес-процесса согласования контракта

Настройка BPMN-элементов на схеме бизнес-процесса

Теперь вам нужно указать параметры каждого BPMN-элемента на схеме. Более подробная информация о настройке BPMN-элементов на этой схеме содержится в статьях Настройка BPMN-элемента Platform Universal Task и Настройка BPMN-элемента Platform GraphQL Connector.

Укажите следующие параметры BPMN-элемента Platform Universal Task (1):

  • Task InfoTaskInfo:


    [
    {
    order: 0,
    value: "Согласуйте, пожалуйста, контракт",
    isTitle: true
    },
    {
    order: 1,
    value: "Выберите действие",
    isTitle: false
    }
    ]
  • ButtonButtons:


    [
    {
    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 mappingVariables: {"Id": contractId};

  • RetriesRetries: 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 mappingVariables: {"Id": contractId};

  • RetriesRetries: 3.

Дважды нажмите мышью на BPMN-элементе Platform GraphQL Connector и введите Отклонен.

Укажите следующие параметры BPMN-элементов Sequence Flow:

  • Sequence Flow (10): ConditionCondition expression: userChoose = true;
  • Sequence Flow (11): ConditionCondition 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. Следуйте процедуре, описаной выше.