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

Материал из 3v-wiki
< Платформа 3V‎ | Согласование
Версия от 10:12, 18 апреля 2022; O.kozhevnikova (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску
Реализовано в версии 0.40

Реализовано отображение реестра всех процессов согласования, в котором существует возможность редактировать экземпляры процесса. Для этого следует нажать на требуемый изменения экземпляр основного процесса или его подпроцесса и перейти в открывшееся окно с JSON. Реестр открывается по кнопке реестр согласования кнопка.png на левой панели управления навигатора. Для его настройки в конфигурационном файле указывается код настроенного отчёта с реестром процессов.

процессы согласования. реестр.png



Для того, чтобы настроить отчет для реестра процессов согласования требуется настроить Внешний справочник на объекте Соединение с источником данных .../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, для корректного формирования названия объекта - экземпляра процесса и наименование параметров, с которыми он запущен.

Так же необходимо настроить для первого столбца отображение гиперссылок. В дальнейшем, после реализации конструктора согласования, при клике по гиперссылке процесса в конструкторе будут открываться его настройки.

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

  • Справочник должен быть с включенным кэшем
  • В справочник реестра процессов необходимо добавить параметр
JSON пример настройки параметра в справочнике
 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   },
  • В отчете реестра процессов добавить, созданный ранее, внешний справочник объектов в качестве параметра, для параметра настроить фильтр на тип объекта согласования
JSON пример настройки параметра с фильтром в отчете реестра процессов
 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 - то упадет ошибка, что значение параметра не задано.