Платформа 3V/Согласование
< Платформа 3V
Перейти к навигации
Перейти к поиску
Версия от 10:53, 20 сентября 2021; N.shashkov (обсуждение | вклад)
Согласование - это объект системы, описывающий жизненный цикл сущности при помощи состояний (states) и переходов/шагов (steps). Согласования используются для построения бизнес-процессов, при этом состояние описывает устойчивое положение сущности в рамках жизненного цикла, а переход описывает изменение одного состояния на другое.
Общие сведения
Описание атрибутов состояния (state):
Свойство | Описание |
---|---|
id | Идентификатор состояния |
name | Название |
icon | Иконка используемая для визуального обозначения состояния |
dataAvailabilitySettings | Настройки доступности данных для состояния процесса |
regulation | Регламент выполнения состояния процесса. |
Описание атрибутов перехода (step):
Свойство | Описание |
---|---|
fromStateId | Состояние из которого переходит объект |
toStateId | Состояние в которое переходит объект |
id | Идентификатор перехода |
name | Название перехода |
Для гибкой настройки согласования в системе предусмотрена настройка прав доступа (permissions) на переходы. В зависимости от прав доступа для разных ролей может быть настроен персональный набор переходов.
Описание атрибутов прав доступа (permission):
Свойство | Описание |
---|---|
stepId | Состояние из которого переходит объект |
subjectId | Состояние в которое переходит объект |
type | Идентификатор перехода |
Описание регламента выполнения состояния процесса (regulation):
Свойство | Описание |
---|---|
discriminator | Задаём вид фиксации даты |
FixedStateRegulationModel | Фиксированная дата в конечном виде |
TimePeriodStateRegulationModel | Дата получаемая путём сдвига от текущей с отсчётом от полуночи |
FixedStateRegulationModel | |
---|---|
str, "1970-01-01T00:00:00Z" | |
TimePeriodStateRegulationModel | |
Years | int, Сдвиг по годам |
Quarters | int, Сдвиг по кварталам |
Months | int, Сдвиг по месяцам |
Days | int, Сдвиг по дням |
Hours | int, Сдвиг по часам |
Результат | |
---|---|
finishedTime | Конечная дата исполнения состояния |
"2021-10-30T12:00:00Z" |
Пример согласования:
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 "regulation": {
24 "discriminator": "TimePeriodStateRegulationModel",
25 "Years" : 8,
26 "Quarters" : 2,
27 "Months": 2,
28 "Days": 2,
29 "hours": 5
30 },
31 "name": "На согласовании"
32 },
33 {
34 "icon": {
35 "type": "svg",
36 "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>"
37 },
38 "id": 3,
39 "dataAvailabilitySettings": {
40 "disableEdit": true
41 },
42 "regulation":{
43 "discriminator": "FixedStateRegulationModel",
44 "finishedDate": "2021-09-17T10:45:00Z"
45 },
46 "name": "Согласовано"
47 },
48 {
49 "icon": {
50 "type": "svg",
51 "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>"
52 },
53 "id": 4,
54 "dataAvailabilitySettings": null,
55 "name": "На доработке"
56 }
57 ],
58 "steps": [
59 {
60 "fromStateId": 1,
61 "toStateId": 2,
62 "id": 1,
63 "name": "Отправить на согласование"
64 },
65 {
66 "fromStateId": 2,
67 "toStateId": 3,
68 "id": 2,
69 "name": "Согласовать"
70 },
71 {
72 "fromStateId": 2,
73 "toStateId": 4,
74 "id": 3,
75 "name": "Отклонить"
76 },
77 {
78 "fromStateId": 4,
79 "toStateId": 2,
80 "id": 4,
81 "name": "Вернуть на согласование"
82 },
83 {
84 "fromStateId": 3,
85 "toStateId": 1,
86 "id": 5,
87 "name": "Вернуть на Черновик"
88 }
89 ],
90 "startStateId": 1
91 },
92 "permissions": [
93 {
94 "stepId": 1,
95 "subjectId": "USERS",
96 "type": "Allow"
97 },
98 {
99 "stepId": 2,
100 "subjectId": "APPROVERS",
101 "type": "Allow"
102 },
103 {
104 "stepId": 3,
105 "subjectId": "APPROVERS",
106 "type": "Allow"
107 },
108 {
109 "stepId": 4,
110 "subjectId": "USERS",
111 "type": "Allow"
112 },
113 {
114 "stepId": 5,
115 "subjectId": "APPROVERS",
116 "type": "Allow"
117 }
118 ],
119 "parameters": {
120 "definitions": [
121 {
122 "id": 1,
123 "name": "Сотрудники",
124 "dictionaryId": 19,
125 "discriminator": "DictionaryParameterModel"
126 },
127 {
128 "id": 2,
129 "name": "Оценщики",
130 "dictionaryId": 126,
131 "discriminator": "DictionaryParameterModel"
132 },
133 {
134 "id": 3,
135 "name": "Квартал оценки",
136 "dictionaryId": 120,
137 "discriminator": "DictionaryParameterModel"
138 }
139 ],
140 "defaultValues": [
141 {
142 "parameterId": 1,
143 "value": 2
144 },
145 {
146 "parameterId": 2,
147 "value": 2
148 },
149 {
150 "parameterId": 3,
151 "value": 320210101
152 }
153 ]
154 },
155 "notifications": null
156 },
157 "forceWorkflowNotificationTemplate": false
158 }