Выполнение действий при изменении статуса согласования

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


Коллекция действий выполняемых при изменении статуса согласования (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 будут возвращать положительный результат.

Пример согласования (Json)
 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 }
Пример серверной карточки (Json)
  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   ]