Дальнейшая судьба папок приложения (app folders) в Jmix

В приложениях на Cuba мы активно использовали папки приложения.
Простой и достаточно гибкий механизм. Много чего им не хватало из возможностей кастомизации, они часто выручали.
В Jmix папок приложения или аналогичного механизма сейчас нет.
Но и в списке удаленных из Jmix механизмов их тоже нет…

И я вижу, что в Addon миграции Cuba->Jmix папки приложения есть, они как минимум переедут при миграции приложения на Jmix.

А что дальше?
В Jmix планируется реализовывать App Folders или что-то подобное?

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

Мы бы хотели сначала изучить спрос и как следует обдумать что и как нужно делать. Не могли бы вы поделиться, какими конкретно возможностями папок приложения в CUBA вы пользуетесь, и чего вам не хватает в плане кастомизации?

С уважением,
Константин

Нам часто требуется не просто дать пользователю укрупненно доступ к экранам просмотра перечня сущностей, а сразу разделять все это на более узкие потоки, в зависимости от стадии обработки той или иной сущности и прочих условий.
Не просто единая точка в хода на экран “Все заказы”, и дальше пусть уточняется фильтрами, а сразу делить на подпотоки: “Заказы созданные мной”, “Заказы от моих клиентов”, “Срочные” и т.п.
И тут для нас ОГРОМНЫЙ плюс папок приложения в том, что они позволяют такое деление не “хардкодить”, а легко изменять и дополнять на внедрении или в процессе эксплуатации. Вплоть до “эксклюзивных” папок для отельных пользователей в зависимости от их стиля работы или процессов, в которых они участвуют.
Сейчас создание логики отбора в папку приложения вполне может создать и сам пользователь. А за техническим специалистом остается только (при необходимости) назначить скрипт видимости и скрипт подсчета количества элементов в папке.

У папок поиска плюсы аналогичные, но на сегодня, в нашей практике это более редко используемая фича.

Кстати, еще у нас достаточно востребованы Наборы и их я тоже не увидел в Jmix.
В приложениях вокруг работы с разного рода документами, задачами, заказами, заявками - частая потребность пользователя - искать сущности по разным критериям и “откладывать” их в некие “Папки-подборки” для временного использования.

Чего не хватает папкам приложения Куба:

  1. Штатного компонента для их отображения в SideMenu.
    SideMenu сейчас используется Очень часто и штанная панель папок (App filders) при таком варианте меню никуда не вписывается.
    Мы для себя решили, что штанная панель папок - это средство для администратора приложения, где он может эти папки структурировать, навешивать скрипты и т.п. Показываем ее только для администратора.
    А для пользователей отображаем папки приложения в SideMenu “в рукопашную”.
  2. Хотелось бы иметь еще одну реализацию FoldersBean#openFolder с возможностью прокинуть в открываемый экран свои дополнительные параметры. Не очень часто, но это требуется.
  3. Порой сильно ограничивает то, что скрип количества в папке приложения должен вернуть только числовое значение. Хотелось бы из скрипта возвращать String.
    Примерно в половине случаев пользователю хочется видеть рядом с названием папки не только общее число элементов в ней, а еще и сколько их этих элементов имеют статус “срочно” или сколько из них “не прочитаны”. И чтобы отображалось это примерно так: “Заказы 10/3”.
    На “бейдже” рядом с пунктом SideMenu мы так отобразить надпись можем, а штатно скриптом количества папки сформировать эту надпись сейчас не получается.
  4. Полностью разделить фильтр отбора в папку от прочих фильтров, создаваемых на экране.
    Попробую описать в чем идея и в чем есть проблема в текущей реализации…
    Сейчас папка приложения хранит в себе обычный фильтр отбора сущностей в папку.
    Визуально его можно не отображать на компоненте Фильтр, подняв на условии фильтра флаг “скрытый”.
    Изменить фильтр/критерии отбора в папку обычный пользователь не может, если нет на это специального права.
    А при открытии папки приложения по факту открывается экран browse для сущности и “под капотом” в фильтр на экране назначаются критерии отбора, хранящиеся в настройке папки приложения.
    Таким образом, для пользователя папки - это “магия”. Кликает по папке и открывается экран с сущностями, отобранными по каким-то критериям, детали которых простому пользователю часто знать не надо, это определено настройкой приложения (администратором).

Проблема текущей реализации всплывает в сценарии, когда пользователи, работающие с папками приложения, пытаются дополнительно фильтровать записи в папке.
Например, есть в экземпляре приложения некая настроенная для всех папка: “Задачи, назначены мне”.
image

Работают пользователи с ней и не задумываются о том, откуда магия отбора записей в папку. Критерии фильтра отмечены как скрытые и в обычной работе пользователь их не видит.
Но вот если кому-то часто требуется дополнительно фильтрануть записи в этой папке, то пользователь добавляет свое условие отбора и сохраняет фильтр для себя (“сохранить как” в элементе Фильтра).
Потом ему требуется отредактировать свои условия, он идет в “Редактирование” в фильтре и тут он видит кроме своих критериев, которые он недавно сам добавил, какие-то еще неведомые и ранее невидимые для него условия (те самые, заданные администратором при настройке папки).
image
Скрыть их тут от пользователя нельзя, и запретить ему удалить эти “непонятные” условия - тоже нельзя.
Удаление таких “системных критериев” папки полностью нарушит отбор записей.
Для пользователя это Очень неочевидно:

  • Открыл папку приложения (как-то туда нужные записи отбирается)
  • Добавил свои критерии отбора, сохранил свой фильтр в папке - все отбирается как надо
  • Открыл редактирование фильтра, нашел какие-то “не мои критерии”, удалил их, снова сохранил свой фильтр.
  • Открываю папку приложения - вижу стандартно отобранные записи папки. Потом выбираю свой сохраненный фильтр, ожидаю, что к видимому набору записей применится мой фильтр, но “вдруг вижу что попало”.

Поэтому хорошо бы иметь штатную возможность скрыть фильтр отбора записей в папку приложения от всех пользователей, у кого нет права создания/редактирования папок приложения. Или еще один чек-бокс на условиях фильтра типа “системный”.
Такие условия скрывать в редакторе фильтра от обычных пользователей без специфичного права.
А если пользователь без специфичного права создает на экране свои дополнительные условия отбора и сохраняет их, то сохранять именно эти условия (без системных/скрытых от пользователя).

2 симпатии

Андрей,
Большое спасибо за подробное описание мотивации и требований, это очень ценно. Обязательно учтем когда доберемся до реализации. Завел тикет: https://github.com/Haulmont/jmix-misc/issues/10

С уважением,
Константин

2 симпатии