addOnStageChange() вызывается дважды

Я написал обработчик событий при смене этапа в BPF в Opportunity Entity:

var checkForAccountApproved = function (executionContext) {
    var formContext = executionContext.getFormContext();
   formContext.data.process.addOnStageChange(function (stageContext) {

        var stageName = stageContext.getEventArgs().getStage().getName().toString();
        if (some conditions) {
            formContext.data.process.movePrevious();

        }
        else {
            currentActiveStage.setValue(stageName);
            formContext.data.entity.save();
        }

    });
};

По сути, при нажатии "Далее" мне нужно проверить, не удовлетворены ли некоторые условия, только тогда следующий этап должен быть активным, в противном случае текущий этап должен быть активным.

Если условия не выполняются, то есть происходит смена ступени, я сохраню значение текущей активной ступени в поле. Если я явно вызываю save, обработчик события снова запускается.

Почему это так?

0 ответов

Вероятно, поздний ответ, но... не используйте formContext.data.process.movePrevious() для отмены изменения этапа, так как это попытается переместить этап назад и повторно выполнить предварительное изменение (это, вероятно, сохранит цикл до тех пор, пока вы не вернетесь к первому этапу).. Вместо этого используйте приведенный ниже, который отменяет изменение этапа и остается на текущем этапе

ExecutionContext.getEventArgs().preventDefault();

Другие вопросы по тегам