Платформа 3V/Согласование/Реестр процессов
Реализовано отображение реестра всех процессов согласования, в котором существует возможность редактировать экземпляры процесса. Для этого следует нажать на требуемый изменения экземпляр основного процесса или его подпроцесса и перейти в открывшееся окно с JSON. Реестр открывается по кнопке на левой панели управления навигатора. Для его настройки в конфигурационном файле указывается код настроенного отчёта с реестром процессов.
Для того, чтобы настроить отчет для реестра процессов согласования требуется настроить Внешний справочник на объекте Соединение с источником данных .../workflow/api/WorkflowDataSourceView/Processes/ и в качестве идентификатора объекта задать AllRunnedProcesses. Так же в справочнике необходимо настроить следующее:
- Тип атрибута StateId должен быть указан как Идентификатор
- Тип атрибута ParentStateId должен быть указан как Родитель
- Тип атрибута Name должен быть указан как Наименование
В справочнике будет отображён список всех запущенных процессов и выведены следующие атрибуты:
- Идентификатор процесса или подпроцесса(Id)
- Идентификатор родительского процесса(для подпроцессов)(ParentId)
- Наименование объекта согласования/экземпляра процесса/подпроцесса с наименованиями параметров(Name)
- Идентификатор экземпляра процесса(EntityId)
- Идентификатор типа объекта: 1 - объект согласования, 2 - объект согласования подпроцесса, 3 - экземпляр процесса/подпроцесса, (EntityType)
- Наименование текущего состояния(StateName)
- Значение свойства localizedComment объекта согласования (StateModelComment)
- Дата запуска процесса (StartedDate)
- Дата перехода в текущее состояние (StateChangedDate)
- Регламентная дата, если она настроена для текущего состояния (StateRegulationDate)
- Ответственные за шаги на текущем состоянии (StateResponsible)
- Признак "завершенности" экземпляра подпроцесса (IsFinished)
- Общее количество процессов (TotalProcessCount)
- Количество завершенных процессов (FinishedProcessCount)
Далее необходимо создать сам отчет с идентификатором REPORT_WORKFLOW_STATUSES (данный код указывается в конфигурационном файле, как было написано выше), настроить отчет можно в любом виде, на усмотрение пользователя. Единственное, необходимо, чтобы первым столбцом выводился атрибут Name, для корректного формирования названия объекта - экземпляра процесса и наименование параметров, с которыми он запущен.
Так же необходимо настроить для первого столбца отображение гиперссылок. В дальнейшем, после реализации конструктора согласования, при клике по гиперссылке процесса в конструкторе будут открываться его настройки.
1 "hyperlinkOptions": {
2 "metaObjectSource": {
3 "formula": {
4 "expression": "if(IsNullOrEmpty([2]) or [3] <> 3, Null(), [1])",
5 "operands": [
6 {
7 "dictionaryId": 125348,
8 "attribute": {
9 "discriminator": "OwnAttributeDefinitionDto",
10 "id": 23
11 },
12 "attributeId": 23,
13 "discriminator": "AttributeFormulaOperandDto",
14 "code": null,
15 "id": 1,
16 "name": null
17 },
18 {
19 "dictionaryId": 125348,
20 "attribute": {
21 "discriminator": "OwnAttributeDefinitionDto",
22 "id": 4
23 },
24 "attributeId": 4,
25 "discriminator": "AttributeFormulaOperandDto",
26 "code": null,
27 "id": 2,
28 "name": null
29 },
30 {
31 "dictionaryId": 125348,
32 "attribute": {
33 "discriminator": "OwnAttributeDefinitionDto",
34 "id": 24
35 },
36 "attributeId": 24,
37 "discriminator": "AttributeFormulaOperandDto",
38 "code": null,
39 "id": 3,
40 "name": null
41 }
42 ],
43 "code": null,
44 "id": 1,
45 "name": null
46 },
47 "discriminator": "FormulaValueSourceDto"
48 },
49 "parameterSources": [],
50 "discriminator": "MetaObjectHyperlinkOptionsDto",
51 "openTarget": "SameWindow"
52 }
Настройка параметра
Источник реестра всех процессов можно параметризировать. Если используется несколько объектов согласования, то можно через параметр отображать процессы выбранного объекта согласования, что может сократить время построения реестра процессов.
В параметре необходимо передавать идентификатор объекта согласования. Если параметр не задан - будут подгружаться все согласования и все процессы.
Чтобы настроить параметр с объектами согласования через внешний справочник объектов необходимо выполнить следующее:
- Добавить объект "Соединение с источником данных" .../repository/api/RepositoryDataSource/
- Добавить внешний справочник на этом соединении, в качестве идентификатора объекта задать MetaObjects
- Для следующих атрибутов настроить тип:
Тип атрибута Id должен быть указан как Идентификатор
Тип атрибута ParentId должен быть указан как Родитель
Тип атрибута Name должен быть указан как Наименование
- Справочник должен быть с включенным кэшем
- В справочник реестра процессов необходимо добавить параметр
1 "parameters": {
2 "definitions": [
3 {
4 "id": 1,
5 "name": "Число"
6 }
7 ],
8 "defaultValues": [
9 {
10 "discriminator": "SimpleParameterValueDto",
11 "parameterId": 1,
12 "value": [
13 1
14 ]
15 }
16 ]
17 },
- В отчете реестра процессов добавить, созданный ранее, внешний справочник объектов в качестве параметра, для параметра настроить фильтр на тип объекта согласования
1 "parameters": [
2 {
3 "dictionaryId": 0,
4 "options": {
5 "groupingMethod": "Default",
6 "virtualElements": [],
7 "dictionaryId": 195546,
8 "filter": {
9 "value": [
10 9
11 ],
12 "skipIfValueNull": false,
13 "attributeId": null,
14 "attribute": {
15 "discriminator": "OwnAttributeDefinitionDto",
16 "id": 23
17 },
18 "conditionType": "AttributeEqualConstant",
19 "discriminator": "ValueConditionalDictionaryFilterDto",
20 "inversion": false
21 },
22 "hierarchyId": null,
23 "limit": null
24 },
25 "discriminator": "DictionaryParameterDto",
26 "defaultValue": [
27 114228
28 ],
29 "value": [
30 114228
31 ],
32 "isMultiselect": true,
33 "isEmptyValuePossible": true,
34 "isDisableable": false,
35 "isDisabled": false,
36 "id": 1,
37 "name": "Согласования"
38 }
39 ],
- Сохранить изменения в отчете, далее при открытии реестра в нем должна появиться панель с параметром.
!Важно: есть ограничение со стороны справочников, если для справочника процессов указать наличие параметра, но в отчете скинуть его на null - то упадет ошибка, что значение параметра не задано.