Платформа 3V/Согласование/Реестр процессов: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показано 7 промежуточных версий этого же участника)
Строка 3: Строка 3:
 
[[Файл:процессы согласования. реестр.png|750px|слева|border]]  <br clear="both" /><br>
 
[[Файл:процессы согласования. реестр.png|750px|слева|border]]  <br clear="both" /><br>
  
Для того, чтобы настроить отчет для реестра процессов согласования требуется настроить Внешний справочник на объекте Соединение с источником данных  '''''.../workflow/api/WorkflowDataSourceView/Processes'''''/ и в качестве идентификатора объекта задать '''''AllRunnedProcesses'''''.  В справочнике будет отображён список всех запущенных процессов и выведены следующие атрибуты:
+
Для того, чтобы настроить отчет для реестра процессов согласования требуется настроить Внешний справочник на объекте Соединение с источником данных  '''''.../workflow/api/WorkflowDataSourceView/Processes'''''/ и в качестве идентификатора объекта задать '''''AllRunnedProcesses'''''.  Так же в справочнике необходимо настроить следующее:<br>
 +
* Тип атрибута StateId должен быть указан как Идентификатор <br>
 +
* Тип атрибута ParentStateId должен быть указан как Родитель <br>
 +
* Тип атрибута Name должен быть указан как Наименование <br>
 +
В справочнике будет отображён список всех запущенных процессов и выведены следующие атрибуты:
 
*Идентификатор процесса или подпроцесса('''''Id''''')
 
*Идентификатор процесса или подпроцесса('''''Id''''')
 
*Идентификатор родительского процесса(для подпроцессов)('''''ParentId''''')
 
*Идентификатор родительского процесса(для подпроцессов)('''''ParentId''''')
*Наименование('''''Name''''')
+
*Наименование объекта согласования/экземпляра процесса/подпроцесса с наименованиями параметров('''''Name''''')
*Идентификатор организации('''''EntityId''''')
+
*Идентификатор экземпляра процесса('''''EntityId''''')
*Статус согласования('''''StateName''''')
+
*Идентификатор типа объекта: 1 - объект согласования, 2 - объект согласования подпроцесса, 3 - экземпляр процесса/подпроцесса, ('''''EntityType''''')
*Комментарий('''''StateModelComment''''')
+
*Наименование текущего состояния('''''StateName''''')
*Дата начала('''''StartedDate''''')
+
*Значение свойства localizedComment объекта согласования ('''''StateModelComment''''')
*Дата изменения('''''StateChangedDate''''')
+
*Дата запуска процесса ('''''StartedDate''''')
*Дата изменения статуса('''''StateRegulationDate''''')
+
*Дата перехода в текущее состояние ('''''StateChangedDate''''')
*Ответственный за статус('''''StateResponsible''''')
+
*Регламентная дата, если она настроена для текущего состояния ('''''StateRegulationDate''''')
*Признак окончания('''''IsFinished''''')
+
*Ответственные за шаги на текущем состоянии ('''''StateResponsible''''')
*Общее количество процессов('''''TotalProcessCount''''')
+
*Признак "завершенности" экземпляра подпроцесса ('''''IsFinished''''')
*Количество завершенных процессов('''''FinishedProcessCount''''')
+
*Общее количество процессов ('''''TotalProcessCount''''')
 +
*Количество завершенных процессов ('''''FinishedProcessCount''''')
  
Далее необходимо создать сам отчет с идентификатором REPORT_WORKFLOW_STATUSES (данный код указывается в конфигурационном файле, как было написано выше), настроить отчет можно в любом виде, на усмотрение пользователя. Единственное, необходимо, чтобы первым столбцом выводился атрибут Name, для корректного формирования названия объекта - экземпляра процесса и наименование параметров, с которыми он запущен.<br><br>
+
Далее необходимо создать сам отчет с идентификатором REPORT_WORKFLOW_STATUSES (данный код указывается в конфигурационном файле, как было написано выше), настроить отчет можно в любом виде, на усмотрение пользователя. Единственное, необходимо, чтобы первым столбцом выводился атрибут Name, для корректного формирования названия объекта - экземпляра процесса и наименование параметров, с которыми он запущен. <br><br>
 
<div class="NavFrame collapsed" style="width:700px; overflow:auto;">
 
<div class="NavFrame collapsed" style="width:700px; overflow:auto;">
 
   <div class="NavHead">Примеры</div>
 
   <div class="NavHead">Примеры</div>
Строка 25: Строка 30:
 
   </div>   
 
   </div>   
 
</div>
 
</div>
 +
 +
Так же необходимо настроить для первого столбца отображение гиперссылок. В дальнейшем, после реализации конструктора согласования, при клике по гиперссылке процесса в конструкторе будут открываться его настройки.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON пример настройки гиперссылок для строк с экземплярами процесса и подпроцесса</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
  "hyperlinkOptions": {
 +
            "metaObjectSource": {
 +
              "formula": {
 +
                "expression": "if(IsNullOrEmpty([2]) or [3] <> 3, Null(), [1])",
 +
                "operands": [
 +
                  {
 +
                    "dictionaryId": 125348,
 +
                    "attribute": {
 +
                      "discriminator": "OwnAttributeDefinitionDto",
 +
                      "id": 23
 +
                    },
 +
                    "attributeId": 23,
 +
                    "discriminator": "AttributeFormulaOperandDto",
 +
                    "code": null,
 +
                    "id": 1,
 +
                    "name": null
 +
                  },
 +
                  {
 +
                    "dictionaryId": 125348,
 +
                    "attribute": {
 +
                      "discriminator": "OwnAttributeDefinitionDto",
 +
                      "id": 4
 +
                    },
 +
                    "attributeId": 4,
 +
                    "discriminator": "AttributeFormulaOperandDto",
 +
                    "code": null,
 +
                    "id": 2,
 +
                    "name": null
 +
                  },
 +
                  {
 +
                    "dictionaryId": 125348,
 +
                    "attribute": {
 +
                      "discriminator": "OwnAttributeDefinitionDto",
 +
                      "id": 24
 +
                    },
 +
                    "attributeId": 24,
 +
                    "discriminator": "AttributeFormulaOperandDto",
 +
                    "code": null,
 +
                    "id": 3,
 +
                    "name": null
 +
                  }
 +
                ],
 +
                "code": null,
 +
                "id": 1,
 +
                "name": null
 +
              },
 +
              "discriminator": "FormulaValueSourceDto"
 +
            },
 +
            "parameterSources": [],
 +
            "discriminator": "MetaObjectHyperlinkOptionsDto",
 +
            "openTarget": "SameWindow"
 +
          }
 +
</syntaxhighlight>
 +
</div></div>
 +
 +
=== Настройка параметра ===
 +
 +
Источник реестра всех процессов можно параметризировать. Если используется несколько объектов согласования, то можно через параметр отображать процессы выбранного объекта согласования, что может сократить время построения реестра процессов.<br>
 +
В параметре необходимо передавать идентификатор объекта согласования. Если параметр не задан - будут подгружаться все согласования и все процессы. <br>
 +
Чтобы настроить параметр с объектами согласования через внешний справочник объектов необходимо выполнить следующее:
 +
* Добавить объект "Соединение с источником данных" .../repository/api/RepositoryDataSource/
 +
* Добавить внешний справочник на этом соединении, в качестве идентификатора объекта задать MetaObjects
 +
* Для следующих атрибутов настроить тип:
 +
Тип атрибута Id должен быть указан как Идентификатор <br>
 +
Тип атрибута ParentId должен быть указан как Родитель <br>
 +
Тип атрибута Name должен быть указан как Наименование <br>
 +
* Справочник должен быть с включенным кэшем
 +
* В справочник реестра процессов необходимо добавить параметр
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON пример настройки параметра в справочнике</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
"parameters": {
 +
    "definitions": [
 +
      {
 +
        "id": 1,
 +
        "name": "Число"
 +
      }
 +
    ],
 +
    "defaultValues": [
 +
      {
 +
        "discriminator": "SimpleParameterValueDto",
 +
        "parameterId": 1,
 +
        "value": [
 +
          1
 +
        ]
 +
      }
 +
    ]
 +
  },
 +
</syntaxhighlight>
 +
</div></div>
 +
 +
* В отчете реестра процессов добавить, созданный ранее, внешний справочник объектов в качестве параметра, для параметра настроить фильтр на тип объекта согласования
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON пример настройки параметра с фильтром в отчете реестра процессов</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
"parameters": [
 +
    {
 +
      "dictionaryId": 0,
 +
      "options": {
 +
        "groupingMethod": "Default",
 +
        "virtualElements": [],
 +
        "dictionaryId": 195546,
 +
        "filter": {
 +
          "value": [
 +
            9
 +
          ],
 +
          "skipIfValueNull": false,
 +
          "attributeId": null,
 +
          "attribute": {
 +
            "discriminator": "OwnAttributeDefinitionDto",
 +
            "id": 23
 +
          },
 +
          "conditionType": "AttributeEqualConstant",
 +
          "discriminator": "ValueConditionalDictionaryFilterDto",
 +
          "inversion": false
 +
        },
 +
        "hierarchyId": null,
 +
        "limit": null
 +
      },
 +
      "discriminator": "DictionaryParameterDto",
 +
      "defaultValue": [
 +
        114228
 +
      ],
 +
      "value": [
 +
        114228
 +
      ],
 +
      "isMultiselect": true,
 +
      "isEmptyValuePossible": true,
 +
      "isDisableable": false,
 +
      "isDisabled": false,
 +
      "id": 1,
 +
      "name": "Согласования"
 +
    }
 +
  ],
 +
</syntaxhighlight>
 +
</div></div>
 +
 +
* Сохранить изменения в отчете, далее при открытии реестра в нем должна появиться панель с параметром.
 +
 +
'''!Важно''': есть ограничение со стороны справочников, если для справочника процессов указать наличие параметра, но в отчете скинуть его на null - то упадет ошибка, что значение параметра не задано.

Текущая версия на 10:12, 18 апреля 2022

Реализовано в версии 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 - то упадет ошибка, что значение параметра не задано.