Платформа 3V/Формы/Источники данных/Согласование/Выполнение действий при изменении статуса согласования: различия между версиями
м (O.kozhevnikova переименовал страницу Платформа 3V/Карточка/Выполнение действий при изменении статуса согласования в Платформа 3V/Карточка/Действия/Выполнение действий при изменении статуса согласования) |
|||
(не показаны 2 промежуточные версии 2 участников) | |||
Строка 289: | Строка 289: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</div></div> | </div></div> | ||
+ | |||
+ | |||
+ | == Описание кейса == | ||
+ | В данном кейсе представлено описание настройки api-функции при выполнении определенного шага в согласовании.<br> Функция срабатывает на заданный шаг процесса согласования и производит запись в атрибут справочника. | ||
+ | |||
+ | == Инструменты платформы, используемые в кейсе == | ||
+ | В рамках кейса были использованы следующие инструменты (в скобках указано количество): <br> | ||
+ | |||
+ | 1. Справочники (4)<br> | ||
+ | 2. Календарный справочник (1)<br> | ||
+ | 3. Показатели (2)<br> | ||
+ | 4. Отчет (2)<br> | ||
+ | 5. Согласование (1)<br> | ||
+ | 6. Серверная карточка (1)<br> | ||
+ | 7. Клиентская карточка (1)<br> | ||
+ | |||
+ | == Этапы создания кейса == | ||
+ | ===Подготовительный=== | ||
+ | Для реализации кейса созданы или использованы уже существующее объекты платформы, подробнее о их настройке можно посмотреть в соответствующих разделах. <br> | ||
+ | Справочники: | ||
+ | "Сотрудники"; | ||
+ | "Оценщики"; | ||
+ | "Показатели оценки"; | ||
+ | "Критерии оценки".<br> | ||
+ | Показатели: "Оценка сотрудника"; "Матрица сотрудник-оценщик"<br> | ||
+ | Согласование: workflow согласования оценки по сотруднику<br> | ||
+ | Карточки серверная и клиентская: Карточка ввода информации по оценке сотрудника с прохождением процесса согласования <br><br> | ||
+ | |||
+ | Следующие этапы описывают настройки, которые необходимо выполнить в json серверной карточки: | ||
+ | ===Задать идентификатор действия по условию=== | ||
+ | В блоке "Источники данных" (entryDataSources) заполнить "StateChangeActions" идентификатором, следующим образом: | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | ... | ||
+ | "entryDataSources": [ | ||
+ | { | ||
+ | "id": 1234, | ||
+ | "name": "Согласование", | ||
+ | "WorkflowId": 200, | ||
+ | "Parameters": [...], | ||
+ | "StateChangeActions": [ | ||
+ | 2000 | ||
+ | ], | ||
+ | "discriminator": "WorkflowDataSource" | ||
+ | } | ||
+ | ... | ||
+ | </syntaxhighlight> | ||
+ | Подробнее описание блока "Источники данных" (entryDataSources) можно найти по ссылке: [[Платформа_3V/Формы/Источники_данных#Источники данных|'''Источники данных''']] | ||
+ | ===Задать правило, определяющее состояния элементов карточки=== | ||
+ | В блоке binaryConditionsRules указываем шаг согласования на котором вызывается api-функция | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | "binaryConditionsRules": [ | ||
+ | { | ||
+ | "id": 911, | ||
+ | "BinaryCondition": { | ||
+ | "WorkflowSourceId": 1234, | ||
+ | "WorkflowStateIds": [ | ||
+ | 2 | ||
+ | ], | ||
+ | "discriminator": "BinaryConditionWorkflowContainsStates" | ||
+ | } | ||
+ | } | ||
+ | ] | ||
+ | </syntaxhighlight> | ||
+ | ===Задать действия=== | ||
+ | В блоке actions | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | "actions": [ | ||
+ | ... | ||
+ | { | ||
+ | "serviceUrl": "https://apps.3v-cloud.com/assessment-and-adaptation/Assessments/AssignCurrentCurators", | ||
+ | "parameters": [ | ||
+ | { | ||
+ | "name": "quarter", | ||
+ | "expressionId": 5002, | ||
+ | "value": null | ||
+ | }, | ||
+ | { | ||
+ | "name": "employeeId", | ||
+ | "expressionId": 5003, | ||
+ | "value": null | ||
+ | } | ||
+ | ], | ||
+ | "isAsync": false, | ||
+ | "httpMethod": "GET", | ||
+ | "id": 2000, | ||
+ | "comment": null, | ||
+ | "discriminator": "BusinessLogicApiAction" | ||
+ | } | ||
+ | ] | ||
+ | </syntaxhighlight> | ||
+ | , где | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Свойство !! Описание | ||
+ | |- | ||
+ | | serviceUrl || Ссылка api-функции | ||
+ | |- | ||
+ | | parameters.name || Наименование параметра, настроенного в api | ||
+ | |- | ||
+ | | parameters.expressionId || Идентификатор выражения (ссылка ) | ||
+ | |} | ||
+ | ===Задать условные действия=== | ||
+ | В блоке conditionalActions | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | "conditionalActions": [ | ||
+ | ... | ||
+ | { | ||
+ | "id": 2000, | ||
+ | "binaryConditionRuleId": 911, | ||
+ | "actions": [ | ||
+ | 2000 | ||
+ | ] | ||
+ | } | ||
+ | ] | ||
+ | </syntaxhighlight> |
Текущая версия на 09:52, 17 сентября 2021
Содержание
Коллекция действий выполняемых при изменении статуса согласования (StateChangeActions)
StateChangeActions - это коллекция идентификаторов действий по условию ConditionalAction, которые выполняются при изменении состояния согласования.
1 {
2 ...
3 "entryDataSources": [
4 {
5 ...
6 "StateChangeActions": [
7 111,
8 222
9 ],
10 "discriminator": "WorkflowDataSource"
11 }
12 ],
13 ...
14 }
BinaryConditionWorkflowContainsStates
BinaryConditionWorkflowContainsStates - Условие для вычисления вхождение текущего состояния процесса согласования WorkflowSourceId в коллекцию состояний WorkflowStateIds.
WorkflowSourceId - Идентификатор источника согласования.
WorkflowStateIds - Коллекция идентификаторов состояний согласования при которых результат проверки будет положительным.
1 {
2 ...
3 "BinaryConditionsRules": [
4 {
5 "id": 1,
6 "BinaryCondition": {
7 "WorkflowSourceId": 2,
8 "WorkflowStateIds": [
9 4
10 ],
11 "discriminator": "BinaryConditionWorkflowContainsStates"
12 }
13 }
14 ]
15 ...
16 }
Пример
В данном примере при выполнении шага согласования с идентификатором 3 в справочник будет добавлена запись с наименованием "Переход в состояние 4" (т.к. Шаг 3 - это переход из статуса 2 в 4, смотри пример согласования), а при выполнении шага с идентификатором 4 будет добавлена запись с наименованием "Переход в состояние 2", при условии что описанные условия BinaryConditionWorkflowContainsStates будут возвращать положительный результат.
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 "name": "Черновик"
12 },
13 {
14 "icon": {
15 "type": "svg",
16 "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>"
17 },
18 "id": 2,
19 "name": "На согласовании"
20 },
21 {
22 "icon": {
23 "type": "svg",
24 "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>"
25 },
26 "id": 3,
27 "name": "Согласовано"
28 },
29 {
30 "icon": {
31 "type": "svg",
32 "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>"
33 },
34 "id": 4,
35 "name": "На доработке"
36 }
37 ],
38 "steps": [
39 {
40 "fromStateId": 1,
41 "toStateId": 2,
42 "id": 1,
43 "name": "Отправить на согласование"
44 },
45 {
46 "fromStateId": 2,
47 "toStateId": 3,
48 "id": 2,
49 "name": "Согласовать"
50 },
51 {
52 "fromStateId": 2,
53 "toStateId": 4,
54 "id": 3,
55 "name": "Вернуть на доработку"
56 },
57 {
58 "fromStateId": 4,
59 "toStateId": 2,
60 "id": 4,
61 "name": "Вернуть на согласование"
62 }
63 ],
64 "startStateId": 1
65 },
66 "permissions": [],
67 "parameters": {
68 "definitions": [
69 {
70 "id": 1,
71 "name": "Сценарии",
72 "discriminator": "SimpleParameterModel"
73 }
74 ],
75 "defaultValues": [
76 {
77 "parameterId": 1,
78 "value": 5
79 }
80 ]
81 }
82 }
83 }
1 {
2 "name": "Карточка",
3 "actions": [
4 {
5 "instanceId": 1,
6 "id": 11,
7 "comment": null,
8 "discriminator": "RebuildSourceInstanceAction"
9 },
10 {
11 "DictionarySourceId": 1,
12 "id": 22,
13 "defaultValues": [
14 {
15 "attributeId": 2,
16 "value": "Переход в состояние 4"
17 }
18 ],
19 "dictionaryId": 750,
20 "discriminator": "CreateNewElementInDictionaryAction"
21 },
22 {
23 "DictionarySourceId": 1,
24 "id": 44,
25 "defaultValues": [
26 {
27 "attributeId": 2,
28 "value": "Переход в состояние 2"
29 }
30 ],
31 "dictionaryId": 750,
32 "discriminator": "CreateNewElementInDictionaryAction"
33 },
34 {
35 "instanceId": 1,
36 "id": 33,
37 "DataSourcesIds": [
38 1
39 ],
40 "discriminator": "SaveDataSourceAction"
41 }
42 ],
43 "conditionalActions": [
44 {
45 "id": 111,
46 "binaryConditionRuleId": 1,
47 "actions": [
48 22,
49 33,
50 11
51 ]
52 },
53 {
54 "id": 222,
55 "binaryConditionRuleId": 2,
56 "actions": [
57 44,
58 33,
59 11
60 ]
61 }
62 ],
63 "BinaryConditionsRules": [
64 {
65 "id": 1,
66 "BinaryCondition": {
67 "WorkflowSourceId": 2,
68 "WorkflowStateIds": [
69 4
70 ],
71 "discriminator": "BinaryConditionWorkflowContainsStates"
72 }
73 },
74 {
75 "id": 2,
76 "BinaryCondition": {
77 "WorkflowSourceId": 2,
78 "WorkflowStateIds": [
79 2
80 ],
81 "discriminator": "BinaryConditionWorkflowContainsStates"
82 }
83 }
84 ],
85 "uiSources": [
86 {
87 "id": 1,
88 "DataSourceId": 1,
89 "caption": "Справочник",
90 "enable": true,
91 "visible": true,
92 "discriminator": "DictionarySourceEntry"
93 },
94 {
95 "id": 2,
96 "WorkflowSourceId": 2,
97 "caption": "Согласование",
98 "enable": true,
99 "visible": true,
100 "discriminator": "WorkflowSourceEntry"
101 }
102 ],
103 "entryDataSources": [
104 {
105 "Id": 1,
106 "dictionaryId": Идентификатор справочника,
107 "name": "Справочник",
108 "isReadOnly": false,
109 "filter": null,
110 "discriminator": "DictionaryDataSource"
111 },
112 {
113 "Id": 2,
114 "WorkflowId": Идентификатор согласования,
115 "name": "Согласование",
116 "isReadOnly": false,
117 "parameters": [
118 {
119 "id": 1,
120 "expressionId": null,
121 "value": 5
122 }
123 ],
124 "StateChangeActions": [
125 111,
126 222
127 ],
128 "discriminator": "WorkflowDataSource"
129 }
130 ],
131 "expressions": [],
132 "parameters": [
133 {
134 "defaultValue": [
135 5
136 ],
137 "id": 1,
138 "name": "Элемент справочника"
139 }
140 ]
141 }
Описание кейса
В данном кейсе представлено описание настройки api-функции при выполнении определенного шага в согласовании.
Функция срабатывает на заданный шаг процесса согласования и производит запись в атрибут справочника.
Инструменты платформы, используемые в кейсе
В рамках кейса были использованы следующие инструменты (в скобках указано количество):
1. Справочники (4)
2. Календарный справочник (1)
3. Показатели (2)
4. Отчет (2)
5. Согласование (1)
6. Серверная карточка (1)
7. Клиентская карточка (1)
Этапы создания кейса
Подготовительный
Для реализации кейса созданы или использованы уже существующее объекты платформы, подробнее о их настройке можно посмотреть в соответствующих разделах.
Справочники:
"Сотрудники";
"Оценщики";
"Показатели оценки";
"Критерии оценки".
Показатели: "Оценка сотрудника"; "Матрица сотрудник-оценщик"
Согласование: workflow согласования оценки по сотруднику
Карточки серверная и клиентская: Карточка ввода информации по оценке сотрудника с прохождением процесса согласования
Следующие этапы описывают настройки, которые необходимо выполнить в json серверной карточки:
Задать идентификатор действия по условию
В блоке "Источники данных" (entryDataSources) заполнить "StateChangeActions" идентификатором, следующим образом:
1 ...
2 "entryDataSources": [
3 {
4 "id": 1234,
5 "name": "Согласование",
6 "WorkflowId": 200,
7 "Parameters": [...],
8 "StateChangeActions": [
9 2000
10 ],
11 "discriminator": "WorkflowDataSource"
12 }
13 ...
Подробнее описание блока "Источники данных" (entryDataSources) можно найти по ссылке: Источники данных
Задать правило, определяющее состояния элементов карточки
В блоке binaryConditionsRules указываем шаг согласования на котором вызывается api-функция
1 "binaryConditionsRules": [
2 {
3 "id": 911,
4 "BinaryCondition": {
5 "WorkflowSourceId": 1234,
6 "WorkflowStateIds": [
7 2
8 ],
9 "discriminator": "BinaryConditionWorkflowContainsStates"
10 }
11 }
12 ]
Задать действия
В блоке actions
1 "actions": [
2 ...
3 {
4 "serviceUrl": "https://apps.3v-cloud.com/assessment-and-adaptation/Assessments/AssignCurrentCurators",
5 "parameters": [
6 {
7 "name": "quarter",
8 "expressionId": 5002,
9 "value": null
10 },
11 {
12 "name": "employeeId",
13 "expressionId": 5003,
14 "value": null
15 }
16 ],
17 "isAsync": false,
18 "httpMethod": "GET",
19 "id": 2000,
20 "comment": null,
21 "discriminator": "BusinessLogicApiAction"
22 }
23 ]
, где
Свойство | Описание |
---|---|
serviceUrl | Ссылка api-функции |
parameters.name | Наименование параметра, настроенного в api |
parameters.expressionId | Идентификатор выражения (ссылка ) |
Задать условные действия
В блоке conditionalActions
1 "conditionalActions": [
2 ...
3 {
4 "id": 2000,
5 "binaryConditionRuleId": 911,
6 "actions": [
7 2000
8 ]
9 }
10 ]