Best Practice - Bounded Task Flows, Regions and Nested Application Modules

Using JDev 11.1.1.3; understand that it's generally considered good practice to just have 1 root application module servicing model content / services for each page. In our application, we've used a number of bounded task flows and page fragments deployed as af:region's into pages as either a) views targeted in page-flow navigation, b) tab panel content inside a regular jspx, or c) af:popup / af:dialog content. As it stands, we've not engaged nesting of the application modules for this embedded region content, so these regions are no doubt instantiating new AM's if/when invoked. Should the AM's servicing these embedded regions be deployed nested within the root AM's, and then if so, does this change the way that the jsff / fragment content is actually developed (currently as per any other jspx using the DataControl pallete). Or are the best-practice directives talking about a page as being the design-time / declarative composition of content rather than the run-time aggregation of page + fragments ... in which case the fact that our embedded fragments are not using nested AM's is unlikely to concern.
Thanks,

Probably a better question for the ADF EMG: http://groups.google.com/group/adf-methodology?hl=en
CM.

Similar Messages

  • How to pass parameter through URL to bounded task flow with page fragment

    I want to pass parameter to Bounded Task Flow With Page Fragment trough URL
    as I start this taks flow with router and according to this Param I will rout the user.
    I added input param to taks flow named direction and make the task flow called URL invoke url-invoke-allowed
      <input-parameter-definition id="__41">
          <name id="__42">direction</name>
          <value>#{pageFlowScope.direction}</value>
          <class>java.lang.String</class>
        </input-parameter-definition>but I don't know how to add this to the JSPX that I will add the bounded task flow Inside.
    and How to pass this from URL

    Hi,
    url-invoke-allowed is only required if the task flow itself is directly accessible from a browser (which is not the case at all if the task flow uses page fragments). To pass input parameters to a task flow that is embedded in a region and that has input parameters, you define the input parameters on the taskFlow Id that is created in the PageDef file of the containing page. To learn ADF task flows, have a look at the videos below. They also contain a sample for passing parameters to a region
    http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/taskflow-overview-p1/taskflow-overview-p1.html
    http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/taskflow-overview-p2/taskflow-overview-p2.html
    Frank

  • Master-detail table where detail is in a bounded task flow

    Dear all,
    Iam pretty much new to ADF 11g. I have the following question.
    I have a search form(using af:query) created from the View Criteria of a view. The search results are displayed in a master-detail table, since my view has the following form in the data control:
    MasterView ->DetailView
    I would like that the detail table be part of a page fragment of a region of a bounded task flow. And of course, the detail table should be refreshed every time another row is selected in the master table.
    Is this feasible? Because I find difficulties in the following areas:
    1. How to pass a parameter to the bounded task flow that will display the detail table?
    (I suppose that I will need to build a new view to display the DetailView. In the WHERE clause I will have to pass the id of the row clicked in the master table.
    2.How passing the variable to the bounded task flow of the detail table be implemented when clicking the row of the master table? In similar examples I have seen, e.g. in the ADF Code Corner, there is always a submit button that sets a pageFlowScope variable.
    Is my approach feasible or it needs a lot of ADF twisting?
    Edited by: dimitris74 on Sep 12, 2011 6:20 AM

    Hi,
    If you have two different regions in your page for master and details and you want to refresh the child table based on your master row selection then you can use the contextual actions. Raise an event whenever you select a row and send your master-table id as the payload. Have a handler method at the detail page and execute some logic to get the rows for the selected master record.
    I hope it helps you.
    Thanks,
    Lakshman

  • Nested Application Module - commit behavior

    Guys,
    I have ADF BC in the following hierarchial manner.
    AM1
    -VO1
    -VO2
    -AM2 (nested AM)
    Assume that there are pending transactions on both AM1 and AM2.
    what is the behaviour for the follwing?
    Q1 . Issuing commit on AM1, will it commit AM2 also?
    Q2 . Issuing commit on AM2, will it alone commit?
    Edited by: Dev on Apr 19, 2011 12:00 PM

    ADF distinguish between root application module and nested application modules. A root app module has no parent whereas an nested app module has a parent. A root app module holds the transaction (and only the root app module). Nested app module share the transaction of the root app module (they are nested in).
    So Q1: yes and Q2: no.
    Read 9.4.2 here http://download.oracle.com/docs/cd/E17904_01/web.1111/b31974/bcservices.htm#sm0229 fro more info.
    Timo

  • Best practice question for Bounded task flows

    We are new to Jdeveloper/ADF and I was wondering if we should always try to use a bounded task flow for our applications... is this considered the best way to develop an app? even the small single page ones?
    Thanks in advance.

    Hi,
    let me turn teh question around: How many tools do you have at home beside of a hammer ? In other words, its the problem you need to solve (and use cases are problems) that should determine the use of bounded task flows and its granularity. Note that for each use case the bounded task flow makes a good candidate for delivering it. Doesn't mean that every single page needs to go into its own task flow. For general bounded best practices have a look here
    http://www.oracle.com/technetwork/developer-tools/jdev/adf-task-flow-design-132904.pdf
    Frank

  • Drag and drop a bounded task flow in a jspx page

    Hi!!
    I am using jdeveloper 11.1.2.1 I had created a Bounded task flow which contains a jsff
    page.While i am trying to drag and drop this Bounded task flow as a region in jspx page
    am getting the error as
    Cannot create a region from a taskflow containing facelets fragements in a
    jspx page.

    see the difference between JSP XML documents and Facelets-
    http://oracleadf-java.blogspot.in/2013/05/beauty-of-adf-taskflow-difference-bw.html
    both are different view technology.
    Always Remember if
    fragment is .jsff (JspXML type)-- main page must be of JSP XML type (.jspx )
    fragment is .jsff (Facelets typee)-- main page must be of Facelets type (.JSF)
    _Ashish

  • Can not commit when using region in bounded task flow

    Hi All
    I am using Jdeveloper 11g R2 (11.1.2.3) & Weblogic 10.3.5.0
    I have 2 bounded task flow in my application (A and B)
    Each contain a fragment with few tabs (using af:panelTabbed)
    I have another common functionality in this 2 bounded task flows
    So I create another bounded task flow and add it as a region in tabs in task flows A and B
    But when I am going to the common tab and insert record and commit using task flow commit it is not commit records in database
    Is something wrong ? Any ideas how I can fix it?
    Regards
    Mohsen

    Hi Frank
    I am using below code for commit (from TaskFlowUtils class)
    public void commitTaskFlow() {
    getDataControlFrame().commit();
    public DataControlFrame getDataControlFrame() {
    BindingContext bindingContext = oracle.adf.controller.binding.BindingUtils.getBindingContext();
    String dataControlFrameName = bindingContext.getCurrentDataControlFrame();
    DataControlFrame dataControlFrame = bindingContext.findDataControlFrame(dataControlFrameName);
    return dataControlFrame;
    Your comment was too helpful , I change data control scope to shared and it is working now
    One more related question:
    Is adding bounded task flow into another fragment as region an advised approach?
    Thanks a lot
    Regards
    Mohsen

  • Nested AM for Imported Bounded Task Flows - jdev 11.1.2.3 redhat 5.8

    Hello:
    Examples below all are Fusion ADF Web Apps.
    subsystem1 = ss1 creates adflib1 with bounded task flow = tf1
    subsystem2 = ss2 creates adflib2 with bounded task flow = tf2
    Master system imports adflib1 and adflib2
    In Master how can I create a app module that nests app modules from adflib1 and adflib2?
    In Master, on a single page with splitter, I drop tf1 on one side and tf2 on the other side. I make a data change to tf1 and data change to tf2 and then commit. Changes are not commited on tf2. How can I make it to commit on both task flows 1 and 2?
    I tried to create an app module in master and nest app module from ss1 and ss2 under that, but still changes are not committed on tf2.
    Any ideas?
    Thanks much.

    Hi,
    use shared data controls in your task flows so that a single transaction is created.
    You want to read the following blog entries
    http://bit.ly/MOVC1S
    http://bit.ly/KOv5NY
    http://bit.ly/KBCx0P
    Frank

  • Trains and Fragment Based bounded task flows

    The Problem:
    I am trying to create a bounded task flow based on fragments using a train. I have created the train and it is showing up on my page. Unfortunately, when I click next on the af:trainButtonBar the UI does not update. If I navigate off the page and come back to the page containing the train the UI is on the next task in the task flow and the train is updated but it is not happening through partial page rendering. Does anyone have an idea why the UI is not updating? Here are some of the file contents:
    My first Fragment in the task flow (InputsNewBasic.jsff):
    <?xml version='1.0' encoding='windows-1252'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
              xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
              xmlns:f="http://java.sun.com/jsf/core">
      <af:pageTemplate viewId="/page_templates/TrainFragment.jspx">
        <f:facet name="fragementContent">
          <af:panelFormLayout>
            <af:inputText label="Name" inlineStyle="width:100%;"/>
            <af:inputText label="Description" rows="3" inlineStyle="width:100%;"/>
            <af:selectOneChoice label="Plugin Source">
              <af:selectItem label="Plugin Number One"/>
              <af:selectItem label="Plugin Number Two"/>
              <af:selectItem label="Plugin Number Three"/>
              <af:selectItem label="selectItem 1"/>
            </af:selectOneChoice>
            <af:inputText label="Input File Mask"/>
            <f:facet name="footer"/>
          </af:panelFormLayout>
        </f:facet>
      </af:pageTemplate>
    </jsp:root>
    My TrainFragment.jspx template:
    <?xml version='1.0' encoding='windows-1252'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
              xmlns:f="http://java.sun.com/jsf/core"
              xmlns:h="http://java.sun.com/jsf/html"
              xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
      <jsp:directive.page contentType="text/html;charset=windows-1252"/>
      <af:pageTemplateDef var="attrs">
        <af:xmlContent>
          <component xmlns="http://xmlns.oracle.com/adf/faces/rich/component">
            <display-name>TrainFragment</display-name>
            <facet>
              <description>This is the content that will be presented for the
                           fragment</description>
              <facet-name>fragementContent</facet-name>
            </facet>
          </component>
        </af:xmlContent>
        <af:train value="#{controllerContext.currentViewPort.taskFlowContext.trainModel}" var="trainNode">
          <f:facet name="nodeStamp">
            <af:commandNavigationItem text="#{trainNode.textAndAccessKey}"
                            visited="#{trainNode.visited}"
                            action="#{trainNode.action}"
                            disabled="#{trainNode.disabled}"/>
          </f:facet>
        </af:train>
        <af:trainButtonBar value="#{controllerContext.currentViewPort.taskFlowContext.trainModel}"/>
        <af:panelGroupLayout>
          <af:facetRef facetName="fragementContent"/>
        </af:panelGroupLayout>
      </af:pageTemplateDef>
    </jsp:root>
    My Task Flow Definition:
    <?xml version="1.0" encoding="windows-1252" ?>
    <adfc-config xmlns="http://xmlns.oracle.com/adf/controller">
      <task-flow-definition id="InputsNewTrain">
        <default-activity>InputsNewBasic</default-activity>
        <view id="InputsNewBasic">
          <page>/page_fragments/inputs/InputsNewBasic.jsff</page>
          <train-stop>
            <description>
              Specify the basic information for the Input definition.
            </description>
            <display-name>Basic Information</display-name>
            <sequential>true</sequential>
          </train-stop>
        </view>
        <view id="InputsNewDefineMap">
          <page>/page_fragments/inputs/InputsNewDefineMap.jsff</page>
          <train-stop>
            <description>
              Define the Input map
            </description>
            <display-name>Map Inputs</display-name>
            <sequential>true</sequential>
          </train-stop>
        </view>
        <view id="InputsNewCommit">
          <page>/page_fragments/inputs/InputsNewCommit.jsff</page>
          <train-stop>
            <description>
              Commit the Input definition
            </description>
            <display-name>Commit Definition</display-name>
            <sequential>true</sequential>
          </train-stop>
        </view>
        <train/>
        <use-page-fragments/>
      </task-flow-definition>
    </adfc-config>Message was edited by:
    JohnJ

    Hi,
    Have you try to set Refresh and RefreshCondition for your TaskFlow on the Page Definition
    for example:
    Refresh=IfNeeded
    RefreshCondition=<isPostback>

  • Where should backing bean for bounded-task-flow be declared?

    I have a bounded-task-flow that is used inside a dynamic region.
    I declared a managed bean to be used by activities (method/view) using the "backingBean" scope managed bean.
    There are two possible places that I can register the managed bean:
    1. adfc-config.xml
    2. the bounded-task-flow-definition.xml
    What are the differences between declaring the "backingBean" scope bean in "adfc-config.xml" and in the bounded-task-flow definition?
    What is the best practice for registering "backingBean" scope bean?
    If I understand correctly, registering the bean in adfc-config.xml is for one or more bounded-task-flow that use the same Bean class for instantiating their own backing bean. If the backing bean java class is only use by specific bounded-task-flow then it should make no difference to register the bean in either xml files.
    Am I correct?

    It should be registered within the bounded task flow for a couple reasons:
    1) Help maintain the encapsulation of the bounded task flow for reuse
    2) Managed bean definition metadata residing in adfc-config.xml or bootstrap configuration file will be preloaded when the ADF application is started. The actual managed beans will be instantiated the first time they are referenced. Therefore, to avoid the preload place them in the bounded task flow.
    thanks.

  • The bounded task flow disappear after exiting

    HI ALL
    i have a simple bounded task flow with fragment with behavior (always begin new transaction)
    this task flow have 2 pages to show emp and update emp then return with commit value
    i drop it on a page registered in asfc-config.xml as a region
    when i run the page the flow start when it exit it is disappear
    best regards

    thank you very much Frank for your reply and umesh too
    relay i tried to resolved but i still can't .
    its very simple bounded task flow and i am still learning ADF .
    as i said up its consist from
    1-view1:listEmp table of employees
    2- control flow case : edit
    3-view2: editEmp form to edit employee
    4- task flow return : commit to commit transaction
    5- task flow return : rollback to rollback the transaction
    if i drop it into adfc-config and add another view with control flow case to call it , this case is working and after i press commit or rollback the main page displayed again
    but if i drop it inside a page as a region it working but after i press commit or rollback the region disappeared and the page become empty
    best regards

  • af:fileDownloadActionListener screws up bounded task flow?

    Hi,
    I have a strange problem. I have a bounded task flow that runs in a popup. Everything works just fine. (I followed the [Embedding Regions inside PopUp Windows|http://www.oracle.com/technology/products/adf/patterns/11.1.1.1.0/popupregionpattern.pdf] functional pattern to implement it.)
    The purpose of the popup is to run a report on BI publisher via a webservice call. I have a bean on the pageFlowScope that executes the webservice call. The call is triggered by an <tt><af:fileDownloadActionListener></tt> that is placed inside an <tt><af:commandButton></tt>. The <tt>method</tt> attribute of the <tt><af:fileDownloadActionListener></tt> is bound to a method in that bean. The method is fairly simple:
    public void downloadReport(FacesContext context, OutputStream out) throws IOException {
        out.write(doBipRunReport());
    }The <tt>doBipRunReport()</tt> method performs the WS call and returns the byte array from the <tt>ReportResponse</tt> object that is returned by the Webservice. This works fine. The browser asks if I want to save the file or open it in the appropriate application. The file opens and it looks fine.
    Now when I return to my page, it doesn't work anymore. Any action I try to do on the page results in the same exception:
    4-nov-2009 12:40:43 oracle.adfinternal.controller.application.AdfcPageResolver getPhysicalURI
    WARNING: ADFc: de paginaoplosser heeft een view-ID met een NULL-waarde doorgegeven.
    4-nov-2009 12:40:43 UIXRegion _warn
    WARNING: Er is een fout opgetreden tijdens het verwerken van view-ID: null, URI: null, werkelijke URI: /rapporten/OverzichtATRTelers.jsff.
    java.util.EmptyStackException
         at oracle.adfinternal.controller.state.PageFlowStack.peek(PageFlowStack.java:101)
         at oracle.adfinternal.controller.state.ViewPortContextImpl.getPageFlowScopeMap(ViewPortContextImpl.java:651)
         at oracle.adfinternal.controller.application.AdfcPageFlowScopeProvider.getPageFlowScope(AdfcPageFlowScopeProvider.java:77)
         at org.apache.myfaces.trinidadinternal.context.RequestContextImpl.getPageFlowScope(RequestContextImpl.java:127)
         at org.apache.myfaces.trinidadinternal.el.TrinidadELResolver.getValue(TrinidadELResolver.java:71)
         at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143)
         at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
         at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:68)
         at com.sun.el.parser.AstValue.getTarget(AstValue.java:63)
         at com.sun.el.parser.AstValue.isReadOnly(AstValue.java:126)
         at com.sun.el.ValueExpressionImpl.isReadOnly(ValueExpressionImpl.java:230)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.getReadOnly(EditableValueRenderer.java:400)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.wasSubmitted(EditableValueRenderer.java:341)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.decodeInternal(EditableValueRenderer.java:113)
         at oracle.adfinternal.view.faces.renderkit.rich.LabeledInputRenderer.decodeInternal(LabeledInputRenderer.java:55)
         at oracle.adf.view.rich.render.RichRenderer.decode(RichRenderer.java:241)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.__rendererDecode(UIXComponentBase.java:1107)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decode(UIXComponentBase.java:701)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:802)
         at org.apache.myfaces.trinidad.component.UIXEditableValue.processDecodes(UIXEditableValue.java:236)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:988)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:974)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:799)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:988)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:974)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:799)
         at oracle.adf.view.rich.component.rich.layout.RichPanelBox.processDecodes(RichPanelBox.java:206)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:988)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:974)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:799)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:988)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:974)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:799)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:988)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:974)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:799)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.access$001(ContextSwitchingComponent.java:36)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$2.run(ContextSwitchingComponent.java:106)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:298)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.processDecodes(ContextSwitchingComponent.java:109)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:988)
         at oracle.adf.view.rich.component.fragment.UIXRegion.decodeChildrenImpl(UIXRegion.java:539)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:974)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:799)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl$ApplyRequestValuesCallback.invokeContextCallback(LifecycleImpl.java:1150)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnNamingContainerComponent(UIXComponentBase.java:1340)
         at oracle.adf.view.rich.component.fragment.UIXRegion.invokeOnComponent(UIXRegion.java:529)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnChildrenComponents(UIXComponentBase.java:1312)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnComponent(UIXComponentBase.java:1406)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnChildrenComponents(UIXComponentBase.java:1312)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnComponent(UIXComponentBase.java:1406)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnChildrenComponents(UIXComponentBase.java:1312)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.invokeOnComponent(ContextSwitchingComponent.java:188)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnChildrenComponents(UIXComponentBase.java:1312)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnComponent(UIXComponentBase.java:1406)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnChildrenComponents(UIXComponentBase.java:1312)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnComponent(UIXComponentBase.java:1406)
         at oracle.adf.view.rich.component.rich.RichDocument.invokeOnComponent(RichDocument.java:159)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnChildrenComponents(UIXComponentBase.java:1312)
         at oracle.adf.view.rich.component.fragment.UIXInclude.invokeOnComponent(UIXInclude.java:123)
         at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:731)
         at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:675)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:301)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:165)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:191)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:85)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
         at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:54)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:247)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:157)
         at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.security.jps.wls.JpsWlsFilter$1.run(JpsWlsFilter.java:96)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
         at oracle.security.jps.wls.util.JpsWlsUtil.runJaasMode(JpsWlsUtil.java:146)
         at oracle.security.jps.wls.JpsWlsFilter.doFilter(JpsWlsFilter.java:140)
         at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:70)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.wls.DMSServletFilter.doFilter(DMSServletFilter.java:202)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3588)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2200)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2106)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1428)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)I have no idea what's going wrong here. When I remove the <tt><af:fileDownloadActionListener></tt> from my <tt><af:commandButton></tt> the popup just closes as expected, and no error occurs. Does anyone have an idea what's going on here?
    Best regards,
    Bart Kummel

    You probably hit a bug similar to
    [http://adfbugs.blogspot.com/2009/08/region-and-dialog-return-bug.html#comments]
    May be oracle support can help you

  • AM pools vs Bounded Task Flows

    I'm hoping somebody can give some guidance please? A question around AM pools with the new Bounded Task Flow (BTF) features in JDev 11gPS1, utilising ADF Business Components.
    To describe the issue at hand I need to re-assert some ADF facts:
    1) Under ADF BC each root AMs can share connection pools by specifying same JDBC URL/JNDI - desired behaviour to best utilise resources of app server and db
    2) Each root AMs have separate AM pools. ie. 4 root AMs = 4 AM pools. Nested AMs share the AM pool of their root AM. ie. 1 root AM + 3 nested AMs = 1 AM pool.
    3) In previous versions of JDev separate root AMs provided separate transactional capabilities. This is less important now as BTFs can start their own isolated transaction regardless if they use the same root AM.
    4) Separate AM pools mean if you have an EO at design time shared among AMs, the EO cache benefit will be ignored if the dependent VOs are used in different AMs.
    With these facts in hand, as a separate point we're leaning towards an application architecture with one master app workspace, and every BTF in their own workspace. Our goal is reusability, such that the BTF workspaces can be reused by multiple master apps. In turn each BTF is self contained, including all it's own ADF BC components, including it's own root AM (with the exception EOs will be loaded from a common library).
    My question is this. At runtime when the master app makes use of the separate BTF workspaces, each BTF will spawn it's own AM pool. It would seem reasonable that this wasn't the case, that you wouldn't want all these wasted AM pools, but rather somehow nest the BTF AMs.
    In talking to two other ACEDs (names will remain anonymous to protect the innocent, unless they decide to follow up this post ;-), the first said via their stress testing that having multiple root AMs didn't prove to be an issue. The assumption being AM pools are lightweight.
    The second hinted that maybe the solution is to create at design time a root AM in the master app, then import the BTF business components, and set the BTF AMs as nested AMs of the master app root AM. The assumption being when the master app calls the BTF, and the BTF AM is spawned, as it is spawned through the master app, the master app will nest the BTF AM in the master app root AM (phew, try and say that with a mouth full of crackers).
    Any opinions appreciated.
    Cheers,
    CM.

    In thinking about the problem at hand, it does get more complicated if we can't nest the BTF AMs with the master app AM. As stated in the original post:
    1) Under ADF BC each root AMs can share connection pools by specifying same JDBC URL/JNDI- desired behaviour to best utilise resources of app server and db
    To emphasize, this point is only possible if the root AMs specify the same JDBC URL/JNDI. If the JDBC URL/JNDI names differ, this results is different connection pools for the root AMs - which is undesired. So it's important with separate root AMs to specify the same JDBC URL/JNDI, or alternatively, in the opposite case use nested AMs within a root AM, where the nested AMs through the root AM use the root AMs JDBC URL/JNDI name - and therefore 1 connection pool - the desired behaviour.
    (breath)
    Now couple these facts with if we have separate master applications, we'd potentially want them to connect to different database schema accounts, which is a reasonable requirement. The idea being you would have your main database schema account which has the schema db objects, then separate "application" accounts, 1 per master app, that are given privs onto the main database schema. In this way you can grant/revoke the exact privs in the db that the "application" account requires, not a blanket access to the main db schema.
    So....
    (big breath)
    The problem we hit is as the separate workspace BTF root AMs have no knowledge of who they will be used by (ie. which master app), and therefore no idea of what "application" db account they will connect to (as that's defined by the master app), they're very unlikely to have the same JDBC URL/JNDI name, which implies separate connections pools.
    ..and then...
    (another big breath)
    ...it becomes essential to nest the BTF AMs in the master app AM so they're forced to use the parent's JDBC URL/JNDI name - and therefore create one connection pool - the desired behaviour.
    (phewwwwwwwwwww)
    I hope all that makes sense. It's hard to articulate this succinctly, and from the previous responses, I can see if I skip over some of the details it's already creating confusion. However I think my question (with some back up from other ACEs) is valid and important for large scale reusable application architecture (some how that sentence makes me sound all arrogant and morally superior - not my intention - just trying to sort out our 11g builds before it's too late).
    I can think of a few solutions non ADF centric, of which one is to only have a single db "application" account with privs for all master applications, and we can use the db feature to turn on/off dynamic roles per master application to turn on/off privs per application connection (ignoring the fact this is probably slow). Yet I think it's still valid to want a solution in the ADF space, not supported by the db's features.
    Any thoughts & opinions appreciated.
    Regards,
    CM.

  • Calling bounded task flows imported as ADF libraries

    Hello,
    I have a main application referencing many bounded task flows included in ADF libraries.
    Is there a way to make the application not throwing exceptions if one of these libraries including the called task flow is not found?
    The first question is how to catch the exception "Caused by: oracle.adf.controller.ControllerException: ADFC-02001"
    The second problem is that once an exception is thrown , the only way to make the application work again with that task flow is to redeploy the whole application with the missing library in the proper place.
    It seems it is not possible to just add the library at run-time.
    Redoplying an application also seems to invalidate all the current open sessions.
    Could you give me suggestions or best practice on making the main application more indipendent from the libraries?
    Thanks.

    Hello Frank,
    It seems there's no way to catch the exception thrown when dinamically calling a bounded task flow in a (missing) library. In facts, I added the single page of the main application as default exception handler activity. I also tried to catch ALL exceptions in the Launcher class below, but I had no luck at all. Task flows are called dinamically from this common piece of code (appropriate for the UI Shell template):
    try {
    if (newTab) {
    TabContext.getCurrentInstance().addTab(title, taskflowId);
    } else {
    TabContext.getCurrentInstance().addOrSelectTab(title,
    taskflowId);
    } catch (TabContext.TabOverflowException toe) {
    toe.handleDefault();
    } catch (ControllerException ce) {
    System.out.println("The flow arrives here " + title + ": " + taskflowId);
    } catch (RuntimeException re) {
    System.out.println("The flow arrives here " + title + ": " + taskflowId);
    } catch (Exception e) {
    System.out.println("The flow arrives here " + title + ": " + taskflowId);
    I also tried to call the task flow in a remote application, but TabContext.getCurrentInstance().addTab(title, taskflowId) expects the taskflowid to be part of the main application, not of the remote app, since addTab() always add a "/" before the taskflowid String passes as parameter.
    So again my question: is there a way to profit by the dynamic features coming along with the UI Shell template, where task flows can be really referenced and called each time at run-time, no matter if libraries containing these task flows are present or not when deploying the caller application?
    I also repeat that from the tests I have done it looks like I can deploy the caller application without the referenced ADF libraries in their place (containing taskflows that should be called at run-time on user actions), but the problem in this case is that after that moment there's no way to fix the problem by just adding the missing library, that is you cannot place the library where it is expected to be and expect the caller to work after next call; this will just not work until next deploy of the calling application when libraries are in place . We also don't want completely separate web applications. We need task flows integration with the chance to modify and deploy these taskflows as ADF libraries at run time, separately from the caller of the taskflow, without needing to restart/deploy the caller application everytime a libraries changes or a missing library is added.

  • How to pass request parameter to bounded task flow?

    Hi, this is probably a simple question, but just not sure how this should be done. I have a .jspx that contains an ADF region for a bounded task flow. The task flow has a required input parameter, e.g. objectId. I want to be able to pass a request parameter that's sent into the .jspx page to the task flow. For example, Test.jspx?id=123 should pass 123 for the objectId input parameter of the task flow.
    When adding the ADF region to the page, the Edit Task Flow Binding dialog prompted for a value for the objectId input parameter. I wasn't sure what I can put for the value so I just hard-coded something like 123 for now. So in the page definition file, sometihng like the following got added:
        <taskFlow id="testtaskflow1"
                  taskFlowId="/WEB-INF/taskflow/test/test-task-flow.xml#test-task-flow"
                  activation="deferred"
                  xmlns="http://xmlns.oracle.com/adf/controller/binding">
          <parameters>
            <parameter id="objectId" value="123"/>
          </parameters>
        </taskFlow>I'm wondering is there some EL expression I can use for the parameter value that gets the value of the id request parameter passed into the .jspx? Thanks.

    you have to use it like.. #{bean.idValue} and in the getter of the id Value use it like
    private int idValue;
    //setter
    //getter
    public int getIdValue(){
              HttpServletRequest request =
                (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
            int id = request.getParameter("id");
           return id;
    }

Maybe you are looking for

  • Good web design software to replace iWeb

    Hello There, I have been using iWeb for a while now, and despite its limitations, I like it.  Now that Apple has discontinued (or will discontinue) MobileMe and some of the features wont be available any more, I decided to move to another web-design

  • Upgrade to OS 7.1 Curve 9360

    Hi, the website says that the update to 7.1 is available for the Curve, but the BB Desktop SW says it isn't any clue? Solved! Go to Solution.

  • Equipment needed to transfer small vinyl collection

    I have 100 to 200 songs on vinyl that I'd like to transfer to an ipod to play through a car stereo. I'd like to use Apple Lossless encoding. Only equipment I have now is a MacBook 10.5.8 with 2GHz Intel processor and 2GB memory. Recommendation please

  • F4 help for select option

    HI ALL, please help me. i need to get f4 help for zlsch field, if i give only one company code its working fine , if u give 2 company codes its not working,even though i kept s_bukrs-high code. please help me its urgent s_bukrs  FOR lfb1-bukrs  no in

  • Dynamic binding expression to get data from array

    I am retrieveing from an object to label my button as follows: quote: <mx:Button label = "{wordlist.word.LABEL[0][index]}" I now want the binding expression to be dynamic, meaning that LABEL has to be a variable. How would I do this? quote: <mx:Butto