如果它是adf中的隔离BTF,则无法检查Dirty

时间:2016-05-02 05:28:07

标签: oracle-adf

我们正在使用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;
    }

enter image description here 任何建议将不胜感激。

2 个答案:

答案 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。参考文献

Warning on Saved Changes