Добрый день. Пожалуйста скажите, как в модели модуля BPM создать условие, от выполнения которого зависит дальнейший маршрут бизнес-процесса?
При старте процесса инициатор указывает согласующих и утверждающего. После окончания согласования, процесс доходить до утверждающего и если он не указан, то процесс должен идти в другой блок.
Добрый день.
Можно сделать это так:
- В проекте создать бин, с методом roleExists, типа такого:
@Component("demo_ProcessUtils")
public class BpmProcessUtils {
@Inject
protected DataManager dataManager;
public boolean roleExists(String roleCode, UUID bpmProcInstanceId) {
LoadContext<ProcActor> ctx = LoadContext.create(ProcActor.class).setView(View.MINIMAL);
ctx.setQueryString("select pa from bpm$ProcActor pa where pa.procRole.code = :roleCode and " +
"pa.procInstance.id = :bpmProcInstanceId")
.setParameter("roleCode", roleCode)
.setParameter("bpmProcInstanceId", bpmProcInstanceId);
List<ProcActor> procActors = dataManager.loadList(ctx);
return !procActors.isEmpty();
}
}
Затем в модели выделите необходимый переход, в таблице свойств элемента кликните на Show advanced properties и в поле Flow condition пропишите вызов метода проверки наличия роли:
${demo_ProcessUtils.roleExists('role1', bpmProcInstanceId)}
Второй переход укажите как переход по умолчанию. Пример модели во вложениях.
testModel.zip (1.7K)
Спасибо за пример, разобрался
Добрый день!
Подскажите, актуально ли это для Cuba 7.1.3 ?
Делаю по вашему описанию, но у меня всё виснет на уровне создания экземпляра
Добрый день.
Попробовал сделать новый проект на кубе 7.1, создал там бин, описанный выше, загрузил модель - всё работает.
Вот проект: bpm-condition.zip (90.4 КБ)
Спасибо! Посмотрю ваш проект.