CLD example review

Hi everyone,
I have started preparing for CLD. This is my first try with Car wash example.
Please spare your some time for my example and tell me few tips, corrections.
I know there will be many points, may be bugs in my program. Also let me know how I can avoid using local variables and still update "Wash Options" control.
I have two local variables. How bad effect it will have on scoring ?
Also let me know if you will give me passing score or not out of 40.
I hope there are less bugs.
Gaurav k
CLD Certified !!!!!
Do not forget to Mark solution and to give Kudo if problem is solved.
Attachments:
100929-01.pdf ‏185 KB
CLD Car wash.zip ‏110 KB

Gaurav-
You did several things right!
Code looks like it hits all functionality
Good use of comments in code
VI documentation and icons are present
A couple of things you did not do right
Keep Front panels compact and neatly alligned (saving "Maximized" is a pet peeve of mine.  You just can't see enough panels to compare sections of code.
missing control and indicator descriptions and tips. (Hint: when creating a control just open the property panel and enter all the data.  TIP STRIPS should always be available for every object the user can get at and would contain a lot of the FP comments that clutter the FP with data that can be popped-up when the user hovers over the element)
use captions to show default control values.  e.g. on Timer.vi control "Option" is an ok label hide it and show caption "Option (Count)".  see how this effects the readability of the help window for Timer.vi?
your AEs hide terminals.  Whenever possible (allways) keep  terminals outside the loop.  see the snippet revision of Read File.vi- has a few advantages over the original doesn't it?
Personally I would have used an event loop to enqueue and pass user generated commands to a state machine (more scalable IMHO) but overall the structure you have is satisfactory.
Nice work.
Jeff

Similar Messages

  • My Car Wash CLD Example

    Hello,
    I just completed the Car Wash CLD example using a modified producer/consumer with events pattern. I would like any feedback regarding the implementation.
    Thanks!
    Attachments:
    CarWash.zip ‏163 KB

    Hopefully this is still helpful. I would've reviewed last week but I just finished this example myself.
    I think you'd earn solid marks for coding style. Your code is clean, organized, and well-commented/documented.
    Unfortunately, I can't seem to get many of the functions to work as expected... the architecture is also pretty complicated. I noticed a few instances of elements being self-enqueued into the same state machine. This is a bit challenging to follow and (possibly?) debug.
    http://linkd.in/mikele

  • CLD example for comments

    Dear all, We are a bunch of ppl who want to appear for CLD exam shortly. We took the "Sprinkler Controller" example and tried to complete the same in the stipulated time of 4Hrs. PFA the "SprinklerController_For_Forum.zip".
    Although some of us fared well in the exam some are still in need to improvise on the coding speed (which seems like impossible now ).
    I'm posting the question and the example (LV 8.6) in this forum to get your comments and feedback.
    I'm sure a lot active participants like me will definitely share their experience and comment the way we coded.
    Thanking you in advance.
    Sreedhar.
    Attachments:
    SprinklerController_For_Forum.zip ‏171 KB
    Sprinkler Controller Example.pdf ‏177 KB

    Well,  you are not the first person to struggle with event structure usage!  Here is a quick demo that you can play with that exposes some of the "features" you wrote into your example.
    In the top loop you can see all the code.  the lower loop contains a Stop Val change event with a True wired to the lower bool tunnel and the false case of the case structure contains a wait.vi wired from mSec 3 and negates the boolean on the top SR.
    First, relying on TMO for acurate timing in your example is bad.   If you watch the top loop run you'll see that the loop starts, the Event structue sees that 1000mSec TMO constant and starts waiting for events.  1000mSec later no event is seen so a timeout is generated and the timeout case is executed.  then bool 1 flips and mSec time later the event case exits and the loop iterates.  with mSec = 1000 bool 1 flips every 2 seconds.  Esentially the tmo is reset each time the loop starts so any code outside the event strucure or in other cases creates a timing uncertainty.  Your example suffers from this effect and the zones are not correctly timed.
    Next, What happens if the stop button is pressed while the lower loop is waiting in the Timeout case?  Since the event structure isn't ready to handle the Stop Val change event the loop must first exit the timeout case and the case structure and the loop must iterate with a TRUE in the top Shift register to get back into the True case and start waiting for events.  However the event Stop Value change is already on the event queue! the event happened! so the Stop val change case executes.  but with up to mSec 3 + mSec 2 delay after the event occured.  two issues here a long executing event case blocking the handling of another event and an event structure inside a state machine. both no-nos since the state machine may NEVER re-enter the state that looks at events. (in the demo remove the negate in the false case and you get a infinate loop! )  There is a requirement to handle user input in a timely fashion that you miss in your example because your events are blocked for these reasons.
    Third, (but not seen in the example above) your example mixes event queues and the state machine queues (the arrays of strings)  the user events and the FP events can only be handled 1 at a time and ONLY after the state machine returns to the event handeling case.  with both loops generating events for the other (and FP activity joining the event queue) you can (and have) created a debuging nightmare since the delay between when an event is generated and when it is serviced is totally unkowable and dependant on what else happened. 
    In conclusion the event structure is very useful for executing code in response to FP activity (and programatic events) and no other structyre easilly allows a break from dataflow to event processing BUT< we should chose the right tool and use it correctly.  Use events to monitor programatic states and other asynchronous elements (like Users pressing buttons).  DO NOT execute lengthy code inside an event because it blocks other events.  DO NOT put event structures inside case structures or state machines (unless all events are dynamically registered and you unregister before you leave the state.  there are time this is useful)  DO NOT rely on the timeout case for critical timing.
    Look into some of the examples that use the PC loop (events) template. and the Help file for more information and you are getting there!
    Keep slinging wires!
    Jeff
    Attachments:
    Hiden events.vi ‏15 KB

  • Firefox will not open windows that are linked on a site, for example reviewing a piece of work that has a link which opens it in a new window.

    There are links on site that open in new windows and close after you are done. Like A review link/box. The window opens but it's a blank page and the url books just says "search bookmarks and history".
    == This happened ==
    Every time Firefox opened
    == I changed a theme/Just before I upgraded firefox

    Do you have that problem when running in the Firefox SafeMode?
    [http://support.mozilla.com/en-US/kb/Safe+Mode]
    ''Don't select anything right now, just use "Continue in SafeMode."''
    If not, see this:
    [http://support.mozilla.com/en-US/kb/troubleshooting+extensions+and+themes]

  • CLD Practice Review - Car Wash

    Hey, so I've done all 4 available CLD Prep Exams.  I was curious if I could get some feedback on the Car Wash.  This, imo, was the easiest of them all and so I was wondering what kind of marks I would end up getting with the attached as the end result.  Like, just how many "unnecessary bends" are present in my code?  What does it need?  The code is in 2011 SP1.  Thank you.
    Remember, code does exactly what you tell it.
    Attachments:
    Car Wash.zip ‏89 KB

    Well while we wait for the thread to be moved here are some comments:
    Your main has uninitialized shift registers for no reason.  They should be initialized with constants.
    All of your VIs are missing VI Icons
    All of your VIs are missing VI Descriptions
    Saved controls are also missing icon and description
    Your front panel controls don't have tip strips, or descriptions
    Wires are routed behind structures in a couple VIs
    There are far too few comments.  All cases in the state machine needs comments explaining what the state is for.
    I also don't remember all the requirements so there is likly funcitonal things I don't remember.  Like aren't controls supposed to be disabled when a car is going through the wash?
    Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
    If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

  • Security system CLD exam review

    This is similar to solution online
    Please let me know if you have any general comments on the solution or any other comments to my questions below
    1. I have created a project. Was it necessary or does it matter.
    2. I put data in a Data folder. Does I need to create a separate folder?
    3. It asked for test file. I used a .csv file instead of .txt. Is it ok to do that?
    4. I used only one case for alarm, bypass and tamper switch instead of using 3 cases for solution online.
    Code is in LabVIEW 8.6
    Thanks
    Attachments:
    Security system.zip ‏67 KB

    Overall this is a pretty elegent solution. There are a few things that you will want to improve though.
    1. This one jumped out at me immediately. Be very aware of extra and unnecessary bends in your wires. Try to line things up better and avoid all the extra bends.
    2. I would use better names for your subVIs. Use names that are descriptive yet meaningful. Logic.vi is not very meaningful or descriptive.
    3. I would not modify or change the requirements of the test. If they specify a text file then use a text file. Part of the exam is to determine if you can follow requirements. Changing them is not receommended.
    4. Avoid objects overlapping each other. For example look at the labels in your Initialize state.
    5. Avoid using "Use default if unwired" for your tunnels on structures.
    6. Make sure to add descriptions for all of your controls and indicators including the ones in your subVIs.
    Mark Yedinak
    "Does anyone know where the love of God goes when the waves turn the minutes to hours?"
    Wreck of the Edmund Fitzgerald - Gordon Lightfoot

  • My stoplight.vi for CLD practice exam

    I am preparing for CLD and looking for comments on my implementation of the "stoplight" CLD example question.  Any comment would be appreciated.  Kudos will be distributed liberally.
    The pdf for the example question is in this zip file:
    ftp://ftp.ni.com/pub/devzone/epd/2419.zip
    Attachments:
    CLD_Traffic_Light.zip ‏42 KB
    Sample CLD Exam - Traffic Light.pdf ‏350 KB

    It looks like your code does everything that the clad exam wants. I see that you documented everything but the main vi. You might just want to explain what the purpose of the mian vi is. I think you code is simple and east to read. The state machine is simple and works good and everything seems to flow nicely. You document well what is going on in each loop.
    I hope this was userful info.
    Tim
    Johnson Controls
    Holland Michigan

  • Security System CLD Exam Problem Solution? Insane?

    I just started working on the CLD example problems.  I've been using Labview for about 10 years - so everything I do is old-school.
    I'm posting this solution for the Security System example.  There are arrays of switches to represent the alarm, bypass, and tamper
    signals - and then a loop to go through each "zone" to logically determine the state (normal, alarm, bypass or tamper).  To make the
    "zone status" indicator an easily scalable indicator I have the "zone" loop change the color of a boolean LED indicator.  Then I take a 
    picture of it and display an array of pix.  
    Question:  This works fine, good response - but would it pass?  Is there a better way? I attached the diagram...
    Solved!
    Go to Solution.
    Attachments:
    security system.png ‏43 KB

    I don't like the detour over an array of images and property nodes. Seems indirect and inefficient. Is that a requirement or your idea?
    Also I assume that the FOR loop executes quickly, so you should probably do the timestamping once before the loop.
    The "wait for FP activity is really "old school" and not very good. You typically get extra triggers, which is expensive since you write to the file every time. I would strongly suggest an event structure instead.
    The small FOR loop can be replaced by "search array". Much cleaner!
    It might be better and more efficient to open/create the file once before the loop, write using lowlevel functions during the loop, and close after the while loop has finished.
    LabVIEW Champion . Do more with less code and in less time .

  • Better Certification Board recommendations (Request for comments)

    Now for something completely differerent:
    Jordan,  I appreciate what you tried to do with the Solutions for Review thread but... The latest exchanges (and a few others) on this thread I feel demonstrate why the "Mega-Thread" has already outlived its usefulness.  There a a lot of good tidbits and side discussions buried in this thread that would be much more searchable and cohesive if the posters started their own threads. 
    Perhaps some new board suggestions for effectivness could be floated in place of the "Sample Exam Solutions for Review"?
    Tips on CLD Solutions for review:
    Start a new thread - indicate there will be a CLD example for review in the subject line.
    For follow-up discussions on critique points start a new thread with a link to the example and a subject about the point under discussion.
    This should allow the frequent fliers on this board the chance to develop a useful body of theads where specific points related to Cert specific preparation and concepts can be gathered and easily cross linked by the heavy hitters (And who knows, easilly searched by the certification candidates)
    As the board grows I would hate to lose some "gems" in the noise.  If we get together now, to think about what this boards goals are we can maximize our return on investment in supporting certification.
    All comments welcome.  Jordan, please consider floating this discussion for maximum visibility.
    Jeff

    I think that's a great idea - centralise the submissions and decentralise the critiques.
    Another idea to improve the Certification Board might be to introduce subforums for each of the various types of certification (CLAD, CLD, CLA, etc.).
    Certified LabVIEW Developer

  • Multiple queries in a single report?

    I'm having some issues with the ColdFusion Report Builder...
    I have a database table called "Items" that includes fields
    for Reviewer and Status. I want to create a report that will list a
    reviewer, then express the number of items where the Status is
    "open" as a total or record count. I want to do the same for total
    items, and then express the number of "open" items as a percentage.
    For example:
    REVIEWER, OPEN ITEMS, TOTAL ITEMS, PERCENT OPEN
    John Doe, 10, 20, 50%
    Jane Smith, 15, 60, 25%
    ...and so on.
    So far I've only been able to get my report to display the
    recordcount of the entire query. In order troubleshoot the problem
    I created a regular cfm page to do the same thing. Here's what I
    did:
    <cfquery name="getreviewers"
    datasource="#APPLICATION.datasource#">
    SELECT DISTINCT Reviewer
    FROM Items
    ORDER BY Reviewer
    </cfquery>
    <cfoutput query="getreviewers">
    <cfquery name="getopenitems"
    datasource="#APPLICATION.datasource#">
    SELECT Status
    FROM Items
    WHERE Status='open'
    AND Reviewer = '#Reviewer#'
    </cfquery>
    <cfset open = getopenitems.recordcount>
    <cfquery name="getallitems"
    datasource="#APPLICATION.datasource#">
    SELECT Status
    FROM Items
    WHERE Reviewer = '#Reviewer#'
    </cfquery>
    <cfset all = getallitems.recordcount>
    <cfset percent = (open / all) * 100>
    #getreviewers.DR_Item_Reviewer#, #open#, #all#,
    #Round(percent)#%
    </cfoutput>
    That worked great, but as you can see I had to nest a couple
    of queries inside a <cfoutput>. I don't know how to
    incorporate this into the report builder, as it seems you can only
    specify a single query. Another thing that occurs to me is perhaps
    I'm going about this the wrong way. Is there perhaps a function
    that will display things the way I want them without fussing with
    multiple queries? Any help would be greatly appreciated. Thanks in
    advance.

    It seems like you are trying to do a subreport. You can nest
    reports within the report feature...just check out the subreport
    feature under the help section. If that doesn't help let me
    know.

  • Painting one root Application Module to rule them all

    hi
    The description below uses the same MyApplicationModuleListener approach as I describe in the forum thread "painting a picture of Application Module pooling".
    Another example review of Application Module pools behaviour is the blog post by Chris Muir, "JDev 11g, Task Flows & ADF BC – one root Application Module to rule them all?".
    That post also says "... we'll have trouble discerning what the ADF BC layer is actually doing underneath the task flow transaction options. ...", where the approach below might help alleviate some of that discerning trouble.
    And about "... By deduction as there are no other log entries, this second instance of Root1AppModule must be nested under the root Root1AppModule? ..." more information will be logged, so less deduction is required.
    The blog post describes an application similar to this one (which is using the HR.EMPLOYEES table) created using JDeveloper 11.1.1.6.0
    at http://www.consideringred.com/files/oracle/2012/OneSizeOneRootAMApp-v0.01.zip
    It uses somewhat different names than the blog post, and it has two sets of task-flows so that no transaction configuration changes are required to review the behaviour.
    When a MyApplicationModuleListener approach is introduced (with minor changes, mostly configuration, using JAR files available in MyApplicationModuleListenerApp-v0.03.zip) it results in the application available
    at http://www.consideringred.com/files/oracle/2012/OneSizeOneRootAMApp-v0.02.zip
    Using this, the (chained) "No Controller Transaction" scenario's result in similar logging like this:
    [C][L][r1001][(ctx31) /faces : /firstIndex] setRequestInfoPrefix() : extra [GET with 3 parameters (partial request false) (initial render true) (postback true)]
    [C][L][r1002][(ctx32) /faces : /firstIndex] setRequestInfoPrefix() : extra [GET with 3 parameters (partial request false) (initial render true) (postback true)]
    [C][L][r1001][(ctx31) /faces : /firstIndex] onAfterRequest() : no ApplicationPools
    [C][L][r1002][(ctx32) /faces : /firstIndex] onAfterRequest() : no ApplicationPools
    [C][L][r1003][(ctx31) /faces : /firstIndex] setRequestInfoPrefix() : extra [POST with 5 parameters (partial request false) (initial render false) (postback true)]
    [C][L][r1003][(ctx31) /faces : /firstIndex] onNewConstruction() : [(am501) FirstAppModuleImpl_1 (not root) parent = (null)]
    [C][L][r1003][(ctx31) /faces : /firstIndex] onActivate() : [(am501) FirstAppModule (is root)](session version 11.1.1.61.92 oracle.jbo.server.SessionImpl@16cbcec)
    [C][L][r1003][(ctx31) /faces : /firstIndex] onCreate() : [(am501) FirstAppModule (is root)]
    ########FirstAppModuleImpl.create() called.  AM isRoot() = true
    [C][L][r1003][(ctx31) /faces : /firstIndex] onAfterConnect() : [(am501) FirstAppModule (is root)]
    [C][L][r1003][(ctx31) /faces : /firstIndex] onPrepareSession() : [(am501) FirstAppModule (is root)]
    ########FirstAppModuleImpl.prepareSession() called.  AM isRoot() = true
    [C][L][r1003][(ctx31) /faces : /firstIndex] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
    [C][L][r1003][(ctx31) /faces : /firstIndex] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
    [C][L][r1003][(ctx31) /faces : /firstIndex] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [C][L][r1003][(ctx31) /faces : /firstIndex] onNewShortId() : pNewShortId = ds81, pId = java:comp/env/jdbc/connHRDS - com.bea:ServerRuntime=DefaultServer,Name=OneSizeOneRootAMApp@connHR@connHR,ApplicationRuntime=OneSizeOneRootAMApp,Type=JDBCDataSourceRuntime
    [C][L][r1003][(ctx31) /faces : /firstIndex] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
    (ap21)[cre 1; rem 0; act 0; pas 0; co 1; ci 1; ref reu 0; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
    (ds81)[cur cap 1; avai 0; unav 1; cp hig 1; ac cur 1; ac avg 0; ac hig 1; co del 168; co tot 1; res req 1; fai res 0; fai rec 0; h avai 1; h unav 1; lea co 0; psc acc 0; psc add 0; psc csi 0; psc del 0; psc hit 0; psc mis 0; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
    [C][L][r1004][(ctx31) /faces : /firstam-btf/empVoFirstViPage] setRequestInfoPrefix() : extra [GET with 5 parameters (partial request true) (initial render false) (postback true)]
    [C][L][r1004][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
    [C][L][r1004][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
    [C][L][r1004][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [C][L][r1004][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
    (ap21)[cre 1; rem 0; act 0; pas 0; co 2; ci 2; ref reu 1; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
    (ds81)[cur cap 1; avai 0; unav 1; cp hig 1; ac cur 1; ac avg 0; ac hig 1; co del 168; co tot 1; res req 1; fai res 0; fai rec 0; h avai 1; h unav 1; lea co 0; psc acc 2; psc add 2; psc csi 2; psc del 0; psc hit 0; psc mis 2; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] setRequestInfoPrefix() : extra [POST with 55 parameters (partial request false) (initial render false) (postback true)]
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onNewConstruction() : [(am502) SecondAppModuleImpl_154 (not root) parent = (null)]
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onActivate() : [(am502) SecondAppModule (is root)](session version 11.1.1.61.92 oracle.jbo.server.SessionImpl@8add89)
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onCreate() : [(am502) SecondAppModule (is root)]
    ########SecondAppModuleImpl.create() called.  AM isRoot() = true
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterConnect() : [(am502) SecondAppModule (is root)]
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onPrepareSession() : [(am502) SecondAppModule (is root)]
    ########SecondAppModuleImpl.prepareSession() called.  AM isRoot() = true
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am502) SecondAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onPassivateState() : 5 : [(am502) SecondAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am502) SecondAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
    (ap21)[cre 1; rem 0; act 0; pas 0; co 3; ci 3; ref reu 2; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
    (ds81)[cur cap 2; avai 0; unav 2; cp hig 2; ac cur 2; ac avg 0; ac hig 2; co del 122; co tot 2; res req 2; fai res 0; fai rec 0; h avai 1; h unav 2; lea co 0; psc acc 2; psc add 2; psc csi 2; psc del 0; psc hit 0; psc mis 2; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
    [C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterRequest() : 2 : ApplicationPool = onesizeonerootamapp.model.SecondAppModuleLocal
    (ap22)[cre 1; rem 0; act 0; pas 0; co 1; ci 1; ref reu 0; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
    (ds81)[cur cap 2; avai 0; unav 2; cp hig 2; ac cur 2; ac avg 0; ac hig 2; co del 122; co tot 2; res req 2; fai res 0; fai rec 0; h avai 1; h unav 2; lea co 0; psc acc 2; psc add 2; psc csi 2; psc del 0; psc hit 0; psc mis 2; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
    [C][L][r1006][(ctx31) /faces : /secondam-btf/empVoSecondViPage] setRequestInfoPrefix() : extra [GET with 5 parameters (partial request true) (initial render false) (postback true)]
    [C][L][r1006][(ctx31) /faces : /secondam-btf/empVoSecondViPage] onAfterDoPoolMessage() : [(am502) SecondAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
    [C][L][r1006][(ctx31) /faces : /secondam-btf/empVoSecondViPage] onPassivateState() : 5 : [(am502) SecondAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
    [C][L][r1006][(ctx31) /faces : /secondam-btf/empVoSecondViPage] onAfterDoPoolMessage() : [(am502) SecondAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [C][L][r1006][(ctx31) /faces : /secondam-btf/empVoSecondViPage] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
    (ap21)[cre 1; rem 0; act 0; pas 0; co 3; ci 3; ref reu 2; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
    (ds81)[cur cap 2; avai 0; unav 2; cp hig 2; ac cur 2; ac avg 0; ac hig 2; co del 122; co tot 2; res req 2; fai res 0; fai rec 0; h avai 1; h unav 2; lea co 0; psc acc 4; psc add 4; psc csi 4; psc del 0; psc hit 0; psc mis 4; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
    [C][L][r1006][(ctx31) /faces : /secondam-btf/empVoSecondViPage] onAfterRequest() : 2 : ApplicationPool = onesizeonerootamapp.model.SecondAppModuleLocal
    (ap22)[cre 1; rem 0; act 0; pas 0; co 2; ci 2; ref reu 1; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
    (ds81)[cur cap 2; avai 0; unav 2; cp hig 2; ac cur 2; ac avg 0; ac hig 2; co del 122; co tot 2; res req 2; fai res 0; fai rec 0; h avai 1; h unav 2; lea co 0; psc acc 4; psc add 4; psc csi 4; psc del 0; psc hit 0; psc mis 4; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]The "Always Begin New Transaction and Always Use Existing transaction" scenario results in logging like this:
    [C][L][r1001][(ctx31) /faces : /secondIndex] setRequestInfoPrefix() : extra [GET with 3 parameters (partial request false) (initial render true) (postback true)]
    [C][L][r1002][(ctx32) /faces : /secondIndex] setRequestInfoPrefix() : extra [GET with 3 parameters (partial request false) (initial render true) (postback true)]
    [C][L][r1001][(ctx31) /faces : /secondIndex] onAfterRequest() : no ApplicationPools
    [C][L][r1002][(ctx32) /faces : /secondIndex] onAfterRequest() : no ApplicationPools
    [C][L][r1003][(ctx32) /faces : /secondIndex] setRequestInfoPrefix() : extra [POST with 5 parameters (partial request false) (initial render false) (postback true)]
    [C][L][r1003][(ctx32) /faces : /secondIndex] onNewConstruction() : [(am501) FirstAppModuleImpl_1 (not root) parent = (null)]
    [C][L][r1003][(ctx32) /faces : /secondIndex] onActivate() : [(am501) FirstAppModule (is root)](session version 11.1.1.61.92 oracle.jbo.server.SessionImpl@1d90a2c)
    [C][L][r1003][(ctx32) /faces : /secondIndex] onCreate() : [(am501) FirstAppModule (is root)]
    ########FirstAppModuleImpl.create() called.  AM isRoot() = true
    [C][L][r1003][(ctx32) /faces : /secondIndex] onAfterConnect() : [(am501) FirstAppModule (is root)]
    [C][L][r1003][(ctx32) /faces : /secondIndex] onPrepareSession() : [(am501) FirstAppModule (is root)]
    ########FirstAppModuleImpl.prepareSession() called.  AM isRoot() = true
    [C][L][r1003][(ctx32) /faces : /secondIndex] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
    [C][L][r1003][(ctx32) /faces : /secondIndex] onNewConstruction() : [(am502) FirstAppModuleImpl_2 (not root) parent = (null)]
    [C][L][r1003][(ctx32) /faces : /secondIndex] onSetParent() : 2 : [(am502) onesizeonerootamapp_model_FirstAppModule (not root) parent = (null)] parent = [(am501) FirstAppModule (is root)]
    [C][L][r1003][(ctx32) /faces : /secondIndex] onCreate() : [(am502) onesizeonerootamapp_model_FirstAppModule (not root) parent = [(am501) FirstAppModule (is root)]]
    ########FirstAppModuleImpl.create() called.  AM isRoot() = false
    [C][L][r1003][(ctx32) /faces : /secondIndex] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
    [C][L][r1003][(ctx32) /faces : /secondIndex] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [C][L][r1003][(ctx32) /faces : /secondIndex] onNewShortId() : pNewShortId = ds81, pId = java:comp/env/jdbc/connHRDS - com.bea:ServerRuntime=DefaultServer,Name=OneSizeOneRootAMApp@connHR@connHR,ApplicationRuntime=OneSizeOneRootAMApp,Type=JDBCDataSourceRuntime
    [C][L][r1003][(ctx32) /faces : /secondIndex] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
    (ap21)[cre 1; rem 0; act 0; pas 0; co 1; ci 1; ref reu 0; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
    (ds81)[cur cap 1; avai 0; unav 1; cp hig 1; ac cur 1; ac avg 0; ac hig 1; co del 75; co tot 1; res req 1; fai res 0; fai rec 0; h avai 1; h unav 1; lea co 0; psc acc 0; psc add 0; psc csi 0; psc del 0; psc hit 0; psc mis 0; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
    [L-before][L][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
    [C][L][r1004][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] setRequestInfoPrefix() : extra [GET with 5 parameters (partial request true) (initial render false) (postback true)]
    [C][L][r1004][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
    [C][L][r1004][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [C][L][r1004][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
    (ap21)[cre 1; rem 0; act 0; pas 0; co 2; ci 2; ref reu 1; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
    (ds81)[cur cap 1; avai 0; unav 1; cp hig 1; ac cur 1; ac avg 0; ac hig 1; co del 75; co tot 1; res req 1; fai res 0; fai rec 0; h avai 1; h unav 1; lea co 0; psc acc 2; psc add 2; psc csi 2; psc del 0; psc hit 0; psc mis 2; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
    [L-before][L][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] setRequestInfoPrefix() : extra [POST with 55 parameters (partial request false) (initial render false) (postback true)]
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateStateForUndo() : [(am501) FirstAppModule (is root)] pId = null, pClientData = null, pFlags = unknown passivation flags (0)
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateState() : 2 : [(am501) FirstAppModule (is root)] pClientData = null, pFlags = PASSIVATE_UNDO_FLAG, PASSIVATE_TO_STACK_FLAG (40)
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateConnectionState() : [(am502) onesizeonerootamapp_model_FirstAppModule (not root) parent = [(am501) FirstAppModule (is root)]] pDoc = (name = #document, doc elem = null), pParent = (name = CONN)
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateConnectionState() : [(am501) FirstAppModule (is root)] pDoc = (name = #document, doc elem = null), pParent = (name = CONN)
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPrepareForPassivation() : [(am501) FirstAppModule (is root)] pOut = (name = #document, doc elem = null) pParent = (name = AM)
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPrepareForPassivation() : [(am502) onesizeonerootamapp_model_FirstAppModule (not root) parent = [(am501) FirstAppModule (is root)]] pOut = (name = #document, doc elem = null) pParent = (name = AM)
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateState() : 3 : [(am502) onesizeonerootamapp_model_FirstAppModule (not root) parent = [(am501) FirstAppModule (is root)]] pDoc = (name = #document, doc elem = null), pParent = (name = AM)
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateState() : 3 : [(am501) FirstAppModule (is root)] pDoc = (name = #document, doc elem = null), pParent = (name = AM)
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onNewConstruction() : [(am503) SecondAppModuleImpl_155 (not root) parent = (null)]
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onSetParent() : 2 : [(am503) onesizeonerootamapp_model_SecondAppModule (not root) parent = (null)] parent = [(am501) FirstAppModule (is root)]
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onCreate() : [(am503) onesizeonerootamapp_model_SecondAppModule (not root) parent = [(am501) FirstAppModule (is root)]]
    ########SecondAppModuleImpl.create() called.  AM isRoot() = false
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
    (ap21)[cre 1; rem 0; act 0; pas 0; co 3; ci 3; ref reu 2; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
    (ds81)[cur cap 2; avai 1; unav 1; cp hig 2; ac cur 1; ac avg 0; ac hig 2; co del 79; co tot 2; res req 2; fai res 0; fai rec 0; h avai 1; h unav 2; lea co 0; psc acc 3; psc add 3; psc csi 3; psc del 0; psc hit 0; psc mis 3; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
    [L-before][L][(ctx31) /faces : /secondam-tx-btf/empVoSecondViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
    [C][L][r1006][(ctx31) /faces : /secondam-tx-btf/empVoSecondViPage] setRequestInfoPrefix() : extra [GET with 5 parameters (partial request true) (initial render false) (postback true)]
    [C][L][r1006][(ctx31) /faces : /secondam-tx-btf/empVoSecondViPage] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
    [C][L][r1006][(ctx31) /faces : /secondam-tx-btf/empVoSecondViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [C][L][r1006][(ctx31) /faces : /secondam-tx-btf/empVoSecondViPage] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
    (ap21)[cre 1; rem 0; act 0; pas 0; co 4; ci 4; ref reu 3; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
    (ds81)[cur cap 2; avai 1; unav 1; cp hig 2; ac cur 1; ac avg 0; ac hig 2; co del 79; co tot 2; res req 2; fai res 0; fai rec 0; h avai 1; h unav 2; lea co 0; psc acc 5; psc add 3; psc csi 3; psc del 0; psc hit 1; psc mis 4; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]This seems to confirm more explicitly some of the observations in the blog post, and at the same time might add some additional insight into what the framework is doing.
    Suggestions to improve such MyApplicationModuleListener approach (or an alternative approach) are welcome.
    many thanks
    Jan Vervecken

    fyi
    Some additional features were added in the JAR files available
    in http://www.consideringred.com/files/oracle/2013/MyApplicationModuleListenerApp-v0.05.zip
    Like line numbers, or a queryOneRecord() method to support logging the database session SID, or a TaskFlowInfoHelper class to allow logging task-flow transaction options or DataControlFrame information.
    If these JAR files are used, it results in the modified example application
    at http://www.consideringred.com/files/oracle/2013/OneSizeOneRootAMApp-v0.03.zip
    For the same scenarios (using OneSizeOneRootAMApp-v0.03.zip), the resulting logging can be found in these files:
    - "maml-log-20130113-jdev111160-nctx.txt" : when using JDeveloper 11.1.1.6.0 and the chained "No Controller Transaction" scenario :
    [0002][C][L][r1001][(ctx31) /faces : /firstIndex] logContextInformation() :
    [0003]#{a_versionBean.appVersionInfo} = OneSizeOneRootAMApp v0.03 : oracle.jbo.Version = 11.1.1.61.92
    [0007][C][L][r1002][(ctx32) /faces : /firstIndex] onAfterPrepareModel() : task-flow = (no current TaskFlowId) (unbounded task-flow pages)
    [0008]transaction type = (no current TaskFlowId), DC scope = (no current TaskFlowId), DC frame = e1o4lmuw3_2, open transaction = null, is transaction dirty = false
    [0044][C][L][r1005][(ctx32) /faces : /firstam-btf/empVoFirstViPage] onAfterPrepareModel() : task-flow = /WEB-INF/btf/firstam-btf.xml#firstam-btf (no page-fragments)
    [0045]transaction type = -No Controller Transaction-, DC scope = shared DataControlScopeType, DC frame = e1o4lmuw3_2, open transaction = null, is transaction dirty = false
    [0046][C][L][r1005][(ctx32) /faces : /firstam-btf/empVoFirstViPage] onAfterPrepareModel() : task-flow = /WEB-INF/btf/secondam-btf.xml#secondam-btf (no page-fragments)
    [0047]transaction type = -No Controller Transaction-, DC scope = shared DataControlScopeType, DC frame = e1o4lmuw3_2, open transaction = null, is transaction dirty = true
    [0057][C][L][r1005][(ctx32) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [0058](am501) SID = 41 for select sys_context('USERENV', 'SID') as sid from dual
    [0060][C][L][r1005][(ctx32) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am502) SecondAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [0061](am502) SID = 27 for select sys_context('USERENV', 'SID') as sid from dual
    Notice the transaction type and DataControl scope information per task-flow.
    Notice the different database session SID values ("[0058](am501) SID = 41" and "[0061](am502) SID = 27") during the same request [r1005].
    - "maml-log-20130113-jdev111230-nctx.txt" : when using JDeveloper 11.1.2.3.0 and the chained "No Controller Transaction" scenario :
    [0002][C][L][r1001][(ctx31) /faces : /firstIndex] logContextInformation() :
    [0003]#{a_versionBean.appVersionInfo} = OneSizeOneRootAMApp v0.03 : oracle.jbo.Version = 11.1.2.62.76
    Notice the logged information seems similar to when, for the same application and scenario, JDeveloper 11.1.1.6.0 is used (above).
    - "maml-log-20130113-jdev111160-tx.txt" : when using JDeveloper 11.1.1.6.0 and the "Always Begin New Transaction and Always Use Existing transaction" scenario :
    [0002][C][L][r1001][(ctx31) /faces : /secondIndex] logContextInformation() :
    [0003]#{a_versionBean.appVersionInfo} = OneSizeOneRootAMApp v0.03 : oracle.jbo.Version = 11.1.1.61.92
    [0013][C][L][r1003][(ctx32) /faces : /secondIndex] onAfterPrepareModel() : task-flow = /WEB-INF/btf/firstam-tx-btf.xml#firstam-tx-btf (no page-fragments)
    [0014]transaction type = Always Begin New Transaction, DC scope = isolated DataControlScopeType, DC frame = 1220j2l4q9_5, open transaction = 1220j2l4q9_5, is transaction dirty = false
    [0017][C][L][r1003][(ctx32) /faces : /secondIndex] onCreate() : [(am501) FirstAppModule (is root)]
    [0018](am501) SID = 41 for select sys_context('USERENV', 'SID') as sid from dual
    [0025][C][L][r1003][(ctx32) /faces : /secondIndex] onCreate() : [(am502) onesizeonerootamapp_model_FirstAppModule (not root) parent = [(am501) FirstAppModule (is root)]]
    [0026](am502) SID = 41 for select sys_context('USERENV', 'SID') as sid from dual
    [0056][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterPrepareModel() : task-flow = /WEB-INF/btf/secondam-tx-btf.xml#secondam-tx-btf (no page-fragments)
    [0057]transaction type = Always Use Existing Transaction, DC scope = shared DataControlScopeType, DC frame = 1220j2l4q9_5, open transaction = 1220j2l4q9_5, is transaction dirty = true
    [0060][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onCreate() : [(am503) onesizeonerootamapp_model_SecondAppModule (not root) parent = [(am501) FirstAppModule (is root)]]
    [0061](am503) SID = 41 for select sys_context('USERENV', 'SID') as sid from dual
    [0063][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [0064](am501) SID = 41 for select sys_context('USERENV', 'SID') as sid from dual
    Notice that nested Application Module instances are created, resulting in one database session SID value per request.
    - "maml-log-20130113-jdev111230-tx.txt" : when using JDeveloper 11.1.2.3.0 and the "Always Begin New Transaction and Always Use Existing transaction" scenario :
    [0002][C][L][r1001][(ctx31) /faces : /secondIndex] logContextInformation() :
    [0003]#{a_versionBean.appVersionInfo} = OneSizeOneRootAMApp v0.03 : oracle.jbo.Version = 11.1.2.62.76
    [0052][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterPrepareModel() : task-flow = /WEB-INF/btf/firstam-tx-btf.xml#firstam-tx-btf (no page-fragments)
    [0053]transaction type = Always Begin New Transaction, DC scope = isolated DataControlScopeType, DC frame = dw58co387_4, open transaction = dw58co387_4, is transaction dirty = false
    [0059][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterPrepareModel() : task-flow = /WEB-INF/btf/secondam-tx-btf.xml#secondam-tx-btf (no page-fragments)
    [0060]transaction type = Always Use Existing Transaction, DC scope = shared DataControlScopeType, DC frame = dw58co387_4, open transaction = dw58co387_4, is transaction dirty = true
    [0070][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [0071](am501) SID = 38 for select sys_context('USERENV', 'SID') as sid from dual
    [0073][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am502) SecondAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
    [0074](am502) SID = 38 for select sys_context('USERENV', 'SID') as sid from dual
    Notice that two root Application Module instances are used in the same request (and no nested instances), and both (am501) and (am502) report using the same database session SID value. That seems to be "Bruce" [1] at work.
    Remember, it should not be difficult (and not intrusive) to configure similar logging for other ADF applications.
    - [1] seeblog post "Task flows: Sayonara auto AM nesting in 11.1.2.0.0. Hello, ah, let's call it Bruce."
    at http://one-size-doesnt-fit-all.blogspot.com.au/2011/08/task-flows-sayonara-auto-am-nesting-in.html
    regards
    Jan Vervecken

  • Does the Livecache SID always have to be LCA ?

    We have installed APO Livecache with SID other than LCA and I'm being told that it has to be LCA always ?
    Is this true ?
    If it is, why is the install tool gives the option to pick a SID ?
    Or is there a config setting in SAP to change this default setting ?
    Thank you

    Hello Ravi,
    Please check the SAP Note No. 829963.
    Please review the documents at service.sap.com/scm ->mySAP SCM Technology:
    "mySAP SCM Technology" & "liveCache overview " .
    In case of a new installation of the liveCache/LCA, you have to create the connections LCA/LDA/LEA 
    as described in the  installation documentation for the SAP liveCache technology - using    
    Transaction LC10. For example, review the document at                                                    
    service.sap.com/instguides -> mySAP Business Suite Applications->
    mySAP SCM -> Using SAP SCM 5.0 Server->
    "Installation - SAP liveCache Technology …" in the section
    "Common Post-Installation Activities" - "Setting Up the Connection to the liveCache Instance".
    Please review the information at service.sap.com/liveCache ->Release Information ->
       SAP LC/LCAPPS 5.0
    You could  run /n/sapapo/om13 -> checks & see the status for LCA & LDA  & LEA 
    connections. If the connection is marked by the red  semaphore => check errors in /nsm21.  
    You could run the test connection for LCA & LDA & LEA in db59 transaction and review the results.   
    Please open the OSS ticket to the component 'BC-DB-LVC' or 'BC-DB-LCA' if you have further
    questions on this issue.
    Thank you and best regards, Natalia Khlopina

  • Can i track source of purchase?

    Can i track source of purchase? For example, i want to track how much purchase has been from official web-site and how much purchase has been from web-site of your partners. Can i do this with apple app store?

    You not anderstand me. I want to track how much purchase has been by users from official web-site (bunner or url) and how much purchase has been by users from web-site of our partners (for example, review or article about game).

  • Dbm_getf_error (Tcode DB13)

    Hello!
    I have the following error, entering the tcode DB13
    Name und Server     : <SAPSID> - server1020
    DBMRFC Function     : DBM_GETF
    Command            : DBAHIST DATE=20060907
    Error             : Systemerror
    error message       : timeout during allocate / CPIC-CALL: 'ThSAPCMRCV' : cmRc=20
    dbm_getf_error
    Meldungsnr. SADA001
    What can be done in order to solve the problem?
    Thank you very much!

    Dear Mr. Heinemann,
    1)"I have patched my kernel and disp+work."
    What version of the SAP kernel do you have on your system?
    What versions of the tp tool & sapdbmrfc?
    What is OS of the application server?
    2) What are the versions of the database software packages installed
         on the application server ?
        Please update with output of the command 'sdbregview -l'
        < see SAP note 822239 >.
    3) Please  run checks in the transaction /nstms-> Import Overview -> go to the 'Import queue'
        -> Check -> Transport tool
       < For example, review the SAP notes 47392 & 97993 >
       tp pf=/usr/sap/trans/bin/TP_DOMAIN_<SID>.PFL getdbinfo <SID>
    4) Please repeat the Connection Test in /ndb59 for selected Database Connection & update with 'Connection Test Log'.
        Please also check errors in /nst11 in the logs dev_rd, dev_rfc,dev_w …
        Please check in the Connection Test log - General Connection Data :
       Connection Name....:
       Database Name......:
       Database Server....:
       tp Profiles   .......: no_longer_used  < ?? >
       And run in /nsm49, using dbmcli tool :
       -d <SID-Database Name> -n <Database Server> -tpi <SID-system> -tpc <SID-connection name> -tpp no_longer_used db_state
    or
        -d <SID-Database Name> -n <Database Server> -tpi <SID-system> -tpc <SID-connection name> -tpp no_longer_used info state
    5) Please also check, if you will get errors in /nsm49, using dbmrfc tool -> Execute
    6) You reported the error: dbm_getf_error - Meldungsnr. SADA001 above.
         Please run the tests in /nsm49, using dbmgetf tool:
    -d <SID-Database Name> -n <Database Server> -tpi <SID-system> -tpc <SID-connection name> -tpp no_longer_used -l
    < to review the list of the files ID => see if DBAHIST is listed >
    -d <SID-Database Name> -n <Database Server> -tpi <SID-system> -tpc <SID-connection name> -tpp no_longer_used -k DBAHIST DATE=20060907
    -d <SID-Database Name> -n <Database Server> -u control,<control> -k DBAHIST DATE=20060907
    7) Did you already open the OSS message, where you reported this problem?
    Thank you and best regards, Natalia Khlopina

  • Disable synchronization in Mail

    This request is probably the opposite of what everyone else wants, and that´s why I can´t find the answer anywhere.
    I have 2 macs using Mail, and with the 3 same e-mail accounts set up in both. I used to have POP mails, and a few weeks ago I changed to Imap. That´s when my "problems" started.
    If I open, read, delete etc. anything in Mail.app on one of the macs, the other one automatically updates what´s been going on. I want this feature disabled. My e-mails are for work, so if I read them at home, I want them to show as unread on the other mac when I go to work, so that I don´t forget which e-mail are new and not.
    Please help me out here if anybody knows how and why this suddenly happened!
    Thanks
    -Cathrine

    What you're describing is the nature of IMAP e-mail. All of your messages are stored on the IMAP server, and it is the "master copy." When you read a message with one computer, it gets marked as read on the server. When the other computers contact the IMAP server, they update themselves to reflect the status of the messages stored on the server. Also note that the same holds true for any messages that you delete. Once a message is deleted from the server, it will be deleted from all of your computers.
    This is very different from POP e-mail. POP does not provide any mechanisms for changing the status of a message on the POP server.
    There is, however, one big advantage to IMAP that you can use here. IMAP supports folders on the server for storing messages (POP does not). The default folder is the Inbox. You could create another folder (for example, "Reviewed"), and move messages to that folder after you read them. That way, anything you leave in the Inbox is still "waiting for me to act on it," while anything you have moved to the Reviewed folder is "already acted on." The messages in each folder will be automatically synchronized on all of your computers.
    After you first create the new folder, you might need to choose the "Synchronize All Accounts" option under the "Mail" menu on each computer, to make sure it knows about the new folder. You'll only need to do that once.

Maybe you are looking for

  • Does the third generation iPod Nano have allot of problems with it?

    I was wondering if you think that there is an unusual ammount of defective iPod nanos, or iPod nanos with problems. I know that forums are mainly a support page, so I'm only going to see posts about PROBLEMS with the iPod, but i wanted some opinions.

  • Can no longer send mail with Airport Extr

    I can no longer send e-mail with Mac Mail.This problem cropped up all of sudden this morning. The problem appears to be with my Airport Extreme.  If I bypass the router and go straight to the modem, I am able to send mail. After I connect the Extreme

  • Running my application from command prompt

    Hi im a student and kind of a rookie. My program runs fine from eclipse but when i run from command prompt it gives: Exception in thread "main" java.lang.MoClassDefFoundError: Mainclass This is what i am typing: java Mainclass. And i am sure i am in

  • Weblogic server 5.1 restarted automatically

    Hi, I am using weblogic 5.1 with SP 13. While accessing the pages, frequently it is throwing HTTP> Connection failure java.net.SocketException: Connection reset by peer      at weblogic.socket.NTSocketMuxer.processSockets(NTSocketMuxer.java, Compiled

  • Why pre-configured Solaris VM with 5 (!) virtual hard discs ?

    I downloaded the pre-configured Virtual Machine of Solaris Express Edition for VmWare and extracted it as described. Much to my surprise I found 5 (!) *.vmdks According to my knowledge these represent 5 independent virtual hard discs. Why this ? Can