Queue Mechanism in OBPM 10GR3

Hi all,
We want to develop a queue mechanism in BPM. We want only 5 out of a total of 10 instances to enter a sub-process at a time. Only when the count is less than < 5, would the next instance enter the sub-process.
But we are finding it difficult to implement this using BPM and db.
Whenever an instance enters the sub-process we increment the count in an external db and whenever an instance leaves the sub-process we decrement the count in the external db.
And before this step, we check for the counter from the db by matching it with a Max. Counter.
But the problem with this is that, when the counter is less than the < Max. Counter, if 3 instances are waiting in the queue, all three are released instead of one. This is because it takes time to increment the db and there is no locking mechanism in place to make sure that the db is locked while incrementing the counter and therefore the queue does not really work.
Does anybody has any suggestions?

Hi VR,
please have a look at this two links:
XI Asynchronous Message Processing: Understanding XI Queues
XI Asynchronous Message Processing: Understanding XI Queues -Part I
Registering queques
http://help.sap.com/saphelp_nw04/helpdata/en/7b/94553b4d53273de10000000a114084/frameset.htm
Queque assignment
Performance Tuning Checks in SAP Exchange Infrastructure(XI): Part-III
Complete reference for IDOC queuing and monitoring
Setting up inbound qRFC queues for serializing IDocs using the IDoc Adapter
Regards
srinivas

Similar Messages

  • JSP problems in OBPM 10GR3

    Hi all,
    When I try to access a JSP from my Global creation in OBPM 10GR3, sometimes this message appears:-
    [<W> 0830 15:19:41.296] Main (<5> [ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'): Error workspace-1314782980927
    [     (cont)     ] Main: The Task cannot be resumed
    [     (cont)     ] Main: Detail:<br>The reason could be one of the following<br><ol> <li>You have already finished the task execution</li> <li>You have the autologin option enabled and the session for this execution has expired .<br></li></ol>
    [     (cont)     ] Main:
    [     (cont)     ] Main: fuego.web.exception.ItemAlreadyExecutedException: The Task cannot be resumed
    [     (cont)     ] Main: Detail:<br>The reason could be one of the following<br><ol> <li>You have already finished the task execution</li> <li>You have the autologin option enabled and the session for this execution has expired .<br></li></ol>
    [     (cont)     ] Main:
    [     (cont)     ] Main: at fuego.web.papi.TaskExecutor.processRedirect(TaskExecutor.java:213)
    [     (cont)     ] Main: at fuego.web.papi.TaskExecutor.execute(TaskExecutor.java:104)
    [     (cont)     ] Main: at fuego.workspace.servlet.ExecutorServlet.doAction(ExecutorServlet.java:117)
    [     (cont)     ] Main: at fuego.workspace.servlet.BaseServlet.doPost(BaseServlet.java:229)
    [     (cont)     ] Main: at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    [     (cont)     ] Main: at fuego.workspace.servlet.AuthenticatedServlet.service(AuthenticatedServlet.java:123)
    [     (cont)     ] Main: at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    [     (cont)     ] Main: at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    [     (cont)     ] Main: at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    [     (cont)     ] Main: at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
    [     (cont)     ] Main: at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    [     (cont)     ] Main: at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    [     (cont)     ] Main: at fuego.web.filter.NoCacheNoStoreFilter.doFilter(NoCacheNoStoreFilter.java:39)
    [     (cont)     ] Main: at fuego.web.filter.BaseFilter.doFilter(BaseFilter.java:63)
    [     (cont)     ] Main: at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    [     (cont)     ] Main: at fuego.web.filter.SingleThreadPerSessionFilter.doFilter(SingleThreadPerSessionFilter.java:64)
    [     (cont)     ] Main: at fuego.web.filter.BaseFilter.doFilter(BaseFilter.java:63)
    [     (cont)     ] Main: at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    [     (cont)     ] Main: at fuego.web.filter.CharsetFilter.doFilter(CharsetFilter.java:48)
    [     (cont)     ] Main: at fuego.web.filter.BaseFilter.doFilter(BaseFilter.java:63)
    [     (cont)     ] Main: at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    [     (cont)     ] Main: at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
    Any idea why?

    There is probably one more reason why this may be happening. Again, I don't have a running 10g instance to verify this, but may be you can. Once a user clicks on the work item (or left menu in the case of a Global Create) in the inbox, and the dialog opens up, if you do a browser refresh, the popup will close, but probably , behind the scene, the screen-flow is not closed. Now , if you click on your global create again, you may get a Task cannot be resumed.
    Not sure, but try this, and the only way around may be to tell users not to refresh the screen when the popup is up, if they do and get a 'Task cannot be resumed' , they will have to log out and log back in.

  • Error while deploying a project to the OBPM 10GR3 Server

    Hi all,
    I am trying to deploy my current project to the OBPM 10GR3 server and it gives me the following exception. I am not sure what is this exception.
    The project compiles well in Studio 10GR3.
    Cannot publish the project.
    'close' is not a function. Caused by: 'close' is not a function.
    Does anybody know what is the exception?

    Got it..
    I was using Fuego.Sql.DynamicSQL.close(Iterator)
    For a an executeUpdate query which returns an int.
    But I used it in a method and did not use that method inside my process or screenflow.
    But it did not give me any error/exception while compiling it in Studio.
    It gave me an exception while publishing in Enterprise.
    This is strange.
    It should have given me an error/exception while compiling itself rather than while publishing in Enterprise.

  • Problem while Introspecting a Web-Service in OBPM 10GR3 studio

    I get the following problem while Introspecting a Web-Service in OBPM 10GR3 studio:-
    Introspecting...
    downloading /test-ws/testc?wsdl [Error] Instrospection exception: Web Service WSDL parse exception: HTTPS hostname wrong: should be <test-01.test.net>...
    Any idea why?
    It runs well in a browser, eclipse and SOAP UI?

    have you create the destination?
    do  you use the wizard to generate code?
    usually there is catch clause for this line of code
    wdContext.currentRequest_SERVICE_MDM_LOOKUPElement().modelObject().execute();
    Edited by: John Wu on Dec 16, 2010 11:51 PM

  • JSP Timeout in OBPM 10GR3

    Hi all,
    My JSP in OBPM 10GR3 is getting timed out quickly. How can I increase the timeout of my JSP?
    Because it shows on the UI workspace that "The task cannot be resumed".
    How can I increase the timeout of my JSP?

    There is probably one more reason why this may be happening. Again, I don't have a running 10g instance to verify this, but may be you can. Once a user clicks on the work item (or left menu in the case of a Global Create) in the inbox, and the dialog opens up, if you do a browser refresh, the popup will close, but probably , behind the scene, the screen-flow is not closed. Now , if you click on your global create again, you may get a Task cannot be resumed.
    Not sure, but try this, and the only way around may be to tell users not to refresh the screen when the popup is up, if they do and get a 'Task cannot be resumed' , they will have to log out and log back in.

  • Return value for Direct OBPM SQL Query in OBPM 10GR3

    Hi all,
    I use a direct SQL Query provided by OBPM 10GR3 in my automatic activity to select certain elements from the db. The query is as follows:-
    foreach (element in
    SELECT id FROM TESTTABLE WHERE requestId = 732 and status = 1 )
    // statements
    logMessage("-- The id is-->" +element.id);
    This only returns when the id is found in the db but returns nothing when not found in db?
    How can I always get a return value? atleast a true or false, so that I can put IF statements?
    Because if it returns nothing, the loop does not execute {}? So we cannot put something like:-
    foreach (element in
    SELECT id FROM TESTTABLE WHERE requestId = 732 and status = 1 )
    logMessage("-- The id is-->" +element.id);
    if(element.id == null)
    logMessage("-- Id Not Found -->" );
    else
    logMessage("-- Id Found -->");
    How can I always get a return value from my OBPM direct query ?
    Remember , I am not using DynamicSQL in this case?

    Hi,
    Set a Boolean flag value to False before the SQL query.
    Some thing like:
    boolean flag = false;
    foreach (element in
    SELECT id FROM TESTTABLE WHERE requestId = 732 and status = 1 )
    logMessage("-- The id is-->" +element.id);
    flag = true;
    if(flag) {
    logMessage("-- Id Found -->" );
    else
    logMessage("-- Id Not Found -->");
    Hope the above logic would work fine.
    Bibhu
    Edited by: Bibhuti Bhusan on Sep 2, 2011 11:48 AM

  • Using Assoc Arrays in OBPM 10GR3 for 25 million comparisons

    Can we use Associative arrays in OBPM 10GR3 to do 25 million comparisons or even more than that?
    I have two assoc arrays which I compare with each other 25 million times by looping them one inside the other.
    For e.g.
    for(int i = 0; i < 5000; i++)
    for(j=0; j < 5000; j++)
    if(i==j)
    logMessage ("The value is equal");
    when I try to do that, I get an error:-
    Persistence Data error.
    I get this error:-
    Error while persisting the transaction data: 'An error occurred while accesing the database. Detail:SQL statement: 'unknown' ' Details: An error occurred while accesing the database. Detail:SQL statement: 'unknown' Caused by: Unexpected exception while enlisting XAConnection java.sql.SQLException: Transaction rolled back: Transaction timed out after 302 seconds BEA1-25BFB4A4F3934EFC9C00 at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1418) at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1330) at weblogic.jdbc.wrapper.JTAConnection.getXAConn(JTAConnection.java:189) at weblogic.jdbc.wrapper.JTAConnection.checkConnection(JTAConnection.java:64) at weblogic.jdbc.wrapper.Connection.preInvocationHandler(Connection.java:92) at weblogic.jdbc.wrapper.Connection.prepareStatement(Connection.java:482) at fuego.jdbc.FaultTolerantConnection.prepareStatement(FaultTolerantConnection.java:541) at fuego.server.persistence.jdbc.JdbcServerActivityPersMgr.insertInstanceEvent(JdbcServerActivityPersMgr.java:913) at fuego.server.persistence.Persistence.storeInstanceEvent(Persistence.java:944) at fuego.server.execution.EngineExecutionContext.persistEvents
    So can we use such a big comparison on OBPM 10GR3. If yes, how?

    Don't use ASSOC Arrays. Use SETs.
    Also increase the JTA timeout in Weblogic to like say 600 seconds.

  • Text File opened in Wordpad cannot be parsed on OBPM 10GR3

    Hi all,
    Text File opened in Wordpad cannot be parsed on OBPM 10GR3
    Why is that?
    I use the following code to parse a file:-
    textFile = TextFile();
    textFile.open(name : "C:\testFile.txt");
    logMessage("---Does file exist?--> " + textFile.exists);
    foreach (line in textFile.lines) {
    logMessage("-- The LINE is-->" + line);
    pinBlockProcessing.linesCount = pinBlockProcessing.linesCount + 1;
    pinBlockProcessing.deviceIdentifierArray[] = line;
    textFile.close();

    Hi all,
    I also used other two methods to parse such a file which can be opened in Wordpad but not in Notepad.
    1) I used Java.Util.Scanner
    2) I also created and compiled a program/package/class which gets a file and parses it using Java.Util.Scanner using Java in Eclipse.
    I created a JAR out of it and tried to use this JAR in my process by introspecting it and then passing the file to be parsed to the methods in this JAR file.
    But this did not work either. Although the program does work in plain Java in Eclipse. It compiles and parses a a file which can be opened in Wordpad but not in Notepad.
    My program for both these methods was :-
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Scanner;
    public class Test{
    public static void main(String args[]) throws IOException {
    FileReader fin = new FileReader("./testFile.txt");
    Scanner src = new Scanner(fin);
    src.useDelimiter("\n");
    while (src.hasNext()) {
    System.out.println(src.next());
    fin.close();
    This does not work either.
    All programs and methods work when a text file can be opened in NotePad.
    What could be possible solution in OBPM 10GR3?
    It is something to do with Carriage Return and generating a file in UNIX which when opened in Notepad shows one straight horizontal line and when opened in Wordpad shows vertical lines.

  • View Items in OBPM 10GR3

    Does anybody know how to bring the last initiated process instance to be seen first in the worklist views in OBPM 10GR3?
    By default, the last initiated worklist item is posted at the end and one has to scroll down all the way to the last initiated item.
    How can we bring that to the front?

    Enter in the Workspace Administrator, go to the presentations option, take the presentation associated to your inbox, typically default_instances take the column "received" and put to sort by this column choosing descending.
    HTH

  • Aborting an Automatic Activity from OBPM 10GR3 workspace

    Hi all,
    I can abort Interactive Activities from the OBPM 10GR3 workspace just by selecting that instance, the selecting the action as ABORT from the BULK ACTIONS on the right hand side and the entire instance is aborted.
    But how do I abort Automatic Activities from the OBPM 10GR3 workspace?
    When my instance arrives at an automatic activity, I am unable to abort it from the BPM workspace.
    There is no option when you right click an Automatic Activity and select RUNTIME , which says, "If enabled, the instance can be aborted by the user".
    So how do we do that ( from the OBPM 10GR3 Workspace)?

    The "If enabled, the instance can be aborted by the user" needs to be selected when you abort via PAPI...
    Since aotumatic activitys do not appear in the workspace you cannot abort them from there.
    You can connect via PAPI, find the instance and abort it from another instance.
    Even though must automatic activitys are built so they finish before you can even go and abort them.
    I think its a strange design to have an aotumatic activity that is up long enough for you to cancel it but as i said above...
    1) Select abortable on the activity.
    2) Find the instance and abort
    Fuego.Papi.InstanceFilter ifilter = new InstanceFilter();
    ProcessService.connectTo(url : Fuego.Server.directoryURL, user :<username>, password : <password>);
    ifilter.create(processService : ProcessService);
    ifilter.searchScope = new SearchScope(participantScope : ParticipantScope.ALL , statusScope : StatusScope.ONLY_INPROCESS);
    //Notice i write public variable and not instance variable
    ifilter.addAttributeTo(variable : <public variable (such as description or one of your own)>, comparator : Comparison.<the one that fits you>, value : <value>);
    Fuego.Papi.Instance[] cInstances = ProcessService.getInstancesByFilter(filter : ifilter);
    foreach (instance in cInstances)
    //Second type of filtering (checking current activity and process), you can check just the activity name if its a unique name
    if (instance.activityName == <aotumatic activity name> && instance.processId.contains(regexp : '/<process name>/'))
    instance.abort();
    I use a similer code snippet to remove Interactive activities.
    Just notice that you filter only the instances you really want to take down.

  • How to install a plugin in OBPM 10GR3

    How do we install a plugin in OBPM 10GR3. Any steps that you guys know of?
    I want to install a plugin which actually needs to be installed for eclipse but since OBPM 10GR3 is built on top of eclipse, I think I can install it in OBPM 10GR3..
    Please guide through the process.?

    BPM Studio (10g) is just a plugin for eclipse. To install other plugins, just use the Help - Software Updates - Find and Install
    HTH,
    -Kevin

  • SOA Suite queuing mechanism?

    Hi,
    We have an integration project where we need a queuing mechanism. Transactions come in during the day. Some of them should be transformed and routed to one of the target systems, but some of them need to be pause and first be routed during the evening/night. Which options do we have in the SOA Suite? If we use BPEL we could use the Wait Activity, but what if we have thousands of waiting transactions? Are there other options? What about the ESB?
    I was thinking about using an AQ queue, but if SOA has something we can use I rather use that.
    Regards Pete

    Thanks,
    The customer has bought the SOA Suite so that is the platform we have to use. I am a database guy, so all this mocking about in the middle tier makes me itch :-)
    There is going to be a bunch of integrations but the first one has XML messages coming in from several systems. The messages have to be transformed to another XML format and send to one system. The receiving system has a performance problem so we have to queue all messages and then make sure that we only send XX messages per minute/hour. So event if we use the Wait activity in BPEL we still have a problem with making sure that only a certain number of messages are send to the receiving system. I can see a straight forward way of doing this with a table or AQ. Are the any help in BPEL/ESB?
    I know that BPEL can handle thousands of transactions; I am just a bit worried about having thousands of transactions that has to be dehydrated to the database and woken up now and then to check if it is ok to proceed.
    Regards Pete

  • Issues in Queuing mechanism(FIFO) in PI

    Hi PI Experts,
    In my project PI will use a queuing mechanism based on a FIFO methodology. This introduces a single point of failure where if a message flowing through gets stuck for any reason the entire queue will get stuck.
    Can anybody tell me the options available that be manual or automatic for reducing the turnaround time for detection and / or resolution or the utopia of removing this single point of failure all together.
    Thanks,
    Loveena.

    Hi,
    Following are the options available for this.
    1. Avoid EOIO Quality of service to block the other messages (if you are using EO ) then remove the check Maintain order at runtime option in ID..
    2. If first option cannot be done then configure CCMS alert mechanism to get trigger the Alerts.
        /people/aravindh.prasanna/blog/2006/02/20/configuring-scenario-specific-e-mail-alerts-in-xi-ccms-part-3
    3. From PI 7.3 onwards backup queue option will be avaialbe for handling these things..
        /people/rajeshkumar.pasupula/blog/2010/12/16/more-performance-feature-offerings-from-pi-73 (future purpose..)
    HTH
    Rajesh

  • Queue Mechanism in SAP PO7.4

    Hello Experts
    Can someone please help me to understand the Queue Mechanism handled SAP PO7.4 (same as in SAP PI Dual stacks Inbound and Outbound Queues) as I didnt find any related document.
    Thank you.
    VR

    Hi VR,
    please have a look at this two links:
    XI Asynchronous Message Processing: Understanding XI Queues
    XI Asynchronous Message Processing: Understanding XI Queues -Part I
    Registering queques
    http://help.sap.com/saphelp_nw04/helpdata/en/7b/94553b4d53273de10000000a114084/frameset.htm
    Queque assignment
    Performance Tuning Checks in SAP Exchange Infrastructure(XI): Part-III
    Complete reference for IDOC queuing and monitoring
    Setting up inbound qRFC queues for serializing IDocs using the IDoc Adapter
    Regards
    srinivas

  • Internet Explorer CLOSE Button for OBPM 10GR3 Presentations

    Hi all,
    I am using OBPM 10GR3 presentations with a POPUP window.
    I already have a close button to close the presentation. This is a Global Interactive Activity which displays the dashboards.
    The Global Interactive Activity contains a screenflow and inside the screenflow I have a Interactive Component Call to call the presentation.
    Now the presentation opens smoothly and everything is displayed.. When we hit the CLOSE button everything goes away and when we open it again it again comes back to the previous Interactive Component Call and restarts.
    BUT
    When we Close the window itself instead of using the CLOSE button of the presentations, and we re-open, we get the previous data.
    This is because we do not hit the CLOSE button of the presentation instead hit the IE WINDOW CLOSE button on the top right hand corner besides the minimize maximize button.
    Therefore the call is still inside the screenflow inside the Global Interactive Activity and therefore it waits for the user to hit the CLOSE button of the presentations otherwise does not close.
    How can we resolve this issue?
    How can we make sure, that if the user closes the IE WINDOW itself using the CLOSE button, it closes the presentation itself and when re-opened displays the previous presentation?

    Hi,
    First of all this is a training issue with the user. It is not advisable not to press the close button of the IE.
    Nevertheles you can disable to close button of the presentaion.
    You can remove the x from dialogs by doing this. Open the executionDialog.xhtml file in the <OraBPMEnterpriseHomeDirectory>\webapps\workspace\jsf\common directory (both Studio and Enterprise have this file).
    Change the text on line 81 from this:
    <oc:Dialog verticalAlign="top" offsetY="40" backColor="#D4E1EB" borderColor="#517B9E"
    borderStyle="solid" borderWidth="1px" id="executionDialog#{componentBean.id}"
    title="#{fn:getMsg('EXECUTION')}" broadcastName="executionDialog#{componentBean.id}"
    maximized="#{componentBean.executionDialogMaximized}" width="#{componentBean.executionDialogWidth}"
    height="#{componentBean.executionDialogHeight}" titleBarCssClass="bpmWorkspaceDialogHeader"
    displayMaximizeButton="true"
    modal="false" jsObjectName="executionDialog#{componentBean.id}">
    to this:
    <oc:Dialog verticalAlign="top" offsetY="0" backColor="#FFFFFF" borderColor="#FFFFFF"
    borderStyle="solid" borderWidth="1px" id="executionDialog#{componentBean.id}"
    title="#{fn:getMsg('EXECUTION')}" broadcastName="executionDialog#{componentBean.id}"
    maximized="#{componentBean.executionDialogMaximized}" width="#{componentBean.executionDialogWidth}"
    height="#{componentBean.executionDialogHeight}" titleBarCssClass="bpmWorkspaceDialogHeader"
    displayMaximizeButton="true"
    displayCloseButton="false" modal="false" jsObjectName="executionDialog#{componentBean.id}">
    This change does a couple things. The addition of the text "displayCloseButton="false"" removes the x button that is causing the undesired results you're getting and setting the colors to #FFFFFF changes the light blue border around dialog boxes to white.
    Bibhu

Maybe you are looking for