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.

Similar Messages

  • How to create a page-definition for bounded task-flow?

    I should be able to create a page definition which declare all bindings required for a bounded task flow.
    How do I do it in JDeveloper 11.1.1.2?
    How do I navigate to the page definition when I am in the bounded task flow "Diagram tab"?

    I found out the following:
    1. To create a page-definition file for a bounded task flow
    Right click on the "Default" activity (not a view activity) of the bounded task flow, select "Create Page Definition" from the context menu.
    2. To go the page-definition file for a bounded task flow
    Right click on the "Default" activity (not a view activity) of the bounded task flow, select "Go to Page Definition" from the context menu.
    My new question is:
    In JDeveloper 11.1.1.2, how do I create page-definition for a bounded-task-flow if all activities are view activities (page fragments) ?
    How does JDeveloper I want to create page-definition for the task-flow instead of create page-definition of the page fragment or the page?

  • How to pass a parameter to a bounded task flow?

    Hi,
    We are facing issue while passing parameter from a bounded task flow to another bounded task flow and then showing the passed parameter in a jspx page.
    We have a caller task flow with following component:
    1. A jspx page
    - In this jspx we have a text box have its value as #{pageFlowScope.inputvalue}.
    - Also we have a command button which has its "Action" as the control flow that leads to the "called" task flow.
    2. A bounded task flow named "called".
    So, we call the "called" task flow on the button click in the jspx page.
    Also, in called taskflow we have a jspx page where we are using a output label to show the parameter passed from caller task flow to the called task flow.
    We performed the following steps to set the parameter passing from caller task flow to the called task flow.
    1. Select the input text component on the JSF page.
    2. In the Property Inspector, enter a value for the input text component. You can specify the value as an EL expression, for example #{pageFlowScope.inputValue}.
    3. In the Application Navigator, double-click the name of the called task flow to open its diagram.
    4. Click the Overview tab for the called task flow.
    5. Click Parameters and expand the Input Parameter Definition node.
    6. Click the Add icon next to Input Parameter Definition.
    7. In the Name field, enter a name for the parameter, for example, inputParm1.
    8. In the Value field, enter an EL expression where the parameter value is stored and referenced, for example, #{pageFlowScope.inputValue}.
    9. In the Class field, enter a Java class for the input parameter definition. If you leave the Class field empty, its value is by default implicitly set to java.lang.String.
    10. In the editor, open the diagram for the calling task flow.
    11. In the Application Navigator, drag the called ADF bounded task flow and drop it on top of the task flow call activity that is located on the calling task flow. Dropping a bounded task flow on top of a task flow call activity in a diagram automatically creates a task flow reference to the bounded task flow.
    12. In the Property Inspector for the task flow call activity, click Parameters and expand the Input Parameters section.
    13. Enter a name that identifies the input parameter.
    14. Enter a parameter value, for example, #{pageFlowScope.parm1}.
    Now when we try to fetch the value of parameter using #{pageFlowScope.parm1} in the jspx in called taskflow, its not giving the desired value.
    We even tried to set the to and from parameter of the jspx in called askflow. But no success.
    Can anyone let us know if we are doing smething wrong or exact steps to configure passing of parameters to a bounded task flow and retrieving it in a jspx page will also help.
    Thanks in advance.

    Hi Tushar,
    In step# 14, the value should be "#{pageFlowScope.inputValue}" (should be the same as the value in step#2) .
    tushar wrote:
    Now when we try to fetch the value of parameter using #{pageFlowScope.parm1} in the jspx in called taskflow, its not giving the desired value.To display the passed parameter, you should use "#{pageFlowScope.inputValue}"<----- should be the same as the value in step#8
    Regards,
    Rommel Pino

  • 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;
    }

  • Calling a bounded task flow from  an unbounded task flow

    How can I navigate from an unbounded task flow to a bounded task flow....
    My situation is as follows:
    In the adfc-config.xml, I have a view activity ADMhome, Wildcard as well as a task-flow-call, admTaskFlow.  A control flow goes from the wildcard to ADMhome while another control flow goes from the wildcard to task-flow-call.
    I have a bounded task-flow "adm-task-flow" with two view actitivies: AdmListView and AdmPageView with AdmListView as the default activity. A Control flow goes from the AdmListView to AdmPageView, all pointing the page fragments
    I created another page ADMregion which is a  (jsf) where I dragged the adm-task-flow onto.
    When I ran the application, the home page displayed properly but when I clicked on a command button to invoke the "adm-task-flow", the application will not responded.
    When I looked at the log message, It gave this message:
    <TaskFlowCallXmlImpl> <parse> ADFc: /WEB-INF/adfc-config.xml:
    <TaskFlowCallXmlImpl> <parse> ADFc: Failed to parse element 'task-flow-reference'.
    <ActivityXmlImpl> <parse> ADFc: /WEB-INF/adfc-config.xml:
    <ActivityXmlImpl> <parse> ADFc: Activity metadata could not be parsed. [Activity Type, ID] = ['task-flow-call', ' admTaskFlow '].

    Thanks for this clarifications...
    I created a view activity in the adfc-config-xml and called the page (ADMregion) where the task flow was embedded. It worked well..
    Another clarification I want is this, when do I use a task flow call to call a task flow?  My thinking and my understanding was that when you create a task flow, you use a task flow call to invoke the task flow.
    Pls another aspect I want you to guide me is on calling a java class from jsf and jsff pages. Being new in these technologies, I have having some difficulties navigating and putting all of them together. My problem is this:
    I created a java class under the view package of Application Sources in the View Controller of my Application. The java class returns a value. I designed a jsff form with input fields and and command buttons. I want when I clicked on a command button to take a parameter from the input field and pass it to the java class, the after processing, the java class returns a value which I will place inside one of the input fields in my jsff form.

  • Can't create an ExecuteWithParams activity in a bounded task flow

    I'm trying to replicate the application in the demo, Passing Parameters to a TaskFlow on the URL - http://www.youtube.com/watch?v=3cklxe1qq5I
    I created a ViewObject named PagerByLastName which has an iterator with the generated name, PagerByLastName1Iterator
    (in Data Controls, a node is created for PagerByLastName , named PagerByLastName1
    PagerByLastName1 has query with a parameter and binding variable for the parameter.
    Next, I created a bound task flow and tried to drop an ExecuteWithParams from within PagerByLastName1 onto the bounded task flow.
    However, in the Edit Action Binding dialog that opens, the Data Collection section is read-only and I'm unable to select a data collection to create
    the ExecuteWithParams activity.
    A warning message appears as I try to drop ExecuteWithParams -
    "WARNING: IteratorNameNotFound--AppModuleDataControl1.PagerByLastName1"
    However, the iterator name should be PagerByLastName1Iterator
    Known issue? Is there any workaround?
    Product Versions:
    Oracle JDeveloper 11g Release 1 11.1.1.4.0
    Studio Edition Version 11.1.1.4.0
    Build JDEVADF_11.1.1.4.0_GENERIC_101227.1736.5923
    Copyright 1997, 2011 Oracle and/or its affiliates. All rights reserved.
    IDE Version: 11.1.1.4.37.59.23
    Product ID: oracle.jdeveloper
    Product Version: 11.1.1.4.37.59.23
    Thanks,
    John

    Shay Shmeltzer wrote:
    What do you mean when you say:
    created a ViewObject named PagerByLastName which has an iteratorA view object should have a query in it with a bind parameter.Correction, I saw in the Data Bindings source an iterator is generated for the ViewObject .
    The ViewObject does have both a query and bind variable defined for the parameter in the query.
    The query is
    select BEEPER, FIRST_NAME, MIDDLE_NAME, LAST_NAME, OUN from PERSON_ALL_V4 where ( ( ( UPPER(LAST_NAME) LIKE UPPER('%' || :lastname) ) OR ( :lastname IS NULL ) ) ) and cyber_status='Active'
    lastname is the bind variable
    I DnD the ExecuteWithParams node to the task flow and the Edit Action Bindings dialog opens, but I cannot select a data collection, the collections are collapsed
    and can't be expanded.
    Edited by: JWB on May 23, 2011 4:55 PM

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

  • How to call page in adfc-config from bounded-task-flow return?

    Hello everybody, I am using JDeveloper 11.1.2.3.0
    I have in my adfc-config some pages and one bounded-task-flow (with pages, not page fragments). I call the bounded task flow from one of my pages but I want that when I return from the bounded-task-flow to redirect the page to another page rather than the page that called it. I dont know if this can be done, but do you have any idea on how to achieve something like this?
    Thank you

    Here is your sample http://tompeez.wordpress.com/2013/06/18/jdeveloper-navigation-after-return-from-bounded-task-flow/
    Timo

  • How to use a managed bean in a bounded task flow without definig it in adfc-config

    Dear all
    I create a bounded task flow without page fragments (the pages are jspx), i created a jspx page with a button that its action has bounded to a managed bean function.
    i defined the managed bean on the corresponding bounded task flow, but it does not work.
    But there is no problem when i define the managed bean in adfc-config.xml.
    can anybody help me with this problem.
    is it possible to use jspx page with backing bean in bounded task flows, without defining the beans on adfc-config?
    Thank you very much

    Dear Timo
    I use jDev 11.1.1.6 and the scope is Request.Although when i use task flow page fragment and create jsff pages, there is no problem.

  • Bounded task flow not executing in a default view activity.

    Hi,
    I am practising Region to Region Interaction between two bounded taskflows in an unbounded task flow.
    I will just illustrate the theme:
    *Unbounded task flow[ DEfault view activity(view1)]*
    view1 contains Bounded task flow task 1 and task2.
    task 1 contains fragment frag1 .
    task 2 contains fragment frag2. I want to establish communication between task 1 and task2 through contextual events.
    I have created managed bean seperately for each bounded taskflow bean1 in task1 and bean2 in task2 which are in session scope that is frag1 vaues are maaped to bean1 and frag 2 values are mapped to bean2.
    I completed full flow of creating contextula events and event map too. I was stuck with errror.
    So I created an application only with default view activity containg boundsed taskflow and fragments and respective beans without contextual event and event map , so that i can make sure atleast my basicview is executing properl;y. But I failed to have result.
    Error is shown below:
    <UIXRegion> <_warn> Error processing viewId: /task1/frag1 URI: /frag1.jsff actual-URI: /frag1.jsff.javax.el.PropertyNotFoundException: Target Unreachable, 'frag1' returned null     at com.sun.el.parser.AstValue.getTarget(Unknown Source)
         at com.sun.el.parser.AstValue.isReadOnly(Unknown Source)
         at com.sun.el.ValueExpressionImpl.isReadOnly(Unknown Source)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer._getUncachedReadOnly(EditableValueRenderer.java:486)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.cacheReadOnly(EditableValueRenderer.java:416)
         at oracle.adfinternal.view.faces.renderkit.rich.LabeledInputRenderer.beforeEncode(LabeledInputRenderer.java:117)
         at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:334)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:767)
         at javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
    **somw lines removed since exceeding word length**
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    <LifecycleImpl> <_handleException> ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase RENDER_RESPONSE 6
    javax.el.PropertyNotFoundException: Target Unreachable, 'frag1' returned null     at com.sun.el.parser.AstValue.getTarget(Unknown Source)
         at com.sun.el.parser.AstValue.isReadOnly(Unknown Source)
         at com.sun.el.ValueExpressionImpl.isReadOnly(Unknown Source)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer._getUncachedReadOnly(EditableValueRenderer.java:486)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.cacheReadOnly(EditableValueRenderer.java:416)
         at oracle.adfinternal.view.faces.renderkit.rich.LabeledInputRenderer.beforeEncode(LabeledInputRenderer.java:117)
         at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:334)
         **somw lines removed since exceeding word length**     at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    <Feb 14, 2013 10:09:12 AM IST> <Error> <HTTP> <BEA-101020> <[ServletContext@20743039[app:TaskR2R2 module:TaskR2R2-ViewController-context-root path:/TaskR2R2-ViewController-context-root spec-version:2.5 version:V2.0]] Servlet failed with Exception
    javax.el.PropertyNotFoundException: Target Unreachable, 'frag13' returned null
         at com.sun.el.parser.AstValue.getTarget(Unknown Source)
         at com.sun.el.parser.AstValue.isReadOnly(Unknown Source)
         at com.sun.el.ValueExpressionImpl.isReadOnly(Unknown Source)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer._getUncachedReadOnly(EditableValueRenderer.java:486)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.cacheReadOnly(EditableValueRenderer.java:416)
         Truncated. see log file for complete stacktrace
    >
    <Feb 14, 2013 10:09:12 AM IST> <Notice> <Diagnostics> <BEA-320068> <Watch 'UncheckedException' with severity 'Notice' on server 'DefaultServer' has triggered at Feb 14, 2013 10:09:12 AM IST. Notification details:
    WatchRuleType: Log
    WatchRule: (SEVERITY = 'Error') AND ((MSGID = 'WL-101020') OR (MSGID = 'WL-101017') OR (MSGID = 'WL-000802') OR (MSGID = 'BEA-101020') OR (MSGID = 'BEA-101017') OR (MSGID = 'BEA-000802'))
    WatchData: DATE = Feb 14, 2013 10:09:12 AM IST SERVER = DefaultServer MESSAGE = [ServletContext@20743039[app:TaskR2R2 module:TaskR2R2-ViewController-context-root path:/TaskR2R2-ViewController-context-root spec-version:2.5 version:V2.0]] Servlet failed with Exception
    javax.el.PropertyNotFoundException: Target Unreachable, 'frag13' returned null
         at com.sun.el.parser.AstValue.getTarget(Unknown Source)
         at com.sun.el.parser.AstValue.isReadOnly(Unknown Source)
         at com.sun.el.ValueExpressionImpl.isReadOnly(Unknown Source)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer._getUncachedReadOnly(EditableValueRenderer.java:486)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.cacheReadOnly(EditableValueRenderer.java:416)
         at oracle.adfinternal.view.faces.renderkit.rich.LabeledInputRenderer.beforeEncode(LabeledInputRenderer.java:117)
    somw lines removed since exceeding word length     
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    SUBSYSTEM = HTTP USERID = <WLS Kernel> SEVERITY = Error THREAD = [ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)' MSGID = BEA-101020 MACHINE = DS-E06995E6AA3D TXID = CONTEXTID = f03d4fb0a8f478c1:-6d1db003:13cd6f5c4ce:-8000-0000000000000039 TIMESTAMP = 1360816752931
    WatchAlarmType: AutomaticReset
    WatchAlarmResetPeriod: 30000
    >
    <Feb 14, 2013 10:09:16 AM IST> <Alert> <Diagnostics> <BEA-320016> <Creating diagnostic image in c:\users\dineshvishnukumar-c\appdata\roaming\jdeveloper\system11.1.1.4.37.59.23\defaultdomain\servers\defaultserver\adr\diag\ofm\defaultdomain\defaultserver\incident\incdir_248 with a lockout minute period of 1.>

    The error logs point to an error in your EL that references the frag1 bean. Firstly, rather than use session scope you must consider using pageFlowScope for your managed bean.

  • 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

  • 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

  • Bounded Task Flow is not rendering

    Hi all,
    I am very new to ADF. I have a problem related to bounded task flows. I created bounded task flow with two simple steps like ViewX.jsff and EditX.jsff. Then I created a jsf page and put a splitter into main frame. On the left side of splitter, the master data of X is placed as read-only table. And in the right side of the splitter, I draged and dropped bounded task flow. It is render properly in jdeveloper editor, however when i run the page, bounded task flow is not displayed. I did some solution research about this problem in the forum. I implemented ADF Authentication and Authorization with HTTP Basic Authentication. I dont want a login form. I gave grants to anonymous-role and authenticated-role but it is still not working.
    Indeed, I dont want to implement a security procedure at the moment. However, if i disable security, application throws an error message about permissions. Also, is there a way for running bounded task flow while security is not enabled?
    Jdev Version: 11.1.2.2 JSF 2.0
    Sorry for bad English.
    Regards.
    Anil.

    Hi,
    I have already given grants to Bounded Task Flow. However it is still not displaying when i run the page.
    If i disable security, i am getting the following error log when i run a page with bounded task flow.
    Error 500--Internal Server Error
    java.lang.IllegalStateException
         at oracle.adf.share.security.SecurityContextImpl.createPermissionInstance(SecurityContextImpl.java:854)
         at oracle.adf.share.security.providers.jps.JpsSecurityContext.createPermissionInstance(JpsSecurityContext.java:386)
         at oracle.adf.share.security.binding.BindingPermission.createPermissionInstance(BindingPermission.java:88)
         at oracle.adf.share.security.binding.BindingPermission.hasPermission(BindingPermission.java:93)
         at oracle.adf.model.binding.DCBindingContainer.internalIsViewable(DCBindingContainer.java:3861)
         at oracle.adf.model.binding.DCBindingContainer.isViewable(DCBindingContainer.java:3821)
         at oracle.adf.controller.internal.binding.TaskFlowRegionController.resetViewableFlag(TaskFlowRegionController.java:456)
         at oracle.adf.controller.internal.binding.TaskFlowRegionController.doRegionRefresh(TaskFlowRegionController.java:276)
         at oracle.adf.controller.internal.binding.TaskFlowRegionModel.processBeginRegion(TaskFlowRegionModel.java:124)
         at oracle.adf.view.rich.component.fragment.UIXRegion$RegionContextChange.doChangeImpl(UIXRegion.java:1392)
         at oracle.adf.view.rich.context.DoableContextChange.doChange(DoableContextChange.java:91)
         at oracle.adf.view.rich.component.fragment.UIXRegion._beginInterruptibleRegion(UIXRegion.java:762)
         at oracle.adf.view.rich.component.fragment.UIXRegion.processRegion(UIXRegion.java:525)
         at oracle.adf.view.rich.component.fragment.UIXRegion._preRenderView(UIXRegion.java:1043)
         at oracle.adf.view.rich.component.fragment.UIXRegion.processEvent(UIXRegion.java:1005)
         at oracle.adfinternal.view.faces.lifecycle.PreRenderViewUtils$1.visit(PreRenderViewUtils.java:122)
         at oracle.adfinternal.view.faces.lifecycle.PreRenderViewVisitContext._invokeVisitCallback(PreRenderViewVisitContext.java:152)
         at oracle.adfinternal.view.faces.lifecycle.PreRenderViewVisitContext.invokeVisitCallback(PreRenderViewVisitContext.java:131)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:531)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:354)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitAllChildren(UIXComponent.java:437)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:415)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:695)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:558)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:354)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitAllChildren(UIXComponent.java:437)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:415)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:695)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:558)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:354)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitAllChildren(UIXComponent.java:437)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:415)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:695)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:558)
         at org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:354)
         at org.apache.myfaces.trinidad.component.UIXDocument.visitTree(UIXDocument.java:82)
         at javax.faces.component.UIComponent.visitTree(UIComponent.java:1518)
         at oracle.adfinternal.view.faces.lifecycle.PreRenderViewUtils._visit(PreRenderViewUtils.java:110)
         at oracle.adfinternal.view.faces.lifecycle.PreRenderViewUtils.__deliverPreRenderViewEvents(PreRenderViewUtils.java:61)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._renderResponse(LifecycleImpl.java:997)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:339)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:237)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:509)
         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:300)
         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:173)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:125)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:468)
         at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:468)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:293)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:199)
         at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
         at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:442)
         at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103)
         at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171)
         at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:139)
         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.wrapRun(WebAppServletContext.java:3715)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    Caused by: java.lang.reflect.InvocationTargetException
         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
         at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
         at oracle.adf.share.security.SecurityContextImpl.createPermissionInstance(SecurityContextImpl.java:848)
         ... 78 more
    Caused by: java.lang.IllegalArgumentException: Invalid parameter: actions cannot be null
         at oracle.adf.share.security.authorization.ADFPermission.(ADFPermission.java:45)
         at oracle.adf.controller.security.TaskFlowPermission.(TaskFlowPermission.java:42)

  • Call adf bounded task flow library programatically

    I have a master application where I have one page with a region where all the task flows are going to be aggregated as tabs. Each task flow represents a module and is in a separate application. I add the adf library to the master application for bounded task flow "Module1".
    This is my code that works if the bounded task flow is in the master application:
    TaskFlowBindingAttributes tfAttr = new TaskFlowBindingAttributes();
    tfAttr.setId("Module1");
    tfAttr.setTaskFlowId(new TaskFlowId("/WEB-INF/module1.xml","module1"));
    taskFlowList.add(0, tfAttr);
    List<UIComponent> tabs = this.getPanelTab().getChildren();
    for (int i = 0; i < tabs.size(); i++) {
    RichShowDetailItem tab = (RichShowDetailItem)tabs.get(i);
    tab.setDisclosed(false);
    RichShowDetailItem tab = (RichShowDetailItem)tabs.get(index);
    tab.setDisclosed(true);
    But if bounded tak flow is in separate application the code doesn't work, it shows a blank page and i have defined a page with some panel boxes. So how shoud i call the bounded task flow programatically??.
    I am working with Jdeveloper 11.1.2.3.0, thank you
    Edited by: Miguel Angel on 19/12/2012 05:22 PM
    Edited by: Miguel Angel on 19/12/2012 07:29 PM
    Edited by: Miguel Angel on 19/12/2012 07:43 PM

    Yes I see it in the component palette. I found the problem, I see in the task-flow-registry.xml that the path for the bounded task flow is: "module1.xml" and not "WEB-INF/module1.xml". What sould be the correct path?.

  • UI Shell - how to allow ADF Library Bounded Task Flow to close itself

    Hi Richard
    Further to my other post, we're having lots of fun with the UI Shell, it's making mockups very easy.
    Question for you though based around the functionality defined in the UI Shell whitepaper. Say we've created our UI Shell application, and rather than wanting to create the bounded task flows in the app (ie.first, second, third), we create them as standalone bounded task flows deployed to ADF Libraries, and imported into our app separately.
    In the UI Shell examples bounded task flows are opened & closed via the UI Shell's own components (say the navigation page items or toolbar buttons), that call the methods in the Launcher bean (_launchActivity & closeCurrentActivity). It's fairly simple to rewrite the launcher helper methods in the launcher bean to call an imported ADF Library bounded task flow to open it as an activity, just referencing the correct task-flow.xml file.
    However as you know a bounded task flow has a "Default Activity" entry point and one or more "Task Flow Return" exit points. What I haven't been able to work out is how when the bounded task flow exits via a task flow return, can we call the closeCurrentActivity method in the Launcher bean? The UI Shell code examples demonstrate closing a bounded task flow by menu options/or similar outside the bounded task flow in the UI Shell, but it would seem reasonable if the bounded task flow exited via a "Task Flow Return" we should be also able to close the activity tab too.
    (....and as extension, before we even do that potentially call the checkState/isDirty() method to stop the user closing the activity too, but again driven by the bounded task flow attempting to exit).
    I could imagine inserting code into the bounded task flow finalizer to close the activity tab, but this pushes the UI Shell tab activity management logic into our standalone ADF Library bounded task flows which isn't ideal, especially if we want to later reuse them in another app which doesn't use the UI Shell.
    Any suggestions welcome.
    Thanks & regards,
    CM.

    And we're back again.... what's a couple months between friends?
    So it turns out after testing our app (d@mn, so close) that we've hit a bug with this approach.
    Our current app allows one BTF to be open in the UI Shell at any one time. Our menu options automatically open one BTF at a time by the user (max one open), and close the previous BTF. However we have some "special" BTFs that require the user to explicitly close the BTF, which in turn makes use of the regionNavigationListener solution I described earlier in this post.
    However we discovered a bug when we do a complete cycle of the 15 embedded regions within the UI Shell.
    Say we:
    1) Open a normal BTF in region 0
    2) Open another normal BTF in region 1 (our solution automatically closes the previous BTF)
    3) We then open another BTF (again the previous BTF is closed) in region 2, yet this a "special" BTF requiring the user explicitly to close it. Upon the user closing the BTF - this results in the regionNavigationListener being called and the removeTab() method called to close down the BTF in the UI Shell
    4) The user then open/closes multiple normal BTFs, one by one, rotating through regions 3, 4, 5 .... eventually back to 1 again
    5) Then the bug occurs - on opening any BTF back in region 2 (as part of the complete cycle of all regions), the tab for the region 2 opens, correct title, and via debugging the Tab.class has all the right settings including taskFlowId, but the tab is incorrectly empty
    doh!
    I've managed to track a symptom of the problem down that may explain what's happening.
    Each time a tab is rendered with a BTF, the Tab classes getBinding() method returns a reference to the binding required for the current BTF. However for some reason on the complete cycle, for "r2" it returns the binding for the previously user-closed BTF from step 3 above, even though we called the TabContext.removeTab() method.
    What I haven't been able to work out is how the bindings get turned on/off dynamically for each BTF being invoked. Presumably for some reason on step 3, the BTF's bindings aren't being correctly removed from r2 even though we called TabContext.removeTab().
    If anybody has any brain waves about what's going on and how to fix this problem, your help appreciated.
    Regards,
    CM.

Maybe you are looking for

  • Will an old iPod "firewire" charger work for my iPad

    I have an old Firewire wall charger that came with my first iPod (wht 20gb). It is a 12 watt .64Amp output. Will this work with my iPad. The iPad comes with a 10 watt charger. Will the extra wattage harm the iPad?

  • Iweb on the new mac air ??

    Hi all, I'm going to buy the new mac AIR , but I knew that the application IWEB doesnt come with the new OSx LION. Do you know if IWEB is available on the apple store and how much does it cost ? Do you know if OSx LION will support IWEB? Thanks a lot

  • When to Apple users get print to Walgreens?

         I have mentioned this before but Revel started out on iOS and Mac platforms. Now you have Windows 8 and Android support and new features have been pushed to these platforms without adding them to the iOS or Mac based apps. You launched "print to

  • Documentation on Linking fields and adding formulas on PLDs

    Does anyone know of some good docs on  Linking fields and adding formulas on PLDs? Can't seem to find much. thanks

  • Analysis Authorisations

    Hi, Query regarding Analysis Authorisation..... I had a 3 Queries based on a Multiprovider which is a combination of 10 Info Cubes.... Where do i need to implement my authorisation on Multiprovider level or at the cube level..as data is avaliable in