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

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

Согласование - это объект системы, описывающий жизненный цикл сущности при помощи состояний (states) и переходов (steps). Согласования используются для построения бизнес-процессов, при этом состояние описывает устойчивое положение сущности в рамках жизненного цикла, а переход описывает изменение одного состояния на другое.

Описание атрибутов состояния (state):

Свойство Описание
id Идентификатор состояния
name Название
icon Иконка используемая для визуального обозначения состояния
dataAvailabilitySettings Настройки доступности данных для состояния процесса

Описание атрибутов перехода (step):

Свойство Описание
fromStateId Состояние из которого переходит объект
toStateId Состояние в которое переходит объект
id Идентификатор перехода
name Название перехода

Для гибкой настройки согласования в системе предусмотрена настройка прав доступа (permissions) на переходы. В зависимости от прав доступа для разных ролей может быть настроен персональный набор переходов.

Описание атрибутов прав доступа (permission):

Свойство Описание
stepId Состояние из которого переходит объект
subjectId Состояние в которое переходит объект
type Идентификатор перехода

Пример согласования:

  1 {
  2   "template": {
  3     "schema": {
  4       "states": [
  5         {
  6           "icon": {
  7             "type": "svg",
  8             "data": "<svg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 10L1.19249e-07 0L10 1.19249e-07L6 5L10 10L0 10Z' fill='#F08513'/></svg>"
  9           },
 10           "id": 1,
 11           "dataAvailabilitySettings": null,
 12           "name": "Черновик"
 13         },
 14         {
 15           "icon": {
 16             "type": "svg",
 17             "data": "<svg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 10L1.19249e-07 0L10 1.19249e-07L6 5L10 10L0 10Z' fill='#0066DD'/></svg>"
 18           },
 19           "id": 2,
 20           "dataAvailabilitySettings": {
 21             "disableEdit": true
 22           },
 23           "name": "На согласовании"
 24         },
 25         {
 26           "icon": {
 27             "type": "svg",
 28             "data": "<svg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 10L1.19249e-07 0L10 1.19249e-07L6 5L10 10L0 10Z' fill='#05C19F'/></svg>"
 29           },
 30           "id": 3,
 31           "dataAvailabilitySettings": {
 32             "disableEdit": true
 33           },
 34           "name": "Согласовано"
 35         },
 36         {
 37           "icon": {
 38             "type": "svg",
 39             "data": "<svg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'><path d='M0 10L1.19249e-07 0L10 1.19249e-07L6 5L10 10L0 10Z' fill='#8053DF'/></svg>"
 40           },
 41           "id": 4,
 42           "dataAvailabilitySettings": null,
 43           "name": "На доработке"
 44         }
 45       ],
 46       "steps": [
 47         {
 48           "fromStateId": 1,
 49           "toStateId": 2,
 50           "id": 1,
 51           "name": "Отправить на согласование"
 52         },
 53         {
 54           "fromStateId": 2,
 55           "toStateId": 3,
 56           "id": 2,
 57           "name": "Согласовать"
 58         },
 59         {
 60           "fromStateId": 2,
 61           "toStateId": 4,
 62           "id": 3,
 63           "name": "Отклонить"
 64         },
 65         {
 66           "fromStateId": 4,
 67           "toStateId": 2,
 68           "id": 4,
 69           "name": "Вернуть на согласование"
 70         },
 71         {
 72           "fromStateId": 3,
 73           "toStateId": 1,
 74           "id": 5,
 75           "name": "Вернуть на Черновик"
 76         }
 77       ],
 78       "startStateId": 1
 79     },
 80     "permissions": [
 81       {
 82         "stepId": 1,
 83         "subjectId": "USERS",
 84         "type": "Allow"
 85       },
 86       {
 87         "stepId": 2,
 88         "subjectId": "APPROVERS",
 89         "type": "Allow"
 90       },
 91       {
 92         "stepId": 3,
 93         "subjectId": "APPROVERS",
 94         "type": "Allow"
 95       },
 96       {
 97         "stepId": 4,
 98         "subjectId": "USERS",
 99         "type": "Allow"
100       },
101       {
102         "stepId": 5,
103         "subjectId": "APPROVERS",
104         "type": "Allow"
105       }
106     ],
107     "parameters": {
108       "definitions": [
109         {
110           "id": 1,
111           "name": "Сотрудники",
112           "dictionaryId": 19,
113           "discriminator": "DictionaryParameterModel"
114         },
115         {
116           "id": 2,
117           "name": "Оценщики",
118           "dictionaryId": 126,
119           "discriminator": "DictionaryParameterModel"
120         },
121         {
122           "id": 3,
123           "name": "Квартал оценки",
124           "dictionaryId": 120,
125           "discriminator": "DictionaryParameterModel"
126         }
127       ],
128       "defaultValues": [
129         {
130           "parameterId": 1,
131           "value": 2
132         },
133         {
134           "parameterId": 2,
135           "value": 2
136         },
137         {
138           "parameterId": 3,
139           "value": 320210101
140         }
141       ]
142     },
143     "notifications": null
144   },
145   "forceWorkflowNotificationTemplate": false
146 }