Dynamically modify Task Flow at runtime

I have a use case where I need to dynamically modify a task flow at runtime. In my use case, for all task flows I need to add a router that can navigate to any view activity on the flow. The router will need to have control flows from the router to each view activity and a case for each.
What I've Tried
I've written a test app that uses MDS to modify a single task flow. This works. I did it by using JDev in customization mode, adding the router and stuff to the flow manually, then running the app. This does exactly what I need it to do. The problem is, I need to do this dynamically at runtime. I'll need to have a process that looks at the task flow and generates the MDS metadata that will insert the router (and other stuff) at runtime. I'm not sure how to do this.
What I'd like to do
Ideally, I'd like to do this programmatically (not using MDS) by overriding the controller that returns task flow objects. I may be off the mark here, but I imagine that at runtime the task flow xml is represented by a java object. I also imagine that the java object gets returned by some controller based on the name (and maybe type) of the data requested. If I could override this controller to modify the task flow object before it gets returned, that would be ideal.
I've found some links from others looking to do something similar to what I'm attempting here. These links are over a year old, so I imagine that some progress has been made on this.
https://bug.oraclecorp.com/pls/bug/webbug_print.show?c_rptno=7355435
[ER] Add a way to decorate the current PageFlow
Re: To Simon Lessard - Usecase required for ER request
Thanks in advance for your help!!
Cheers,
Mike

I have three usecases where I need this ability.
- breadcrumbs - this should keep a historical trail of the pages the user has visited. clicking on a breadcrumb should take the user back to the page and remove the remainder of the trail.
- favorites - this is essentially bookmarking within the app. the user should be able to add a page as a favorite the navigate back to it by clicking the link in the favorites drop down.
- recent items - this is similar to breadcrumbs, but I imagine we will want it to persist across sessions for the user.
We are using bounded task flows and page fragments. All of these features will need the ability to navigate to any view on a flow (not just the default view). I can navigate to a flow just fine. We have implemented our own version of the XMLMenuModel and are using a dynamic region for navigation. To navigate, we just replace the task flow ID on the dynamic region with the target task flow ID then the region refreshes. This part work just fine. The part that I am working on is how to navigate to a view on the flow. I'm managing state by passing parameters between flows and pages. That part is working ok too. It's just the navigation piece that is giving me grief.
The little MDS prototype that I did looks promising, but I would need to figure some stuff out. The customization would need to apply to all users and all task flows. I'm not sure how to do that. Also, it would need to be dynamic. The MDS metadata that is responsible for the customization would be different for each task flow and would need to be generated at runtime. I can figure out how to generate the metadata at runtime based on the task flow, but I don't know where the hooks are in the MDS framework where I could put this logic. It would need to execute before the MDS framework tries to merge the base doc (the task flow) with the customization doc that I generate.
Thanks!!
Mike

Similar Messages

  • Error while calling DYnamic shell task flow from unbounded login activity

    Hi All,
    MY problem-Hi ,
    In my case I have alogin page in undounded task flow which calls dounded task flow.
    My bounded task flow uses dynamic tab shell.And if login is successfull user will be directed to welcome page where default welcome tab shell is open.
    When i run my application i m receving tabConetxt null pointer excetion.
    As per my knowledeg i know how to pass tab context reference from 1 task flow to other.But not sure how should i pass tab context from Login View activity to welcom taskflow
    follwing exception occurs when i click on login link
    javax.faces.FacesException: javax.el.PropertyNotFoundException: Target Unreachable, 'tabContext' returned null
    at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:262)
    at javax.faces.webapp.UIComponentELTag.createComponent(UIComponentELTag.java:222)
    at javax.faces.webapp.UIComponentClassicTagBase.createFacet(UIComponentClassicTagBase.java:510)
    at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:661)
    at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1142)
    Truncated. see log file for complete stacktrace
    Caused By: javax.el.PropertyNotFoundException: Target Unreachable, 'tabContext' returned null
    at com.sun.el.parser.AstValue.getTarget(AstValue.java:88)
    at com.sun.el.parser.AstValue.setValue(AstValue.java:133)
    at com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:255)
    at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:259)
    at javax.faces.webapp.UIComponentELTag.createComponent(UIComponentELTag.java:222)
    Truncated. see log file for complete stacktrace
    ANy idea about this
    Edited by: Shubhangi m on May 27, 2010 5:31 AM

    This question was answered in: Oracle UI Shell Functional Pattern
    Edited by: Richard Wright on Jun 15, 2010 8:52 AM

  • Is it possible extend a Task Flow at runtime?

    Hello I have a requirement in where we need to define a Bounded Task Flow with multiple views (today we are using a router with 3 views).
    The requirement is to extend the number of views at run time, create a 4th view without a new deployment.
    Is it possible?
    This question came up because in the Content presenter you can create "Templates" and upload them at run time without deploy an application (Internally a template is a JSFF file).
    Regards

    The AppModule for a page is configured in an attribute of the root element of that page. Maybe that attribute is available at the OAWebBean parameter in processRequest.

  • 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

  • How to access and set the object attributes in a task flow?

    I have created a web service data control which has an operation having input as payload object. This payload object has two attributes min and max. I am calling a task flow in a dynamic region in which I want to display result of this operation for which i have to set the values for min and max. I want to set these values when I click the taskflow link. How to achieve this? I am new to adf.

    Hi Arun,
    Thanks for your reply.
    I have tried passing parameter to a task flow, but i cannot set the action to a task flow call because it already has action for a method in a dynamic region which renders the task flow at runtime. How do i set action to task flow call link? Also once i get the parameters into the page flow scope variables, i want to pass those to one of my data control operation which displays the result in that taskflow.(i dont want to create parameter form for this operation).

  • 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

  • JDev 11g:  Task Flows,Rich Client- some questions to the Oracle team

    Hello,
    We're currently involved (early stages) in a large project with a Jan-Mar 2008 pilot delivery timeframe - one heavily including end-user customizable workflow elements, to which the aforementioned JDev/ADF 11 features would be a great fit.
    Our plans so far were to go ADF with BC and include Shale or Spring WebFlow plus custom development to provide for the very same things that the feature-complete Task Flows will offer.
    Questions:
    1. Delivery timeframe - any unofficial pointers on the schedule for the next JDev/ADF releases?
    2. Platform compatibility - Will the framework (ADF) run on J2EE 1.3 (OAS 10.1.2.x) or does it require 1.4+?
    3. Design-time-at-runtime for Task Flows - Do we have it in the released bits? (Couldn't find it). Any pointers on how is it supposed to operate?
    4. Am I right to think that what we're seeing with Task Flows is (among other things) a piece of the replacement functionality for the decommissioned Oracle Workflow subsystem (which bit us, by the way, as it was part of our original architecture).
    5. Will Rich Client support older platforms than the currently supported IE7 and Firefox 2?
    Thanks for any and all pointers,
    Thanassis Stathopoulos
    Athens, Greece

    Thanks Shay,
    http://www.oracle.com/technology/products/jdev/collateral/papers/11/newfeatures/index.html
    Regarding my question 3 "Design time at runtime" - quoting from "JDeveloper 11g new features" at the above URL, under "ADF Task Flow". The third entry from the paragraph's end reads:
    'Support for customization of task flows at runtime using "design time at runtime"'.
    I was wondering what this is exactly - web-deployable editor to edit the flow definition after deployment?
    Re your point 4, product replacement - with the feature set described in the paragraph above, Task Flows is much more than a Web UI controller. With "save for later", transactions, flow abstraction/nesting, BPEL outcalls, conditional logic, method calls etc etc it probably covers 50% of a typical workflow package and 75% of an embeddable workflow library (audit trail/timeouts/persistence nonwithstanding). This made me wonder whether it is part of a bigger, yet-to-be-announced OAS feature. Especially if one also considers the "design-time-at-runtime" sentence listed above.
    Now, definition-wise, I guess it' s whether this feature set is considered half-full or half-empty :-)
    Thanks again,
    Thanassis

  • Issue with refresh of task flow in dynamic region

    Hi All,
    I am using Jdeveloper version 11.1.1.6. In my fusion application I am facing an issue with the task flow refresh in the dynamic region. In my application, I have one task flow in which the side navigation command links are there and on the right side it has a dynamic region which is used to display the respective task flows on click of navigation links. Now two of the links actually call the same task flow in dynamic region but for different purpose. One for creating a record and another one for modifying the record. The default activity of that task flow has a page fragment that has couple of fields. One a drop down and another one a text field for searching the accounts against which the record is to be created or modified. On click of the navigation link, I set the task flow id to be displayed and refresh the dynamic region. Now the issue is with those two links which shows the same task flow. Let's say  I searched for a record by putting some value in input text and then went on to modify flow using the modify navigation link. Then the value that I entered in search input text in the create flow stays and does not go away. I found out the cause for the issue and this is happening because of the immediate = true on the navigation command links. Now I cannot remove that because of the obvious reason that then it will start throwing exceptions for the mandatory fields when I am in middle of any flow. Is there any way to achieve it.
    Please help as this is quite urgent. I can also upload the sample application if anyone needs it.
    Regards
    Ajay

    try to put RefreshCondition in the pageDef file for that particular task Flow and try to make that condition to true only when you switch between edit or add. While switching, make sure that the mapped bean properties should also point to respective values i.e. either empty for new or holds some value for edit.
    So, when ever the above condition returns true, task flow gets refreshes and it will holds only the current values not the old values.
    i hope this will resolve your issue.

  • 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

  • Swap task flow in dynamic region from menuitem in menubar

    Hello,
    I have a dynamic region and two task flows. I have action listeners that swap the task flows into the dynamic regions. When these action listeners are tied to buttons, everything works as expected, but if i attach them to menuitems on a menubar, despite the fact the the listener is executed (based on log file debugging), the task flow in the region does not change.
    Can anyone please give me an idea why, and exactly how someone can swap a task flow in a dynamic region from a menuitem.
    I'm using Jdeveloper 11.1.1.0.1
    Thanks
    Edited by: fakintoy on Apr 22, 2009 3:45 PM
    Edited by: fakintoy on Apr 22, 2009 3:46 PM
    Edited by: fakintoy on Apr 22, 2009 4:06 PM

    Hi,
    My guess is that the region is not added to the list of partial targets. Add a partialTrigger on the region pointing on the menu item.
    p.s. Code snippet would really help to get a more precise answer here
    Regards,
    ~ Simon

  • Modify unbounded task flow for login process

    I wonder if I can use the unbounded task flow for login process. I have a login page, a home page and a change password page. As per the requirements, I need to show the login page first, if user password is expired, I need to show change password page, after user save the new password, I show the home page. If user password is not expired, then we go to home page directly.
    I have modified the unbound task flow adfc-config.xml. I have created a method call, which references a method in my managed bean to check the redirect page. I have created a router, which would go to change password page or the home page based on different outcomes. But the problem is, every time when I run the application, it always goes to the home page directly, even when the user password is already expired. I have set up break point at the checking redirect page method in my managed bean, looks like it never got called.
    Did I miss any steps here? Please advise. Thanks.

    A method is not a runnable object in your pageflow - so you can't start from it.
    You need to start from a page when your run your project.
    One option - convert your flow to be a bounded flow with the method as a default URL and then run it.
    See - https://blogs.oracle.com/shay/entry/passing_parameters_to_adf_appl

  • How Worklist/BPM knows which task flow to invoke at runtime

    Hi, I use JDev 11.1.1.5
    In my BPM, I had one Human task activitiy state. Then I create a task flow through "ADF Task Flow Based on Human Task". I found that there is no any configuration value for taskFlowFileLocation property in .task source file. However, the process succefully invoke the correct task flow when I run it.
    I am curious on how the worklist engine associate the task flow with the human task? If there are multiple task flows for the same human task, which file is the right place to find the configurations?
    Thanks,

    Hi Yannick,
    I have a same scenario like yours. Have you implemented that? How to modify the preferences in backing bean? I change the input parameters of taskflow in backing bean. But when popup the edit dialog, the old value is still there. Thanks.
    Regards,
    Joe

  • Error when launching bounded task flows in dynamic tabs from UI Shell templ

    Hello,
    could you tell me what is wrong with launching task flows in new tabs?
    I am using the UI Shell template, the task flow is bounded with one simple page (I tried with both fragments jspf and pages jsp)
    The execption is the following:
    java.lang.ClassCastException: javax.faces.component.UIViewRoot cannot be cast to oracle.adf.view.rich.component.fragment.UIXRegion
    Here's the code I am using to launch the bounded task flow:
    private void launchActivity(String title, String taskflowId, // taskflow is something like "/WEB-INF/mytask_flow.xml"
    boolean newTab) {
    try {
    if (newTab) {
    TabContext.getCurrentInstance().addTab(title, taskflowId);
    } else {
    TabContext.getCurrentInstance().addOrSelectTab(title,
    taskflowId);
    } catch (TabContext.TabOverflowException toe) {
    toe.handleDefault();
    Root cause of ServletException.
    java.lang.ClassCastException: javax.faces.component.UIViewRoot cannot be cast to oracle.adf.view.rich.component.fragment.UIXRegion
         at oracle.adfinternal.view.faces.taglib.region.RegionTag.doStartTag(RegionTag.java:105)
         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)
         Truncated. see log file for complete stacktrace

    Hi Pramod,
    Have you tried setting the Transaction attributes of your task-flow? Open up your task flow definition then go to Overview Tab. Try changing the appropriate attributes like setting the transaction as "Always Begin New Transaction" and/or unchecking the "Share data controls with calling task- flow". Try to mix settings and find the one that suit your needs.
    Regards,
    Pino

  • Navigate to initial task flow in dynamic region with JDeveloper 12c

    I have a home page with a dynamic region and three links and I am working with page fragments. The initial bounded task flow is "btfInicio".
    The requirement is that in each bounded task flow I have to implement a close button to return to the initial bounded task flow. This is my code:
    My Bean for my home page.
    public class AdministradorActividades extends DataControlBean {
        private HashMap parametrosGenerales = new HashMap();
        private String taskFlowId = "/WEB-INF/btfInicio.xml#btfInicio";
        private RichRegion regionPrincipal;
        public String gestionarDatosClinicos() {
            taskFlowId = "/WEB-INF/datosClinicos/btfDatosClinicos.xml#btfDatosClinicos";
            refrescarRegion();
            return null;
        public void refrescarRegion(){
            AdfFacesContext adfContext = AdfFacesContext.getCurrentInstance();
            UIComponent region = findComponentInRoot("rPrin");
            adfContext.addPartialTarget(region);
    My Home page.
    <af:decorativeBox id="db4" theme="medium"
                                                                          inlineStyle="margin-bottom:5px; margin-left:5px; margin-right:5px; margin-top:5px;">
                                                            <f:facet name="center">
                                                                <af:region value="#{bindings.regionDinamica.regionModel}"
                                                                           id="rPrin" partialTriggers="::lCli ::lCon ::lRep"/>
                                                            </f:facet>
                                                        </af:decorativeBox>
    My Home page Def:
    <taskFlow id="regionDinamica" xmlns="http://xmlns.oracle.com/adf/controller/binding"
                      taskFlowId="${pageFlowScope.managerRegion.taskFlowId}" activation="deferred"
                      parametersMap="#{pageFlowScope.managerRegion.parametrosGenerales}" Refresh="ifNeeded"/>
    I have tried this inside a fragment from my bounded task flow "btfdatosClinicos" where I have a button , but doesn't work. The home page is not refreshed:
            AdfFacesContext adfContext = AdfFacesContext.getCurrentInstance();
            AdministradorActividades admActividades = (AdministradorActividades) adfContext.getPageFlowScope().get("managerRegion");
            admActividades.setTaskFlowId("/WEB-INF/btfInicio.xml#btfInicio");
            UIComponent region = findComponentInRoot("rPrin");
            adfContext.addPartialTarget(region);
    If I Implement a control flow case inside my bounded task flow "btfdatosClinicos" to "btfInicio" then I can see the page fragment that correspond to the bounded task flow "btfInicio", but if I clic one of the three links, then the action event is not executed.

    Hi Miguel,
    I think you are complicating the requirement without needing. Why would you put the back button inside your other taskflows? This would be useful just if you are calling those from another bounded taskflows.
    Look what you can do;
    You can create your links for dynamic regions. Cool. But in your decorative box, in the top facet, you can drag a drop the btfinicion and display it as a link (yes, this will be your back button). and that's it. You don't need to mess with partial triggers or refrescar regiones methods.
    Let me know if this doesn't impact your requirement.
    By the way, en que pais trabajas?
    Saludos

  • Dynamic participant block in Human task flow

    Hi All,
    I am working on human task flow and got stopped on below use case.
    I have two participant block let say A and B. I want to assign participant A depends on flat inside task flow parameter. If Flag is Yes, then it should assign to A and on approval of A it should complete the task flow. But if Flag is NO, then it should first assign to B, on approval from B, it should again assign to A and after that it should complete the task flow.
    I tried to use dynamic role assignment but there i am not able to define above use case. Dynamic rule is saying you can assign A or B depends on some rule(task flow parameter) but my requirement is little different.
    If Flag is Yes,
    - assign to A -> on approval -> complete the task flow.
    If Flag is No
    - Assign to B -> on approval from B -> assign to A -> on approval from A -> complete the task flow.
    I want to build this logic inside single human task flow.
    Please help.
    -Sunil

    Hi Zaloa,
    Can you pls try this.This should work.
    1. Go to Edit Task Definition page and add a Parameter of type string(default).
    2. Now come to the human task dialog( the one you get on double clicking the human task activity) and add a value to the parametr you just added(string)using the search light .This value should be the variable containing the value of the asssigne which you want to add dynamically.
    3.Now again go to the Edit Task Definition page and select the Assignment policy and select the expression path builder.
    4. You should be able to see the parameter you just added under task:payload. select this . now your assigne is dynamically added.
    Pls let me know if you need further details. Hope this helps.
    Thnks
    Message was edited by:
    soaUser

Maybe you are looking for