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

Similar Messages

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

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

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

  • 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

  • Problem with ADF security and task flow calls

    Hi.
    I am using JDeveloper 11.1.2.0.0.
    I encountered a problem when tried to apply ADF security to my application.
    The way to reproduce the problem:
    1. Create new Fusion Web Application;
    2. Import Business Components from Tables from any existing schema and add at least one table to the ApplicationModule.
    3. Create "welcome page" (for instance, welcome.jsf). Add a button with fixed action outcome "test".
    4. Create test page, for instance, test.jsf. Drag and drop any view object from Data Controls onto the page and create a form with navigation controls. Add a button with fixed action outcome "return".
    5. Create bounded task flow, name it "test", drag and drop our test page on it - the page will be the default activity. Add a task flow return activity. Add a control flow case from the default view activity to the return activity, set From Outcome property to "return". So our return button should cause the task flow to exit.
    6. Open adfc-config.xml in diagram mode and place our welcome page on it. Then drag and drop the test task flow to create a task flow call activity. Add a control flow case from welcome page to task flow call activity, set the From Outcome property to "test". So our test button should call the test task flow.
    7. Configure application to run the unbounded task flow starting with Welcome view activity.
    At this point all works as expected: when application runs, the welcome page is displayed with test button. Pressing the test button results in displaying the test page, return button leads back to the welcome page.
    Now let's configure ADF Security.
    Run the ADF Security configuration wizard, choose ADF Authentication and Authorization.
    On the second page select Form-Based Authentication, check the Generate Default Pages flag.
    On the third page choose No Automatic Grants.
    On the next page keep the Redirect Upon Successful Authentication unchecked. Press Finish.
    Open jazn-data.xml to configure roles, users and resource grants:
    1. Create application role test-role.
    2. Grant the test-role privileges to view the test task flow.
    3. Create user and grant him the test-role.
    Now we have the public available welcome page and the test page with restricted access.
    When application runs, the welcome page is displayed as expected. Pressing the test button redirect us to auto-generated login page. After successful authorization the test page is displayed. But nothing happens if we click now the return button for the first time. When we click the return button once more, the application crushes with Error-500 and message "Target Unreachable, identifier 'bindings' resolved to null". The exact error trace depends on UI control bindings, but looks like this:
    javax.el.PropertyNotFoundException: //C:/Users/DUDKIN/AppData/Roaming/JDeveloper/system11.1.2.0.38.60.17/o.j2ee/drs/Test1/ViewControllerWebApp.war/test.jsf @10,120 value="#{bindings.Id.inputValue}": Target Unreachable, identifier 'bindings' resolved to null
         at com.sun.faces.facelets.el.TagValueExpression.isReadOnly(TagValueExpression.java:122)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer._getUncachedReadOnly(EditableValueRenderer.java:476)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.getReadOnly(EditableValueRenderer.java:390)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.wasSubmitted(EditableValueRenderer.java:345)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.decodeInternal(EditableValueRenderer.java:116)
         at oracle.adfinternal.view.faces.renderkit.rich.LabeledInputRenderer.decodeInternal(LabeledInputRenderer.java:56)
         at oracle.adf.view.rich.render.RichRenderer.decode(RichRenderer.java:342)
         at org.apache.myfaces.trinidad.render.CoreRenderer.decode(CoreRenderer.java:274)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.__rendererDecode(UIXComponentBase.java:1324)
    (the rest of lines skipped).
    Any suggestions?
    Edited by: user13307311 on Apr 16, 2013 11:39 PM

    @Lovin_JV_941794
    The welcome page is public available since it does not have appropriate PageDef file.
    Login page comes not from the welcome page, it comes after attempt to access the test page. So after the login succeeded the test page appears, because redirect to welcome page after successful login is not configured. I do not need to return the welcome page at this moment, I need to go to the test page.
    It seems the task flow call stack to be destroyed after redirect to login page.
    Edited by: user13307311 on Apr 17, 2013 12:45 AM

  • 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

  • How to control Transaction in task flow ?

    Hi All,
    In Each task flow under behavior tab we have transaction which contains following sub category
    1-Always Begin New Transaction
    2-Always use Existing Transaction
    3-use Existing transaction if possible
    Would any one give me real example which will show the purpose of this things
    Thanks
    Edited by: ADFORCLE on Jan 16, 2012 6:26 PM

    http://one-size-doesnt-fit-all.blogspot.com/2011/05/jdev-11g-task-flows-adf-bc-always-use.html
    http://one-size-doesnt-fit-all.blogspot.com/2011/05/jdev-11g-task-flows-adf-bc-one-root.html

  • Dynamically Assign TaskFlowId to Task Flow Call Activity

    According to following blog post
    https://blogs.oracle.com/DavidGiammona/entry/dynamically_assign_task_flow_c]
    we can specify dynamic task flow id to a task flow call activity, but i am unable to specify it. It says we can specify in 11.1.2.2 but i am using a higher version which is 11.1.2.3. I didn't get any property for this task flow call activity.
    Please guide me how can i acheive this task in 11.1.2.3
    Thanks

    Hi,
    I tried 11.1.2.4 and I see the "Task Flow Reference" switch and the dynamic option. I can specify an EL expression - e.g. pointing to a managed bean property - to resolve the ID String. Use the arrow icon next to the ID field to access the EL builder
    Frank

  • Trains and Fragment Based bounded task flows

    The Problem:
    I am trying to create a bounded task flow based on fragments using a train. I have created the train and it is showing up on my page. Unfortunately, when I click next on the af:trainButtonBar the UI does not update. If I navigate off the page and come back to the page containing the train the UI is on the next task in the task flow and the train is updated but it is not happening through partial page rendering. Does anyone have an idea why the UI is not updating? Here are some of the file contents:
    My first Fragment in the task flow (InputsNewBasic.jsff):
    <?xml version='1.0' encoding='windows-1252'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
              xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
              xmlns:f="http://java.sun.com/jsf/core">
      <af:pageTemplate viewId="/page_templates/TrainFragment.jspx">
        <f:facet name="fragementContent">
          <af:panelFormLayout>
            <af:inputText label="Name" inlineStyle="width:100%;"/>
            <af:inputText label="Description" rows="3" inlineStyle="width:100%;"/>
            <af:selectOneChoice label="Plugin Source">
              <af:selectItem label="Plugin Number One"/>
              <af:selectItem label="Plugin Number Two"/>
              <af:selectItem label="Plugin Number Three"/>
              <af:selectItem label="selectItem 1"/>
            </af:selectOneChoice>
            <af:inputText label="Input File Mask"/>
            <f:facet name="footer"/>
          </af:panelFormLayout>
        </f:facet>
      </af:pageTemplate>
    </jsp:root>
    My TrainFragment.jspx template:
    <?xml version='1.0' encoding='windows-1252'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
              xmlns:f="http://java.sun.com/jsf/core"
              xmlns:h="http://java.sun.com/jsf/html"
              xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
      <jsp:directive.page contentType="text/html;charset=windows-1252"/>
      <af:pageTemplateDef var="attrs">
        <af:xmlContent>
          <component xmlns="http://xmlns.oracle.com/adf/faces/rich/component">
            <display-name>TrainFragment</display-name>
            <facet>
              <description>This is the content that will be presented for the
                           fragment</description>
              <facet-name>fragementContent</facet-name>
            </facet>
          </component>
        </af:xmlContent>
        <af:train value="#{controllerContext.currentViewPort.taskFlowContext.trainModel}" var="trainNode">
          <f:facet name="nodeStamp">
            <af:commandNavigationItem text="#{trainNode.textAndAccessKey}"
                            visited="#{trainNode.visited}"
                            action="#{trainNode.action}"
                            disabled="#{trainNode.disabled}"/>
          </f:facet>
        </af:train>
        <af:trainButtonBar value="#{controllerContext.currentViewPort.taskFlowContext.trainModel}"/>
        <af:panelGroupLayout>
          <af:facetRef facetName="fragementContent"/>
        </af:panelGroupLayout>
      </af:pageTemplateDef>
    </jsp:root>
    My Task Flow Definition:
    <?xml version="1.0" encoding="windows-1252" ?>
    <adfc-config xmlns="http://xmlns.oracle.com/adf/controller">
      <task-flow-definition id="InputsNewTrain">
        <default-activity>InputsNewBasic</default-activity>
        <view id="InputsNewBasic">
          <page>/page_fragments/inputs/InputsNewBasic.jsff</page>
          <train-stop>
            <description>
              Specify the basic information for the Input definition.
            </description>
            <display-name>Basic Information</display-name>
            <sequential>true</sequential>
          </train-stop>
        </view>
        <view id="InputsNewDefineMap">
          <page>/page_fragments/inputs/InputsNewDefineMap.jsff</page>
          <train-stop>
            <description>
              Define the Input map
            </description>
            <display-name>Map Inputs</display-name>
            <sequential>true</sequential>
          </train-stop>
        </view>
        <view id="InputsNewCommit">
          <page>/page_fragments/inputs/InputsNewCommit.jsff</page>
          <train-stop>
            <description>
              Commit the Input definition
            </description>
            <display-name>Commit Definition</display-name>
            <sequential>true</sequential>
          </train-stop>
        </view>
        <train/>
        <use-page-fragments/>
      </task-flow-definition>
    </adfc-config>Message was edited by:
    JohnJ

    Hi,
    Have you try to set Refresh and RefreshCondition for your TaskFlow on the Page Definition
    for example:
    Refresh=IfNeeded
    RefreshCondition=<isPostback>

  • ExecuteWithParams in adf Task flow is not executing

    Hi,
    I have a generic page fragment(Task Flow) which accepts a parameter from the calling page, when I use it as a Region.
    Based on the value of the parameter passed I have to filter the table data or I have to execute a ViewObject .
    For that I used a bind variable in the View Object.
    And I dragged the ExecuteWithParams from DataControl to the Fragment defenition(TaskFlow).
    <method-call id="ExecuteWithParams">
          <method>#{bindings.ExecuteWithParams.execute}</method>
          <outcome id="__90">
            <fixed-outcome>ExecuteWithParams</fixed-outcome>
          </outcome>Now the Issue I am facing is when I run the page, the jsff page is returning as empty. It is showing a message like "No data to display"
    Also the Method call ExecuteWithParams is showing a warning that bindings is not known.
    Studio Edition Version 11.1.1.2.0
    Build JDEVADF_11.1.1.2.0_GENERIC_091029.2229.5536
    Please Help....
    -Ranjith

    Hi Arun,
    I set the ExecutewithPrams as the default Activity, And I am getting the pageFlowScope parameter in the task flow, but while executing the execute with param I am getting a No data to display message in my table
    here is my task flow
    <?xml version="1.0" encoding="UTF-8" ?>
    <adfc-config xmlns="http://xmlns.oracle.com/adf/controller" version="1.2">
      <task-flow-definition id="Test_definition">
        <default-activity id="__1">ExecuteWithParams</default-activity>
        <transaction id="__35">
          <new-transaction/>
        </transaction>
        <input-parameter-definition id="__21">
          <name id="__22">pCode</name>
          <value>#{pageFlowScope.pCode}</value>
          <class>java.lang.String</class>
        </input-parameter-definition>
        <input-parameter-definition id="__23">
          <name id="__24">pLabel</name>
          <value>#{pageFlowScope.pLabel}</value>
          <class>java.lang.String</class>
        </input-parameter-definition>
        <managed-bean id="__27">
          <managed-bean-name id="__25">TestCommonBean</managed-bean-name>
          <managed-bean-class>view.bean.TestCommonBean</managed-bean-class>
          <managed-bean-scope id="__26">request</managed-bean-scope>
        </managed-bean>
        <view id="TestCommon">
          <page>/TestCommon.jsff</page>
        </view>
        <method-call id="ExecuteWithParams">
          <method>#{bindings.ExecuteWithParams.execute}</method>
          <return-value id="__36">true</return-value>
          <outcome id="__7">
            <fixed-outcome>ExecuteWithParams</fixed-outcome>
          </outcome>
        </method-call>
        <task-flow-return id="rollback">
          <outcome id="__18">
            <name>rollback</name>
            <rollback/>
          </outcome>
        </task-flow-return>
        <task-flow-return id="commit">
          <outcome id="__19">
            <name>commit</name>
            <commit/>
          </outcome>
        </task-flow-return>
        <control-flow-rule id="__8">
          <from-activity-id id="__9">ExecuteWithParams</from-activity-id>
          <control-flow-case id="__11">
            <from-outcome id="__12">ExecuteWithParams</from-outcome>
            <to-activity-id id="__10">TestCommon</to-activity-id>
          </control-flow-case>
        </control-flow-rule>
        <control-flow-rule id="__20">
          <from-activity-id id="__28">TestCommon</from-activity-id>
          <control-flow-case id="__30">
            <from-outcome id="__33">commit</from-outcome>
            <to-activity-id id="__29">commit</to-activity-id>
          </control-flow-case>
          <control-flow-case id="__32">
            <from-outcome id="__34">rollback</from-outcome>
            <to-activity-id id="__31">rollback</to-activity-id>
          </control-flow-case>
        </control-flow-rule>
        <use-page-fragments/>
      </task-flow-definition>
    </adfc-config>

  • ADF task flow

    Hi all,
    your input is appreciated for the following problem:
    Situation:
    I have an application containing a menu, a static page containing a dynamic region. The region changes when the user click a menu item.
    Consider that the menu contains two items, pointing to two pages, each page will generate a report which will be loaded in popup dialog.
    Problem:
    The user clicks menu-item1 to load page1 and generates report1 (the popup dialog is shown, the server is generating the report data). While the report is generated, the user clicks menu-item2 to load page2 in order to generate report2.
    Nothing will happen until report1 is generated and shown in the poped-up dialog. Only when report1 is done the user is navigated to page2. (it seems the control stays in the bounded task flow1 until it completly ends)
    Desired behavior:
    Let the user generate report1, and still can navigate to page2 and generate report2 (while the first one is beeing under processing).
    Pages and code :
    1- adfc-config: undbounded taskflow.
    2- page1-tf: bounded taskflow, containing a fragment, and an outcome to popup the dialog
    3- page2-tf: bounded taskflow, containing a fragment, and an outcome to popup the dialog
    4- the dynamic region class, created by jdev, when menu-item1 is clicked, the page1-tf is parsed and returned. same applies for menu-item2.
    flow for page1-tf (page2-tf is identical):
    <adfc-config xmlns="http://xmlns.oracle.com/adf/controller" version="1.2">
    <task-flow-definition id="fragment1">
    <default-activity id="__1">fragment1</default-activity>
    <data-control-scope id="__2">
    <isolated/>
    </data-control-scope>
    <view id="fragment1">
    <page>/fragments/fragment1.jsff</page>
    <redirect/>
    </view>
    <view id="report1">
    <page>/pages/report1.jspx</page>
    </view>
    <control-flow-rule id="__3">
    <from-activity-id id="__4">fragment1</from-activity-id>
    <control-flow-case id="__8">
    <from-outcome id="__9">dialog:report1</from-outcome>
    <to-activity-id id="__10">report1</to-activity-id>
    </control-flow-case>
    </control-flow-rule>
    <use-page-fragments/>
    </task-flow-definition>
    </adfc-config>
    Environment:
    jdev 11.1.1.2 + oracle 11g
    your help is appreciated, and if you need more info, let me know.
    thanks

    Hi,
    for this you would need to implement an asynchronous call to the report, which means you kick off the report as a batch job so the return immediately goes back to the bounded task flow. If you have the class invoking the report wait for the report invocation to get back to it - after finishing processing - then the process waits. Bounded task flows don't run as back ground processes, so you have to find your own way. There are many options thinkable how users can get to a report once its done e.g.
    - af:poll to check a table for reports finish statements and reports pickup locations
    - Active Data Services to push notification to users

  • Af:table filter date format : task-flow navigation issue

    hi
    When trying to use the date format configured on the Entity Object, with Format Type as Simple Date and Format as "dd-MM-yyyy", there seems to be a problem when using task-flows.
    The approach involves an explicitly configured attributeValues binding to use in f:validator and af:convertDateTime components in the af:inputDate in the filter facet, as discussed in the forum thread "af:table filter date format"
    at af:table filter date format
    I used JDeveloper 11.1.1.3.0 to create the example application
    in http://www.consideringred.com/files/oracle/2010/TableFilterDateFormatIssueApp-v0.03.zip
    - The page filterEmp.jspx shows expected behaviour, the filter uses the configured date format and there is no problem when navigating to another page and back.
    see the screencast at http://screencast.com/t/CtQ9rsVFH3k
    - The page menuBTFPage.jspx allows for some navigation after using the filter resulting in the filter showing a date in the wrong format, using scenario (sc1)
    -- (sc1-a) : run menuBTFPage.jspx
    -- (sc1-b) : on "menu-btf : menu", click the "do go-filter-emp-btf" link
    -- (sc1-c) : on "filter-emp-btf : filterEmpFragment", filter on HireDate using "10-03-2005"
    -- (sc1-d) : click the "do goReturnSuccess" button
    -- (sc1-e) : back on "menu-btf : menu", click the "do go-filter-emp-btf" link again
    -- (sc1-f) : back on "filter-emp-btf : filterEmpFragment", see the HireDate filter value in the wrong format as "2005-03-10"
    -- (sc1-g) : click the "do goReturnSuccess" button again, which results in an error "The date is not in the correct format."
    see the screencast at http://www.screencast.com/t/ORHauBd3oQ
    questions:
    - (q1) Can the behaviour in scenario (sc1) be reproduced?
    - (q2) Why is the filter value in the wrong date format in step (sc1-f)?
    - (q3) What can be done to have the filter value consistently in the configured date format, so that errors as in step (sc1-g) can be avoided?
    many thanks
    Jan Vervecken

    hi
    First a short summary of relevant aspects of service request 3-2190488381:
    - development has reviewed bug 10193260
    - development identified some code where a pattern was not applied and started fixing the problem
    - out of the blue, development asked "Will clearing out the filter field completely when moving out of ataskflow be an acceptable behavior ?"
    - I pointed out some concerns (even in a phone call with development), but development did not see any alternative not "perceived to be very risky because of the current design", so the question whether the clearing-all-filter-fields approach would be acceptable became superfluous.
    - following this, bug 10193260 suddenly became an enhancement request (for reasons I still don't understand)
    - a workaround was suggested (for behaviour not perceived as a bug), "Clearing the search fields during taskflow exit in the backing bean (in the app)." for which I also received a modified version of my example application TableFilterDateFormatIssueApp-v0.04.zip with an implementation of the suggested workaround
    As an exercise to try an understand the suggested workaround (an because my example application seemed to have been modified using the currently yet-to-be-released JDeveloper 11.1.1.4.0) I re-implemented it in the example application
    at http://www.consideringred.com/files/oracle/2010/TableFilterDateFormatIssueApp-v0.05.zip
    It has a filter-emp-workaround-btf task-flow with a method-call activity on a managed-bean method, responsible for clearing the search fields, resulting in behaviour where the error "The date is not in the correct format." does not occur,
    as can be seen in the screencast at http://screencast.com/t/Nq7TkkRQ
      public void clearFilterFields()
        BindingContainer vBindingContainer =
          BindingContext.getCurrent().getCurrentBindingsEntry();
        DCBindingContainer vDCBindingContainer = (DCBindingContainer)vBindingContainer;
        DCDataControl vDCDataControl = vDCBindingContainer.getDataControl();
        ApplicationModule vApplicationModule = vDCDataControl.getApplicationModule();
        ViewObject vViewObject = vApplicationModule.findViewObject("EmployeesVOVI");
        ViewCriteriaManager vViewCriteriaManager = vViewObject.getViewCriteriaManager();
        vViewCriteriaManager.clearViewCriterias();
        vViewObject.clearCache();
      }Because the managed-bean method requires access to the ADF Model binding layer to get to the View Object instance used for the filtered table, the method-call activity has a page element configured in DataBindings.cpx referring to the same usageId as the page element for the page fragment showing the filtered table. So that both the method-call and view activity depend on one and the same Binding Container (e.i. PageDef file).
    The method-call activity, responsible for clearing the search fields, would need to be called before each task-flow-return activity.
    As there can be multiple view activities with multiple filtered tables in a bounded task-flow, would that result in multiple method-call activities responsible for clearing search fields (all to be called before each task-flow-return activity)?
    It looks like a more general/generic approach is desirable for the suggested workaround to be feasible.
    - (q5) Does the suggested workaround imply (as bug 10193260 is not a bug) that all bounded task-flows with filtered tables should implement it to avoid errors about formatting?
    thanks
    Jan

  • Issue with refresh of task flow in dynamic region

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

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

  • Task-flow for inserting record in a popup

    Hi all,
    I am using Jdeveloper 11.1.1.0.
    I have a page with a lot of panelTabbed that displays a lot of data of a table.
    I would like to have a button that show a popup and launch a task-flow for inserting data in the table in more steps.
    I have created:
    1) one fragments for every inserting step
    2) a bounded task-flow having an activity (createInsert before the activities (fragments) to insert a new record), with a task flow return (cancel and commit) to save or rollback the data.
    3) obviusly, a button that show the popup for inserting a new record. I have inserted the task-flow defined in 2) as a region in the dialog of my popup.
    When I launch my page:
    1) I see an empty form (instead of seeing the first record)
    2) the data inserting on the popup are not saved
    3) the second time I try to launch the popup, I see nothing, only the OK button of the dialog.
    I know, in the new version of Jdeveloper it is possible to insert a task flow in a popup, but is it possible, in the previous (my) version?
    Thanks
    Andrea

    1) You are seeing an empty form because you are probably calling CreateInsert method of your data control. You should call it only if you are going to create a new record. Also, if this is a new record, you should not show the tabs below. In my case, i am doing like this:
    There are 3 pages, ListPage, CreatePage and Edit Page.
    User first enters to List page (because it is the default activity in taskflow), to list Master records in a table. There are also 2 buttons, Create and Edit. If Create button is clicked, CreateInsert method is invoked and then CreatePage is called. In create page, there are only 1 form of Master's attributes. After user commits, taskflow redirects the page back to ListPage.
    If user selects a row in list page then press Edit button, EditPage is called, but without calling a CreateInsert method. You don't have to invoke any methods if your table in ListPage has a SelectionListener (which is set by default).
    in launch listener, you can run a method like this:
    public void saveState(LaunchEvent launchEvent) {
    DCIteratorBinding ib = ADFUtils.findIterator("YourMasterIterator");
    RequestContext requestContext = RequestContext.getCurrentInstance();
    //we save key.
    String key = ib.getCurrentRow().getKey().toStringFormat(true);
    requestContext.getPageFlowScope().put("yourKey", key);
    and in return listener:
    public void loadState(ReturnEvent returnEvent) {
    RequestContext requestContext = RequestContext.getCurrentInstance();
    if (null == requestContext.getPageFlowScope().get("yourKey"))
    return;
    DCIteratorBinding ib = ADFUtils.findIterator("YourMasterIterator");
    if (null != ib)
    ib.setCurrentRowWithKey((String)requestContext.getPageFlowScope().get("yourKey"));
    You can find ADFUtils.java and JSFUtils.java in Store Front Demo project and some other sample projects.
    2) About the X button... This is the biggest problem of inline-popups. As far as i learned from people in this forum, it is not possible to remove that if you use an inline-popup. And it does not invoke returnListener. But, it does a rollback! I think it is a big problem and i am hoping to find a solution too. Using a popup component instead of inline-popup as dialog can be a workaround.
    user10799119 wrote:
    Hi Deniz,
    thank you for you reply.
    My task flow is sharing data controls with its caller, because main page displays updatable record, while the button launch a task flow in the popup to create a new record of the same table.
    I have understood what you are saying (save the current key when I launch the popup and restore the key when I return from the popup), but:
    1) when I enter in the main (caller) page, I see an empty form, and not the first record of my table. Why?
    2) the returnListener works even if I close the dialog with the "x" (in the up-right angle of the dialog) or only with its buttons?
    3) where can I find the code/links/examples/guides to implement launchListener and the returnListener for my button?
    Thank you
    Andrea
    Edited by: user10799119 on 2-dic-2009 05:26
    Edited by: user10799119 on 2-dic-2009 05:31Edited by: Deniz Gulmez on 02.Ara.2009 09:52
    Edited by: Deniz Gulmez on 02.Ara.2009 09:58

Maybe you are looking for

  • Report dispplayed in new window when called from other report

    I have 2 reports based on data in a database, say rep1 and rep2. Rep2 is called by rep1 using this in de SQL-wizard: SELECT '<A HREF="SCHEMA_OWNER.REP2.show?p_arg_names=server_dom&p_arg_values='||COLUM||'&p_arg_names=db_key&p_arg_values='||COLUM||'">

  • Is there any way to get photos off of my iPhone 4 that won't turn on?

    A couple of weeks ago my iPhone 4, running on iOS 7, decided to stop working.  It just shut off all of a sudden, and wouldn't turn back even if it was plugged into a computer.  It would just say that it was an iPhone in recovery mode, and that it nee

  • Flash buttons not working in IE7 and Chrome

    Here's my website where the problem is occuring www.bakercreative.co.uk As you can see the Flash buttons animate, but when clicked they should go to a new html page. I've tested it in IE8 and Firefox without any problems but it's not working in IE7 a

  • 300 pixels vs 72 pixels

    We built a home page in Photoshop at 300 pixels per inch. Now we are ready to load into Dreamweaver and it seems as though many pages are built at 72-80 PPI. Do we have to start over? Does it matter? Please tell me I dont have to start all over again

  • Creating a Factory in ABAP.

    HI , I have a requirement to implement the Factory pattern for my class. I have declared my class as private so that direct instantiation is avoided. A factory class has been created to instantiate my class , but i cannot instantiate my class since m