我已经在商机实体中的BPF阶段更改了事件处理程序:
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 :(得分:0)
答案可能较晚,但... 不要使用formContext.data.process.movePrevious()取消阶段更改,因为这会尝试将阶段移回并重新执行阶段更改(这可能会一直循环直到您回到第一个阶段。.而是使用以下内容来取消阶段更改并停留在当前阶段
executionContext.getEventArgs()。preventDefault();