Платформа 3V/Согласование/Статусы и шаги

Материал из 3v-wiki
Перейти к навигации Перейти к поиску

Схема согласования состоит из состояний (states) и шагов (steps).

В качестве состояния прописываются все задачи, которые необходимы для прохождения бизнес-процесса. Каждое состояние должно иметь уникальный идентификатор, который в дальнейшем используется для описания шагов.

Шаги описывают действия перехода из одного состояния в другое. Можно настроить действия в различном направлении, которое продвигает процесс вперед, либо возвращает назад. Верхнее состояние считается стартовым для процесса. Процесс согласования заканчивается в том случае, если из текущего состояние нет н одного шага для перехода в следующее состояние.

JSON-модель схемы согласования
1 "schema": {
2       "states": [
3        
4       ],
5       "steps": [
6         
7       ],
8       "startStateId": 1
9     }

Настройка состояний (states)

Пример JSON-модели состояний
 1 "states": [
 2         {
 3           "localizedName": {
 4             "defaultValue": "",
 5             "items": [
 6               {
 7                 "language": "ru",
 8                 "value": "Рассмотрение и согласование документов"
 9               },
10               {
11                 "language": "en",
12                 "value": "Рассмотрение и согласование документов"
13               }
14             ]
15           },
16           "icon": null,
17           "dataAvailabilitySettings": {
18             "disableEdit": false
19           },
20           "subProcesses": [],
21           "regulation": {
22             "years": null,
23             "quarters": null,
24             "months": null,
25             "days": 5,
26             "hours": null,
27             "discriminator": "TimePeriodStateRegulationModel",
28             "expiringNotificationPeriodMinutes": null
29           },
30           "id": 1,
31           "name": "Рассмотрение и согласование документов"
32         },
33         {
34           "localizedName": {
35             "defaultValue": "",
36             "items": [
37               {
38                 "language": "ru",
39                 "value": "Рассмотрение завершено"
40               },
41               {
42                 "language": "en",
43                 "value": "Рассмотрение завершено"
44               }
45             ]
46           },
47           "icon": null,
48           "dataAvailabilitySettings": {
49             "disableEdit": true
50           },
51           "subProcesses": [],
52           "id": 2,
53           "name": "Рассмотрение завершено"
54         }
55       ]

Основные свойства настройки состояний:

Id – идентификатор состояния

localizedName – наименование состояния, можно настроить локализацию на английском и русском языках.

localizedComment – комментарий для состояния. Можно использовать как дополнительное свойство, которое будет, например, относить состояние к определенному этапу.

subProcesses – настройка подпроцессов
Для состояния можно настроить несколько подпроцессов. Доступны следующие настройки:

  • localizedName - наименование подпроцесса, которое будет выводиться в списке действий для состояния. Можно настроить локализацию на английском и русском языках.
  • workflowId - идентификатор объекта согласования, который будет запускаться как подпроцесс.
  • parameterMappings - настройка связи значения параметра основного процесса и параметра подпроцесса.
  • subProcessNameTemplate - настройка шаблона для выводимого наименования подпроцесса. Применяется настройка только в источниках согласования. Добавлены подстановки для SubProcessNameTemplate:

- SubProcessName - наименование подпроцесса из модели родительского процесса
- StateName - наименование текущего состояния подпроцесса

JSON применения настройки SubProcessNameTemplate
 1 "subProcesses": [
 2             {
 3               "workflowId": 172492,
 4               "name": "Подпроцесс 1",
 5               "parameterMappings": [],
 6               "subProcessNameTemplate": "%SubProcessName% - %StateName%"
 7             },
 8             {
 9               "workflowId": 172488,
10               "name": "Подпроцесс 2",
11               "parameterMappings": [],
12               "subProcessNameTemplate": null
13             }
14           ]

!Важно: Подпроцессы не имеют схождений с основным процессом, запускаются только вручную и выполняются параллельно.

JSON-модель подпроцесса
 1 "subProcesses": [
 2             {
 3               "workflowId": 115022,
 4               "name": "Рассмотреть и согласовать документы",
 5               "localizedName": {
 6                 "defaultValue": "Рассмотреть и согласовать документы",
 7                 "items": [
 8                   {
 9                     "language": "ru",
10                     "value": "Рассмотреть и согласовать документы"
11                   },
12                   {
13                     "language": "en",
14                     "value": "Рассмотреть и согласовать документы"
15                   }
16                 ]
17               },
18               "parameterMappings": [
19                 {
20                   "parentProcessParameterId": 1,
21                   "subProcessParameterId": 1
22                 }
23               ]
24             }
25           ]

Regulation – настройка регламента выполнения задачи (состояния). В качестве регламента можно:

1. задать дату, к моменту которой должно быть завершено текущее состояние процесса

JSON пример
1 "regulation": {
2             "finishedDate": "2021-10-01T00:00:00.000Z",
3             "discriminator": "FixedStateRegulationModel",
4             "expiringNotificationPeriodMinutes": null
5           }

2. задать период времени для завершения состояния (год, квартал, месяц, день, час)

JSON пример
1 "regulation": {
2             "years": null,
3             "quarters": null,
4             "months": null,
5             "days": 1,
6             "hours": null,
7             "discriminator": "TimePeriodStateRegulationModel",
8             "expiringNotificationPeriodMinutes": 300
9           }

!Важно: Свойство expiringNotificationPeriodMinutes отвечает за рассылку уведомлений при приближении срока выполнения. Если минуты заданы, то за указанное время будет выслано уведомление, которое указано в notifications в разделе regulation. Если данное свойство null, то уведомление при приближении срока отправляться не будет.

dataAvailabilitySettings – настройка, которая отвечает за блокировку редактирования данных при запущенном процессе. По умолчанию блокирует "disableEdit": false

Дополнительные настройки:
ProcessAdminRole - настройка в config, в которой можно указать название роли, с которой пользователи будут иметь возможности перейти из любого состояния в любое другое. По умолчанию значение process_admin. В случае если пользователь будет обладать ролью ProcessAdminRole , то ему будут доступны генерируемые шаги с отрицательными идентификаторами, генерируемые шаги из схемы процесса будут ему не доступны.
!Важно: если администратор открыл конструктор для выполнения шага, и, до того как он выполнил один из них, кто то изменит структуру процесса (изменит последовательность или состав состояний), администратор может попасть не в то состояние, которое ожидал. Администратору необходимо выполнить шаг ещё раз, чтобы совершился корректный переход.

Настройка шагов, действий перехода из одного состояния в другое (steps)

Пример JSON-модели действий
 1 "steps": [
 2         {
 3           "localizedName": {
 4             "defaultValue": "Провести анализ материалов заявки и Подготовить заключение о результатах анализа заявки",
 5             "items": [
 6               {
 7                 "language": "ru",
 8                 "value": "Провести анализ материалов заявки и Подготовить заключение о результатах анализа заявки"
 9               },
10               {
11                 "language": "en",
12                 "value": "Провести анализ материалов заявки и Подготовить заключение о результатах анализа заявки"
13               }
14             ]
15           },
16           "fromStateId": 1,
17           "toStateId": 2,
18           "id": 1,
19           "name": "Провести анализ материалов заявки и Подготовить заключение о результатах анализа заявки"
20         }
21       ]

Основные свойства настройки действий:

Id – идентификатор действия

localizedName – наименование состояния, можно настроить локализацию на английском и русском языках

fromStateId – идентификатор состояния, из которого совершается действие

toStateId - идентификатор состояния, в которое совершается действие