No Controller Transaction - No Save Point on TaskFlow Entry

All,
We have an application built on ADF using JPA as the backend. We are not using BC4J. In all taskflows we have the following settings
1. No Controller Transaction
2. No Save Point on TaskFlow Entry (Unchecked). i.e. a Save Point is created for on each task flow entry.
However, I read in one of performance guidelines to select the "No Save Point on TaskFlow Entry " when No Save point is required as it saves the expensive model passivation at the taskflow startup.
My question is, does the "No Save Point on TaskFlow Entry " selection has any effect when "No Controller Transaction" option is selected. Does ADF try to passivate the model even when controller is not managing transaction when "No Save Point on TaskFlow Entry" transaction is unchecked.
I tried to test it in my local environment by checking the "No Save Point on TaskFlow Entry " but could not really conclude whether it has any siginificant performance improvement.
Any inputs on thsi would be of real help in deciding whether to go ahead and select this option in all our taskflows.
Thanks,
Rama

Rama,
I can't say from any experience whether it has any effect even with no controller transaction.
However, it doesn't sound as if you'll be using the savepoints, so it seems safe to me to disable the save points.
John

Similar Messages

  • How to use Save Point in Batch Execution of  java transaction updates .

    HI.. ALL
    This is going to be very important to all and if needed history should be rewritten...
    Does any one.... Any one has ever thought of Execution of a Batch - jdbc using Save Points Concept ???
    If this has been ever implemented than I am sorry for my comments..
    If NOT---
    Then any one has idea or code or any thoughts or alternatives for this... This goes like this-->
    If we have a batch file which has All Inserts , Updates and delete statements and we are reading that file in java program and executing the file in a batch execution.. Now java provides only 2 option 'START AND END' for batch execution. But ever dreamed about having Save Points in execution of a batch ?
    You might be thinking why Save points needed in batch? if any one wants to have save points then they can go with normat step by step execution of the jdbc calls Why in batch ?
    Trust me this is very important in various areas of development which will bring an ease of writing the program efficently..
    Does any one have any idea in this regard of having SavePoints in batch execution is highly welcome.
    Thanks
    wahed
    Edited by: wahed on Aug 8, 2008 12:53 AM

    If your database supports SAVEPOINT savepoint_name sql and ROLLBACK [WORK] [ TO [ SAVEPOINT ] savepoint_name] sql, you can try to add those sqls into your sql batch.

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

  • Save point with POJO DataControl not saving model state

    Hi Guys,
    JDEV 11.1.1.6 64bit
    I was able to get save points working with ADF BC (AppMod, View & Entity objects)
    but when I tried to do the exact same with Pojo DataControls, I won't save
    the current state of the model - meaning things are not "selected" to the
    proper record when the SP is restored. I don't get any errors, it just
    shows the wrong data.
    Example:
    The BTF is marked as must have transaction(tried either way), but this is Pojo, and doesn't support Trx.
    edit-emp-dept.jspx (with BTF Region)
    BTF START
        STEP 1: RichTable with bindings to Pojo DataControl (value="#{bindings.allDepts.collectionModel}")
                     (user selects the 3 record => sales department)
        STEP 2: Edit Sales Dept & on click to next step create SP
        STEP 3: View Emps (Rich Table of ALL emps in that DEPT)
        STEP 4: Edit Emp
        FINAL: COMMIT (save to pojo list) or CANCEL (don't save to pojo list)
    /BTF END
    At STEP 1 -> STEP 2, the SP is created, and when I close the browser at STEP2, 3  or 4, and
    restart, and choose SP to restore, it takes me to proper page (STEP 2)  but the wrong Department is
    selected to edit (it shows "Finance" instead of "Sales") & if I hit my ADF back button, it shows
    the table with "finance" selected.  In the ADF BC world it works perfectly.
    I know the docs say: the ADF Model is saved, so the question is why bindings.allDepts.collectionModel
    not "saved" here for Pojo DC and the ADF BC af:table value="#{bindings.DepartmentsView1.collectionModel}"
    it is "saved".
    Thanks for any insight or work-around.
    Sincerely,
    Joel
    edit-emp-dept.jspx:
    <?xml version='1.0' encoding='UTF-8'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
              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=UTF-8"/>
      <f:view>
        <af:document id="d1">
          <af:form id="f1">
            <af:region value="#{bindings.btfpojodc1.regionModel}" id="r1"/>
          </af:form>
        </af:document>
      </f:view>
    </jsp:root>

    Hi,
    the problem with POJO DC and other non-ADF BC models is that they don't passivate their state. In JDeveloper 12c we allow developers to extend their POJO classes with ADF lifecycle methods that allows them to save the model state themselves. Its a known issue that the transaction state cannot be saved for non-ADF BC models. I checked the bug database for bugs filed against this behavior but could not find one- I can imagine that with 12c we would have a chance to allow developers to handle passivation / activation for non-ADF BC model states. So if this is a feature you need then filing an enhancement request would make sense
    Frank

  • Save Points to override APEX DML functions

    I have some APEX pages that run some underlying procedures which do DML functions on 6 different tables. At the start of each of the DML functions which are in PL/SQL packages, I have set Save Points. I process thru a number of additional pages and reach a point where I may need to commit or rollback all those prior changes. Whenver I try to rollback I get ORA-01086 Savepoint 'xxx' never established. How can I check to see if the savepoint gets created so I can determine why the rollback function doesn't work.

    It's likely that APEX is performing a commit during processing, and thus erasing your savepoints.
    See +{thread:id=708781}+ and +{thread:id=2130631}+ for discussion on when APEX will commit. If any of the processing will cause APEX to perform a commit, see if it's possible to reorganize things so that APEX session state processing occurs before/after your transactional processing.
    (Please update your forum profile with a better handle than "user8014695")

  • Save Point for Cancel Functionality

    Hi all,
    I followed Frank's document below on how to implement the Cancel functionality using "Explicit ADFm Save Points in ADF Taskflows":
    http://www.oracle.com/technology/products/jdev/tips/fnimphius/cancelform/cancelForm_wsp.html
    However when running the application with logging turned on, there was this warning message:
    *******WARNING*****: createSavepoint not supported for DCBeanDataControl.*
    Upon some digging, I found that the createSavePoint method in DCBeanDataControl returns null, while its base class DCJboDataControl calls the application module's passivateStateForUndo() method.
    I hope to implement the save point functionality declaratively, can someone tell me how to obtain the DCJboDataControl class instead of DCBeanDataControl so that the createSavePoint method works?
    Thanks!
    Hai Liang

    John,
    I think there might be a problem with our view project not "knowing" that the model layer is using ADF BC. The situation is like this, we first built the ADF BC model project (the EOs, VOs and AMs). Then we went on to create a viewController project (in the same Application workspace). Because the Applications Modules from the model project appear in the Application > Data Controls tab, we just used the AMs there and assumed that the viewController project is aware that it is using ADF BC components.
    Is there some setting we have to define inside the viewController project to make it "aware" that the model layer utilizes ADF BC and thus enable the "savepoint cancel" functionality?
    Thanks!
    Hai Liang

  • Issues with Restoring Save Point

    hi,
    I'm attempting to programmatically restore a save point in a taskflow. The problem I'm having is that, only two of the fields are being populated. These two fields are drop-down lists bound to data controls. I also have a data control field which is also exposed as a drop-down list that isn't restored, and also several input text fields and a radio button that's also not restored. Could someone please help me out?

    Hi,
    You might try doing an executeQuery() on the relevant view objects after your restore - possibly a clearCache() AND an executeQuery(). That way, it shouldn't matter what has been submitted and not. Your table or form should show the data as it was before any changes were made (submitted or not).
    Regards,
    Andreas
    Edited by: AndreasNielsen on 2011-07-18 11:21

  • Restore Save Point issue

    We are facing a strange problem.
    We have a popup taskflow with an implicit savepoint. Inside the taskflow we do a createInsert on a VO. In the popup we have a "cancel" button that return from the popup with the "restore save point" checked.
    In our development environment we never found any issues. Last week, we installed the application in a "quality" environment, where we have many users using the system, and some times the restore save point apparently does not work and the application stays with inconsistent state (the VO's current row lost their bindings).
    best regards,
    Nuno

    Hi,
    Try this,
    1. Change the locking mode in App module to "Optimistic" if its not.
    2. Your managed bean should implements Serializable.
    Thanks
    Gopi

  • Sample Editor - Assigning a controller to the Anchor point?

    Does anyone know if it's possible to assign a rotary controller to the anchor point in the sample editor (so that you can adjust the start time of audio or a sample in the EXS on the fly - as you can on a hardware sampler)?
    Many thanks.

    Happens regularly. I'm more often second though, because of the screenshots I add...
    ...and your reply is not parrotting, since you didn't read mine before you wrote yours...

  • Should we use same datasource for Internal connection and Save Point ?

    Hi,
    AM configuration has an internal db connection setting, adf-config.xml also has an db connection setting for Save Point, should we all set to the same database source of the system or should we create a seperate datasource which is used only for AM internal db connection and Save Point?
    jdev: 11.1.2.1
    Many thanks!

    Hi,
    its all up to you and whether you have security concerns if the save point is saved with the business data.
    Frank

  • BTF: No Controller Transaction & Share data controls

    Hi all,
    I have BTF with two options, like in the Subject of this thread.
    In that task flow, user create and edit records from separate ApplicationModule with regard to calling task flow.
    And all without commiting these changes to the database.
    Now wondering, what happens when such one task flow ends, for example with task flow Return activity ?
    There is No Controller Transaction, so Return Acitivity does not commit or rollback anything.
    What happens to data that have been added or changed in the task flow after task flow finishes ?
    Will changes be automatically rollad backed ?

    Did not tested yet, looking for a simple explanation from someone who knows (or has already tried ;-)
    Seriously, I read a lot on this subject, but I do not know what will happen in this scenario. Everything is very, very confusing, and it is easy to make a wrong decision...
    John Stegeman wrote:
    What happened when you tested it :)Edited by: Cvele_new_account on Jul 6, 2012 5:57 AM

  • FRM-40512 ORACLE ERROR UNABLE TO ISSUE SAVE POINT COMAND

    Dear Friends
    I am getting this FRM-99999 ERRORE 408 OCCURRED FRM-40655 SQL ERROR FORCED ROLLBACK CLEAR FROM AND RE-ENTER TRANACTION.
    FRM-40512 ORACLE ERROR UNABLE TO ISSUE SAVE POINT COMAND.
    I am calling the form using the following script :
    :global.command_line := 'C:\SALES\NEW_ITEMS.FMX' ;
    CALL_FORM(:global.command_line);
    go_block('COP_ORDER_DETAILS');
    go_record(:global.l_n_curr_rec2);
    :COP_ORDER_DETAILS.ITEM_CODE :=:GLOBAL.ITEM_CODE_VAR;
    :COP_ORDER_DETAILS.COLOR := :GLOBAL.COLOR_CODE ;
    :COP_ORDER_DETAILS.SHAPE_CODE := :GLOBAL.SHAPE_CODE ;
    :COP_ORDER_DETAILS.DELIVERY_QUANTITY := :GLOBAL.QTY ;
    :COP_ORDER_DETAILS.VOLUME := :GLOBAL.VOLUME;
    It works fine for one record, when I try to create another record by calling the called form it gives the above messages.
    Waiting for your valuable replay.
    Best regards
    Jamil

    Hi!
    May you try to open your form, compile all pl/sql (shift-ctrl-k) and compile the form (ctrl-t).
    Take a look at triggers like pre-insert, on-insert, post-insert and key-commit.
    What's happen there?
    I don't know, if the default username feature in 10g is still supported.
    So may the logon ( '/' ...) fails and for this the login screen os shown.
    Regards

  • How to create more than one save point in session

    Hi,
    I'm using Jdev 12c.
    I'm trying to use the SavePoint in ADF. When I try to use createSavepoint() function of SavePointManager to create savepoint I met a problem is only one row of savepoint is created in DB (table ADF uses to kept the savepoint in DB) and it overrides the old row whether how many times I uses createSavePoint() function. I want to when I call createSavePoint(), a new row of savepoint is created instead of overriding . Below is my code:
            ControllerContext controllerContext = ControllerContext.getInstance();
            String savePointId = null;
            if (controllerContext != null) {
                SavePointManager savePointManager =
                    controllerContext.getSavePointManager();
                if (savePointManager != null) {
                    //creating the save point
                    savePointId = savePointManager.createSavePoint();
                    //putting the save point id into session scope
                    ADFContext.getCurrent().getSessionScope().put("savePointId",
                                                                  savePointId);
    Could anybody help me this problem?
    Thank you very much.

    Dear Frank,
    Thank you so much for your answer. Beside the save point functionality to save the state and values on the screen, do you know other ways to do the same function? Once again, thank you so much.
    Linh Nguyen.

  • Going back to previous save point or that you didn't manually save?

    Hi,
    Is there a way to go back to a previous save point in a session or one that you didn't actually save manually? Like maybe it saves automatically every now and then and you can revert to it if need be?
    I'm thinking i seen something somewhere that logic's default for this type of thing is 10 points, although that could have been undo points i can't remember.
    Reason being is that for some reason all of my ultrabeat, bass and synths have reverted to their default settings. I have no idea why. Turned it off at end of working on it last night and everything was fine, just turned it back on this morning and it's like that.
    I do have another save point as a backup but it's very far removed from the current one but the settings haven't changed and it's all correct settings, so instead of reverting back is there a way to copy a whole project in its entirety over to another project? Tracks, settings, everything completely?
    I really hope i can get back to a previous save point. Anyone help?

    No matter, i've found it. Yes! I'm so pleased. You don't even know how much.
    Why i didn't see that backup folder before i have no idea... must be going blind

  • Save point restore

    Hi,
    How to restore savce point on load of the page.
    I have done it on button click,but i want to load savepoint on page load.
    Please let me know.
    Thanks.

    Hi,
    I am using the following code in the phaselistener and its getting called, but the resotring is not happening when this executes.
    The save point is present in the table.
    public void afterPhase(PhaseEvent e) {
    System.out.println("inside after phase");
    SavePointManager spmanager = ControllerContext.getInstance().getSavePointManager();
    SavePoint savepoint = spmanager.getSavePoint("a2b867bd-d8ab-4997-907e-a9f5d63d155a");
    System.out.println(savepoint.getAttributes());
    Is there any other configuration required for restoring other than this?
    ControllerContext.getSavePointManager().restoreSavePoint is not found
    Edited by: 811407 on Jan 10, 2011 4:29 AM

Maybe you are looking for

  • ERROR DURING RELEASING A DOCUMENT TO A/C

    Hi,    When i am releasing a document to A/C system is showing following error in status bar. "THE STATEMENT ITEM IS MISSING FOR TAX CODE A2" Tax statement item missing for tax code A2 Message no. FF805 Diagnosis No tax item exists for tax code A2 in

  • SEM BCS Q&DB

    Hi I am looking for Q&DB relevant to SEM BCS BW based. Can any one send the link. Appreciate your help. Regards Chrizz

  • HT4059 i paid for a book, which i was reading, and now the book icon shows "paused" and i cannot open it. how do i fix this?

    i have been using ibooks on my ipad. one of the books i downloaded and had been reading is now showing 'paused" and i cannot access it. i cannot delete it or open it. the other books will open fine. how do i fix this? thanks

  • PO Confirmations Message

    Hi, We are trying to implement an extended classic scenario of EBP and we are using XI to send POs and receive conformation back in XML format. We have implemented as per the ServiceProcurementNEW.pdf document for configuring the XI and SRM settings.

  • Mighty Mouse --- Updating to Tiger?

    Hi, I just recently bought the Wireless Mighty Mouse. I have been trying to figure out how to customize the buttons to do what I want. But the "System Preferences" do not even give me that option. I was told that it is because I am still on 10.3.9 an