Branch to URL identify session and record ID

Hi, I am trying to redirect page to itself after submission. I have created a branch which is conditional (request = UPDATE).
How so I identify a session ID and concatenate it with the URL?
Here is my URL "http://server:8081/apex/f?p=101:9:" + SESSION + "::NO::P9_RECORD_ID: " + :P9_RECORD_ID.
If you know a better way to redirect page to itself after submission please let me know.
Thanks
Robert

Robert,
No, not quite. If you don't set any page values in your branch, the page will load with whatever "default" values it has set up. If your page items are set to persist based on session state, then they'll stay the same...but most of the time, your items will be set to refresh themselves from the database. So you'll want to set the page_record_id field appropriately (I'm assuming that's the field that drives the data retrieval).
Does that help?
-David

Similar Messages

  • How to open a URL without session ID and reuse the current browser session?

    Hi All,
    I have a question about HTMLDB 2.0
    How to open a URL without session ID and reuse the current browser session?
    That was the behaviour in HTMLDB 1.6 ...
    My usecase for this is the following:
    We have written an issue tracking application, which sends e-mail to the interested users, when something happens.
    In these email we've put a link to some page, with some parameters in the URL.
    The idea is for the user to be easy to click on the hyperlink and to see the details of the ticket.
    When the user clicks on such a link he is directed to a login screen (page 101) and he enters his Username and password, and is then forwarded to the details for the ticket.
    Then he receives another email (e.g. for another ticked). He clicks on the link and :
    a) in HTMLDB 1.6 he goes to the details as he didn't close his browser and session is remembered
    b) in HTMLDB 2.0 he is prompted to enter username, password with the username populated
    Please tell me how can I achieve the same behaviour in HTMLDB2.0 as it was in HTMLDB 1.6.
    I understand this change is somehow security related, althogh I don't understand how. If you can explain this either I would be very happy?
    Best regards,
    Mihail Daskalov

    Mihail - I detailed a couple of approaches here: Re: Application Link
    Scott

  • I want to disable "restore previous session" and enable "History record" at the same time.

    I want to disable "restore previous session" and enable "History record" at the same time.
    Because I don't want others to access my account such as "Gmail", "Facebook". But I want firefox to record my browsing history.
    What should I do?

    I managed to remove the "Restore Previous Session" button from the home page by changing my default home page with this : www.google.com/firefox/ (the default home page from the previous versions of Firefox). It worked for me, I hope it works for you too.

  • Difference between redirect to url and branch to url?

    Hi,
    I have two buttons. the first is a button in region position, the second one is a button displayed among the region's items.
    For the first button I can enter a redirect to url, where I have entered a javascript call (javascript:my_function();)...and it works properly fine.
    Because that is not possible for the second button, I have created a branch to page or url, selected url as target and entered there the same javascript call like in the first button (javascript:my_function();) ... result: it opens a blank page and nothing more.
    So what is the different between the two calls, that the one is working and the other not.
    And the resulting question would be: how to I call my javascript function from the second button??? I have no possibility to enter it directly in the button attributes and branch is not working, what now and why do buttons displayed among region's items don't support the redirect to url or page option like buttons in region position???
    What I have found is that the second button has the following call when I enter for request my function: "javascript:doSubmit('javascript:run_radmin();');"
    The first buttons calls this: "javascript:run_radmin();"
    Can I change this anywhere(I've looked in template,but found nothing).
    Thanks for solutions and explanations.
    chrissy

    See
    Re: Button Item and JavaScript

  • Get username from session and retrieve records from database wit tat userna

    hello..
    i got a ChangePassword.jsp which i retrieve the username from session using bean to display on e page..
    <jsp:getProperty name="UsernamePassword" property = "username"/>
    but in my servlet, i wan to retrieve records from database with tat username..
    i tot of coding
    String username = (String)request.getSession().getAttribute("UsernamePassword");
    and then use tat username to retrieve records.. but is that e right way? The page did not display and i got a CastingException..
    Please help.

    If you are using the session inside a jsp, you can say "session" without having to declare it.String usernamePassword = (String) session.getAttribute("usernamePassword");However, right after you get this value, check if it is null:
    if(usernamePassword==null)
    // do sth like forward to error page
    else
    // continue processing
    If it is null, then you are probably not setting it right in the first place. Make sure that in your servlet A you create a session, and before you return or forward to a jsp, that you actually set this value in the session like saying
    session.setAttribute("usernamePassword", usernamePassword);
    and it is case sensitive for the key.

  • Generate a series of waveforms and record the data in a file

    System:
    Win7
    Labview 8.5 or 10 (can choose)
    PXI-1033 rack with:
    PXI-5421 AWG
    PXI-4071 DMM
    PXI-6542 Digital IO
    PXI-4110 DCPower
    PXI-5124 Digitizer
    I am working on a summer project to create a functional test system for four different types of PCBs. I will use a test rig as an interface to these PCBs, where each type will be identified by its position. Please see attached UML as to how I want the program to run.
    I want a user settings box pop up when the application is started, where the operator must enter his name and choose which type of board. Further, after entering these details, I want the application to start testing according to which type of board is in the system and which type the operator indicates (the user prompt for card details is just a precaution).
    I am trying to figure out what sort of architecture I should use for the LV part of it. So far I've managed to run the AWG and digitizer as two seperate VIs, but I've read a little bit about using the Producer/Consumer architecture, and want to know if this is a good idea? And which parts should be where? The AWG will input data to the PCB, which will be recorded by the digitizer and then testet using a mathscript and recorded to file.
    So I figure I have to use some sort of event and sequence structure. For example, I want to output two sinusoidal signals with different frequencies after each other and check the voltage amplitude of the scoped output signal and record this.
    If someone could point me in a direction of how to start, I would be very happy. After looking through some of the topics here, I have seen that it is often suggested to use the producer/consumer architecture, so before I do a lot of work which I might have to re-do I want to ask for help will post my solutions as I go.
    Attachments:
    uml.png ‏63 KB

    The LabVIEW large applications community should be able to give you all the info you need.  Check it out here.  Let us know if you need more info.
    This account is no longer active. Contact ShadesOfGray for current posts and information.

  • How do I monitor and record a MIDI instrument on Garageband?

    I may be missing something simple in Garageband setup. I want to monitor and record a drumkit via its MIDI output. It is a Yamaha DTXplorer so I have Subtlesoft Midipipe installed and a Focusrite Saffire 6 USB converter. Microphones and guitars are being monitored and recorded with without problem. When I connect the Focusrite to my Macbook air and drumkit the MIDI indicators are blank, no MIDI input detected by Garageband. Then I close GB and launch Midipipe, the MIDI input detected light on the Focusrite illuminates and GB detects one MIDI input (Saffire 6) in preferences window. But if I select new track/software instrument Saffire 6 input is grayed out and so cannot be selected (if I select the mic or guitar sources it is bold and can be selected). If I go ahead and create the software instrument there is no monitor button and nothing is heard or recorded.

    What is the best way to uninstall and reinstall the Focusrite MIDI interface driver. And to uninstall and reinstall the Subtlesoft Midipipe (which is required to get the correct mapping for a Yamaha drumkit)? This was done for me at the Apple Store One On One session in a prior attempt to fix this problem but obviously it did not work. I'd like to try it one more time with the drumkit connected. I did see a screen at one point which allowed me to select the inputs from the Focusrite but I could never find it again. I don't think it was a Garageband menu but somewhere else, maybe during the driver or software install for the Focusrite. I would love to get back to that screen again and take a hard look at it.

  • Web session and authentification session pb with wl6.0

    Hi,
    I am evaluating weblogic 6.0 on windows 2000.
    I have a little web application, with some URL (html, servlet...), I want to protect.
    So I defined a <security-constraint> element in my web.xml
    file, and I binded the logical roles with real participant in
    weblogic.xml
    It works very well at startup. I launch a browser, request a protected URL and the
    authentification window popup. I enter valid info and I can access my URL.
    Perfect.
    Now I want to give the possibility to my user to terminate a session, to disconmect,
    so I had a button, (disconnect) which invoque a servlet which get the current session
    and invalidate it.
    I checked, the session is destroyed and a new one is defined (new ID, new counter...),
    but my user are still connected. It means that if I want to acces a protected URL,
    I still can do it.
    more strange. In both a secured and unsecured page I print the User Principal. When
    I connect, the two pages print the same and right value.
    But if I disconnect, the unsecured page print null(no connection for this session)
    and the secured page print the principal I used to connect in the previous message.
    I know this message is a little bit long, but I tried to give the cleares context.
    Has anyone ancountered that kind of problem? Is there a solution.
    I pass the test with netscape 4.76, netscape 6.01, Internet Explorer 5.50. I got
    the same behavior each time...
    Thanks
    Nicolas

    If you use a Form to authenticate then the browser is unaware of the
    username and password. The PetStore demonstrates how it's done in
    ..\samples\petStore\source\com\bea\estore\util\WLSecurityAdapter.java
    "Nicolas GANDRIAU" <[email protected]> wrote in message
    news:[email protected]...
    >
    Hi John,
    thank you for your answer. It confirmed my first guess, that the
    browser keep the secret info and send them back to the server.
    The server does not make any attachment with the current session.
    But you talk about a "ServletAuthentication" example which presents theway to bind
    the login info in the session. I have not found this servlet, in weblogic6.0 distribution
    or J2EE API.
    Can you give me the exact reference of this servlet.
    Thank you for your help.
    Nicolas
    "John Lindwall" <[email protected]> wrote:
    Nicolas,
    It is my understanding that the authentication information for this
    scenario
    (ie HTTP BASIC authentication) is not contained in the session -- it is
    maintained by the browser and resent with every request. That is why
    invalidating the session makes no difference. If you have a HTTPsnooping
    utility you will see the "Authorization" information (albeit encodedusing
    BASE64) present in the requests from your browser to the server.
    FYI: I've noticed that by using the ServletAuthentication class tomanually
    perform authentication, it DOES in fact store the authentication info in
    the
    session. There is a "done()" method in this class which removes thisinfo
    from the session (ie performs a logout).
    If this link reproduces properly, check it out -- it's a good simple
    explanation of what's going on:
    http://www.support.lotus.com/sims2.nsf/852561c1006719a98525614100588964/877
    a
    0ac029a78f8a8525645f0069a34d?OpenDocument
    For tons of detail on BASIC authentication see
    ftp://ftp.isi.edu/in-notes/rfc2617.txt
    John
    Nicolas GANDRIAU <[email protected]> wrote in message
    news:[email protected]...
    Hi,
    I am evaluating weblogic 6.0 on windows 2000.
    I have a little web application, with some URL (html, servlet...), I
    want
    to protect.
    So I defined a <security-constraint> element in my web.xml
    file, and I binded the logical roles with real participant in
    weblogic.xml
    It works very well at startup. I launch a browser, request a protectedURL
    and the
    authentification window popup. I enter valid info and I can access myURL.
    Perfect.
    Now I want to give the possibility to my user to terminate a session,to
    disconmect,
    so I had a button, (disconnect) which invoque a servlet which get thecurrent session
    and invalidate it.
    I checked, the session is destroyed and a new one is defined (new ID,new
    counter...),
    but my user are still connected. It means that if I want to acces aprotected URL,
    I still can do it.
    more strange. In both a secured and unsecured page I print the UserPrincipal. When
    I connect, the two pages print the same and right value.
    But if I disconnect, the unsecured page print null(no connection for
    this
    session)
    and the secured page print the principal I used to connect in the
    previous
    message.
    I know this message is a little bit long, but I tried to give the
    cleares
    context.
    Has anyone ancountered that kind of problem? Is there a solution.
    I pass the test with netscape 4.76, netscape 6.01, Internet Explorer
    5.50.
    I got
    the same behavior each time...
    Thanks
    Nicolas

  • V$session and v$sqlarea

    Hi All,
    How can i join the v$session and v$sqlarea? I am trying to find out who has executed the sql statement or still executing the statement. I think without joining with v$session its not possible.
    Is there a way to get this information?
    And I am using Oracle 10g.
    Edited by: Ratna Bikram on Sep 25, 2010 11:45 PM

    Ratna Bikram wrote:
    Hi All,
    How can i join the v$session and v$sqlarea? I am trying to find out who has executed the sql statement or still executing the statement. I think without joining with v$session its not possible.
    Is there a way to get this information?
    And I am using Oracle 10g.
    Edited by: Ratna Bikram on Sep 25, 2010 11:45 PMhttp://download.oracle.com/docs/cd/B19306_01/server.102/b14237/dynviews_2088.htm#REFRN30223
    SQL_ADDRESS      RAW(4 | 8)      Used with SQL_HASH_VALUE to identify the SQL statement that is currently being executed
    SQL_HASH_VALUE      NUMBER      Used with SQL_ADDRESS to identify the SQL statement that is currently being executed
    SQL_ID      VARCHAR2(13)      SQL identifier of the SQL statement that is currently being executed
    SQL_CHILD_NUMBER      NUMBER      Child number of the SQL statement that is currently being executedFrom V$SESSION will map into the column in V$SQLAREA. There they will lose the SQL_ prefix (so HASH_VALUE and ADDRESS), but SQL_ID stays the same.

  • Sticky sessions and Load Balancing in WL Clusters

    We are using iPlanet Web Server 4.1 with WebLogic App Server; and would like
    to implement load balancing with sticky sessions and in-memory state
    replication.
    The documentation in Weblogic says that -
    When using in-memory state replication, your WebLogic Server Cluster must
    live behind one or more proxy servers. The proxy servers are smart enough to
    send servlet requests, belonging to the same HTTP session, back to the same
    server in the cluster that holds the session data.
    (Ref: http://www.weblogic.com/docs51/cluster/setup.html)
    Does this mean that the sticky session configuration has to be done on the
    iPlanet Web Server itself ?
    Also, if WebLogic is used as the Web server, does WebLogic provide any
    support for sticky sessions?
    Any help, suggestions or links to useful info are welcome.
    Regards,
    Milind.

    Mike,
    im curious as to why you would recomend using weblogic as a web server in 6.1?
    I would not for the following reasons:
    - it costs 10x more per cpu list
    - it doesnt support hardware accell cards (afaik, please let me know if this has
    changed)
    iplanet is really good a serving up static html and gif's, especially in ssl if you
    have a hardware accell card. So if you have a site with lots of graphics and you use
    ssl a lot, I think its still a better solution.
    -Joel
    Mike Reiche wrote:
    You get sticky round-robin by default.
    You need to have session tracking turned on (i think it is on by default). You
    need to have the WL plugin configured in iPlanet.
    When WL creates an httpSession, it writes a cookie (or rewrites the URL) back
    to the browser. On subsequent requests, the browser sends the cookie and iPlanet
    plug-in directs the request to the correct WL instance based on the ip address
    of the WL server embedded in the cookie.
    If you are using WLS 6.1, I would recommend using it as a web server (and not
    using iPlanet). I imagine that it supports stickly load balancing as well.
    Mike
    Joel Nylund <[email protected]> wrote:
    you get round robin by default, if you want a different scheme you can
    use one
    of the other 3 options (weight, random or parameter).
    -Joel
    I think weight can be set in weblogic properties. I havent used any other
    than
    round robin.
    Milind Prabhu wrote:
    We are using iPlanet Web Server 4.1 with WebLogic App Server; and wouldlike
    to implement load balancing with sticky sessions and in-memory state
    replication.
    The documentation in Weblogic says that -
    When using in-memory state replication, your WebLogic Server Clustermust
    live behind one or more proxy servers. The proxy servers are smartenough to
    send servlet requests, belonging to the same HTTP session, back tothe same
    server in the cluster that holds the session data.
    (Ref: http://www.weblogic.com/docs51/cluster/setup.html)
    Does this mean that the sticky session configuration has to be doneon the
    iPlanet Web Server itself ?
    Also, if WebLogic is used as the Web server, does WebLogic provideany
    support for sticky sessions?
    Any help, suggestions or links to useful info are welcome.
    Regards,
    Milind.

  • Toplink session and UnitOfWork synchronization problem

    Dear forum readers,
    I am not sure i fully understand the way how toplink deals with caching. To me it seems, that i got some pretty scary results, which i am not sure how to interpret and to work around them.
    The following code snippet is part of a unit test:
    >>>>>>>>>>>> snip >>>>>>>>>>>>>>>
    1 public void test2() {
    2
    3 UnitOfWork uow = (UnitOfWork) SessionManager.getSessionManager().getSession().getUnitOfWork();
    4 Justitiabele justitiabele = findJustitiabele("findById", Justitiabele.class, new Long(551));
    5 ((JustitiabeleIdentiteit) justitiabele.getJustitiabeleIdentiteiten().iterator().next()).setMeisjesnaam("Kettner10");
    6 Justitiabele tmp = (Justitiabele) uow.registerObject(justitiabele);
    7 ((JustitiabeleIdentiteit) tmp.getJustitiabeleIdentiteiten().iterator().next()).setMeisjesnaam("Kettner10");
    8 uow.commitAndResume();
    9 }
    10
    11 public Justitiabele findJustitiabele(String queryName, Class objectClass, Object param) {
    12      SessionWrapper toplinkSessionWrapper = getSession();
    13      toplinkSessionWrapper.getClientSession().executeQuery(queryName, objectClass, param);
    14 }
    >>>>>>>>>>>>>>>> snip <<<<<<<<<<<<<<<<
    I am querying a particular object (line 4). Then i make some changes to that object (line 5). Cause the object is not registered in the UnitOfWork these changes shouldn't be persisted. So far so good. To achieve persistency i now register the object, and i make the same modifications to the toplink clone, expecting them after the commit to be persisted in the database.
    Contrary to my expectations, the changes were not persisted!!!
    Deleting line 5 (the modifications, before registering the object), leads to the desired result.
    Somehow the queried object seems to be a direct reference to the (client-) session cache. So when registering the object in the UnitOfWork, the (already modified) backupclone is copied from the session cache to the UnitOfWork. If the same changes are done to the working clone,there are no differences between backup- and working clone and no changes are made in the database.
    It gets even better: I tried to query the object again (before line 6) (even with a different UnitOfWork) before modifying it, in order to retrieve the original state of the object, but again i only was able to find the modified object.
    If the queried object indeed is a reference to some cache, i cannot understand, why that cache is not read only!!!
    Am i doing something wrong ?
    Is there a way to work around this problem?
    What are the consequences for transaction handling ? What about Isolation, when clients can see each others changes in a kind of writeable shared session???
    I try to work around that problem by registering every object, that is queried from the database in the UnitOfWork right after it was queried. This seems to me the only solution, though this is contrary to what the toplink developers guide says, namely, that only objects which are modified should be registered, due to performance reasons.
    I would be grateful to any help in understanding and working around this problem.
    Martin
    PS: Here's the log i got by running the test.:
    STDOUT >>>>>>>>>>>>>>>>>>>>>>>>>>>>
    C:\devtools\jdev\905\jdk\bin\javaw.exe -ojvm -classpath C:\ToplinkDemo\ToplinkDomein\classes;C:\ToplinkDemo\ToplinkDomein\classes\META-INF\ToplinkDomein;C:\devtools\jdev\905\toplink\jlib\source.jar;C:\devtools\jdev\905\lib\xmlparserv2.jar;C:\devtools\jdev\905\lib\xmlcomp.jar;C:\devtools\jdev\905\jdbc\lib\classes12.jar;C:\devtools\jdev\905\jdbc\lib\nls_charset12.jar;C:\devtools\jdev\905\toplink\jlib\toplink.jar org.dji.br.bl.domein.TestMain
    ServerSession(91)--Connection(92)--TopLink, version: OracleAS TopLink - 10g (9.0.4) (Build 031126)
    ServerSession(91)--Connection(92)--connecting session: djisession
    ServerSession(91)--Connection(92)--connecting(DatabaseLogin(
         platform=>Oracle9Platform
         user name=> "dji"
         datasource URL=> "jdbc:oracle:thin:@S-ORACLE01:1521:djipoc"
    ServerSession(91)--Connection(92)--Connected: jdbc:oracle:thin:@S-ORACLE01:1521:djipoc
         User: DJI
         Database: Oracle Version: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.4.0 - Production
         Driver: Oracle JDBC driver Version: 9.0.1.5.0
    ServerSession(91)--Connection(101)--TopLink, version: OracleAS TopLink - 10g (9.0.4) (Build 031126)
    ServerSession(91)--Connection(101)--connecting session: djisession
    ServerSession(91)--Connection(101)--connecting(DatabaseLogin(
         platform=>Oracle9Platform
         user name=> "dji"
         datasource URL=> "jdbc:oracle:thin:@S-ORACLE01:1521:djipoc"
    ServerSession(91)--Connection(101)--Connected: jdbc:oracle:thin:@S-ORACLE01:1521:djipoc
         User: DJI
         Database: Oracle Version: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.4.0 - Production
         Driver: Oracle JDBC driver Version: 9.0.1.5.0
    ServerSession(91)--Connection(103)--TopLink, version: OracleAS TopLink - 10g (9.0.4) (Build 031126)
    ServerSession(91)--Connection(103)--connecting session: djisession
    ServerSession(91)--Connection(103)--connecting(DatabaseLogin(
         platform=>Oracle9Platform
         user name=> "dji"
         datasource URL=> "jdbc:oracle:thin:@S-ORACLE01:1521:djipoc"
    ServerSession(91)--Connection(103)--Connected: jdbc:oracle:thin:@S-ORACLE01:1521:djipoc
         User: DJI
         Database: Oracle Version: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.4.0 - Production
         Driver: Oracle JDBC driver Version: 9.0.1.5.0
    ServerSession(91)--Connection(105)--TopLink, version: OracleAS TopLink - 10g (9.0.4) (Build 031126)
    ServerSession(91)--Connection(105)--connecting session: djisession
    ServerSession(91)--Connection(105)--connecting(DatabaseLogin(
         platform=>Oracle9Platform
         user name=> "dji"
         datasource URL=> "jdbc:oracle:thin:@S-ORACLE01:1521:djipoc"
    ServerSession(91)--Connection(105)--Connected: jdbc:oracle:thin:@S-ORACLE01:1521:djipoc
         User: DJI
         Database: Oracle Version: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.4.0 - Production
         Driver: Oracle JDBC driver Version: 9.0.1.5.0
    ServerSession(91)--Connection(107)--TopLink, version: OracleAS TopLink - 10g (9.0.4) (Build 031126)
    ServerSession(91)--Connection(107)--connecting session: djisession
    ServerSession(91)--Connection(107)--connecting(DatabaseLogin(
         platform=>Oracle9Platform
         user name=> "dji"
         datasource URL=> "jdbc:oracle:thin:@S-ORACLE01:1521:djipoc"
    ServerSession(91)--Connection(107)--Connected: jdbc:oracle:thin:@S-ORACLE01:1521:djipoc
         User: DJI
         Database: Oracle Version: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.4.0 - Production
         Driver: Oracle JDBC driver Version: 9.0.1.5.0
    ServerSession(91)--Connection(109)--TopLink, version: OracleAS TopLink - 10g (9.0.4) (Build 031126)
    ServerSession(91)--Connection(109)--connecting session: djisession
    ServerSession(91)--Connection(109)--connecting(DatabaseLogin(
         platform=>Oracle9Platform
         user name=> "dji"
         datasource URL=> "jdbc:oracle:thin:@S-ORACLE01:1521:djipoc"
    ServerSession(91)--Connection(109)--Connected: jdbc:oracle:thin:@S-ORACLE01:1521:djipoc
         User: DJI
         Database: Oracle Version: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.4.0 - Production
         Driver: Oracle JDBC driver Version: 9.0.1.5.0
    ServerSession(91)--Connection(111)--TopLink, version: OracleAS TopLink - 10g (9.0.4) (Build 031126)
    ServerSession(91)--Connection(111)--connecting session: djisession
    ServerSession(91)--Connection(111)--connecting(DatabaseLogin(
         platform=>Oracle9Platform
         user name=> "dji"
         datasource URL=> "jdbc:oracle:thin:@S-ORACLE01:1521:djipoc"
    ServerSession(91)--Connection(111)--Connected: jdbc:oracle:thin:@S-ORACLE01:1521:djipoc
         User: DJI
         Database: Oracle Version: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.4.0 - Production
         Driver: Oracle JDBC driver Version: 9.0.1.5.0
    ServerSession(91)--sequencing connected, state is ForcedToUseWriteAccessor_State
    ServerSession(91)--client acquired
    ClientSession(114)--acquire unit of work: 113
    ClientSession(114)--Execute query ReadObjectQuery(org.dji.br.bl.domein.justitiabele.Justitiabele)
    ServerSession(91)--Connection(101)--SELECT DJI_NUMMER FROM DJI.JUSTITIABELEN WHERE (DJI_NUMMER = 551)
    ServerSession(91)--Execute query ReadAllQuery(org.dji.br.bl.domein.justitiabele.JustitiabeleIdentiteit)
    ServerSession(91)--Connection(92)--SELECT INDICATIE_NONAMER, ACHTERNAAM, BRN_CODE, MEISJESNAAM, ID, ROEPNAAM, GEBOORTEPLAATS_BUITENLAND, TITEL_BUITENLAND, VOORNAAM, VOORLETTERS, JBE_DJI_NUMMER, DATUM_INGANG, DATUM_EINDE FROM DJI.JUSTITIABELEIDENTITEITEN WHERE (JBE_DJI_NUMMER = 551)
    ServerSession(91)--Execute query ReadObjectQuery(org.dji.br.bl.domein.justitiabele.Justitiabele)
    UnitOfWork(113)--Register the object org.dji.br.bl.domein.justitiabele.Justitiabele@82
    UnitOfWork(113)--Register the existing object org.dji.br.bl.domein.justitiabele.JustitiabeleIdentiteit@84
    UnitOfWork(113)--Register the existing object org.dji.br.bl.domein.justitiabele.Justitiabele@82
    UnitOfWork(113)--begin unit of work commit
    ClientSession(114)--Connection(103)--begin transaction
    UnitOfWork(113)--Execute query WriteObjectQuery(org.dji.br.bl.domein.justitiabele.Justitiabele@83)
    UnitOfWork(113)--Execute query WriteObjectQuery(org.dji.br.bl.domein.justitiabele.JustitiabeleIdentiteit@85)
    ClientSession(114)--Connection(103)--commit transaction
    UnitOfWork(113)--end unit of work commit
    UnitOfWork(113)--resume unit of work
    Process exited with exit code 0.

    Mark,
    The object returned from any query on the sessions is the object from the shared cache. Any changes made to this will change the shared cache.
    You must acquire a UnitOfWork and register the cached object into the UnitOfWork in order to get an isolated copy that can be modified within a transactional context (UnitOfWork) without other threads seeing these transient changes. The typical approach is to read through the session and register objects involved in a change prior to modifications.
    The is a UnitOfWork paper available on TopLink technical information page that may be useful to you:
    http://www.oracle.com/technology/products/ias/toplink/technical/index.html
    Doug

  • How bapi different from session and call transaction?

    how bapi different from session and call transaction?
    thanks in advance.

    For one, Batch Data Communication (BDC) is older. Business Application Programming Interface (BAPI) came later, about 10 years ago (you can see this already from the name, which contains marketese like "business" ).
    More important though, they are different technologies. With BDC you build the "batch input transaction" yourself, with an ABAP program which creates the "batch input session" ("Batch-Input-Mappe" in german). You then take that session, like an object, and "run" it on a system (most of the time, this is done on a local system by the administrators, after it has been tested for correctness).
    With BAPI, a system (local or remote) exposes its interface to you through some kind of Remote Function Call (RFC). Practically, it tells you: "What do you want to do? Insert that data into Materials Management? Here is the function and the the parameters you have to use for each record". You only work with the Interface - the exposed function. How this function works does not have to interest you. You don't have sessions to "run", you fire your function calls filled with data, one after another and you're done.
    BAPI can be run remotely. With BDC, you probably have to call the administrators of the remote system and send them the session you created for them to run. With BDC you go through the whole transaction in one BDC session, with BAPI you may need more than one "BAPI calls" to do this.
    With BAPI you don't fill obcure field names with values, you just fill the parameters. You can use a BAPI from inside your ABAP program to let a "business object" do some clearly defined work for you, then you can continue with your code doing other things. You don't do this with BDC. With BDC you write a dedicated program that creates the "session", which is then executed separately.
    Batch Data Communication (BDC) is the oldest batch interfacing technique that SAP provided since the early versions of R/3. BDC is not a
    typical integration tool, in the sense that, it can be only be used for uploading data into R/3 and so it is not bi-directional.
    BDC works on the principle of simulating user input for transactional screen, via an ABAP program. Typically the input comes in the form of a flat file. The ABAP program reads this file and formats the input data screen by screen into an internal table (BDCDATA). The transaction is then started using this internal table as the input and executed in the background.
    In Call Transaction, the transactions are triggered at the time of processing itself and so the ABAP program must do the error handling.
    It can also be used for real-time interfaces and custom error handling & logging features. Whereas in Batch Input Sessions, the ABAP
    program creates a session with all the transactional data, and this session can be viewed, scheduled and processed (using Transaction SM35) at a later time. The latter technique has a built-in error processing mechanism too.
    Batch Input (BI) programs still use the classical BDC approach but doesnt require an ABAP program to be written to format the
    BDCDATA. The user has to format the data using predefined structures and store it in a flat file. The BI program then reads this and
    invokes the transaction mentioned in the header record of the file.
    Direct Input (DI) programs work exactly similar to BI programs. But the only difference is, instead of processing screens they validate
    fields and directly load the data into tables using standard function modules. For this reason, DI programs are much faster (RMDATIND - Material Master DI program works at least 5 times faster) than the BDC counterpart and so ideally suited for loading large volume data. DI programs are
    not available for all application areas.
    Business Add-In (BADI) are a new SAP enhancement technique based on ABAP Objects.
    They can be inserted into the SAP System to accommodate user requirements too specific to be included in the standard delivery. Since specific industries often require special functions, SAP allows you to predefine these points in your software.
    As with customer exits two different views are available:
    In the definition view, an application programmer predefines exit points in a source that allow specific industry sectors, partners, and customers to attach additional software to standard SAP source code without having to modify the original object.
    In the implementation view, the users of Business Add-Ins can customize the logic they need or use a standard logic if one is available.
    In contrast to customer exits, Business Add-Ins no longer assume a two-level infrastructure (SAP and customer solutions), but instead allow for a multi-level system landscape (SAP, partner, and customer solutions, as well as country versions, industry solutions, and the like). Definitions and implementations of Business Add-Ins can be created at each level within such a system infrastructure.

  • Common feature bw session and call transaction

    Can anybody tell me what are the common features between session and call tansaction methods?
    Regards,
    pandu

    Hi Siva,
    If u r using session method then u can see the records which are not updated in SM37 and when using call transaction method then in code u have to do the modification as :
    data : iatb like bdcmsgcol,
    Loop at itab.
    Write : itab-msgty, itab-messg1.
    endloop.
    those having msgty as S are success and those having E are the records not updated.
    Regards
    naveen gupta
    PS: Reward Points if Helpfull.

  • How can we correct and process errorrecords in session and call transaction

    hai all
    how ca we correct and process error records  in session and call transaction method . tell me with coding.
    Edited by: swamy katta on May 14, 2008 10:25 AM
    Edited by: swamy katta on May 14, 2008 10:26 AM
    Edited by: swamy katta on May 14, 2008 10:27 AM

    hi,
    Check out the below sample code ...Here are the records are getting posting with call transaction method and a session is getting created with erroreneous records....
    REPORT  ztest_report
    NO STANDARD PAGE HEADING
                            LINE-SIZE 255
                            MESSAGE-ID ZRASH.
    *                 Internal Table Declarations                          *
    *--Internal Table for Data Uploading.
    DATA : BEGIN OF IT_FFCUST OCCURS 0,
             KUNNR(10),
             BUKRS(4),
             KTOKD(4),
             ANRED(15),
             NAME1(35),
             SORTL(10),
             STRAS(35),
             ORT01(35),
             PSTLZ(10),
             LAND1(3),
             SPRAS(2),
             AKONT(10),
           END OF IT_FFCUST.
    *--Internal Table to Store Error Records.
    DATA : BEGIN OF IT_ERRCUST OCCURS 0,
             KUNNR(10),
             EMSG(255),
           END OF IT_ERRCUST.
    *--Internal Table to Store Successful Records.
    DATA : BEGIN OF IT_SUCCUST OCCURS 0,
             KUNNR(10),
             SMSG(255),
           END OF IT_SUCCUST.
    *--Internal Table for Storing the BDC data.
    DATA : IT_CUSTBDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
    *--Internal Table for storing the messages.
    DATA : IT_CUSTMSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    DATA : V_FLAG1(1) VALUE ' ',
    "Flag used for opening session.
           V_TLINES LIKE SY-TABIX,
           "For storing total records processed.
           V_ELINES LIKE SY-TABIX,
           "For storing the no of error records.
           V_SLINES LIKE SY-TABIX.
           "For storing the no of success records.
    *          Selection screen                                            *
    SELECTION-SCREEN BEGIN OF BLOCK B1.
    PARAMETERS : V_FNAME LIKE RLGRAP-FILENAME,
                 V_SESNAM  LIKE RLGRAP-FILENAME.
    SELECTION-SCREEN END OF BLOCK B1.
    *          Start-of-selection                                          *
    START-OF-SELECTION.
    *-- Form to upload flatfile data into the internal table.
      PERFORM FORM_UPLOADFF.
    *        TOP-OF-PAGE                                                   *
    TOP-OF-PAGE.
      WRITE:/ 'Details of the error and success records for the transaction'
      ULINE.
      SKIP.
    *          End of Selection                                            *
    END-OF-SELECTION.
    *-- Form to Generate a BDC from the Uploaded Internal table
      PERFORM FORM_BDCGENERATE.
    *--To write the totals and the session name.
      PERFORM FORM_WRITEOP.
    *&      Form  form_uploadff
    *     Form to upload flatfile data into the internal table.
    FORM FORM_UPLOADFF .
    *--Variable to change the type of the parameter file name.
      DATA : LV_FILE TYPE STRING.
      LV_FILE = V_FNAME.
    *--Function to upload the flat file to the internal table.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          FILENAME                      =  LV_FILE
    *     FILETYPE                      = 'ASC'
          HAS_FIELD_SEPARATOR           = 'X'
    *     HEADER_LENGTH                 = 0
    *     READ_BY_LINE                  = 'X'
    *     DAT_MODE                      = ' '
    *   IMPORTING
    *     FILELENGTH                    =
    *     HEADER                        =
        TABLES
          DATA_TAB                      = IT_FFCUST
        EXCEPTIONS
          FILE_OPEN_ERROR               = 1
          FILE_READ_ERROR               = 2
          NO_BATCH                      = 3
          GUI_REFUSE_FILETRANSFER       = 4
          INVALID_TYPE                  = 5
          NO_AUTHORITY                  = 6
          UNKNOWN_ERROR                 = 7
          BAD_DATA_FORMAT               = 8
          HEADER_NOT_ALLOWED            = 9
          SEPARATOR_NOT_ALLOWED         = 10
          HEADER_TOO_LONG               = 11
          UNKNOWN_DP_ERROR              = 12
          ACCESS_DENIED                 = 13
          DP_OUT_OF_MEMORY              = 14
          DISK_FULL                     = 15
          DP_TIMEOUT                    = 16
          OTHERS                        = 17
      IF SY-SUBRC = 0.
    *--Deleting the headings from the internal table.
        DELETE IT_FFCUST INDEX 1.
    *--Getting the total number of records uploaded.
        DESCRIBE TABLE IT_FFCUST LINES V_TLINES.
      ENDIF.
    ENDFORM.                    " form_uploadff
    *&      Form  Form_bdcgenerate
    *     Form to Generate a BDC from the Uploaded Internal table
    FORM FORM_BDCGENERATE .
    *--Generating the BDC table for the fields of the internal table.
      LOOP AT IT_FFCUST.
        PERFORM POPULATEBDC USING :
                                    'X' 'SAPMF02D' '0105',
                                    ' ' 'BDC_OKCODE'  '/00' ,
                                    ' ' 'RF02D-KUNNR' IT_FFCUST-KUNNR,
                                    ' ' 'RF02D-BUKRS' IT_FFCUST-BUKRS,
                                    ' ' 'RF02D-KTOKD' IT_FFCUST-KTOKD,
                                    'X' 'SAPMF02D' '0110' ,
                                    ' ' 'BDC_OKCODE'  '/00',
                                    ' ' 'KNA1-ANRED'  IT_FFCUST-ANRED,
                                    ' ' 'KNA1-NAME1' IT_FFCUST-NAME1,
                                    ' ' 'KNA1-SORTL'  IT_FFCUST-SORTL,
                                    ' ' 'KNA1-STRAS' IT_FFCUST-STRAS,
                                    ' ' 'KNA1-ORT01' IT_FFCUST-ORT01,
                                    ' ' 'KNA1-PSTLZ' IT_FFCUST-PSTLZ,
                                    ' ' 'KNA1-LAND1' IT_FFCUST-LAND1,
                                    ' ' 'KNA1-SPRAS' IT_FFCUST-SPRAS,
                                    'X' 'SAPMFO2D' '0120',     
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0125',     
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0130',     
                                    ' ' 'BDC_OKCODE'  '=ENTR',
                                    'X' 'SAPMF02D' '0340',     
                                    ' ' 'BDC_OKCODE'  '=ENTR',
                                    'X' 'SAPMF02D' '0360',
                                    ' ' 'BDC_OKCODE'  '=ENTR',
                                    'X' 'SAPMF02D' '0210',     
                                    ' ' 'KNB1-AKONT'  IT_FFCUST-AKONT,
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0215',
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0220',     
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0230',     
                                    ' ' 'BDC_OKCODE'  '=UPDA'.
    *--Calling the transaction 'fd01'.
        CALL TRANSACTION 'FD01' USING IT_CUSTBDC MODE 'N' UPDATE 'S'
        MESSAGES INTO IT_CUSTMSG.
        IF SY-SUBRC <> 0.
    *--Populating the error records internal table.
          IT_ERRCUST-KUNNR = IT_FFCUST-KUNNR.
          APPEND IT_ERRCUST.
          CLEAR IT_ERRCUST.
    *--Opening a session if there is an error record.
          IF V_FLAG1 = ' '.
            PERFORM FORM_OPENSESSION.
            V_FLAG1 = 'X'.
          ENDIF.
    *--Inserting the error records into already open session.
          IF V_FLAG1 = 'X'.
            PERFORM FORM_INSERT.
          ENDIF.
    *--Populating the Success records internal table.
        ELSE.
          IT_SUCCUST-KUNNR = IT_FFCUST-KUNNR.
          APPEND IT_SUCCUST.
          CLEAR IT_SUCCUST.
        ENDIF.
    *--Displaying the messages.
        IF NOT IT_CUSTMSG[] IS INITIAL.
          PERFORM FORM_FORMATMSG.
        ENDIF.
    *--Clearing the message and bdc tables.
        CLEAR : IT_CUSTBDC[],IT_CUSTMSG[].
      ENDLOOP.
    *--Getting the total no of error records.
      DESCRIBE TABLE IT_ERRCUST LINES V_ELINES.
    *--Getting the total no of successful records.
      DESCRIBE TABLE IT_SUCCUST LINES V_SLINES.
    *--Closing the session only if it is open.
      IF V_FLAG1 = 'X'.
        PERFORM FORM_CLOSESESS.
      ENDIF.
    ENDFORM.                    " Form_bdcgenerate
    *&      Form  populatebdc
    *       FOrm to Populate the BDC table.
    FORM POPULATEBDC  USING    VALUE(P_0178)
                               VALUE(P_0179)
                               VALUE(P_0180).
      IF P_0178 = 'X'.
        IT_CUSTBDC-PROGRAM = P_0179.
        IT_CUSTBDC-DYNPRO = P_0180.
        IT_CUSTBDC-DYNBEGIN = 'X'.
      ELSE.
        IT_CUSTBDC-FNAM = P_0179.
        IT_CUSTBDC-FVAL = P_0180.
      ENDIF.
      APPEND IT_CUSTBDC.
      CLEAR IT_CUSTBDC.
    ENDFORM.                    " populatebdc
    *&      Form  FORM_OPENSESSION
    *       Form to Open a session.
    FORM FORM_OPENSESSION .
    *--Variable to convert the given session name into reqd type.
      DATA : LV_SESNAM(12).
      LV_SESNAM = V_SESNAM.
    *--Opening a session.
      CALL FUNCTION 'BDC_OPEN_GROUP'
       EXPORTING
         CLIENT                    = SY-MANDT
         GROUP                     = LV_SESNAM
         HOLDDATE                  = '20040805'
         KEEP                      = 'X'
         USER                      = SY-UNAME
         PROG                      = SY-CPROG
    *  IMPORTING
    *    QID                       =
       EXCEPTIONS
         CLIENT_INVALID            = 1
         DESTINATION_INVALID       = 2
         GROUP_INVALID             = 3
         GROUP_IS_LOCKED           = 4
         HOLDDATE_INVALID          = 5
         INTERNAL_ERROR            = 6
         QUEUE_ERROR               = 7
         RUNNING                   = 8
         SYSTEM_LOCK_ERROR         = 9
         USER_INVALID              = 10
         OTHERS                    = 11
      IF SY-SUBRC <> 0.
        WRITE :/ 'Session not open'.
      ENDIF.
    ENDFORM.                    " FORM_OPENSESSION
    *&      Form  FORM_INSERT
    *       fORM TO INSERT ERROR RECOED INTO A SESSION.
    FORM FORM_INSERT .
    *--Inserting the record into session.
      CALL FUNCTION 'BDC_INSERT'
        EXPORTING
          TCODE                  = 'FD01'
    *     POST_LOCAL             = NOVBLOCAL
    *     PRINTING               = NOPRINT
    *     SIMUBATCH              = ' '
    *     CTUPARAMS              = ' '
        TABLES
          DYNPROTAB              = IT_CUSTBDC
        EXCEPTIONS
          INTERNAL_ERROR         = 1
          NOT_OPEN               = 2
          QUEUE_ERROR            = 3
          TCODE_INVALID          = 4
          PRINTING_INVALID       = 5
          POSTING_INVALID        = 6
          OTHERS                 = 7
      IF SY-SUBRC <> 0.
        WRITE :/ 'Unable to insert the record'.
      ENDIF.
    ENDFORM.                    " FORM_INSERT
    *&      Form  FORM_CLOSESESS
    *       Form to Close the Open Session.
    FORM FORM_CLOSESESS .
      CALL FUNCTION 'BDC_CLOSE_GROUP'
        EXCEPTIONS
          NOT_OPEN    = 1
          QUEUE_ERROR = 2
          OTHERS      = 3.
      IF SY-SUBRC <> 0.
      ENDIF.
    ENDFORM.                    " FORM_CLOSESESS
    *&      Form  FORM_FORMATMSG
    *       Form to format messages.
    FORM FORM_FORMATMSG .
    *--Var to store the formatted msg.
      DATA : LV_MSG(255).
      CALL FUNCTION 'FORMAT_MESSAGE'
        EXPORTING
          ID        = SY-MSGID
          LANG      = SY-LANGU
          NO        = SY-MSGNO
          V1        = SY-MSGV1
          V2        = SY-MSGV2
          V3        = SY-MSGV3
          V4        = SY-MSGV4
        IMPORTING
          MSG       = LV_MSG
        EXCEPTIONS
          NOT_FOUND = 1
          OTHERS    = 2.
      IF SY-SUBRC = 0.
        WRITE :/ LV_MSG.
      ENDIF.
      ULINE.
    ENDFORM.                    " FORM_FORMATMSG
    *&      Form  form_writeop
    *       To write the totals and the session name.
    FORM FORM_WRITEOP .
      WRITE :/ 'Total Records Uploaded :',V_TLINES,
               / 'No of Error Records :',V_ELINES,
               / 'No of Success Records :',V_SLINES,
               / 'Name of the Session :',V_SESNAM.
      ULINE.
    ENDFORM.                    " form_writeop
    *  if routeindicator is initial.
    *   LOOP AT IT_YMMEE00090.
    *      LV_LENGTH = STRLEN( IT_YMMEE00090-CHANGETYPE ).
    *      IF SY-TABIX = '1'.
    *        IF  IT_YMMEE00090-CHANGETYPE = 'B' AND LV_LENGTH = 1.
    *          ROUTEINDICATOR = 'S'.
    *        ELSEIF IT_YMMEE00090-CHANGETYPE = 'R' AND LV_LENGTH = 1.
    *          ROUTEINDICATOR = 'S'.
    *        ELSEIF IT_YMMEE00090-CHANGETYPE = 'S' AND LV_LENGTH = 1.
    *          ROUTEINDICATOR = 'S'.
    *        ELSEIF IT_YMMEE00090-CHANGETYPE CA 'BRSCD' AND LV_LENGTH GT 1
    *                                          AND LV_LENGTH LE 5.
    *          ROUTEINDICATOR = 'S'.
    *        ENDIF.
    *      ELSE.
    *        IF  IT_YMMEE00090-CHANGETYPE = 'B' AND LV_LENGTH = 1 AND
    *                                         ROUTEINDICATOR = 'S'.
    *          ROUTEINDICATOR = 'S'.
    *        ELSEIF IT_YMMEE00090-CHANGETYPE = 'R' AND LV_LENGTH = 1 AND
    *                                         ROUTEINDICATOR = 'S'.
    *          ROUTEINDICATOR = 'S'.
    *        ELSEIF IT_YMMEE00090-CHANGETYPE = 'S' AND LV_LENGTH = 1 AND
    *                                         ROUTEINDICATOR = 'S'.
    *          ROUTEINDICATOR = 'S'.
    *        ELSEIF IT_YMMEE00090-CHANGETYPE CA 'BRSCD' AND LV_LENGTH GT 1
    *                  AND LV_LENGTH LE 5 AND ROUTEINDICATOR = 'S'.
    *          ROUTEINDICATOR = 'S'.
    *        ENDIF.
    *      ENDIF.
    *  ENDLOOP.
    * endif.

  • SAP BO Report Execution time and Record count

    Hi All,
    We have a requirement to set the limits on report execution time and record count centrally. Can you please help me to identify where exactly we have to define the settings in CMC for BO4.
    Thanks in advance,
    Shalini

    Hi Shalini,
    Please follow these steps, also check in for any more details if any;
    Step 1: Launch CMC
    Step 2: Select Servers
    Step 3: Select Web Intelligence processing Server, right click and Goto Properties
    Step 4: Maximum List Of Values Size (entries) default value is 50000.
    Step 5: Increase this value if your "LOVS" greater than this value.
    Step 6: Save and close.
    Step 7: Restart the server.
    Hope this helps.
    - Ram

Maybe you are looking for

  • Cost centre without business area

    Hi All, I have document splitting with business area and profit centre mandatory, along with this i have configured business area wise FSV in OBY6. We have  configured 10 business areas and 5 profit centres, but i have  created cost centres without b

  • When i try to open itunes i get a message saying itunes is on a locked disk

    i cannot open itunes when i try i get a warning message saying that "the folder "Itunes" is on a locked disk or you do not have permission for this folder" whats the problem???

  • JDeveloper and Subversion - Cannot Connect To Repository

    Using JDeveloper 11.1.1.6. I have a Subversion repository set up on a server that I can connect to from my local machine using the appropriate URL. When I attempt to set up the repository connection in JDev, I get a "Connection Refused" error. I am u

  • Laptop keyboard giving wrong characters

    Hi there, I am having HP pavillion DV 2760 en since early 2008 and facing these days a very unique problem. when I press ASDFJKL:" and ENTER keys they print another charater of lower string by pressing of single key. like charters prints this way A =

  • PPTPlex Features in Keynote

    Hi I stumbled upon pptplex (http://www.officelabs.com/pptplex) which adds a great feature to powerpoint which allows you to present in a non-linear format - a bit like a mindmap, with slides categorised according to type... I'm reasonably new to Keyn