我在 Opportunity Entity 中编写了一个关于 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();
}
});
};
基本上,在单击下一步时,我需要检查是否不满足某些条件,那么只有下一阶段应该处于事件状态,否则,当前阶段应该处于事件状态。
如果不满足条件,即发生阶段变化,我会将当前事件阶段的值存储在一个字段中。如果我明确调用保存,事件处理程序将再次触发。
为什么会这样?
最佳答案
可能是一个迟到的答案,但是...... 不要使用 formContext.data.process.movePrevious() 来取消您的阶段更改,因为这将尝试将阶段移回并重新执行您的前期更改(这可能会一直循环直到您回到第一个stage).. 而是使用下面的取消阶段更改并停留在当前阶段
executionContext.getEventArgs().preventDefault();
关于javascript - addOnStageChange() 调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52477325/