Menu

#194 Делегирование заданий для других пользователей

Next_Release
open
None
5
2017-07-17
2016-04-18
No

Для решения задач вроде “У человека поменялась должность, скажем, понизилась, у него больше нет прав на выполнения предыдущих заданий их надо передать новому руководителю, а человек не уволен он продолжает работать, в том числе и с системой RunaWFE” (взято из переписки с заказчиком) не получится использовать текущий функционал делегирования задач т.к требуется:

a) Массовость – необходимо переопределять исполнителя сразу для нескольких задач назна-ченных данному пользователю.
b) Изменения в чужом процессе (процессах) – администратор должен иметь возможность ме-нять исполнителя для всех запущенных задач в системе а не только своих.

Соответственно для реализации необходимо сделать два отдельных интерфейса:

  1. Отображение всех запущенных задач с фильтрацией по пользователю-пользователю включая стандартные механизмы BatchPresentation для фильтрации (например по дате)
  2. Диалог выбора нового исполнителя

Графическую часть 2-го интерфейса можно реиспользовать из текущей реализации делегирования.

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

Функционал должен уметь включаться/выключаться по значению системной настройки:
task.delegation.enabled=true/false

1 Attachments

Discussion

  • Andrei Mikheev

    Andrei Mikheev - 2016-05-20
    • assigned_to: Andrei Mikheev
     
  • Alexander Mamchur

    • status: open --> pending
    • assigned_to: Andrei Mikheev --> Alexander Mamchur
     
  • Dofs

    Dofs - 2016-06-06
    • status: pending --> open
     
  • Alexander Mamchur

    Здравствуйте.
    Требуется совет: рабочий вариант у меня сделан, но к окончательному виду может быть приведен по-разному, в связи с чем мне надо понять практику и приоритеты в подобных ситуациях.
    Суть:

    1. Можно сделать чуть более глубокий рефакторинг кода, и получить аккуратное решение. Но при этом изменится сигнатура функци public void delegateTask(User user, Long taskId, Executor currentOwner, List<? extends Executor> newOwners) - в аргументах Long taskId будет заменен на более универсальный List<long> taskIds.
      В пределах проекта это не проблема - всё может быть приведено в соответствие. НО!!! если есть вероятность использования проекта кем-то извне (проект-то - опенсорсный), то это не годится.</long>
    2. И тогда - решение будет оформлено декораторами-обёртками над существующим функционалом, не трогая последний. - Тоже правильное решение, но со своим минусом (разрастание таким образом кода, и дело даже не в объёме, а в общем эффекте постепенного усложнения...).

    Может кто-то из ведущих разработчиков прокомментирует, как сделать?

     
    • Dofs

      Dofs - 2016-06-20

      Добрый день.
      Моё мнение - сделать рядом метод delegateTasks с List<long> taskIds.
      Главное его преимущество перед циклом в клиенте - не избавление от цикла, а работа в одной транзакции.</long>

       

      Last edit: Dofs 2016-06-20
  • Andrei Mikheev

    Andrei Mikheev - 2017-07-17
    • assigned_to: Alexander Mamchur --> Andrei Mikheev
     
MongoDB Logo MongoDB