11g Task flow - Method call with router Issue

Hi, I am using bounded task flow method call - which is default activity. The outcome of method call will go to a router and that decides which method/page fragment has to be selected. But when ever i try to call the default activity only the default out come of the router (Page fragment) is shown in the jspx. When click on some button which is binded with the default activity - the task flow is not working as i expected. Pls find the code of my task flow below.
<?xml version="1.0" encoding="windows-1252" ?>
<adfc-config xmlns="http://xmlns.oracle.com/adf/controller" version="1.2">
<task-flow-definition id="methodcall2task-flow-definition">
<default-activity>initiatetaskflow</default-activity>
<data-control-scope>
<shared/>
</data-control-scope>
<input-parameter-definition>
<name>methodname</name>
<value>#{CompanyBean.methodname}</value>
</input-parameter-definition>
<managed-bean>
<managed-bean-name>CompanyBean</managed-bean-name>
<managed-bean-class>com.boeing.seds.view.company.CompanyBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<method-call id="initiatetaskflow">
<method>#{CompanyBean.test}</method>
<outcome>
<fixed-outcome>#{CompanyBean.methodname}</fixed-outcome>
</outcome>
</method-call>
<router id="selectMethod">
<case>
<expression>#{CompanyBean.methodname eq 'default'}</expression>
<outcome>default</outcome>
</case>
<case>
<expression>#{CompanyBean.methodname eq 'addcompany'}</expression>
<outcome>addcompany</outcome>
</case>
<case>
<expression>#{CompanyBean.methodname eq 'gotoAddress'}</expression>
<outcome>gotoAddress</outcome>
</case>
<case>
<expression>#{CompanyBean.methodname eq 'gotoDist'}</expression>
<outcome>gotoDist</outcome>
</case>
<default-outcome>gotoAddress</default-outcome>
</router>
<view id="default">
<page>/includes/company/default.jsff</page>
</view>
<view id="addnewcompanyFrgmt">
<page>/includes/company/addnewcompanyFrgmt.jsff</page>
</view>
<method-call id="methodCall1">
<method>#{CompanyBean.addCompany}</method>
<outcome>
<to-string/>
</outcome>
</method-call>
<view id="supplierAddressFrgmt">
<page>/includes/company/supplierAddressFrgmt.jsff</page>
</view>
<view id="supplierDistributorFrgmt">
<page>/includes/company/supplierDistributorFrgmt.jsff</page>
</view>
<control-flow-rule>
<from-activity-id>initiatetaskflow</from-activity-id>
<control-flow-case>
<from-outcome>#{CompanyBean.methodname}</from-outcome>
<to-activity-id>selectMethod</to-activity-id>
</control-flow-case>
</control-flow-rule>
<control-flow-rule>
<from-activity-id>selectMethod</from-activity-id>
<control-flow-case>
<from-outcome>default</from-outcome>
<to-activity-id>default</to-activity-id>
</control-flow-case>
<control-flow-case>
<from-outcome>addcompany</from-outcome>
<to-activity-id>methodCall1</to-activity-id>
</control-flow-case>
<control-flow-case>
<from-outcome>gotoAddress</from-outcome>
<to-activity-id>supplierAddressFrgmt</to-activity-id>
</control-flow-case>
<control-flow-case>
<from-outcome>gotoDist</from-outcome>
<to-activity-id>supplierDistributorFrgmt</to-activity-id>
</control-flow-case>
</control-flow-rule>
<control-flow-rule>
<from-activity-id>methodCall1</from-activity-id>
<control-flow-case>
<from-outcome>goAddNew</from-outcome>
<to-activity-id>addnewcompanyFrgmt</to-activity-id>
</control-flow-case>
</control-flow-rule>
<use-page-fragments/>
</task-flow-definition>
</adfc-config>
Kindly let me know what may be the issue and help me to resolve it.
Thanks!
Sankari Kannan

Hi Sankari,
Since after the initial method call, your control flow has the router as its next stop, the //method-call/method/outcome/fixed-outcome can be set to a literal value(go to router) instead of an EL.
And let router decide where to go next(by EL).
Or you can discard your router activity, let the method-call activity decide where to go directly by setting //method-call/method/outcome/to-string to "true". Then the return value of the method decide the next stop.
Todd

Similar Messages

  • ADF Mobile: WebService data control method call with array

    JDev 11.1.2.3
    ADF Mobile deployed to Android emulator
    Hello All,
    I am trying to invoke a method in my Web Service data control and get the following exception
    Caused by: ERROR [oracle.adfmf.framework.exception.AdfInvocationRuntimeException] - Cannot serialize: [I@1dbae822
            at oracle.adfmf.dc.ws.soap.SoapTransportLayer.invokeSoapRequest(Lorg/ksoap2/SoapEnvelope;)Ljava/lang/Object;(Unknown Source)
            at oracle.adfmf.dc.ws.soap.SoapWebServiceOperation.invoke(Ljava/lang/String;Loracle/adfmf/dc/ws/soap/SoapGenericType;)Ljava/lang/Object;(Unknown Source)
            at oracle.adfmf.dc.ws.soap.SoapWebServiceOperation.invoke(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/Object;(Unknown Source)
            at oracle.adfmf.dc.JavaBeanOperation.execute(Ljava/lang/Object;Ljava/util/Map;)Ljava/lang/Object;(Unknown Source)
            at oracle.adfmf.dc.ws.WebServiceDataControlAdapter.invokeOperation(Ljava/util/Map;Loracle/adfmf/bindings/OperationBinding;)Z(Unknown Source)
            at oracle.adfmf.bindings.dbf.AmxMethodActionBinding.execute()Ljava/lang/Object;(Unknown Source) This method is an AppModule method exposed as a service interface and the parameter for this method is a List<oracle.jbo.domain.Number>. The schema definition for the input is as follows:
    <element name="acceptTask">
       <complexType>
         <sequence>
                <element maxOccurs="unbounded" minOccurs="0" name="taskID" type="decimal"/>
         </sequence>
       </complexType>
    </element>For the input to my binding, I have tried int[], Integer[] and List<Integer>. All of these result in similar errors.
    I have also tried invoking this through a regular ADF application and that works fine with an int[]. It looks like something specific to the ADF Mobile SOAP layer.
    Is this a bug or a restriction in the framework? Any workarounds that has worked for anyone?

    No luck. A WS DC method call with a simple parameter (java.lang.String or java.lang.Integer) works fine but I can't get it to work when there is an array input.
    I have tried WS methods with int arrays and simple string arrays without any luck. All of them result in a cannot serialize error.
    I can't figure out what I am doing wrong. Are there any working WS Datacontrol samples with array inputs?

  • 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

  • Combine standard task (ABAP method call) and additional UWL Action Handlers

    Hi, i have defined a task with an asynchronous ABAP method call and a terminating event which i want to use "as is" in the universal worklist, that means that the standard action has to be the ABAP method call defined for the task.
    In addition to that i want to add an extra button to the workitem view in the worklist which opens a web dynpro application. The web dynpro needs a parameter from the workitem container. Opening the web dynpro is not required for completing the task, so i do not consider using secondary methods.
    I created an UWLConfiguration for the task type without defining the defaultAction attribute, since defaultAction should not be overwritten. I wanted to use SAPWebDynproABAPLauncher to generate the button since i can easily include values from the workitem container in the call.
    When executing a workitem from the worklist the ABAP method call is not performed, instead a window opens which just displays the workitem. The button to web dynpro is generated and works fine.
    Does anyone have a clue how i can use UWL to define an additional button with SAPWebDynproABAPLauncher without overwriting the standard task definition?
    My definition:
    <ItemTypes>
        <ItemType
    name="uwl.task.webflow.TS95100103"
    connector="WebFlowConnector"
    defaultView="DefaultView">
          <ItemTypeCriteria
    systemId="ED1CLNT100"
    externalType="TS95100103"
    connector="WebFlowConnector"/>
          <CustomAttributes>
            <CustomAttributeSource
    id="WEBFLOW_CONTAINER"
    objectIdHolder="externalObjectId"
    objectType="WebFlowContainer"
    cacheValidity="final">
              <Attribute
    name="HROBJECT_OBJEKTID"
    type="string"
    displayName="HROBJECT_OBJEKTID"/>
            </CustomAttributeSource>
          </CustomAttributes>
          <Actions>
            <Action
    name="launchWebDynPro"
    groupAction=""
    handler="SAPWebDynproABAPLauncher"
    returnToDetailViewAllowed="yes"
    launchInNewWindow="yes"
    launchNewWindowFeatures="resizable=yes,scrollbars=yes,
    status=yes,toolbar=no,menubar=no,
    location=no,directories=no">
              <Properties>
                <Property
    name="WebDynproApplication" value="hr01_app"/>
                <Property
    name="newWindowFeatures"
    value="resizable=yes,scrollbars=yes,status=yes,
    toolbar=no,menubar=no,location=no,directories=no"/>
                <Property
    name="DynamicParameter"
    value="candidacy_id=${item.HROBJECT_OBJEKTID}
    &amp;from_workflow=X"/>
                <Property
    name="openInNewWindow" value="yes"/>
                <Property
    name="System" value="SYSTEM_ALIAS_ERP"/>
                <Property
    name="WebDynproNamespace" value="hr01"/>
              </Properties>
              <Descriptions default="Show"/>
            </Action>
          </Actions>
        </ItemType>
      </ItemTypes>
    Thank you very much, best regards, Martin
    Edited by: Martin Sommer on Dec 1, 2008 5:51 PM

    found a solution with transaction launcher and custom transaction

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

  • Dynamic Method call with CHANGING

    Hi,
    I have the following method call:
          CALL METHOD o_salv->DISPLAY_SALV
            CHANGING
              it_data = it_ekko.
    I would like to make this dynamic so that I can call it multiple times from my program with the came set of code.
    I have this working for other Method calls, but the use the same parameters on both sides such as:
          CALL METHOD o_main->get_date
            IMPORTING
              it_ekko = it_ekko.
    being coded as such:
          CALL METHOD o_main->(v_method)
            PARAMETER-TABLE
              ptab.
    Can someone please give me some guidance on how to code the top example dynamically when the 2 variables are different?
    Hope that makes sense...thanks for your help!
    Andy

    Hello Bjorn
    I would suggest the following approach:
    (1) Collect all your GUI control instances in an itab whose line type is TYPE REF TO cl_gui_control.
    (2) Define your "free" method:
    LOOP AT mt_gui_controls INTO lo_gui_control.
    * See if gui control was text editor
      TRY.
        lo_textedit ?= lo_gui_control.
      CATCH cx_sy_move_cast_error INTO lo_error.
      ENDTRY.
      IF ( lo_error IS NOT BOUND ).
        lo_textedit->free.
    *   ... your coding
        CONTINUE.
      ENDIF.
    * See if gui control was tree
      TRY.
        lo_tree ?= lo_gui_control.
      CATCH cx_sy_move_cast_error INTO lo_error.
      ENDTRY.
    ENDLOOP.
    The FREE methods are redefined in the subclasses. However, you could try to call lo_gui_control->free directly because I am not sure if the coding of the superclass or subclass is called (I cannot test this at the moment).
    Regards
      Uwe

  • Why are static methods called with null references,valid ?

    This is my code :
    package inheritance;
    public class inh6{
         public static void method(){
         System.out.println("Called");
         public static void main(String[] args){
              inh6 t4 = null;
         t4.method();
    O/P :
    CalledHere t4 is a null reference and yet we are able to call a method on it,why is null pointerexception not thrown.Why are we able to call static methods using null references ?
    t4 is null means it doesnot refer to any memeory address,hence how is method() called correctly.
    I hope i am clear. :)
    Thank you for your consideration.

    punter wrote:
    jverd wrote:
    Memory addresses have nothing to do with it. I doubt memory addresses are even mentioned once in the JLS.
    By memory address i mean the memory location the reference is pointing to.I know what you mean. But if you think it's relevant, can you show me where in the JLS it says anything about memory locations?
    >
    You can do that because a) t4's type is "reference to inh6" and b) method() is declared static, which means that you don't need an object to call it, just the class. That class comes from the compile time type of t4. The fact that t4 is null at runtime is irrelevant.
    So at compile time the type of t4 is inh6 and hence the method is called.Is it ? Had method() not been static a NullPointerException would have been thrown.Correct.
    With non-static, non-private, non-final methods, which implementation of the method gets called is determined at runtime, buy the class of the object on which it's being called. If any one of those "non"s goes away, then the method is entirely determined at compile time, and in the case of static methods, there's no instance necessary to call the method in the first place.

  • NO HELP WITH ROUTING ISSUES FROM VERIZON

    Spend 2 hours with technical support to no avail. Have routing issues where I can’t get from my FIOS residential account to remote web site abroad. Trace route fails at so-0-0-0.XT1.AMS2.ALTER.NET [146.188.14.209]. FIOS technical support is incapable of doing any troubleshooting beyond basic customer premises equipment, refusing to escalate the case to network engineering team. I was basically told by FIOS tech support supervisor {edited for privacy} that this is not Verizon’s problem and no help will be provided. What is even more frustrating that Verizon agents are not capable of receiving emails from customers with details such as trace route.
    Is there anyone at Verizon monitoring this and able to help? Just in case, ticket number that I have with Verizon is {edited for privacy}
    Here is trace route details.
    tracert 212.44.136.226
    Tracing route to brserv.bridgetour.ru [212.44.136.226]
    over a maximum of 30 hops:
      1     1 ms    <1 ms     1 ms  Wireless_Broadband_Router.home [192.168.1.1]
      2    12 ms     9 ms     9 ms  L100.BSTNMA-VFTTP-71.verizon-gni.net [98.118.28
    1]
      3    16 ms    19 ms    19 ms  G0-6-4-1.BSTNMA-LCR-21.verizon-gni.net [130.81.
    75.132]
      4    45 ms    15 ms     8 ms  ae3-0.BOS-BB-RTR1.verizon-gni.net [130.81.151.6
      5    19 ms    19 ms    19 ms  0.xe-3-2-0.IL1.NYC9.ALTER.NET [152.63.26.81]
      6    21 ms    19 ms    19 ms  0.ge-1-2-0.IL1.NYC12.ALTER.NET [152.63.26.86]
      7   107 ms   108 ms   107 ms  so-0-0-0.XT1.AMS2.ALTER.NET [146.188.14.209]
      8     *        *        *     Request timed out.
      9     *        *        *     Request timed out.
     10     *        *        *     Request timed out.
     11     *        *        *     Request timed out.
     12     *        *        *     Request timed out.
     13     *        *        *     Request timed out.

    BT help aren't always that helpful, but BT engineers claim that it is a BT sales issue and nothing to do with them seems a bit extreme.
    Are you sure your daily speed is 8Mbits, not 8Mbytes?  How are you measuring this?  Is it the number coming from the BT speedtest?
    If it really is 8Mb, then I think it's worth checking with the mods;  at: http://bt.custhelp.com/app/contact_email/c/4951 .  But be aware they take 3 working days to reply: sometimes more if busy. 

  • Njawin method call with arrays

    I have a problem when calling this method in NJAWIN
    Sub AddItems(NumItems As Long, ItemIDs() As String, ClientHandles() As Long, ServerHandles() As Long, Errors() As Long, [RequestedDataTypes], [AccessPaths])The njawin created code signature looks like this:
    public void AddItems(int NumItems, ObjectRef  ItemIDs, ObjectRef  ClientHandles, ObjectRef  ServerHandles, ObjectRef  Errors) throws COMException {
            invokeN("AddItems", new Object[]{new java.lang.Integer(NumItems), ItemIDs, ClientHandles, ServerHandles, Errors}, 5);
    public void AddItems(int NumItems, ObjectRef  ItemIDs, ObjectRef  ClientHandles, ObjectRef  ServerHandles, ObjectRef  Errors, java.lang.Object RequestedDataTypes) throws COMException {
            invokeN("AddItems", new Object[]{new java.lang.Integer(NumItems), ItemIDs, ClientHandles, ServerHandles, Errors, RequestedDataTypes}, 6);
    public void AddItems(int NumItems, ObjectRef  ItemIDs, ObjectRef  ClientHandles, ObjectRef  ServerHandles, ObjectRef  Errors, java.lang.Object RequestedDataTypes, java.lang.Object AccessPaths) throws COMException {
            invokeN("AddItems", new Object[]{new java.lang.Integer(NumItems), ItemIDs, ClientHandles, ServerHandles, Errors, RequestedDataTypes, AccessPaths}, 7);
        }I tried to call one of this methodes in many different ways, but i always got this Exception.
    Exception:
    Exception in thread "main" java.lang.Error: Type cannot be marshalled to variant: class com.develop.jawin.Variant
         at com.develop.jawin.Variant.marshalInRef(Unknown Source)
         at com.develop.jawin.Variant.marshalIn(Unknown Source)
         at com.develop.jawin.UnknownPtr.invokeN(Unknown Source)
         at OPCSiemensDAAutomation.OPCItems.AddItems(OPCItems.java:131)
         at OPCSiemensDAAutomation.TestNew.<init>(TestNew.java:47)
         at OPCSiemensDAAutomation.TestNew.main(TestNew.java:56)
    Can anybody tell me, how to call this method in the right way??
    How do i create the proper ObjectRef types??
    Thx in advance...

    I have a problem when calling this method in NJAWIN
    Sub AddItems(NumItems As Long, ItemIDs() As String, ClientHandles() As Long, ServerHandles() As Long, Errors() As Long, [RequestedDataTypes], [AccessPaths])The njawin created code signature looks like this:
    public void AddItems(int NumItems, ObjectRef  ItemIDs, ObjectRef  ClientHandles, ObjectRef  ServerHandles, ObjectRef  Errors) throws COMException {
            invokeN("AddItems", new Object[]{new java.lang.Integer(NumItems), ItemIDs, ClientHandles, ServerHandles, Errors}, 5);
    public void AddItems(int NumItems, ObjectRef  ItemIDs, ObjectRef  ClientHandles, ObjectRef  ServerHandles, ObjectRef  Errors, java.lang.Object RequestedDataTypes) throws COMException {
            invokeN("AddItems", new Object[]{new java.lang.Integer(NumItems), ItemIDs, ClientHandles, ServerHandles, Errors, RequestedDataTypes}, 6);
    public void AddItems(int NumItems, ObjectRef  ItemIDs, ObjectRef  ClientHandles, ObjectRef  ServerHandles, ObjectRef  Errors, java.lang.Object RequestedDataTypes, java.lang.Object AccessPaths) throws COMException {
            invokeN("AddItems", new Object[]{new java.lang.Integer(NumItems), ItemIDs, ClientHandles, ServerHandles, Errors, RequestedDataTypes, AccessPaths}, 7);
        }I tried to call one of this methodes in many different ways, but i always got this Exception.
    Exception:
    Exception in thread "main" java.lang.Error: Type cannot be marshalled to variant: class com.develop.jawin.Variant
         at com.develop.jawin.Variant.marshalInRef(Unknown Source)
         at com.develop.jawin.Variant.marshalIn(Unknown Source)
         at com.develop.jawin.UnknownPtr.invokeN(Unknown Source)
         at OPCSiemensDAAutomation.OPCItems.AddItems(OPCItems.java:131)
         at OPCSiemensDAAutomation.TestNew.<init>(TestNew.java:47)
         at OPCSiemensDAAutomation.TestNew.main(TestNew.java:56)
    Can anybody tell me, how to call this method in the right way??
    How do i create the proper ObjectRef types??
    Thx in advance...

  • How to Use No DB connection App with task flow desined as 'New Transaction'

    Hi,
    My application is fully depend on Custom java datasource implmentation and it requires no DB connection at all. I've done necessary implementation (http://andrejusb.blogspot.in/2012/03/use-case-for-adf-bc-with-no-database.html) by creating CustomDatabaseConnectionStrategy that says
        @Override
        public ApplicationModule createApplicationModule(Hashtable env) {
          env.put(Configuration.DB_REQUIRES_CONNECTION,Boolean.FALSE);
          env.put(PropertyMetadata.ENV_DO_FAILOVER.pName, PropertyConstants.FALSE);
          return super.createApplicationModule(env);
        }My application works fine until i keep my task flow transaction as 'No Controller transaction'. Yes, I use Dynamic tab shell template as UI. But when I keep it as 'Always Begin with New Transaction' and not to share the Data control, Screen is not at all getting rendered. I get some exception (I guess the moment I try to open the task flow, it is trying to get the connection. Since there is no connection available, It gives me this error. Is it so?)
    One of my client requirement is to open the same screen under multiple tabs as a fresh screen (i.e. with different transaction. We do transaction through tuxedo transaction server). If I load a screen under first Tab with some data, added some record, deleted some record.. and If I load the same screen under another Tab, it should not refelect the same data whatever I have under first Tab.
    Requirement:
    I don't have DB connection in my app. But I should be able to define the task-flow to open with new instance of Application module whenever it is opened.
    Your help on this would be appreciated.
    Raghu

    If I understand you requirements correctly, you do not need ADF taskflow transactions but you just need fresh DataControls. If it is so, then you do not have to set the taskflow's transaction behaviour to "Always Begin with New Transaction" (e.g. keep it to "No Controller Transaction"), but set the DataControl frame to "isolated" (e.g. uncheck the "Share data controls with the calling task flow" checkbox in the taskflow's Property Inspector). In this way each taskflow instance will be started in a different DataControl frame (e.g. it will instantiate its own set of ApplicationModule instances).
    Dimitar

  • Calling bounded task flows imported as ADF libraries

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

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

  • 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

  • Avoiding request scope bean clashes for task flow calls

    Hi,
    I have two task flows, Tf1 calls Tf2 using a task flow call activity. The structures of the task flows are as follows:
    Tf1
      Managed Bean: TfBean, request scope
        class Tf1Bean
          has property goTf2Button
      View: View1
        Button bound to #{TfBean.goTf2Button}
          Action -> task flow call to Tf2
    Tf2
      Managed Bean: TfBean, request scope
        class Tf2Bean
          has property testButton
      View: View2
        Button bound to #{TfBean.testButton}
    As you can see both have a request scope bean called TfBean but these are different classes in each. The bean classes have different properties for binding the components on the two pages.
    When I click the button in View1 to navigate I get an error telling me that class Tf1Bean does not have the property testButton. Clearly Tf2Bean is not being instantiated as TfBean already exists for the request.
    I'm guessing this is expected behaviour and it seems logical.
    My question however is what would be good standards or practices to avoid this?
    One way would be a naming convention, however what if I am consuming Tf2 from a library? In this case it would ideally work as a black box and I should not be concerned about it's implementation, specifically names chosen for internal managed beans. Even if it was not a problem initially, the developer of the task flow could add or change the name of a request scope bean introducing a conflict at a later stage.
    Thanks,
    Kevin

    Hi Frank,
    Good to meet you at UKOUG Tech13 yesterday. I changed my test case from request scope to backing bean scope. Unfortunately I still get the same error:
    <RichExceptionHandler> <_logUnhandledException> ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase RENDER_RESPONSE 6
    javax.faces.FacesException: javax.el.PropertyNotFoundException: The class 'yyy.view.Tf1Bean' does not have the property 'testButton'.
      at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:1900)
      at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:446)
      at javax.faces.webapp.UIComponentELTag.createComponent(UIComponentELTag.java:222)
      at javax.faces.webapp.UIComponentClassicTagBase.createChild(UIComponentClassicTagBase.java:506)
      at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:744)
      at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1311)
      at org.apache.myfaces.trinidad.webapp.UIXComponentELTag.doStartTag(UIXComponentELTag.java:67)
      at oracle.adfinternal.view.faces.unified.taglib.nav.UnifiedCommandButtonTag.doStartTag(UnifiedCommandButtonTag.java:51)
    ...etc.
    What I think is happening, please correct me if I'm wrong...
    Running Tf1, page View1 is displayed.
    Clicking the button on View1 initiates a request and an instance of Tf1Bean is instantiated for the managed bean named TfBean.
    During the request navigation occurs to Tf2 and hence page View2.
    View2 needs a property in TfBean called testButton.
    There is already a managed bean instantiated for this request called TfBean, however this is of class Tf1Bean and does not have the property.
    I have a simple workspace showing this if you want me to send it to you. I am using 11.1.2.4 by the way.
    Thanks,
    Kevin

  • ADF : Can we skip the default activity of ADF train in bounded task flow.?

    Hi All,
    I'm a newbie for ADF and JDev. Started learning from the documentation provided for ADF, I'm trying to create a bounded task flow which has a train component and every train stop should be enabled/skipped programmatically. I'm able to skip the train stops after reading the content provided at http://www.oracle.com/technetwork/developer-tools/adf/learnmore/82-programmatically-navigate-trains-396873.pdf.
    But I'm not able to skip the default train stop which is the first activity call in my case upon initialization.
    Below are the steps I've followed :
    1. Created a viewController project and created a bounded task flow in it with Train component enabled.
    2. Added 4 views with train component marking the first view as default activity call.
    3. As per the document I mentioned above, I added managed bean files to skip the train stop programmatically.
    Now when i run the task flow, I'm able to skip the train stops number 2/3/4 but I'm not able to skip the stop number 1(first stop which is the default activity) on initialization.
    As per ADF documentation, for a bounded task flow there must be a default activity assigned which will always be called first when we enter the bounded task flow. So that means, default activity will always be called upon initialization of that bounded task flow and never be skipped programmatically.? or else if there is a way to skip the default activity, then please let me know the documentation/steps to do this.
    Thanks in advace.
    Edited by: 1004973 on May 9, 2013 2:52 AM

    Thanks Timo. Your idea resolved my issue. :)
    I've created a new page in my bounded task flow which I've made as a default activity for that bounded task flow. Then I applied navigation through router and based on some condition I'm now able to move my control to my desired train stop. By this design I can do other customization on train button(Back/Next).

  • 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

Maybe you are looking for

  • How do I get iTunes 11.1 onto my 5s?

    I downloaded iTunes to my Windows 7 pc.  I'd like to load iTunes by syncing with my iPhone 5s.  When I plug my 5s in via USB, I get the error:  iPhone cannot be used because it requires iTunes version 11.1 or later.  How do I get iTunes 11.1 onto my

  • How do I solve  windows error 2? I'm using windows 7

    I am unable to access I tunes. The message "Windows error 2" appears and the message "Apple application was not found". It tells me to uninstall and then install I tunes, but the system won't allow that. I am using windows 7

  • Anybody using CMYK workflow?

    I'm in a desperate need of a case study for my disertation on CMYK and RGB workflows. I'm looking for somebody (graphic designer, studio, repro house or similar practices) who uses a CMYK workflow, meaning that the images are converted to the CMYK de

  • No DVD player?

    Tried to watch a DVD for the first time tonight. The drive doesn't recognize the DVD, no desktop icon appears and it won't eject the disc. If I go to applications and try to open the DVD player it says "Initialization Error. A Valid DVD drive could n

  • How can I import presets in Aperture 3.3.2

    I found I cannot import presets I downloaded, the original place has been moved. Any one can help me figure it out? Thanks.