Menu

#190 Дополнить фильтр списка экземпляров процессов

Next_Release
closed
None
5
2017-07-24
2016-02-10
No

В фильтр списка экземпляров добавляем возможность фильтрации по
• Исполнитель задания (с опцией - "включая/не включая вхождение в группы")
• Название роли
• Имя задания
• Длительность задачи
• Текущая длительность задачи
• Время получения задания
• Время взятия задания на исполнение
• Срок задачи

Фильтрация работает следующим образом:

  1. Рассматривается список незавершенных экземпляров бизнес-процессов, в них рассматриваются все узлы-действия, в которых в данный момент находятся точки управления.

  2. Для каждого экземпляра проверяется, есть ли в нем узел-действие, содержащее точку управления, для которого
    • Если элемент "исполнитель задания" отмечен галочкой: исполнителем является указанный в фильтре пользователь (в случае опции - исполнителем является группа, в которую входит указанный в фильтре пользователь). Также в фильтре в качестве исполнителя можно вместо пользователя указать группу
    • Если элемент "название роли" отмечен галочкой: название роли совпадает с указанным в фильтре
    • Если элемент "имя задания" отмечен галочкой: название задания (то есть - узла-действия) совпадает с указанным в фильтре
    • Если элемент "длительность задачи" отмечен галочкой: Длительность задачи попадает в границы, указанные в фильтре
    • Если элемент "текущая длительность задачи" отмечен галочкой: текущая длительность задачи попадает в границы, указанные в фильтре
    • Если элемент "время получения задания" отмечен галочкой: Время получения задания попадает в границы, указанные в фильтре
    • Если элемент "время взятия задания на исполнение" отмечен галочкой: Время взятия задания на исполнение попадает в границы, указанные в фильтре
    • Если элемент "срок задачи" отмечен галочкой: Срок задачи попадает в границы, указанные в фильтре

  3. Экземпляры, для которых выполняется условие, отображаются в таблице. Также по данным элементам возможна сортировка и группировка экземпляров

  4. Для отфильтрованного списка экземпляров добавляется кнопка (ссылка) экспорта в Excel

Discussion

  • Andrei Mikheev

    Andrei Mikheev - 2016-05-12
    • Group: In Future --> Next_Release
     
  • Panarin Vladimir

    • assigned_to: Panarin Vladimir
     
  • Panarin Vladimir

    • status: open --> pending
     
  • Panarin Vladimir

    Полноценной выгрузки в eсxel ещё нет.
    Условия фильтрации по длительности задач вводятся в том же формате,
    что и длительность задачи по умолчанию в настройках (например 2 hours, или 5 minutes).
    Работоспособность проверял для H2, PostgreSQL, Oracle и MS SQL Server.
    По производительности: на 1000 экземпляров процессов на глаз разницу заметить не удалось. Точных измерений не производил.
    (Но производительность упасть должна, так как добавился left join c таблицами BPM_TASK, EXECUTOR, BPM_SWIMLANE.)

     
  • Andrei Mikheev

    Andrei Mikheev - 2016-07-17

    Уточнение постановки:

    Если у поля (нового элемента фильтра) позиция отображения не равна "нет", то столбец показываем. Но поле заполняем не пустым значением только в случае единственного возможного значения (то есть, в случае диапазона значений или использования а фильтре элемента "*", допускающего много значений, оставляем поле пустым)

    Дублировать экземпляры процессов не надо. Экземпляр процесса должен оставаться единственным.

    Если может быть несколько значений и в связи с этим поле пустое, то при выполнении сортировки и группировки по этому полю, его значение считается пустым. То есть, все экземпляры с возможными неоднозначными значениями попадут в одну группировку. С сортировкой - аналогично.

     
  • Andrei Mikheev

    Andrei Mikheev - 2016-07-20

    Уточнение (модификация) постановки.

    Предлагается модифицировать постановку следующим образом (так, по-видимому, будет лучше со стороны логики поведения формы и проще в реализации).

    Если у поля (нового элемента фильтра) позиция отображения не равна "нет", то столбец показываем в таблице. Но значение поля такого столбца не заполняем по результатам запроса. В поле пишем в виде строкового значение содержимое фильтра этого элемента.
    То есть, значение этих полей во всех строках будет одинаковым. Тогда сортировка по этому полю будет фиктивной (т.е. при "включении" сортировки в любом направлении по этому полю ничего не изменится, т.к. все поля одинаковые). Группировка тоже будет простейшей - все "свернется" в одну строку.

     
  • Andrei Mikheev

    Andrei Mikheev - 2016-07-20

    Забыл написать: Если у нового поля позиция отображения не равна "нет", то в поле "Критерий фильтрации" обязательно должна стоять галочка, которую нельзя снять. В "обратную" сторону это не так: можно поставить в "Критерий фильтрации" такого поля галочку (и, соответственно, заполнить фильтр), но само поле не показывать (т.е. в позиции отображения будет "нет").

     
  • Panarin Vladimir

    Реализовал новую вкладку "Запущенные процессы (подробно)".
    Реализовал метод ExecutionService.getextendedProcesses().
    Убрал повторяющиеся строки если нет фильтров и нет отображаемых полей по заданиям.

    PS. Может лучше вообще никогда не показывать новые поля в результате запроса? Тогда для устранения дублирования достаточно будет distinct-а.

     
  • Andrei Mikheev

    Andrei Mikheev - 2016-07-27

    Если таким образом можно устранить дублирование, то давай так и сделаем. Это решит проблему. Просьба внести в пул реквест соответствующие изменения.

     
  • Andrei Mikheev

    Andrei Mikheev - 2016-07-27
    • status: pending --> open
     
  • Panarin Vladimir

    • status: open --> pending
     
  • Panarin Vladimir

    Дублирование устранил

     
  • Andrei Mikheev

    Andrei Mikheev - 2016-08-12

    В настоящий момент непонятно, насколько изменения в фильтре ухудшат производительность.

    Поэтому надо добавить в релиз оба варианта. При этом надо добавить в web-интерфейс настройку, - какую вкладку (т.е. пункт меню) показывать.

    Должна показываться только одна строка в меню (В зависимости от этой настройки) - либо со старым фильтром, либо с новым. Но назваться в обоих случаях она должна одинаково - "Запущенные процессы".

    По дефолту должна быть страница с новым фильтром (то есть то, что сейчас называется "Запущенные процессы (подробно)")

     
  • Andrei Mikheev

    Andrei Mikheev - 2017-07-24
    • status: pending --> closed
     
MongoDB Logo MongoDB