Task Flow Transaction Handling Inconsistent between JDeveloper R1 & R2.

We have a solution developed using Jdeveloper 11.1.2.1.0.
To describe the use case I will use the HR schema.
The user must be able to view Regions and navigate to Countries and Locations in a hierarchical way. At each level he must be allowed to view and maintain the detail of the current record at that level. The user must also be able to navigate directly to a level and perform a search to view the data and from there be allowed to to view and maintain the detail of the current record at that level.
So I have created the following design to achieve this and take into consideration that I need to reuse my task flows that maintain the data.
Business Services (Model Project)
1. HierarchyAM, containing Read Only VO’s of the various levels nested by association/view link.
2. Region + Countries + Locations
3. Search#Level#AM, A separate AM for each level, containing the Read Only VO per level.
4. Maintain#Level#AM, A Separate AM for each level, containing an updateable VO per level.
UI (View Controller Project)
I created the following BTF’s (To try and keep the post short as possible I will only provide detail for a single level to explain the issues)
*1. HiererchyBTF*
a.     Contains a fragment.
b.     Added RegionHierarchyBtf, CountryHierarchyBTF, LocationHierarchyBTF to the above fragment as dynamic regions.
c.     Task flow transaction <No Controller Transaction>, isolated.
*2. RegionHierarchyBTF. (The same BTF’s are created for each level in the hierarchy)*
a.     Contains a fragment.
b.     Exposed HierarchyAM<RegionRoVO>
c.     Task flow transaction <No Controller Transaction>, shared.
d.     Includes a call to the EditRegionBTF.
*3. SearchRegionBTF (The same BTF’s are created for each level in the hierarchy)*
a.     Contains a fragment.
b.     Exposed SearchRegionAM<RegionRoVO>
c.     Task flow transaction <No Controller Transaction>, isolated.
d.     Includes a call to the EditRegionBTF.
*4. EditRegionBTF*
a.     Contains a fragment.
b.     Exposed MaintainRegionAM<RegionVO>
c.     Task flow transaction <Use Existing Transaction if Possible>, isolated.
Runtime behaviour with above configuration.
1.     Running the HiererchyBTF and navigation the levels works in all versions.
2.     Calling an edit BTF allows me to edit the current record and successfully commit the data in all versions.
3.     Calling an edit BTF for the same record immediately thereafter, allows me to edit the record and commit the data successfully in all versions.
4.     Running any of search BTF’s and calling the edit BTF works in all versions.
Runtime behaviour and changing the EditRegionBTF task flow transaction to Shared.
1.     Running the HiererchyBTF and navigation the levels works in all versions.
2.     Calling an edit BTF allows me to edit the current record in the table and successfully commit the data in all versions.
3.     Calling an edit BTF for the same record immediately thereafter, allows me to edit the record and commit the data successfully in 11.1.1.4.0 & 11.1.1.6.0 only. If I perform the same scenario in 11.1.2.1.0 I receive the following exception.
a.     JBO-25003: Object MaintainLocationAM of type ApplicationModule is not found.
4.     Repeating the process, but after editing the first record, edit the second record in the table the error is not encountered. If, after successfully editing the second record and committing the data successfully, I again edit the first record I edited, I receive the same exception as in point 3.
5.     Running any of search BTF’s and calling the edit BTF works in all versions.
For the purpose of having a reusable edit task flow, I need to have the task flow transaction configuration as <Use Existing Transaction if Possible>, shared. This enables me to have the edit task flow as a parent as well as a child task flow and use the task flow functionality irrespective if it is controlling the transaction or not.
My questions are;
1. Is my design acceptable for the solution I am developing, I am more specifically questioning my separation of the AM’s to achieve loosely coupled task flows.
2. Is there a bug (I have done a search on MOS) that details this behaviour.
3. As, in my opinion, this is a common requirement, why is there inconsistency between the versions.
The demo for each version can be made available.
Regards.
Leon.
Edited by: Leon Dorfling on Feb 21, 2013 1:44 AM

Hi Frank,
+1. Its the first sting I stumbled on reading your post. Unless the read-only view object AMs are shared across users (application scope) I don't see why you want to have them in a separate AM. I don't see a benefit in a purely read-only view object that is not backed up by entities and thus would follow Oracle's recommendation to always use entities with view objects.+
The read-only vo's are based on eo's. I separated the AM as the search use cases are independent of one another. So my understanding, from a performance perspective, is to not have all the read-only vo's of the entire hierarchy of products in a single AM if I am only going to access one of them. If I do not understand correctly, can you please assist me in better understanding.
+2. For sure this behavior doesn't sound right and should be filed. You may want to check 11.2.3 in case it has been fixed in there already.+
As posted by Chris, I have through MOS found that it has been fixed in a later version.
Btw.: "Calling an edit BTF for the same record immediately thereafter, allows me to edit the record and commit the data successfully" how do you call this task flow dynamic region or task flow call activity ?
The BTF's are called using a backing bean.
Regards
Leon.

Similar Messages

  • Task flow exception handler

    Hi all,
    I'm trying to specify a method activity as an exception handler in the adfc-config. The problem is if I specify a view activity or a bounded task flow as the exception handler then it works fine, but if the exception handler is a method activity then it is not recognized. What could be the cause?. I need to execute a method when an exception occurs.
    Version: 11.1.2.0
    Edited by: NewBee on Apr 23, 2013 10:37 AM

    Hi,
    there should not be a problem with this and I recently did the same with JDeveloper 11g R2 (not sure which version of JDeveloper you use because you did not share this information). I assume you just marked the method activity as an exception handler without any other configuration? If so then set a break point to the managed bean method that you access from the method activity to see if it actually stops there. Also note that not all exceptions are handled by the controller exception handler. E.g an exception during render response phase (typically an exception in a managed bean) is not handled by the controller. Also you need to avoid the managed bean that handles the exception to itself throw one. This however you will see when debugging the bean.
    Frank

  • Task Flow Transaction Behavior and AM Activation/Passivation

    Hi All,
    In my app, when I changed the transaction behavior from 'No Controller Transaction' to 'Use Existing Transaction If Possible', I started seeing the following type of AM Passivation snapshot is JDev log:
    <ADFLogger> <begin> Passivating Application Module
    <PCollManager> <resolveName> [3560] **PCollManager.resolveName** tabName=PS_TXN
    <DBTransactionImpl> <getInternalConnection> [3561] Getting a connection for internal use...
    <DBTransactionImpl> <getInternalConnection> [3562] Creating internal connection...
    <ADFLogger> <begin> Establish database connection
    <DBTransactionImpl> <establishNewConnection> [3563] Trying connection: DataSource='weblogic.jdbc.common.internal.RmiDataSource@4d0ca0'...
    <DBTransactionImpl> <establishNewConnection> [3564] Before getNativeJdbcConnection='weblogic.jdbc.wrapper.JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection
    <DBTransactionImpl> <establishNewConnection> [3565] After getNativeJdbcConnection='weblogic.jdbc.wrapper.JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection
    <ADFLogger> <addContextData> Establish database connection
    <ADFLogger> <end> Establish database connection
    <OraclePersistManager> <syncSequenceIncrementSize> [3566] **syncSequenceIncrementSize** altered sequence 'increment by' value to 50
    <ViewObjectImpl> <doPassivateSettings> [3567] DateTimeVO1 passivating with paramsChanged
    <Serializer> <passivate> [3568] <AM MomVer="0">
    <cd/>
    <TXN Def="1" New="0" Lok="2" tsi="0" pcid="40"/>
    <CONN/>
    <VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseRoutingMainVO" Name="BaseRoutingMainVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseRoutingDetailsVO" Name="BaseRoutingDetailsVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseParameterVO" Name="BaseParameterVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseErrorLookupVO" Name="BaseErrorLookupVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseCompDataHdrVO" Name="BaseCompDataHdrVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseCompDataDtlVO" Name="BaseCompDataDtlVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseDataReqValVO" Name="BaseDataReqValVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseRegistrationPointVO" Name="BaseRegistrationPointVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseTradingPrtnrInfoVO" Name="BaseTradingPrtnrInfoVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseTradingPrtnrVerCtrlVO" Name="BaseTradingPrtnrVerCtrlVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseNotificationVO" Name="BaseNotificationVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseTransactionDefVO" Name="BaseTransactionDefVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.BaseValidationTypeVO" Name="BaseValidationTypeVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.OrigTransDetailsVO" Name="OrigTransDetailsVO1"/>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.TradingPartnerBaseVO" Name="TradingPartnerBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS TRADING_PARTNER_ID FROM DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TransErrorVO" Name="TransErrorVO1"/>
    <VO sig="1315216374468" qf="0" ut="0" It="1" Sz="25" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.DateTimeVO" Name="DateTimeVO1">
    <exArgs count="1">
    <arg name="TimeZone">
    <![CDATA[GMT]]>
    </arg>
    </exArgs>
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT CurrentTime FROM
    SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY HH:MI AM') AS CurrentTime, 'GMT' AS TZ FROM DUAL
    UNION
    SELECT TO_CHAR(SYSDATE+5.5/24,'DD-MON-YYYY HH:MI AM') AS CurrentTime, 'IST' AS TZ FROM DUAL
    UNION
    SELECT TO_CHAR(SYSDATE-8/24,'DD-MON-YYYY HH:MI AM') AS CurrentTime, 'PST' AS TZ FROM DUAL
    UNION
    SELECT TO_CHAR(SYSDATE-6/24,'DD-MON-YYYY HH:MI AM') AS CurrentTime, 'CST' AS TZ FROM DUAL
    UNION
    SELECT TO_CHAR(SYSDATE-5/24,'DD-MON-YYYY HH:MI AM') AS CurrentTime, 'EST' AS TZ FROM DUAL
    WHERE TZ=:TimeZone) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[0000000000010000013239013AC4]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TransTrackingVO" Name="TransTrackingVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TransDependencyVO" Name="TransDependencyVO1"/>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.TradingPartnerBaseVO" Name="TradingPartnerBaseVO2">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS TRADING_PARTNER_ID FROM DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.ReceiverTransDetailsVO" Name="ReceiverTransDetailsVO1"/>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.TransIDBaseVO" Name="TransIDBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (select 1 AS transaction_record_id from DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[000100000002C102]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.TransKeyBaseVO" Name="TransKeyBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS document_key FROM dual) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.TransStatusBaseVO" Name="TransStatusBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS STATUS FROM DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.ErrorTypeBaseVO" Name="ErrorTypeBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS ERROR_TYPE FROM DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.DependencyBaseVO" Name="DependencyBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS DEPENDENCY FROM DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.MasterTransDependencyVO" Name="MasterTransDependencyVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TrackingVO" Name="TrackingVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.ErrorVO" Name="ErrorVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.DashboardTransErrorVO" Name="DashboardTransErrorVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.DashboardTransDependencyVO" Name="DashboardTransDependencyVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.DashboardTransPieVO" Name="DashboardTransPieVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.DashboardMasterTransBarVO" Name="DashboardMasterTransBarVO1"/>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" Sz="25" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.ReceiverTransStatusBaseVO" Name="ReceiverTransStatusBaseVO1">
    <rsq>
    <![CDATA[SELECT /*+ FIRST_ROWS */ * FROM (SELECT 'X' AS STATUS FROM DUAL) QRSLT ]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" Sz="25" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.ErrorStatusBaseVO" Name="ErrorStatusBaseVO1">
    <rsq>
    <![CDATA[SELECT 'X' AS ERROR_STATUS FROM DUAL]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.HeaderVO" Name="HeaderVO1"/>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TradingPartnerBaseVO" Name="TradingPartnerBaseVO3"/>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" Sz="25" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.HeaderStatusBaseVO" Name="HeaderStatusBaseVO1">
    <rsq>
    <![CDATA[SELECT 'X' AS STATUS FROM DUAL]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TradingPartnerBaseVO" Name="TradingPartnerBaseVO4"/>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" Sz="25" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.HeaderSourceFileNameBaseVO" Name="HeaderSourceFileNameBaseVO1">
    <rsq>
    <![CDATA[SELECT 'X' AS SOURCE_FILE_NAME FROM DUAL]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216374468" qf="0" ut="0" da="1" It="1" Sz="25" St="0" im="1" Ex="1" Def="com.emerson.eth.adf.model.view.DependencyStatusBaseVO" Name="DependencyStatusBaseVO1">
    <rsq>
    <![CDATA[SELECT 'X' AS DEPENDENCY_STATUS FROM DUAL]]>
    </rsq>
    <Key>
    <![CDATA[00010000000158]]>
    </Key>
    </VO>
    <VO sig="1315216382156" vok="20" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.HeaderSourceFileNameLOVVO" Name="_LOCAL_VIEW_USAGE_com_emerson_eth_adf_model_view_HeaderSourceFileNameBaseVO_HeaderSourceFileNameLOVVO1"/>
    <VO sig="1315216384812" vok="20" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.ReceiverTransStatusLOVVO" Name="_LOCAL_VIEW_USAGE_com_emerson_eth_adf_model_view_ReceiverTransStatusBaseVO_ReceiverTransStatusLOVVO1"/>
    <VO sig="1315216385921" vok="20" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.HeaderStatusLOVVO" Name="_LOCAL_VIEW_USAGE_com_emerson_eth_adf_model_view_HeaderStatusBaseVO_HeaderStatusLOVVO1"/>
    <VO sig="1315216387093" vok="20" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.ErrorStatusLOVVO" Name="_LOCAL_VIEW_USAGE_com_emerson_eth_adf_model_view_ErrorStatusBaseVO_ErrorStatusLOVVO1"/>
    <VO sig="1315216388171" vok="20" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.DependencyStatusLOVVO" Name="_LOCAL_VIEW_USAGE_com_emerson_eth_adf_model_view_DependencyStatusBaseVO_DependencyStatusLOVVO1"/>
    <VO sig="1315216393937" vok="20" qf="0" RS="0" Def="com.emerson.eth.adf.model.view.TransIDLovVO" Name="_LOCAL_VIEW_USAGE_com_emerson_eth_adf_model_view_TransIDBaseVO_TransIDLovVO1">
    <VC n="__ImplicitViewCriteria__" d="true" c="0" bv="true" m="1" j="false">
    <vcp>
    <p n="showInList" v="true"/>
    <p n="displayName" v="Implicit Search"/>
    </vcp>
    <Row n="vcrow1" uc="0" cj="0">
    <a i="0">
    <i o="=" cj="1" uc="0" r="2" vb="false" g="true" e="false" re="false">
    <iv i="0" b="0" sf="0"/>
    </i>
    </a>
    <a i="1">
    <i o="STARTSWITH" cj="1" uc="0" r="2" vb="false" g="true" e="false" re="false">
    <iv i="0" b="0" sf="0"/>
    </i>
    </a>
    </Row>
    </VC>
    <VC n="LOV_TransactionRecordId__lov__filterlist__vcr___" d="true" c="0" bv="true" m="3" j="false">
    <Row n="LOV_TransactionRecordId__lov__filterlist__vcr___" uc="0" cj="0">
    <a i="0">
    <i o="=" cj="1" uc="0" r="2" vb="false" g="true" e="false" re="false">
    <iv i="0" b="0" sf="0">
    <![CDATA[40532]]>
    </iv>
    </i>
    </a>
    </Row>
    </VC>
    </VO>
    </VO>
    </AM>
    <OraclePersistManager> <insert> [3569] **insert** id=1, parid=-1, collid=65951, keyArr.len=-1, cont.len=10035
    <OraclePersistManager> <insert> [3570] stmt: insert into "PS_TXN" values (:1, :2, :3, :4, sysdate)
    <OraclePersistManager> <commit> [3571] **commit** #pending ops=1
    <ADFLogger> <end> Passivating Application Module
    My question is does AM gets passivated on each request. This snapshot is not visible when Transaction behavior is set to 'No Controller Transaction'.
    This type is snapshot is usually visible in case of 'No Controller Transaction', when AM Pooling is off or if AM Pooling is enabled then Failover support is on.
    Is this OK for this snapshot to appear in JDev log or am I missing something?

    this might be helpful, can u chk
    The subtle use of task flow "No Controller Transaction" behavior
    http://blogs.oracle.com/raghuyadav/entry/adf_taskflow_transaction_manag
    http://andrejusb.blogspot.com/2010/01/demystifying-adf-bc-passivation-and.html

  • ADF Task Flow Exception Handling

    Hi ,
    I tried a very simple thing for taskFlow exception handling.
    I created a bounded task flow with a page fragment (View1.jsff) and another view which is the TaskFlow ExceptionHandler (error.jsff).
    The view1.jsff has a button whose action is bound to the backing bean. In the backingBean method I deliberately do division by 0.
    Since this is an unHandled exception, I would have expected the control to come to error.jsff. But, instead I am shown a pop up box with the error message.
    Why is the control not getting redirected to error.jsff ?
    Thanks.
    S.Srivatsa Sivan

    Hi Frank , im having the same problem.
    I want to handle exceptions that occur while navigating task flows (example: A user navigates to a task flow that he/she does not have view permission)
    I tried using a view activity and method activity as the exception handler but none of them works, the exception is still not handles. It does not even navigate to the exception handler on the task flow.
    on the view page i have:
    <af:panelStretchLayout topHeight="50px" id="psl1">
    <f:facet name="top">
    <af:panelGroupLayout layout="scroll"
    xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
    id="pgl1">
    Error message:  
    <af:outputText value="#{controllerContext.currentRootViewPort.exceptionData.message}" id="ot2"/>
    </af:panelGroupLayout>
    </f:facet>
    <f:facet name="center">
    <af:outputText value="#{my_exception_Handler.stackTrace}" id="ot1"/>
    <!-- id="af_one_column_header_stretched" -->
    </f:facet>
    </af:panelStretchLayout>
    I tried getting the error message and stacktrace from the controllerContext via EL like this "#{controllerContext.currentRootViewPort.exceptionData.message}"
    and from the controllerContext class in functions that i have declared in my_exception_Handler class like this
    " ControllerContext ctx = ControllerContext.getInstance();
    ViewPortContext vCtx = ctx.getCurrentViewPort();
    if(vCtx.getExceptionData() != null){
    StringWriter stringWriter = new StringWriter();
    PrintWriter printWriter = new PrintWriter(stringWriter);
    vCtx.getExceptionData().printStackTrace(printWriter);
    return stringWriter.toString();"
    But all this dont even matter because when the exception occurs on the task flow it does not navigate to the default exception handler.
    thanks for your interest and help in advance.
    Cyborg_0912

  • 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

  • How to use task flow's transaction options with session's user data

    Hi.
    I have custom extension of ApplicationModuleImpl class:
    package test.model
    imports...
    public class CustomAppModuleImpl extends ApplicationModuleImpl {
        public static final String SESSION_VAR = "MySessionVar";
        public CustomAppModuleImpl() {
            super();
        @Override
        protected void prepareSession(Session session) {
            super.prepareSession(session);
            System.out.println("######## " + this.getClass().getName() + ".prepareSession() called.  AM isRoot() = " + isRoot());
            Hashtable userData = session.getUserData();
            if (userData == null) {
                userData = new Hashtable();
            userData.put(SESSION_VAR, "Useless");
        @Override
        protected void create() {
            super.create();
            System.out.println("######## " + this.getClass().getName() + ".prepareSession() called.  AM isRoot() = " + isRoot());
    }Inside userData I store some useful session-based values (here is just an example ;) ).
    Within Model.jpr I defined that every Application Module I create must extends this CustomAppModuleImpl :
       <value n="oracle.jbo.extends.appModule" v="test.model.CustomAppModuleImpl"/>
    ...I have one AM with one view:
    package test.model;
    import oracle.jbo.server.ViewObjectImpl;
    // ---    File generated by Oracle ADF Business Components Design Time.
    // ---    Wed Mar 07 20:22:11 CET 2012
    // ---    Custom code may be added to this class.
    // ---    Warning: Do not modify method signatures of generated methods.
    public class AppModule1Impl extends CustomAppModuleImpl {
         * This is the default constructor (do not remove).
        public AppModule1Impl() {
         * Container's getter for EmployeesView1.
         * @return EmployeesView1
        public ViewObjectImpl getEmployeesView1() {
            return (ViewObjectImpl)findViewObject("EmployeesView1");
    }Now I have BTF (bounded task flow, with default properties) and I call that task flow on a button press. With default properties ( Transaction: <No Controller Transaction> ) I get preferred values from session's userData within Entity Object.
    Code snippet inside that entity implementation looks like:
            DBTransaction dbt = getDBTransaction();
            System.out.println(getClass().getName() + " entity lives AM: " + dbt.getRootApplicationModule().getClass().getName());
            if (dbt.getSession().getUserData() == null) {
                System.out.println(CustomAppModuleImpl.SESSION_VAR + " -> NULL");
            } else {
                System.out.println(CustomAppModuleImpl.SESSION_VAR + " -> " + dbt.getSession().getUserData().get(CustomAppModuleImpl.SESSION_VAR));
    ...And as I mentioned output is correct:
    test.model.EmployeesImpl entity lives AM: test.model.AppModule1Impl
    MySessionVar -> UselessNow the trickiest part. As soon as I change property of called task flow Transaction to something else that +<No Controller Transaction>+, e.g. Always Begin New Transaction, code snippet from task-flow.xml :
        <transaction>
          <new-transaction/>
        </transaction>
    ..This session stuff begin to act unpredictably. Session's userData is now null. And Output looks like:
    test.model.EmployeesImpl entity lives AM: oracle.jbo.server.ApplicationModuleImpl
    MySessionVar -> NULLWhy in the world ADF uses oracle.jbo.server.ApplicationModuleImpl instead of test.model.AppModule1Impl or at least my defined test.model.CustomAppModuleImpl ?!?
    Is this a bug? Or maybe a feature?
    10x
    Regards

    Hi,
    Why in the world ADF uses oracle.jbo.server.ApplicationModuleImpl instead of test.model.AppModule1Impl or at least my defined test.model.CustomAppModuleImpl ?!?
    Is this a bug? Or maybe a feature?
    ADF BC alwyas has a transaction opened even if the ADFc setting is No Transaction. So if you explicitly ask for a new transaction I assume that the ADF BC data control creates a new transaction without re-executing your AM initialization codes. Looks as if it uses an internal AM instance for this just to hold the transaction. However, worth filing this as a bug - assuming you reproduced this with a later version of either JDeveloper 11g R1 or R2
    Frank

  • The subtle use of task flow "No Controller Transaction" behavior

    I'm trying to tease out some subtle points about the Task Flow transactional behavior option "<No Controller Transaction>".
    OTN members familiar with task flows in JDev 11g and on wards would know that task flows support options for transactions and data control scope. Some scenarios based on these options:
    a) When we pick options such as "Use Existing Transaction" and shared data control scope, the called Bounded Task Flow (BTF) will join the Data Control Frame of its caller. A commit by the child does essentially nothing, a rollback of the child rolls any data changes back to when the child BTF was called (i.e. an implicit save point), while a commit of the parent commits any changes in both the child and parent, and a rollback of a parent loses changes to the child and parent.
    A key point to realize about this scenario is the shared data control scope gives both the caller and called BTF the possibility to share a db connection from the connection pool. However this is dependent on the configuration of the underlying services layer. If ADF BC Application Modules (AMs) are used, and they use separate JNDI datasources this wont happen.
    b) When we pick options such as "Always Begin New Transaction" and isolated data control scope, the called BTF essentially has its own Data Control Frame separate to that of the caller. A commit or rollback in either the parent/caller or child/called BTF are essentially isolated, or in other words separate transactions.
    Similar to the last point but the exact opposite, regardless how the underlying business services are configured, even if ADF BC AMs are used with the same JNDI data source, essentially separate database connections will be taken out assisting the isolated transactional behavior with the database.
    This brings me back to my question, of the subtle behavior of the <No Controller Transaction> option. Section 16.4.1 of the Fusion Guide (http://download.oracle.com/docs/cd/E17904_01/web.1111/b31974/taskflows_parameters.htm#CIHIDJBJ) says that when this option is set that "A new data control frame is created without an open transaction." So you could argue this mode is the same as isolated data control scope, and by implication, separate connections will be taken out by the caller/called BTF. Is this correct?
    Doesn't this in turn have implications about database read consistency? If we have one BTF participating in a transaction with the database, reading then writing data, and a separate BTF with the <No Controller Transaction> option set, it's possible it wont see the data of the first BTF unless committed before the No Controller Transaction BTF is called and queries it's own dataset correct?
    An alternative question which takes a different point of view, is why would you ever want this option, don't the other options cover all the scenarios you could possibly want to use a BTF?
    Finally as a separate question based around the same option, presumably an attempt to commit/rollback the Data Control Frame of the associated No Controller Transaction BTF will fail. However what happens if the said BTF attempts to call the Data Control's (not the Data Control Frame's) commit & rollback options? Presumably this will succeed?
    Your thoughts and assistance appreciated.
    Regards,
    CM.

    For other readers this reply is a continuation of this thread and another thread: Re: Clarification?: Frank & Lynn's book - task flow "shared" data control scope
    Hi Frank
    Thanks for your reply. Okay I get the idea that were setting the ADFc options here, that can be overridden by the implementation of data control, and in my specific case that's the ADF BC AM implementation. I've always known that, but the issue became complicated because it didn't make sense what "No Controller Transaction" actually did and when you should use it, and in turn data control frames and their implementation aren't well documented.
    I think a key point from your summation is that "No Controller Transaction" in context of ADF BC, with either data control scope option selected, is effectively (as far as we can tell) already covered by the other options. So if our understanding is correct, the recommendation for ADF BC programmers is I think, don't use this option as future programmers/maintainers wont understand the subtlety.
    However as you say for users of other data controls, such as those using web services, then it makes sense and possibly should be the only option?
    Also regarding your code harvest pg 14 entry on task flow transactions: http://www.oracle.com/technetwork/developer-tools/adf/learnmore/march2011-otn-harvest-351896.pdf
    ....and the following quote in context of setting the transaction option to Begin New Transaction:
    >
    When a bounded task flow creates a new transaction, does it also mean it creates a new database connection? No.
    >
    ....I think you need to be a little more careful in this answer, as again it depends on the underlying data control implementation as you point out in this thread. In considering ADF BC, this is correct if you assume only one root AM. However if the BTFs have separate root AMs, this should result in 2 connections and transactions..... well at least I assume it does, though I wonder what will happen if both AMs share the same JNDI data source.... is the framework smart enough to join the connections/transactions in this case?
    Also in one of your other code harvests (apologies I can't find which one at the moment) you point out sharing data control scopes is only possible if the BTF data controls have the same name. In context of an ADF BC application, with only one root AM used by multiple BTFs, this of course would be the case. Yet, the obvious implication to your summary of transaction outcomes in this thread, if the developers for whatever reason change the DC name across DataBindings.cpx files sourced from ADF Libraries containing the BTFs, then no, it wont.
    Overall the number of variables in this gets really complicated, creating multiple dimensions to the matrix.
    Going to your last point, how can the documentation be improved? I think as you say the documentation is right in context of the options for ADFc, but, as the same documentation is included in the Fusion Dev Guide which assumes ADF BC is being used, then it isn't clear enough and can be misleading. It would seem to me, that depending on the underlying data control technology used, then there needs to be documentation that talks about the effect of ADFc task flow behavior options in the context of each technology. And God knows how you describe a scenario where BTFs use DCs that span technologies.
    From context of ADF BC, one thing that I've found hard in analyzing all of this is there doesn't seem to be an easy way from the middletier to check how many connections are being taken out from a data source. The FMW Control unfortunately when sampling db connections taken out from a JNDI data source pool, doesn't sample quickly enough to see how many were consumed. Are you aware of some easy method to check the number of the db connections opened/closed?
    Finally in considering an Unbounded Task Flow as separate to BTFs, do you have any conclusions about how it participates in the transactions? From what I can determine the UTF lies in it's own data control frame, and is effectively isolated from the BTF transactions, unless, the BTF calls commit/rollback at the ADF BC data control level (as separate to commit/rollback at the data control frame level), and the data control is used both by the UTF and BTF.
    As always thanks for your time and assistance.
    CM.

  • 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

  • 11g TP2 ADF Task Flows and Transaction Management

    I'm wondering how ADF Task Flow Transaction Management works vis-a-vis database sessions and using stored procedure calls in an environment with connection pooling. I haven't written the code yet but am looking for a better understanding of how it works before I try.
    Example:
    I create a bounded adf task flow. I set the "transaction" property to "new-transaction" and the "data control scope" to "isolated".
    As the task flow is running, the user clicks buttons that navigate from page to page in the flow. Each button click posts the page back to the app server. On the app server a backing bean method in each page calls a stored procedure in a database package to modify some values in one or more tables in the database. The procedure does not commit these changes.
    Each time a backing bean makes a stored procedure call will it be in the same database session? Or will connection pooling possibly return a different database connection and therefore a different database session?
    If the transaction management feature of the adf task flows guarantees me that I will always be in the same database session then I don't have to write any extra code to make this work. Will it do that or not?

    I don't know if it is documented in the adf documentation currently available for 11g TP2 but what you ask for is a normal transaction management with connection pooling and i can't imagine it is not implemented in ADF BC layer like it is in JPA or other persistence layer.
    A transaction will always be executed in the same session. Normally your web session will stay in the same session even you start more than one transaction. You don't have to write any code to manage the session pooling. It is a good practices to customize it at the persistence layer during installation depending on your infrastructure.
    Take a look into Fusion Developer Guide ... i'm sure you will find some better explanations about this.

  • Use task flow or simple pages in CRUD?

    Hello,
    using JDeveloper 12c.
    In my case I use task flow to create a simple CRUD, i have two task flow, for it in the first I have a employees table and a button to create a new employee, the button has an action to go to another task flow where I have a Method call of CreateInsert which in turn go a view activity that has a form to create an employee.
    The problem is, when committing task makes a return to the main flow but the table not refreshes with the new employee, every task flow isolated handled transactions.
    I recommend, work the CRUD with task flow or single pages?
    thank you very much in advance.

    thank you very much, I got the exact answer, thank you very much again.

  • Problem reentering task flow in dynamic region

    Hi All,
    I have problem with reentering task flow in dynamic region.
    JDeveloper/ADF 11.1.2.3.0
    Use Case:
    Application contains bussines modules(implemented as bounded task flows) displayed in dynamic region.
    In some modules, default activity is Method Call activity which performs some validations(input parameters, state of records in db, etc.)
    and if some conditions are not satisfied, shows message to the user and exits module (navigates to Task Flow Return activity).
    Problem:
    If user tries to start the same module again, nothing happens(message is not shown).
    If user choose some other module and after that start first module, message is shown(so I suppose this means that task flow was correctly exited first time but dynamic region state was not refreshed).
    Current implementation info:
    Dynamic region has attached regionNavigationListener which resets taskFlowId variable in dynamic region bean if regionNavigationEvent.getNewViewId() == null but this listener is not called if Method Call activity directly navigates to Task Flow Return activity.
    (if user navigates to Task Flow Return activity from button on some page, this works as expected)
    Also, I tried to reset taskFlowId variable from task flow finalizer and to programatically refresh region binding, but this still doesn't work.
    So, am I missing some point about refreshing dynamic region or this is bug in ADF?
    Thanks,
    Dario

    I don't have any popup.
    There is only page which contains dynamic region.
    This dynamic region can be empty or can contain one of business modules(bounded task flows) which are invoked from menu.
    In some cases business module must exit(by invoking task flow return activity) immediately after invocation(because some business validations fail).
    In this case, module will show message to the user.
    Problem is that if user call the same module again, nothing happens(message is not shown) because regionNavigationListener(which only purpose is to reset taskFlowId variable when business module exits) is not triggered when Method Call activity(which is default activity in BTF) navigates to Task Flow Return activity.
    Also, I tried to use Router activity instead Method Call, but problem still exists(regionNavigationListener is not triggered).
    Obviously, regionNavigationListener is called only if navigating from page(or fragment) and this is probably a bug in ADF so I opened SR.
    Edited by: kdario on Oct 27, 2012 5:04 AM

  • ADF Bouded Task Flow

    Hi All,
    Does anybody know how to get programatically the default activity in the boudned task flow?
    I am using JDeveloper 11g TP3.
    Regards,
    JavaDeVeLoper

    Hi,
    taskflows have a defined entry point, which means that you URL reference the taskflow as a whole and not the default activity. By design, bounded taskflows don't allow to explicitly call a view activity contained in it. I think the developer guide is pretty well written in this regard.
    Frank

  • ADF  task-flow and transactions

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

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

  • Participate in the same DB Transaction within Human Task Flow ADF screen.

    Functionality:-
    I have a ADF workflow screen generated from a Human Task flow, and for the business reason I run through the ADF Iterator and get the attribute values and persist within a table using an Application Module.
    I am using the Application Module, and creating as below:-
    String amDef = "model.TestAM";
    String config = "AppModuleLocal";
    TestAM service = (TestAM)Configuration.createRootApplicationModule(amDef,config);
    Now, the issue is when I call the saving mechanism within the above AM client interface, it expects a commit, and this transaction doesnt participate in the same transaction as workflow process, so can anyone let me know how to get hold of the transaction handler and make this persistence to participate within the same one workflow transaction.
    Cheers,
    Saran.

    Hi,
    don't see how the transaction can be shared between the two. Any reason you don't use a DataControl for the ADF BC access and instead use client code creating a root application module?
    Frank

  • View object sharing between task flows

    Hi,
    I two view objects one should not share the data between bounded task flows and another view object should share the data between the two task flows.
    view's can attach diffrent application module also. how can i configure the AM properties or task flow properties to achieve the same.
    Reg,
    Brahma B.

    thanks Frank,
    My shared view object may be updatable. if am in one task flow there i will modify one column in VO then navagate to other task flow, there based on previous modified column i will change another column data and send to entity to update that data to DB. in case of view updation i didn't require any transaction change also like making dirty and undirty.
    you mean i need to set the AM in Application scope or session scope in project properties correct? even if am setting the AM in session or application scope when am running the application for diffrent task flows with begin New transaction my preparesession method at AM level is getting invoked for every task flow so the transaction is new correct? so data also not getting shared between task flows even am giving the session or application scope for AM.
    Reg,
    Brahma B.
    Edited by: BRM on Nov 28, 2011 3:26 AM

Maybe you are looking for

  • How do I run users from an external hard drive?

    I used to have a 2 TB hard drive in my iMac. One of the users contains all my music, photos and videos. It's a very large file, of course. I have just swapped out the 2 TB drive for a 120 GB SSD and reconnected the 2 TB drive as an external HD. The p

  • Boot Camp Problem with Windows Vista Installation

    After putting in the disc and pressing the "Start Installation" button, the macbook pro restarts and and the screen goes gray for quite awhile, eventually the Vista installer loads, but I get the following error and cannot continue: "A required CD/DV

  • Cannot Synch iPhone on New 8-Core Mac Pro

    I have had my iPhone since the first day they went on sale in June 2007. It has performed flawlessly for me and continues to do so. I have been using the iPhone with a white iMac purchased in March 2007. I have never had the slightest problems with s

  • Webutil wuc-015 error

    Hi, I have been trying to run a simple form on OAS (running on 2003 server) to test webutil functions for a few days and it is giving the error 'WUC-015 Your form must contain the following bean for this function to be available: oracle.forms.webutil

  • HT1595 no wifi

    Cant connect to wifi with my apple tv which makes it completely useless.  Can anyone please let me know if there is anyway to fix this issue.  Im going insane.  thank you