6.1. ProcActionsFragment
ProcActionsFragment
– фрагмент для работы с процессными действиями. После инициализации во фрагменте автоматически отобразятся:
-
кнопка запуска процесса, если процесс не запущен;
-
кнопки, соответствующие выходам из задачи, если процесс запущен, и текущий пользователь имеет активную задачу;
-
кнопка отмены процесса;
-
информация о задаче (имя и дата создания).
Каждому из действий возможно задать предикат, вычисляемый перед выполнением этого действия, что позволяет сделать проверку возможности выполнения действия в настоящее время (например, выполнить коммит экрана и в случае неудачи не выполнять процессное действие). Также можно задать слушатель, который будет выполнен после завершения действия (например, закрыть экран редактирования сущности и отобразить сообщение пользователю).
ProcActionsFragment
должен быть связан с экземпляром ProcInstance
. Связывание происходит во время инициализации фрагмента.
Пример инициализации фрагмента:
procActionsFragment.initializer()
.setBeforeStartProcessPredicate(() -> {
getScreenData().getDataContext().commit();
return true;
})
.setAfterStartProcessListener(() -> {
notifications.create()
.withCaption(messageBundle.getMessage("processStarted"))
.withType(Notifications.NotificationType.HUMANIZED)
.show();
})
.init(PROCESS_CODE, getEditedEntity());
-
Метод
initializer()
возвращает объект, используемый для инициализации фрагмента. -
Метод
setBeforeStartProcessPredicate
устанавливает предикат, который будет вычислен перед выполнением запуска процесса. Если предикат вернетfalse
, запуск процесса будет прерван. -
Метод
setAfterStartProcessListener
задает слушатель, который будет вызван после завершения действия запуска процесса. -
Самое главное – метод
init
– принимает два параметра: код процесса и экземпляр сущности. При вызове этого метода происходит поиск объектаProcInstance
, связанного с указанным экземпляром сущности и ссылающимся наProcDefinition
с указанным кодом. ЕслиProcInstance
существует, фрагмент связывается с ним, если нет, то создается новый объектProcInstance
.
Самый простой способ проинициализировать ProcActionsFragment
– использовать метод standard()
:
procActionsFragment.initializer()
.standard()
.init(PROCESS_CODE, getEditedEntity());
Стандартная инициализация делает следующее:
-
создает предикаты, которые вызывают коммит редактора сущности перед процессным действием запуска процесса или завершения задачи;
-
создает слушатели, показывающие сообщения "Процесс запущен", "Задача завершена" после процессного действия, а также вызывающие повторную инициализацию
ProcActionsFragment
.
Полный список методов, которые можно использовать для работы с фрагментом:
- Жизненный цикл процесса
-
- Конфигурация процесса
- Предикаты
-
-
setBeforeStartProcessPredicate()
– устанавливает предикат, который должен быть вычислен перед запуском процесса. Если предикат вернётfalse
, запуск процесса будет прерван.
-
setBeforeCompleteTaskPredicate()
– устанавливает предикат, который должен быть вычислен перед завершением задачи. Если предикат вернётfalse
, завершение задачи будет прервано.
-
- Слушатели процесса и задач
- Поставщики переменных и параметров
-
-
setStartProcessActionProcessVariablesSupplier()
– задаёт поставщик переменных процесса. Поставщик возвращает мэп переменных процесса, которые должны быть добавлены к экземпляру процесса Activiti при запуске процесса.
-
setCompleteTaskActionProcessVariablesSupplier()
– задаёт поставщик переменных процесса. Поставщик возвращает мэп переменных процесса, которые должны быть добавлены к экземпляру процесса Activiti при завершении задачи.
-
- ProcActionsFragment API
- Initializer API
-
init – setAfterCancelProcessListener – setAfterClaimTaskListener – setAfterCompleteTaskListener – setAfterStartProcessListener – setBeforeCancelProcessPredicate – setBeforeClaimTaskPredicate – setBeforeCompleteTaskPredicate – setBeforeStartProcessPredicate – setButtonWidth – setCancelProcessEnabled – setClaimTaskEnabled – setCompleteTaskActionProcessVariablesSupplier – setCompleteTaskActionScreenParametersSupplier – setCompleteTaskEnabled – setStartProcessActionProcessVariablesSupplier – setStartProcessActionScreenParametersSupplier – setStartProcessEnabled – setTaskInfoEnabled