Условия в модуле BPM

Добрый день. Пожалуйста скажите, как в модели модуля BPM создать условие, от выполнения которого зависит дальнейший маршрут бизнес-процесса?
При старте процесса инициатор указывает согласующих и утверждающего. После окончания согласования, процесс доходить до утверждающего и если он не указан, то процесс должен идти в другой блок.

Добрый день.

Можно сделать это так:

  1. В проекте создать бин, с методом 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)}

Второй переход укажите как переход по умолчанию. Пример модели во вложениях.

Screenshot_21

testModel.zip (1.7K)

Спасибо за пример, разобрался

Добрый день!
Подскажите, актуально ли это для Cuba 7.1.3 ?
Делаю по вашему описанию, но у меня всё виснет на уровне создания экземпляра :pensive:

Добрый день.

Попробовал сделать новый проект на кубе 7.1, создал там бин, описанный выше, загрузил модель - всё работает.

Вот проект: bpm-condition.zip (90.4 КБ)

Спасибо! Посмотрю ваш проект.