TP4 : task-flow inconsistencies and errors

I have a simple task flow with five activities.
1. the first one initialize a view object by calling the create operation on the view object, this is the default activity of the task-flow
2. the second operation is a view activity to edit the new created view. The view acitivity call a jspx page the all related elements from the view object to edit the data
3. the third is a view activity to display edited values before commiting or canceling. This view show an empty page with two buttons with fixed outcome (cancel, save).
4. and 5. are two task flow return that commit (save) or rollback (cancel). It is no parameter in return (at this stage).
A very simple task-flow.
My diagram show a warning and two errors.
The warning is on the first activity. It tell me into the source that "EL Token "bindings" is unknown.
Here is the code.
    <method-call id="initializeFlexItem">
      <method>#{bindings.Create.execute}</method>
      <outcome>
        <fixed-outcome>initialized</fixed-outcome>
      </outcome>
    </method-call>The errors are mentionned for the return task flow. Errors says that "Element commit not expected", "Element rollback not expected". May be the document doesn't correspond to its xmlschema.
I have an another warning the template-referernce tag that mention an document-id child is required and not present. The task-flow doesn't refer to any template. So the tag has not to be there, or attribute has not to be required.
Running the task-flow is not succesfull. I got a JBO-25301 error saying that the application module is not a root application module but has no parent. It seem not to be related to task-flow inconsistencies and errors but I don't know and would like my task-flow is fully correct to be sure.
Any idea, explanation, recommandation, workaround is welcome.

I have seem that the property inspector didn't reflect that the return activity was a commit or rollback activity. I added this property and the red x on the return activity disappeared from the diagram and no more errors was mentioned in source editor for these tags.
The code generated was this one:
    <task-flow-return id="commit">
      <outcome>
        <name>commit</name>
        <commit/>
      </outcome>
    </task-flow-return>
    <task-flow-return id="rollback">
      <outcome>
        <name>rollback</name>
        <rollback/>
      </outcome>
    </task-flow-return>

Similar Messages

  • ADF Task Flow: Browse and Edit pages

    Hi,
    My application includes two pages, a Browse page and an Edit page. The Browse page provides the list of departments (read-only table) and allows you to select a department from the list to edit the department details (form).
    How can I develop this common scenario using ADF task flows? Important - I need to display Browse and Edit on two different jsf pages.
    Thanks, Al

    It should be pretty easy.
    1) Create your browse and edit page
    2) drop them onto a task flow
    3) Connect the pages with navigation cases.
    4) Set the ACTION property of a button on the browse page to reference the navigation case that goes to the edit page
    5) Hook up the reverse to go back to the browse page
    Done!

  • 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.

  • Using ADS in UI Shell with multiple task flows (static and dynamic)

    Greetings,
    I am developing an application in UI Shell and ADS. Following is description of the Application.
    In ThirdPartyComponentArea of the UI Shell I have a task flow with a page fragment(JSFF), which uses ADS (using push mechanism) to get the updates from the server.
    Now we have added a Task List in regional area. The list has following items
    1. One of the items in the TaskList open a dynamic task flow in local area.
    2. Another item in the task list opens a static task flow in local area.
    The issue is, whenever we click either of the links, ADS framework used by the JSFF on the ThirdPartyComponentArea stops working (stops receiving data from ADS and stopActiveData method is invoked by the framework).
    It seems that the task flow initiating in Local Area is causing the ADS framework in other taskflow to end.
    I have read through the documentation, Book - "Oracle Fusion Developer Guide - Building Rich Internet Applications with Oracle ADF Business Components and Oracle ADF Faces" and other examples/blogs.
    From my understanding it seems that ActiveDataManager and EventManager are stopping in this use-case.
    From my understanding opening the task flow in local area is not changing any properties or HTML view of the task flow in ThirdPartComponentArea. Then, why such a behaviour is observed when using ADS in such cases? Is this supported ADS?
    Are such use-cases supported by ADS. From my understanding of these documents it seems they are supported.
    If these use-cases are supported but require some tweaking/workaround in the current flow/logic then also please guide me on it.
    Please let me know if these are not supported by ADS.
    Thanks,
    PShah

    Hi,
    sounds like a product issue to me that you should file with support, providing them a simple test case for analyses
    Frank

  • Error while runtime customization for task flows in jdev drop6 build 11

    Hi,
    I am using jdev drop 6 build 11. I am trying to build a webcenter application in which I want to drag and drop task flows at runtime. I am able to add the ADF components at runtime. I am also able to expose the task flow at runtime on the UI after creating my own catalog. But if I try to add the task flow by dragging it, it gives an unhandled exception and it shows that no metadata found for metadata object for the task flow. And after this error I am not able to add the ADF components as well. It gives the same error. This is the error I get:
    oracle.adf.controller.ControllerException: ADFC-06002: Unhandled exception.
         at oracle.adfinternal.controller.util.Utils.createAndLogControllerException(Utils.java:193)
         at oracle.adfinternal.controller.engine.ControlFlowEngine.handleException(ControlFlowEngine.java:588)
         at oracle.adfinternal.controller.engine.ControlFlowEngine.invokeTaskFlow(ControlFlowEngine.java:181)
         at oracle.adfinternal.controller.state.ChildViewPortContextImpl.invokeTaskFlow(ChildViewPortContextImpl.java:63)
         at oracle.adfinternal.controller.state.ControllerState.createChildViewPort(ControllerState.java:1236)
         at oracle.adfinternal.controller.ControllerContextImpl.createChildViewPort(ControllerContextImpl.java:69)
         at oracle.adf.controller.internal.binding.DCTaskFlowBinding.createRegionViewPortContext(DCTaskFlowBinding.java:255)
         at oracle.adf.controller.internal.binding.DCTaskFlowBinding.getViewPort(DCTaskFlowBinding.java:198)
         at oracle.adf.controller.internal.binding.TaskFlowRegionModel.doProcessBeginRegion(TaskFlowRegionModel.java:127)
         at oracle.adf.controller.internal.binding.TaskFlowRegionModel.processBeginRegion(TaskFlowRegionModel.java:87)
         at oracle.adf.view.rich.component.fragment.UIXRegion$RegionContextChange.doChangeImpl(UIXRegion.java:1006)
         at oracle.adf.view.rich.context.DoableContextChange.doChange(DoableContextChange.java:91)
         at oracle.adf.view.rich.component.fragment.UIXRegion._beginInterruptibleRegion(UIXRegion.java:707)
         at oracle.adf.view.rich.component.fragment.UIXRegion.processRegion(UIXRegion.java:454)
         at oracle.adfinternal.view.faces.taglib.region.RegionTag.doStartTag(RegionTag.java:120)
         at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:50)
         at oracle.jsp.runtime.tree.OracleJspCustomTagNode.execute(OracleJspCustomTagNode.java:261)
         at oracle.jsp.runtime.tree.OracleJspClassicTagNode.evalBody(OracleJspClassicTagNode.java:87)
         at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:58)
         at oracle.jsp.runtime.tree.OracleJspCustomTagNode.execute(OracleJspCustomTagNode.java:261)
         at oracle.jsp.runtime.tree.OracleJspClassicTagNode.evalBody(OracleJspClassicTagNode.java:87)
         at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:58)
         at oracle.jsp.runtime.tree.OracleJspCustomTagNode.execute(OracleJspCustomTagNode.java:261)
         at oracle.jsp.runtime.tree.OracleJspClassicTagNode.evalBody(OracleJspClassicTagNode.java:87)
         at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:58)
         at oracle.jsp.runtime.tree.OracleJspCustomTagNode.execute(OracleJspCustomTagNode.java:261)
         at oracle.jsp.runtime.tree.OracleJspClassicTagNode.evalBody(OracleJspClassicTagNode.java:87)
         at oracle.jsp.runtime.tree.OracleJspIterationTagNode.executeHandler(OracleJspIterationTagNode.java:45)
         at oracle.jsp.runtime.tree.OracleJspCustomTagNode.execute(OracleJspCustomTagNode.java:261)
         at oracle.jsp.runtime.tree.OracleJspClassicTagNode.evalBody(OracleJspClassicTagNode.java:87)
         at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:58)
         at oracle.jsp.runtime.tree.OracleJspCustomTagNode.execute(OracleJspCustomTagNode.java:261)
         at oracle.jsp.runtime.tree.OracleJspClassicTagNode.evalBody(OracleJspClassicTagNode.java:87)
         at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:58)
         at oracle.jsp.runtime.tree.OracleJspCustomTagNode.execute(OracleJspCustomTagNode.java:261)
         at oracle.jsp.runtime.tree.OracleJspClassicTagNode.evalBody(OracleJspClassicTagNode.java:87)
         at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:58)
         at oracle.jsp.runtime.tree.OracleJspCustomTagNode.execute(OracleJspCustomTagNode.java:261)
         at oracle.jsp.runtime.tree.OracleJspClassicTagNode.evalBody(OracleJspClassicTagNode.java:87)
         at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:58)
         at oracle.jsp.runtime.tree.OracleJspCustomTagNode.execute(OracleJspCustomTagNode.java:261)
         at oracle.jsp.runtime.tree.OracleJspNode.execute(OracleJspNode.java:76)
         at oracle.jsp.runtimev2.ShortCutServlet._jspService(ShortCutServlet.java:77)
         at com.orionserver[Oracle Containers for J2EE 11g (11.1.1.0.0) ].http.OrionHttpJspPage.service(OrionHttpJspPage.java:60)
         at oracle.jsp.runtimev2.JspPageTable.compileAndServe(JspPageTable.java:758)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:441)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:706)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:627)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64)
         at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:116)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15)
         at oracle.security.jazn.oc4j.JAZNFilter$3.run(JAZNFilter.java:432)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:309)
         at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:450)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:600)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:351)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher.java:257)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.ServletRequestDispatcher$2.oc4jRun(ServletRequestDispatcher.java:174)
         at oracle.oc4j.security.OC4JPrivilegedAction.run(OC4JPrivilegedAction.java:41)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.oc4j.security.OC4JSecurity.internalDoPrivileged(OC4JSecurity.java:374)
         at oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java:389)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.OC4JRequestDispatcher.executeAction(OC4JRequestDispatcher.java:161)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:178)
         at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:415)
         at org.apache.myfaces.trinidad.context.ExternalContextDecorator.dispatch(ExternalContextDecorator.java:44)
         at org.apache.myfaces.trinidad.context.ExternalContextDecorator.dispatch(ExternalContextDecorator.java:44)
         at org.apache.myfaces.trinidad.context.ExternalContextDecorator.dispatch(ExternalContextDecorator.java:44)
         at org.apache.myfaces.trinidadinternal.context.FacesContextFactoryImpl$OverrideDispatch.dispatch(FacesContextFactoryImpl.java:267)
         at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:475)
         at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:143)
         at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:189)
         at org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:188)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._renderResponse(LifecycleImpl.java:652)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:243)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:203)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64)
         at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:185)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15)
         at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:85)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:278)
         at oracle.adfinternal.view.faces.activedata.ADSFilter.doFilter(ADSFilter.java:87)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:278)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._invokeDoFilter(TrinidadFilterImpl.java:238)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:195)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:138)
         at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:17)
         at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:116)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:17)
         at oracle.security.jazn.oc4j.JAZNFilter$3.run(JAZNFilter.java:432)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:309)
         at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:450)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:600)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:351)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.HttpRequestHandler.doDispatchRequest(HttpRequestHandler.java:977)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:878)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:676)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:644)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:436)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:185)
         at com.evermind[Oracle Containers for J2EE 11g (11.1.1.0.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:153)
         at oracle.oc4j.network.ServerSocketReadHandler$ClientRunnable.run(ServerSocketReadHandler.java:276)
         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
         at java.lang.Thread.run(Thread.java:595)
    Caused by: oracle.adf.controller.ControllerException: ADFC-02001: ADF Controller cannot find '/WEB-INF/one_task-flow-definition.xml'.
         at oracle.adfinternal.controller.metadata.provider.MdsMetadataResourceProvider.getMetadataObjects(MdsMetadataResourceProvider.java:448)
         at oracle.adfinternal.controller.metadata.provider.MdsMetadataResourceProvider.loadUnmutalbeMetadataResources(MdsMetadataResourceProvider.java:358)
         at oracle.adfinternal.controller.metadata.provider.MdsMetadataResourceProvider.getResources(MdsMetadataResourceProvider.java:170)
         at oracle.adf.controller.internal.metadata.MetadataService.getTaskFlowDefinition(MetadataService.java:214)
         at oracle.adfinternal.controller.activity.TaskFlowCallActivityLogic.findTaskFlowDefinition(TaskFlowCallActivityLogic.java:928)
         at oracle.adfinternal.controller.activity.TaskFlowCallActivityLogic.invokeTaskFlow(TaskFlowCallActivityLogic.java:180)
         at oracle.adfinternal.controller.engine.ControlFlowEngine.invokeTaskFlow(ControlFlowEngine.java:161)
         ... 107 more
    Caused by: oracle.mds.core.MetadataNotFoundException: MDS-00013: no metadata found for metadata object "/WEB-INF/one_task-flow-definition.xml"
         at oracle.mds.core.MetadataObject.getBaseMOFromCache(MetadataObject.java:1567)
         at oracle.mds.core.MetadataObject.getBaseMO(MetadataObject.java:898)
         at oracle.mds.core.MDSSession.getBaseMO(MDSSession.java:2361)
         at oracle.mds.core.MDSSession.getMetadataObject(MDSSession.java:1025)
         at oracle.mds.core.MOResolver.getMetadataObjects(MOResolver.java:185)
         at oracle.adfinternal.controller.metadata.provider.MdsMetadataResourceProvider.getMetadataObjects(MdsMetadataResourceProvider.java:402)
         ... 113 more
    Any information on this?
    Thanks for the help in advance.

    This isn't really the appropriate forum for ADF questions. You should have better luck with the JDev forum:
    JDeveloper and ADF

  • ADF  task-flow and transactions

    Hi All,
    I have created a web application using ADF and JDeveloper 11.1.1.4. The ADF web application has two pages 'Search' and 'Edit'. The 'Search' and 'Edit' are page fragments. I have two bounded task flows 'search-flow.xml and 'edit-flow.xml'. The search and edit functionality has been created as dynamic regions by dragging the task-flows onto the JSF page.
    The bounded search-flow.xml has page flow from search ----> edit(Parent Action component)
    The bounded edit-flow.xml has page flow as *-->edit----> search(Parent Action component)
    User comes from login page to the search page. On search page users can choose to search for records and edit individual searched records or create a new record using 'CreateInsert' button. Either way users end up on the edit page.
    On the edit page, users see a form to fill or modify. They have the choice to navigate back to search page using 'Search' button or commit changed record using 'Save' button or create new record using 'Create' button
    The application is functioning 90% as expected, only problem is the transaction management part if the user does not care to save each time the edit is made.
    Say for instance, on search page user press ' CreateInsert' button which takes the user to edit page and then without saving the new record user presses 'Search' button which takes the user to search page and so repeated goes back and forth cycle.
    In such cases the transaction never ends, The primary key for each new record is retrieved from the DB sequence only on persisting to database. A place holder like negative integer is used for the primary key temporarily till new record is persisted to database.
    As per best practices, I am using the checkUncommittedDatabehavior which prompts the user when navigation is done away from the edit page i.e. without saving on pressing the 'Search' button on edit page. User can choose 'OK' or 'Cancel' which comes bundled with the ADF checkUncommittedDatabehavior property. Even after selecting OK the new record does not seems to be rollbacked (Issue 1).
    eg:, if the user performs the cycle(i.e navigating between search and edit pages without commit/save) 'n' times, new entity records are created with primary keys -1, -2, -3, -4 ........ so forth. As I said earlier a proper sequence number for the primary key is assigned only if a record is persisted to the database.
    Now on the 'n+1' cycle the user fills the records and clicks commit, it comes up with a error 'primary keys with nulls from previous uncommitted record (i.e; 1,2,3, .....n) creation.
    I guess the transaction management is not happening correctly and not completing during these cycles (1, 2...n) Note: I am not using 'Task Return' components in my bounded ADF task flows, just commit operation 'Save' button in edit page and checkUncommittedDatabehavior.
    Also, in search-flow.xml I have following configured under 'Behavior' tab Transaction ---> No Controller transaction and ' Share data controls with calling task flow checked
    in edit-flow.xml, these configurations are in place under 'Behavior' tab Transaction ---> Always begin new transaction and ' Share data controls with calling task flow checked and Critical checked and 'task flow rentry' as reentry-outcome dependant.
    Thanks
    Edited by: user5108636 on Oct 26, 2011 5:16 PM
    Edited by: user5108636 on Oct 26, 2011 5:24 PM

    Hi Frank,
    I checked the DB sequence is setup correctly. I have also modified the problem description above for better understanding.
    2. When users press OK, navigate to a commit method activity (just drag and drop the commit operation).
    -- When user presses OK, I need to rollback instead of commit to make users lose the unsaved work and controller should navigate to the search page. Here, the message panel with Cancel and OK is shown automatically with the <af:checkUncommittedDataBehavior/> property, I thought the framework will do the rollback for me. If I need to do rollback manually, how to do it, because I cannot see the JSF related source code for the <af:checkUncommittedDataBehavior/> dialog box. Please suggest what to do
    3. If they press cancel, have the return activity rolling back to the save point taken when the user entered the bounded task flow (edit task flow)
    -- If they press cancel, user stays on the same page, so I will leave future action to the user. This bit is working fine in my app.
    Thanks
    Edited by: user5108636 on Oct 26, 2011 5:23 PM

  • How to use a menu model with a dynamic region and a task flow parameter

    I am using JDeveloper/ADF 11.1.2.1
    I have a menu model that changes which task flow is displayed in a given dynamic region using a backing bean. That works fine. I would like to be able to pass parameters to that task flow based on which menu item is clicked. For example: i have a task flow which shows a page where input fields are used to filter a table. Depending on the value of the task flow parameter I want to change which input fields are displayed. So i will have multiple menu items which refer to the same task flow but have a different set of parameters. I have tried using request scope variables and setting them in the backing bean for the dynamic region which works until the query is submitted at which point the request scope has changed and the value is no longer available. I have tried a number of other 'creative' approaches but have not gotten anything to work. Anyone done this before? Or have an idea on how to solve it?

    Frank,
    I did a fair bit of digging based on your suggestions and some things I found in your Oracle Fusion Developer's Guide book and I came up with something that works really well. It is fairly elegant but requires code. It would be nice if something like a setPropertyListener could be rolled into the menu model. That would make my solution completely declarative.
    Here is my solution:
    My task flow requires a the value #{pageFlowScope.type} to be set. My application has a dynamic region that is changed on the fly using a menu model. The region uses a backing bean (mainRegionManagerBean) which is in the viewScope to manage what taskflow is shown in the region. There are multiple menu items in the menu model that point to the same task flow but pass different values to the #{pageFlowScope.type} parameter. So i wired the menu items up to different methods in the mainRegionManagerBean which set the value for me. See the relevant code below.
    I would be very interested in the feedback from someone with more experience than I on my solution. Maybe there is a more elegant way...
    In the backing bean there is a primary method that was created by generating a dynamic region link which sets the task flow id and then other methods which call it and set the relevant parameters. (JSFUtils is a helper class i wrote to centralize some common tasks):
    public String shipmentTraceMasterTaskflow()
    taskFlowId = "/WEB-INF/taskflow/master/shipmentTraceMasterTaskflow.xml#shipmentTraceMasterTaskflow";
    JSFUtils.setValue("pageFlowScope.type", "");
    return null;
    public String shipmentTraceProNumber()
    shipmentTraceMasterTaskflow();
    JSFUtils.setValue("pageFlowScope.type", "pronumber");
    return null;
    public String shipmentTraceBOLNumber()
    shipmentTraceMasterTaskflow();
    JSFUtils.setValue("pageFlowScope.type", "bolnumber");
    return null;
    In the menu model (notice that these reference the different methods from above):
    <itemNode id="itemNode_ProNumberTrace" label="ProNumber Trace" action="#{viewScope.mainRegionManagerBean.shipmentTraceProNumber}" focusViewId=""/>
    <itemNode id="itemNode_BOLNumberTrace" label="BOL Number Trace" action="#{viewScope.mainRegionManagerBean.shipmentTraceBOLNumber}" focusViewId=""/>
    On the page:
    <af:region value="#{bindings.dynamicRegion1.regionModel}" id="r1"/>
    In the pagedef:
    <taskFlow id="dynamicRegion1" taskFlowId="${viewScope.mainRegionManagerBean.dynamicTaskFlowId}" activation="deferred" xmlns="http://xmlns.oracle.com/adf/controller/binding" Refresh="ifNeeded">
    <parameters>
    <parameter id="type" value="#{pageFlowScope.type}"/>
    </parameters>
    </taskFlow>
    Edited by: Adam Stortz on Nov 22, 2011 11:10 AM

  • ADF Security, Task Flow as a region in a page resource grant

    JDeveloper 12c (12.1.2); Application uses ADF form based security, external LDAP provider (Active Directory)
    After sign-in page (upon successful authentication/authorization) user is forwarded to a page that executes VO method prior to render. I am new to task flow concept and am told to achieve this like:
    - create bounded task flow, with method call activity (execute exposed AM method that calls VO method, runs custom SQL) and view activity as page fragment.
    - then drop the above task flow into a page as a region
    In ADF security setup, I gave resource grant task-flow to certain application role. Started the application, login and got 403 error. Then went back and gave resource grant 'view' to the actual page that contains task flow. It worked fine.
    So the question is, when protecting application (implemented with task flows) with ADF security, I thought it is enough to grant those task flows to whatever application roles (groups) and inherently any page that uses that task flow(s) (as a region) will be protected?
    From this test, it seems that I have to assign each page (that has task flow as a region) to application roles individually?

    Hi,
    any page that is contained in a bounded task flow is protected  by the task flow permission grant, this is correct. If this is not what you see, please file a bug with support or send me a simple reproducible test case please. My mail address (replace all < name > with the described symbol.
    frank <dot> nimphius <at> oracle <dot> com
    The test case will need to be in a ZIP file nemaed to "unzip" and should be able for me to run stand alone (please no database scripts to run prior to try the test case)
    Frank

  • WebCenter/ADF Bounded Task Flow Permissions 11.1.1.4

    Hello All,
    I'm seeing some strange behavior related to permission on bounded task flows within a WebCenter Portal Application created with the 11.1.1.4 WC extensions.
    I created a bounded task flow and added a view activity and a return activity to it. I have provided "Administrator", "anonymous-role", and "authenticated-role" application roles with view permissions for the task flow resource in "jazn-data.xml". I also added the page related to the view activity in the bounded task flow to my page hierarchy file "page.xml", and provided users with view permissions there.
    What I'm seeing is that anonymous users can view pages in this bounded task flow just fine, but authenticated "Administrator" role users cannot.
    Am I missing a configuration setting somewhere?
    Thanks

    Certainly... I've uploaded the sample application here: http://rapidshare.com/files/456317758/WebCenterTestApp.zip
    To make this simple, I've used the OOB, pre-configured, Web Center Portal application template with default project files. Run the "home.jspx" page. I've removed the customization panel and added a button command whose action invokes the control flow to the task flow call activity for the bounded task flow. The task flow has a single page, and I have it being displayed as an inline pop-up... just for fun.
    Before you login, click on the button to see how the anonymous user can view the bounded task flow page. After you return from the task flow, login and verify that the admin user sees the app auth error page in the dialog instead.
    I've configured one admin user in jazn-data.xml: myadmin/myadmin1
    Cheers

  • Open new browser window in ADF Task Flow

    Hello to everyone,
    I have a question for those who have an experience in this area.
    So, I use ADF Task Flow model and my question is how can I open a new browser window from the task flow model?
    A know to use the abbreviation "dialog:" in navigation rules, but it opens just modal dialog.
    Thanks in advance.
    Dimitar Saykov

    Hi Frank,
    Thanks for your responce. I appreciated it.
    I've made what you told me to do and it works perfectly with unbounded task flow. But when I try to use bounded task flow in runtime i've had this error:
    oracle.adf.controller.ControllerException: ADFC-02001: ADF Controller cannot find '/WEB-INF/response-flow-definition'.
         at oracle.adfinternal.controller.metadata.provider.MdsMetadataResourceProvider.getMetadataObjects(MdsMetadataResourceProvider.java:448)
         at oracle.adfinternal.controller.metadata.provider.MdsMetadataResourceProvider.loadUnmutalbeMetadataResources(MdsMetadataResourceProvider.java:358)
         at oracle.adfinternal.controller.metadata.provider.MdsMetadataResourceProvider.getResources(MdsMetadataResourceProvider.java:170)
         at oracle.adf.controller.internal.metadata.MetadataService.getTaskFlowDefinition(MetadataService.java:214)
    Here is my code:
    HashMap<String, Object> params = new HashMap<String, Object>();
    String taskflowId="RespEntity";
    String taskflowDocument="WEB-INF/response-flow-definition";
    String taskflowURL = ControllerContext.getInstance().getTaskFlowURL(false,new TaskFlowId(taskflowDocument,taskflowId), params);
    launchWindow(taskflowURL,true);
    So, do you know where I should put or register the definition of my bounded task flow "response-flow-definition.xml" ?
    Regards,
    Dimitar Saykov
    Edited by: saykov on Dec 4, 2008 7:55 PM
    Edited by: saykov on Dec 4, 2008 7:55 PM

  • ADF Task Flow Binding - Refresh ifNeeded being invoked even WITHOUT any Parameter change

    Using JDeveloper 11.1.1.6.0
    Issue: Task Flow Binding property "refresh = ifNeeded" seems to be triggered even without the mutation of the input parameter.
    As per definition, "ifNeeded: refresh the ADF Region if the value of a task flow binding parameter changes." (Reference: 17.5 Refreshing an ADF Region)
    Now for the setup which reproduces the issue.
    I'll focus at the fragment bounded task flow level and will skip the jspx side.
    taskflow: main-flow.xml
    contains a single fragment mainFgmt.jsff
    has a managed bean defined SampleBean.java as pageFlow scope.
    taskflow: sub-flow.xml
    contains a single fragment subFgmt.jsff
    has an inputParameter SampleBean.java (because it is an input parameter, by default it will be at pageFlow scope)
    !important - has a nested taskflow (task flow call as defined in the component pallete) called inner-flow (see below)
    the nested taskflow is the default activity
    the nested taskflow has an outcome pointing to subFgmt where outcome = "return"
    taskflow: inner-flow.xml
    contains a single fragment called stop.jsff
    has a return activity without outcome = "return"
    stop.jsff has a navigation pointing to the outcome.
    Finally mainFgmt.jsff has a task flow binding (pageDef)
    with id = "sub-flow.xml"
    refresh = "ifNeeded"
    parameter SampleBean being submitted as sub-flow's input parameter. (id=sampleBean, value=#{pageFlowScope.mainSampleBean})
    Assume that code compiles.
    In this scenario where the only tricky condition is the inner nesting (defined by !important), when the inner nesting decides to invoke its outcome to visit sub-flow's fragment, mainFgmt is restarting its taskflow which makes sub-flow start over again.
    Another way of saying it is, if sub-flow starts a nested activity and that nested activity exits out to utilize sub-flow's view. The high level definition which is mainFgmt's refresh ifNeeded is restarting sub-flow.
    In the above example if you notice, the bean (SampleBean) is not really being utilized except that it is completing the purpose of refresh=ifNeeded. This scenario is only to simplify the setup - in practical use this bean will be mutated to be utilized as a refresh mechanism.
    Now interestingly, if I change the pattern a bit then the issue will not happen:
    Don't use the nested taskflow (inner-flow) as the default activity, let a fragment of sub-flow hold the initial view.
    Navigate to the nested flow.
    Exit nested flow.
    Everything works.
    Now in this scenario, it seems like the sub-flow needs to have a view established first for it to be properly be used.
    So my questions are as follows:
    Can I consider the behavior of the refresh=ifNeeded as a bug in this usecase?
    Would it be better to utilize a different way of refreshing (maybe combination of refresh condition) to get around the issue?
    Is the use of the task flow as defined logical or does it cross any boundary or best practice that might be causing this behavior?

    Hi,
    actually you lost me in your description due to complexity. I lived under assumption that sub-flow already is a region on a view in main flow, but then you sad that
    "!important - has a nested taskflow (task flow call as defined in the component pallete) called inner-flow (see below)"
    which then confused me as to I have no idea if inner flow now is the second level nesting or first level nesting (should be second level nesting). If sub-flow is a region then having "has an inputParameter SampleBean.java (because it is an input parameter, by default it will be at pageFlow scope)"  is an unnecessary broad scope because the region wont live longer than view scope.
    Anyway, it seems that a region refresh is triggered by the lifecycle involved, which can be by design or a bug. I suggest you file a Service Request with support and provide a test case as purely from the description, its hard to parse and understand what is going on.
    Frank

  • How to navigate directly to a view in a task flow

    I have several feature requests that will require me to persist a page and navigate back to it at a later time. These features are things like Recent Items, Favorites, and Breadcrumbs.
    In our app we are using bounded task flows and page fragments.
    I have figured out how to get the view ID and task flow ID of the current page. I am doing this by using a task flow initializer and a region navigation listener. What I can't figure out is how to make use of these when the user wants to navigate to a particular view in a task flow. I can navigate to a task flow by replacing the taskFlowId on a dynamic region. However, I haven't figured out how to navigate to a view (other than the default) in a task flow.
    Am I on the right track here? If so, what should I try next? If not, can you suggest a better method for implementing these features?
    Thanks!!
    Mike

    Thanks for the reply. I tried your suggestion of redirecting to the view activity URL using the code below.
    ControllerContext controllerContext = ControllerContext.getInstance();
    String viewId = "RootFlow1/PageOne";
    String url = controllerContext.getGlobalViewActivityURL(viewId);
    System.out.println(url);
    FacesContext.getCurrentInstance().getExternalContext().redirect(url);
    the sysout prints the URL below
    /TestUIShell-ViewController-context-root/faces/RootFlow1/PageOne?_adf.ctrl-state=qlewpla4_41
    However, I get a 404, saying that it can't find the page. I tried modifying some of the flow settings to get it to work. I set the redirect property on the view to true and the URL Invoke visiblity on the flow to url-invoke-allowed, but I still get a 404. What am I missing?
    To give you more info about our app, we are using an outer page template to define the layout of the app (like the Fusion UIShell) and an inner page template to define the main area where pages will be rendered. Navigation is achieved by putting the main area flow in a dynamic region. When the user clicks a lnk, we swap out the task flow id on the region. Once they are in the region, navigation is normal ADF navigation within just that region.
    I read both of the threads that you referenced, but I don't see anything in there that I can use (maybe I'm missing it). Are there other ways to navigate to a view in a flow that I am missing?
    Thanks!!
    Mike

  • How to define the default activity for an unbounded task flow?

    In the new "Fusion Developer’s Guide for Oracle Application Development Framework 11g Release 1" documentation at the bottom of page 14-3 it states "An unbounded task flow .... contains a default activity, an activity designated as the first to run in the unbounded task flow, because an unbounded task flow does not have a single point of entry."
    What I can't find is how to define the default activity in an unbounded task flow and where this is recorded? Can we set this via the task flow diagrammer, and which configuration file is it stored?
    I note the first time I run the application with an unbounded task flow a dialog asks me which of the activities in the adfc-config.xml file to make the default, but I can't find where this is recorded.
    Anybody have any ideas?
    Thanks,
    CM.

    Chris,
    In fact this information is nothing that belongs into the taskflow meta data because unbounded taskflow have more than one entry point and there is no notion of default. Its a tools setting (JDeveloper) we had before
    Frank
    Message was edited by:
    Frank Nimphius

  • Task flow return-Current Record pointing issue.

    Hi friends
    Newbie in ADF (basically from .net back ground)...........I am in the process of developing my first module.
    I have a task flow where a master detail records are displayed ..When I click "Edit" it is calling a edit task flow where the editing of master/detail tables are performed .When I click "New" a blank record is created and it is calling same edit task flow.
    my problem is when the child task flow exits and returns to the parent it is not pointing to the current record I edited...This is true if return either by commit or cancel.
    My data control is shared , parent task flow does not have any transaction and child always starts a new transaction.
    What is the ideal solution to point to the current record when I return?.
    Thanks .
    Ashraf

    Below is updated bean code
    ViewObject VO;
    FacesContext fctx = FacesContext.getCurrentInstance();
    DCBindingContainer bindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
    DCIteratorBinding iter = bindings.findIteratorBinding("Delmast1Iterator");
    VO = iter.getViewObject();
    Key currKey = iter.getCurrentRow().getKey();
    Row[] rows = VO.findByKey(currKey, 1);
    if (rows.length == 1) {
    System.out.println("row found");
    VO.setCurrentRow(rows[0]);
    iter.executeQuery();
    iter.setCurrentRowWithKey(currKey.toStringFormat(true));
    iter.setCurrentRowWithKeyValue(iter.getCurrentRow().getAttribute("SaleId").toString());
    If my child task flow does not have a commit or rollback the above code works fine...But I am beginning a transaction in my child flow(edit flow) so it is a must to have commit/rollback.
    Is there any other options experts ?..Please guide me.
    Thax.

  • 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

Maybe you are looking for