How to get Next/Previous activities?

Hi
Is there any API's or any other ways to know the subsequent(next) activities from a current activity of a process.
TIA
honnur

Thanx for the reply.
But my requirement is to know the sequence of activities without actually starting the workflow process.
I understand the sequence of activities stored in the table WF_ACTIVITY_TRANSITIONS, is it recommended to access this table directly to know the sequence of activities from a program without using workflow monitor pages.
TIA
honnur

Similar Messages

  • How to get all previous versions page contents of a publishing page using SharePoint Client Object Model 2010

    How to get all previous versions page contents and other field values of a publishing page using SharePoint Client Object Model 2010?
    Thanks,
    Osmita

    Hi Osmita,
    Greetings.
    Here are the links that helps you. It has code attached to it.
    http://social.technet.microsoft.com/Forums/sharepoint/en-US/a0d2ab40-99ba-4368-8505-1dc559ef6469/get-content-of-previous-version-of-page-sharepoint-2010?forum=sharepointgeneralprevious
    http://social.technet.microsoft.com/Forums/sharepoint/en-US/faaf419f-997e-4150-9911-48cc375c3b46/how-to-get-previous-published-versions-of-publishing-pages-in-sharepoint-2010?forum=sharepointdevelopmentprevious
    Please remember to click 'Mark as Answer' on the answer if it helps you

  • How to get the previous state of my data after issuing coomit method

    How to get the previous state of some date after issuing commit method in entity bean (It should not use any offline storage )

    >
    Is there any way to get the state apart from using
    offline storage ?As I said the caller keeps a copy in memory.
    Naturally if it is no longer in memory then that is a problem.
    >
    and also what do you mean by auditlog?
    You keep track of every change to the database by keeping the old data. There are three ways:
    1. Each table has a version number/delete flag for each record. A record is never updated nor deleted. Instead a new record is created with a new version number and with the new data.
    2. Each table has a duplicate table which has all of the same columns. When the first table is modified the old data is moved to the duplicate table.
    3. A single table is used which has columns for 'table', 'field', 'data' and 'activity' (update, delete). When a change is made in any table then this table is updated. This is generally of limited useability due to the difficulty in recovering the data.
    All of the above can have a user id, timestamp, and/or additional information which is relevant to the data being changed.
    Note that ALL of this is persisted storage.
    I am not sure what this really has to do with "offline storage" unless you are using that term to refer to backed up data which is not readily available.

  • How to get the previous record value in the current record plz help me...

    In my sql how to get the previous record value...
    in table i m having the field called Date i want find the difference b/w 2nd record date value with first record date... plz any one help me to know this i m waiting for ur reply....
    Thanx in Advance
    with regards
    kotresh

    First of this not hte mysql or database forum so don;t repeate again.
    to get diff between two date in mysql use date_format() to convert them to date if they r not date type
    then use - (minus)to get diff.

  • How to get the previous version of Flash professional?

    I need to install flash proffessional on 32 bit computer? How can I get the previous version as the Flash ProfessionalCC requires 64 bit?
    Many thanks for help.

    Hi Barbara,
    Flash Professional CS5.5 is a 32-bit application which can be installed on computers with either 32-bit or 64-bit operating systems.
    You can purchase this by Adobe's backward Licensing policy :
    " Adobe allows program members to order a current-version license but use a prior version. These members can contact Adobe Customer Service to request a serial number for the earlier version if they do not already have one. Prior-version software is available via ESD and can be purchased through standard resellers. The program member must follow all guidelines of the current-version EULA. "
    Please check the doc : http://www.adobe.com/volume-licensing/policies.html

  • How to get the previous price of the  list price  in a order

    Hi All,
    I need to get the previous price of the condition type in an order  to calculate the %change of price.
    for ex: the conditon ZXXX has price 600 and its changed to 400 now .( by changing the quantity etc ).
    when the price value is changing to 400 , I need to capture  the value of 600 in another condition type.
    how can i acheive this ? Any idea?
    Please provide some pointers on it.
    Thanks in advance.
    Swapna.

    Hi Viraylab,
                     check  <b>VBAP-NETPR</b> field of table <b>VBAP</b>
    It gives the net price corresponding to a line item.
    Goto Tcode VA03.See the <b>item overview</b> tab U will get <b>Net Price</b> field for indivisual line item.
    Reward points if helpful.
    Regards,
    Hemant

  • Can't get Next/Previous Buttons to work

    Hi,
    I am trying to get the next/previous buttons to work on my jsp page. I have collected data from a resultset and stored it in an arrayList. My problem is that I am getting a null pointer exception when I try to display the jsp. I have a one to many relationship 1 company to many contracts and want to be able to go backwards and forwards through the contracts using the previous/next buttons. Any suggestions would be greatly appreciated. Below is my code:
    <%
    // Connection
    String pid = request.getParameter("partID");
    if (pid == null) {
    pid = "1034";
    String pname = null;
    String ref4 = null;
    String url = null;
    String program = null;
    String tier = null;
    String numcon = null;
    String active = null;
    String publish = null;
    String agreeid = null;
    String type = null;
    String recdate = null;
    String status = null;
    String rendate = null;
    String termdate = null;
    String descrip = null;
    ArrayList agreements = new ArrayList();
    try {
    ResultSet rs = statement.executeQuery("Select p.*, a.agreeid, a.type, a.status, a.recdate, "
    + "a.descrip, a.termdate, a.rendate "
    + "from partDB.partner p, partDB.agreement as a "
    + "where p.partid = '" + pid + "'"
    + "and p.partid=a.partid ");
    while (rs.next()) {
    Agreement agreement = new Agreement();
    agreement.setAgreeID(rs.getString("agreeid"));
    agreement.setPname(rs.getString("pname"));
    agreement.setRef4(rs.getString("ref4"));
    agreement.setUrl(rs.getString("url"));
    agreement.setProgram(rs.getString("program"));
    agreement.setTier(rs.getString("tier"));
    agreement.setNumcon(rs.getString("numcon"));
    agreement.setActive(rs.getString("active"));
    agreement.setPublish(rs.getString("publish"));
    agreement.setType(rs.getString("type"));
    agreement.setRecdate(rs.getString("recdate"));
    agreement.setStatus(rs.getString("status"));
    agreement.setDescrip(rs.getString("descrip"));
    agreement.setRendate(rs.getString("rendate"));
    agreement.setTermdate(rs.getString("termdate"));
    agreements.add(agreement);
    session.setAttribute("agreements", agreements);
    catch (Exception e){
    out.println("<pre>");
    PrintWriter errorOut = new PrintWriter(out);
    e.printStackTrace(errorOut);
    out.println("<br></pre>" + e);
    %>
    <!-- InstanceBeginEditable name="main" -->
    <%
    int agreementIndex = 0;
    agreements = (ArrayList) request.getAttribute("agreements");
    if (agreements == null) {
    request.setAttribute("agreements", agreements);
    if (request.getParameter("agreementIndex") != null) {
    agreementIndex = Integer.parseInt(request.getParameter("agreementIndex"));
    Agreement agreement = (Agreement)agreements.get(agreementIndex);
    int nextIndex = 0;
    int previousIndex = 0;
    if ((agreementIndex+1) >= agreements.size()) {
    nextIndex = -1;
    } else {
    nextIndex = agreementIndex++;
    if ((agreementIndex-1) < 0) {
    previousIndex = -1;
    } else {
    previousIndex = agreementIndex--;
    %>
    <div id="mainentity"><!-- #BeginLibraryItem "/library/oppEntityHeader.lbi" -->
    <div class="section">
    <div class="sectionheader">
    <div class="sectionheadertext">
     General Information<img src="../images/collapsesection.gif" id="general_img" width="12" height="14" border="0" hspace="0" vspace="0" title="" alt="" style="vertical-align:middle" /> General Information
    </div>
    <div class="sectionbody" id="general">
    <div class="formfields">
    <table border="0" cellpadding="0" cellspacing="0">
    <tr><td class="formfieldlabel">Partner Name:</td><td class="formfieldvalue"><%=agreement.getPname() %></td></tr>
    <tr><td class="formfieldlabel">Contract:</td><td class="formfieldvalue"><%= agreement.getRef4() %></td></tr>
    <tr><td class="formfieldlabel">URL:</td><td class="formfieldvalue"><%= agreement.getUrl() %></td></tr>
    <tr><td class="formfieldlabel">Program:</td><td class="formfieldvalue"><%= agreement.getProgram() %></td></tr>
    <tr><td class="formfieldlabel">Tier:</td><td class="formfieldvalue"><%= agreement.getTier() %></td></tr>
    <tr><td class="formfieldlabel"># of Consultants:</td><td class="formfieldvalue"><%= agreement.getNumcon() %></td></tr>
    <tr><td class="formfieldlabel">Active:</td><td class="formfieldvalue"><%= agreement.getActive() %></td></tr>
    <tr><td class="formfieldlabel">Publish to Web:</td><td class="formfieldvalue"><%= agreement.getPublish() %></td></tr>
    </table>
    </div>
    </div>
    </div>
    <div class="dialogbuttons">
    <input type="button" value=" Edit " class="mmhide_btn" onmouseover="hov(this,'mmhide_btn mmhide_btnhov')" onmouseout="hov(this,'mmhide_btn')" onclick="window.location.href='#'" />
    </div>
    </div>
    <br>
    <div class="section">
    <div class="sectionheader">
    <div class="sectionheadertext">
     Agreement(s)<img src="../images/collapsesection.gif" id="codes_img" width="12" height="14" border="0" hspace="0" vspace="0" title="" alt="" style="vertical-align:middle" /> Agreement(s)
    </div>
    <div class="sectionbody" id="codes">
    <div class="formfields">
    <table border="0" cellpadding="0" cellspacing="0">
    <tr><td class="formfieldlabel">Agreement:</td><td class="formfieldvalue"><%= agreement.getType() %></td></tr>
    <tr><td class="formfieldlabel">Received Date:</td><td class="formfieldvalue"><%= agreement.getRecdate() %></td></tr>
    <tr><td class="formfieldlabel">Status:</td><td class="formfieldvalue"><%= agreement.getStatus() %></td></tr>
    <tr><td class="formfieldlabel">Description:</td><td class="formfieldvalue"><%= agreement.getDescrip() %></td></tr>
    <tr><td class="formfieldlabel">Renewal Date:</td><td class="formfieldvalue"><%= agreement.getRendate() %></td></tr>
    <tr><td class="formfieldlabel">Termination Date:</td><td class="formfieldvalue"><%= agreement.getTermdate() %></td></tr>
    </table>
    </div>
    </div>
    </div>
    <div class="dialogbuttons">
    <tr><td id="dialogbuttons" colspan="3">
    <!-- InstanceBeginEditable name="wizardbuttons" -->
    <%
    if (previousIndex != -1) {
    %>
    <input type="button" value="Previous" class="mmhide_btn" onmouseover="hov(this,'mmhide_btn mmhide_btnhov')" onmouseout="hov(this,'mmhide_btn')" onclick="window.location.href='/partDB/partners/PartnerAgree.jsp?agreementIndex=' + <%=previousIndex%>" />
    <%
    } else {
    %>
    <input type="button" value="Previous" class="mmhide_btn" onmouseover="hov(this,'mmhide_btn mmhide_btnhov')" onmouseout="hov(this,'mmhide_btn')" onclick="" disabled="disabled" />
    <%
    %>
    <%
    if (nextIndex != -1) {
    %>
    <input type="button" value=" Next " class="mmhide_btn" onmouseover="hov(this,'mmhide_btn mmhide_btnhov')" onmouseout="hov(this,'mmhide_btn')" onclick="window.location.href='/partDB/partners/PartnerAgree.jsp?agreementIndex=' + <%=nextIndex%>" />
    <%
    } else {
    %>

    Hi Annie,
    Below is the code as I have it now and am still getting the null pointer exception. Thanks for looking at this for me, I have been struggling with it since before Christmas!
    <%
    // Connection
    String pid = request.getParameter("partID");
    if (pid == null) {
    pid = "1034";
    String pname = null;
    String ref4 = null;
    String url = null;
    String program = null;
    String tier = null;
    String numcon = null;
    String active = null;
    String publish = null;
    String agreeid = null;
    String type = null;
    String recdate = null;
    String status = null;
    String rendate = null;
    String termdate = null;
    String descrip = null;
    ArrayList agreements = new ArrayList();
    %>
    <!-- InstanceBeginEditable name="main" -->
    <%
    int agreementIndex = 0;
    agreements = (ArrayList) request.getAttribute("agreements");
    if (agreements == null) {
    try {
    ResultSet rs = statement.executeQuery("Select p.*, a.agreeid, a.type, a.status, a.recdate, "
    + "a.descrip, a.termdate, a.rendate "
    + "from partDB.partner p, partDB.agreement as a "
    + "where p.partid = '" + pid + "'"
    + "and p.partid=a.partid ");
    while (rs.next()) {
    Agreement agreement = new Agreement();
    agreement.setAgreeID(rs.getString("agreeid"));
    agreement.setPname(rs.getString("pname"));
    agreement.setRef4(rs.getString("ref4"));
    agreement.setUrl(rs.getString("url"));
    agreement.setProgram(rs.getString("program"));
    agreement.setTier(rs.getString("tier"));
    agreement.setNumcon(rs.getString("numcon"));
    agreement.setActive(rs.getString("active"));
    agreement.setPublish(rs.getString("publish"));
    agreement.setType(rs.getString("type"));
    agreement.setRecdate(rs.getString("recdate"));
    agreement.setStatus(rs.getString("status"));
    agreement.setDescrip(rs.getString("descrip"));
    agreement.setRendate(rs.getString("rendate"));
    agreement.setTermdate(rs.getString("termdate"));
    agreements.add(agreement);
    session.setAttribute("agreements", agreements);
    catch (Exception e){
    out.println("<pre>");
    PrintWriter errorOut = new PrintWriter(out);
    e.printStackTrace(errorOut);
    out.println("<br></pre>" + e);
    request.setAttribute("agreements", agreements);
    if (request.getParameter("agreementIndex") != null) {
    agreementIndex = Integer.parseInt(request.getParameter("agreementIndex"));
    Agreement agreement = (Agreement)agreements.get(agreementIndex);
    int nextIndex = 0;
    int previousIndex = 0;
    if ((agreementIndex+1) >= agreements.size()) {
    nextIndex = -1;
    } else {
    nextIndex = agreementIndex++;
    if ((agreementIndex-1) < 0) {
    previousIndex = -1;
    } else {
    previousIndex = agreementIndex--;
    %>
    <div id="mainentity"><!-- #BeginLibraryItem "/library/oppEntityHeader.lbi" -->
    <div class="section">
    <div class="sectionheader">
    <div class="sectionheadertext">
     General Information<img src="../images/collapsesection.gif" id="general_img" width="12" height="14" border="0" hspace="0" vspace="0" title="" alt="" style="vertical-align:middle" /> General Information
    </div>
    <div class="sectionbody" id="general">
    <div class="formfields">
    <table border="0" cellpadding="0" cellspacing="0">
    <tr><td class="formfieldlabel">Partner Name:</td><td class="formfieldvalue"><%=agreement.getPname() %></td></tr>
    <tr><td class="formfieldlabel">Contract:</td><td class="formfieldvalue"><%= agreement.getRef4() %></td></tr>
    <tr><td class="formfieldlabel">URL:</td><td class="formfieldvalue"><%= agreement.getUrl() %></td></tr>
    <tr><td class="formfieldlabel">Program:</td><td class="formfieldvalue"><%= agreement.getProgram() %></td></tr>
    <tr><td class="formfieldlabel">Tier:</td><td class="formfieldvalue"><%= agreement.getTier() %></td></tr>
    <tr><td class="formfieldlabel"># of Consultants:</td><td class="formfieldvalue"><%= agreement.getNumcon() %></td></tr>
    <tr><td class="formfieldlabel">Active:</td><td class="formfieldvalue"><%= agreement.getActive() %></td></tr>
    <tr><td class="formfieldlabel">Publish to Web:</td><td class="formfieldvalue"><%= agreement.getPublish() %></td></tr>
    </table>
    </div>
    </div>
    </div>
    <div class="dialogbuttons">
    <input type="button" value=" Edit " class="mmhide_btn" onmouseover="hov(this,'mmhide_btn mmhide_btnhov')" onmouseout="hov(this,'mmhide_btn')" onclick="window.location.href='#'" />
    </div>
    </div>
    <br>
    <div class="section">
    <div class="sectionheader">
    <div class="sectionheadertext">
     Agreement(s)<img src="../images/collapsesection.gif" id="codes_img" width="12" height="14" border="0" hspace="0" vspace="0" title="" alt="" style="vertical-align:middle" /> Agreement(s)
    </div>
    <div class="sectionbody" id="codes">
    <div class="formfields">
    <table border="0" cellpadding="0" cellspacing="0">
    <tr><td class="formfieldlabel">Agreement:</td><td class="formfieldvalue"><%= agreement.getType() %></td></tr>
    <tr><td class="formfieldlabel">Received Date:</td><td class="formfieldvalue"><%= agreement.getRecdate() %></td></tr>
    <tr><td class="formfieldlabel">Status:</td><td class="formfieldvalue"><%= agreement.getStatus() %></td></tr>
    <tr><td class="formfieldlabel">Description:</td><td class="formfieldvalue"><%= agreement.getDescrip() %></td></tr>
    <tr><td class="formfieldlabel">Renewal Date:</td><td class="formfieldvalue"><%= agreement.getRendate() %></td></tr>
    <tr><td class="formfieldlabel">Termination Date:</td><td class="formfieldvalue"><%= agreement.getTermdate() %></td></tr>
    </table>
    </div>
    </div>
    </div>
    <div class="dialogbuttons">
    <tr><td id="dialogbuttons" colspan="3">
    <!-- InstanceBeginEditable name="wizardbuttons" -->
    <%
    if (previousIndex != -1) {
    %>
    <input type="button" value="Previous" class="mmhide_btn" onmouseover="hov(this,'mmhide_btn mmhide_btnhov')" onmouseout="hov(this,'mmhide_btn')" onclick="window.location.href='/partDB/partners/PartnerAgree.jsp?agreementIndex=' + <%=previousIndex%>" />
    <%
    } else {
    %>
    <input type="button" value="Previous" class="mmhide_btn" onmouseover="hov(this,'mmhide_btn mmhide_btnhov')" onmouseout="hov(this,'mmhide_btn')" onclick="" disabled="disabled" />
    <%
    %>
    <%
    if (nextIndex != -1) {
    %>
    <input type="button" value=" Next " class="mmhide_btn" onmouseover="hov(this,'mmhide_btn mmhide_btnhov')" onmouseout="hov(this,'mmhide_btn')" onclick="window.location.href='/partDB/partners/PartnerAgree.jsp?agreementIndex=' + <%=nextIndex%>" />
    <%
    } else {
    %>
    <input type="button" value=" Next " class="mmhide_btn" onmouseover="hov(this,'mmhide_btn mmhide_btnhov')" onmouseout="hov(this,'mmhide_btn')" onclick="" disabled="disabled" />
    <%
    %>

  • How to get next day date (i.e., tommarow's date) from java

    Hi all,
    One small help plz..........
    Which is the method to get next day date(for eg: 2mmarow)....
    How can I get tommarow's date from Date class or some others in Java..
    Iam able to get today date.....but my requirement is I should get next day date....Plz help me....
    Plz help me.....
    Any help will be appreciated...
    Thanks a lot.....~!~!

    Here's a working example:
    import java.util.Calendar;
    import java.text.SimpleDateFormat;
    public class Tomorrow {
        public static void main(String[] args) {
            Calendar c = Calendar.getInstance(); // current date
            c.add(Calendar.DAY_OF_MONTH, 1); // add one day
            SimpleDateFormat sdf = new SimpleDateFormat("dd"); // use the pattern: day_of_month
            String str = sdf.format(c.getTime()); // fromat the date to string
            System.out.println(str); // print it at the console
    }You should read the [url http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html]Calendar and [url http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html]SimpleDateFormat class javadoc.

  • How to get next batch of mails from GMail?

    Hello,
    I can not get next batch of mail from Gmail. I thought how this is question for gmail but they have respond me this:
    "Thanks for your interest in Gmail and in Google. Because we're testing Gmail, there is some information we're unable to share."
    Does anyone can tell me how to do this?
    Thanks in advance!
    Best Regards,
    Nikola Putnik

    You cannot

  • How to get NEXT free NUMBER for EXTERNALLY assigned RANGEs - SNUM, MD91 ?

    Hi Experts,
    I know that, with the FM - NUMBER_GET_NEXT_V1, I can get the next # for most document #s.
    But, this FM is ONLY applicable to INTERNAL NUMBER RANGE.
    1 - But., am working with EXTERNAL NUMBER RANGE, so looking forward for a FM/BAPI, which gives me next free # for use.
    2 - If nothing is there, How to get it done? Is directly grabbing the latest # from the table/data base?
    3 - Any other ideas?
    thanq

    For an example
    Look at Attributes for SAP function ' L_TO_CONFIRM_SU' . Observe the radio button 'REmote-enabled function module - 2nd one.
    Then you can see under source code it calls other SAP FMs. This is where you call the SAP FM you found.
    A remote enabled fm requires a Logical destination when called from a program- you might already know that.

  • How to get transitions BPM activities with PAPI?

    Hi:
    I wonder if you can get the transitions of the activities of a process with PAPI. And how do you get?.
    Also, if you can get the expiration time of each activity, and process in general, and how to get those times.
    I hope you can help me and your prompt response.
    Greetings.

    Hi Eduardo,
    Not sure how you'd get the transitions for an activity using PAPI, but here's how you could get the deadline for a work item instance.
    Once you get your instance in the "for" loop below you'd use the PAPI variable "PREDEFINE_DEADLINE". As you know, there is an activity deadline (created by having a Due transition coming out of an activity) and a process deadline (created by setting the predefined variable "deadline" somewhere inside the process). This PAPI logic below uses the instanceInfo's three methods getDeadline(), getProcessDeadline() and getActivityDeadline() to retrieve the instance's deadline, process deadline and activity deadline respectively. Know you know this, but the "deadline" variable stores the time of the either the activity or process deadline that will expire first (e.g. if the due transition coming out of an activity will fire in 5 minutes and the process deadline won't fire for another 30 minutes, the PAPI getDeadline() method returns the activity deadline's time of 5 minutes in the future).
    If the activity does not have a Due transition, the getActivityDeadline() method returns a null value. Similarly, if the process's "deadline" predefined variable has not been set, then the getProcessDeadline() method returns a null value. If both the activity and the process deadlines are null, then the getDeadline() method also returns a null.
    This PAPI logic assumes that you've already done a search and have a list of instances in your "instances.toArray()":
         for (InstanceInfo ii : instances.toArray()) {
           // this gets the deadlines
           Time dl = (Time) ii.getDeadline(); 
           Time adl = (Time) ii.getActivityDeadline(); 
           Time pdl = (Time) ii.getProcessDeadline();
           System.out.println("deadline: " + dl
                                 + "\nactivity deadline: " + adl
                                 + "\nprocess deadline: " + pdl);
           // this gets the role where the work item instance
           //    is currently is sitting
           System.out.println("role name: " + ii.getRoleId());
           // this gets the name of the activity where the
           //    work item instance is currently sitting
           System.out.println("activity name: " + ii.getActivityName());
    . . .Hope this helps,
    Dan

  • HT201272 I ACCIDENTLY REBOOTED MY IPOD AND NOW I CANT FIGURE OUT HOW TO GET THE PREVIOUS TUNES DOWN LOADED

      I accidently rebooted my Ipod and now I cant figure out how to download my previously tunes.

    mean the mac version or adobe?  its the newest mac that's out right now and it's adobe 9 standard....does that answer your question?

  • How to change "next" "previous" in ADF table ?

    **hi ,**
    **I am using oracle jdev 10.1.3.4**
    **I want to put my own text instead of "next" "previous" in ADF table , also I have the same problem in shuttle box ,**
    **I want to change the default javascript validation (ex: shuttle box alerts)**
    **I do not know to customize it or where these files saved ?**
    **any one can help ?**

    Hi Dave,
    Thank you so much for the email.  I tried every object and method I can
    posibly think about such as
    myTable.Rows.Item(1).PointSize = 24
    myCell.Characters.Item(1).PointSize = 24
    I got error message all the time.  These objects don’t support PointSize.
    All I need is to change point size of the text in InDesign tables created
    using VBScript. Could you help me with this?  Thanks,
    Regards,
    Li

  • How to get next record using next  button

    my database is very large and i awnt to display results 1 page at a time by keeping next button.so when i click next i should get next record.
    help me out

    Re-direct this post under relevant Developer Tools Forums.
    http://forums.oracle.com/forums/category.jspa?categoryID=19
    Regards,
    Sabdar Syed.

  • How to get next and previous page  in a Train Flow .

    Hi,
    For creating record I am using multi-step flow (train).
    I have three page and I want to navigate the page via multi-step flow (train).
    I followed the steps given in the Toolbox Tutorial of create purchase order and
    Locator Element: Page/Record Navigation in developer's guide.
    page1=/uttara/oracle/apps/uttaraimc/createcitizen/webui/PropertyCreatePG
    page2=/uttara/oracle/apps/uttaraimc/createcitizen/webui/HouseDetailsCreatePG"
    page3=/uttara/oracle/apps/uttaraimc/createcitizen/webui/EducationCreatePG"
    The page1 is navigated via 'Create' button in CitizenSearchPG
    Now on this Page1, when I clicks on the 'Next' button (to navigate to the next page in the same multi-step flow) I am getting following exception and its not navigating to page2.
    Error: Cannot Display Page
    You cannot complete this task because one of the following events caused a loss of page data:
    * You accessed this page using the browser's navigation buttons (the browser Back button, for example).
    * Your login session has expired.
    * A system failure has occurred.
    To proceed, please select the Home link at the top of the application page to return to the main menu. Then, access this page again using the application's navigation controls (menu, links, and so on) instead of using the browser's navigation controls like Back and Forward.
    Here is the code for CreateFooterCO,
    public void processRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processRequest(pageContext, webBean);
    OANavigationBarBean navBean =
    (OANavigationBarBean)webBean.findChildRecursive("NavBar");
    if (navBean == null)
    MessageToken[] tokens = { new MessageToken("OBJECT_NAME", "NavBar") };
    throw new OAException("AK", "FWK_TBX_OBJECT_NOT_FOUND", tokens);
    // Determine which page we're on so we can set the selected value. Each
    // time we navigate to and within the flow, the URL includes a parameter
    // telling us what page we're on.
    int step = Integer.parseInt(pageContext.getParameter("ccStep"));
    navBean.setValue(step);
    // Figure out whether the "Submit" button should be rendered or not;
    // this should appear only on the final page (Step 3).
    OASubmitButtonBean submitButton =
    (OASubmitButtonBean)webBean.findIndexedChildRecursive("Submit");
    if (submitButton == null)
    MessageToken[] tokens = { new MessageToken("OBJECT_NAME", "Submit") };
    throw new OAException("AK", "FWK_TBX_OBJECT_NOT_FOUND", tokens);
    if (step != 3)
    submitButton.setRendered(false);
    public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processFormRequest(pageContext, webBean);
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    int currentStep = Integer.parseInt(pageContext.getParameter("ccStep"));
    // This button should only be displayed on the final page...
    if (pageContext.getParameter("Submit") != null)
    // Simply telling the transaction to commit will cause all the Entity Object validation
         // to fire.
    // Note that you must commit before asking WF for the next page, because
    // asking for the next page at this point will transition the WF to a
    // completed state, which means you won't be able to navigate back
    // if there are errors during the commit processing.
    am.invokeMethod("apply");
    TransactionUnitHelper.endTransactionUnit(pageContext, "citizenCreateTxn");
    // Don't forget to call this even on the last page so the activity associated with
    // this page completes and the Workflow transitions appropriately.
    String nextPage = OANavigation.getNextPage(pageContext);
    // For the final page, Workflow should be returning null -- and the user
    // can select the "Submit" button only on the last page. Something's
    // wrong.
    if (nextPage != null)
    throw new OAException("AK", "FWK_TBX_T_WF_UNEXPECTED_TRANS");
    else // we've just completed the flow
    // Assuming the "commit" succeeds, we'll display a Confirmation dialog that takes
         // the user back to the main "Purchase Orders".
    /* String poNumber = (String)pageContext.getTransactionValue("PO_NUMBER");
    MessageToken[] tokens = { new MessageToken("PO_NUMBER", poNumber),
    new MessageToken("PO_APPROVER", pageContext.getUserName()) };
    OAException confirmMessage = new OAException("AK", "FWK_TBX_T_PO_CREATE_CONFIRM", tokens);
    OADialogPage dialogPage = new OADialogPage(OAException.CONFIRMATION,
    confirmMessage,
    null,
    pageContext.getApplicationJSP() + "?OAFunc=FWK_TOOLBOX_PO_SUMMARY_CR&retainAM=Y",
    null);
    pageContext.redirectToDialogPage(dialogPage);
    else if ("goto".equals(pageContext.getParameter(EVENT_PARAM)) &&
    "NavBar".equals(pageContext.getParameter(SOURCE_PARAM)))
    // Note that the OANavigationBean publishes a "goto" event paremeter when
    // either the Back or Next button is pressed. You need to determine which way to
    // go based on the related "value" parameter.
    // Also note the check of "source" above to ensure we're dealing with the
    // page-level navigation here and not table-level navigation which is
    // implemented with the same Bean configured differently.
    int target = Integer.parseInt(pageContext.getParameter("value"));
    String workflowResult;
    if (target < currentStep)
    workflowResult = "PREVIOUS";
    else
    workflowResult = "NEXT";
    String nextPage = OANavigation.getNextPage(pageContext, workflowResult);
    if (nextPage != null)
    HashMap params = new HashMap(1);
    params.put("ccStep", IntegerUtils.getInteger(target));
    pageContext.setForwardURL(pageContext.getApplicationJSP() + "?" + nextPage, // target page
    null,
    KEEP_MENU_CONTEXT,
    "", // No need to specify since we're keeping menu context
    params, // Page parameters
    true, // Be sure to retain the AM!
    ADD_BREAD_CRUMB_NO, // Do not display breadcrumbs
    OAException.ERROR); // Do not forward w/ errors
    else
    throw new OAException("AK", "FWK_TBX_T_WF_NO_NEXT_PAGE");
    else if (pageContext.getParameter("Cancel") != null)
    am.invokeMethod("rollbackCitizenInfo");
    // Remove the "in transaction" indicator
    TransactionUnitHelper.endTransactionUnit(pageContext, "citizenCreateTxn");
    pageContext.forwardImmediately("OA.jsp?page=/uttara/oracle/apps/uttaraimc/createcitizen/webui/CreateCitizenSearchPG",
    null,
    OAWebBeanConstants.KEEP_MENU_CONTEXT,
    null,
    null,
    true, // retain AM
    OAWebBeanConstants.ADD_BREAD_CRUMB_NO);
    How to resolve this issue?
    please suggest.
    Thanks & Regards,
    Sagarika

    Sagarika,
    Please go thru the dev guide which explains the train flow in the multistep update exercise. Compare the steps with ur implementation.
    - Senthil

Maybe you are looking for