我们正在使用ADF 12C(JDeveloper) 在我们的项目中,我们有XML menuItems和boundedTaskFlows。任何menuItem的OnClick然后将加载并显示相应的有界taskFlow。我们有一个业务案例,每次点击menuItem我们都在检查AppModule是否是脏的,如果它是脏的我们正在调用diaglog说你想要回滚现在我遇到了一个问题。
根据我的要求,我在我的一个页面中使用 Isolated boundedTaskFlow 。因此,当我检查Dirty时,它总是返回False。这是我的代码,它将检查脏。
// Check if Application Module is dirty
public Boolean getAmChangesExist() {
DCBindingContainer bindingContext = (DCBindingContainer) BindingContext.getCurrent().getCurrentBindingsEntry();
ApplicationModule am = bindingContext.findDataControl("HISRootAppModuleDataControl").getApplicationModule();
// Here it is always returning as false If, I am using Isolated BTF
return am.getTransaction().isDirty();
}
private boolean checkAMDirty() {
if (getAmChangesExist()) {
if (getConfirmationPopupBinding() != null) {
RichPopup.PopupHints hints = new RichPopup.PopupHints();
getConfirmationPopupBinding().show(hints);
}
return Boolean.TRUE;
}
return Boolean.FALSE;
}
答案 0 :(得分:1)
ISOLATED和SHARED任务流程之间的主要区别在于,通过独立的任务流程,您将获得AM定义的独特,全新的新实例。 因此,这段代码:
bindingContext.findDataControl( “HISRootAppModuleDataControl”)getApplicationModule();
如果您在第二个屏幕中,将检索第二个实例,而在上一个屏幕中(在打开隔离的任务流之前),它将返回第一个实例。
您可能知道,还有另一种检查脏数据的方法: http://adfbugs.blogspot.co.uk/2009/12/pending-changes-in-adf-application.html
答案 1 :(得分:0)
我已经得到了上述事情的解决方案。 ADF在模块之间切换时提供inbuit dirtyCheck。参考文献