CcBPM Loop Condition Editor

Hi
I am trying to control the number of iterations of a Loop witihn a ccBPM Integration Process.
I have a Container name: index type: xsd:integer , which is initialised to 0 before the loop is entered.
I also have Container name: InterfaceCount which is an Abstract Interface containing the total number of iterations required.
In the Condition Editor for the Loop, if I put    index!=InterfaceCount  
... it complains that types xi:operation and xsd:integer cannot be compared.
Would someone be able to tell me the correct way of doing this please?
Thanks in advance.

Hi.  Thanks for the reply.
What I need to do is compare index to a value passed in on a field on a message.
Maybe I need to define another integer container, and then use a  'container operation' to extract the interface field to this new integer container, before entering the loop.  Then I can compare  my 'index' integer with the new one to control the loop?

Similar Messages

  • CcBPM - can't activate workflow when using expression in Condition editor

    Hi,
    My workflow (generated by ccBPM) won't be activated when I try to do an IDOC comparison (on DOCNUM), using an index (count), in the ccBPM Condition Editor.
    The condition looks like this:
    (msgs_receive[count]./HRTRPR01/IDOC/EDI_DC40/DOCNUM = msg_receive./HRTRPR01/IDOC/EDI_DC40/DOCNUM)
    There seem to be no errors when activating the Integration Process in the Integration Repository, however when looking into the SXI_CACHE, XI Directory cache, my integration process gets return code '99', even after reactivation.
    I get this error:
    Syntax error in expression Line1 Ext. IDE63443806B4211DBC393F1DE0ACE61FE
    The exception occurred (program: CL_SAI_SWF_RULE
    Symbol 'CE/KO' expected at position 1 in expression 'count{XSDSIMPLE::xsd:string;}'
    The only interpretation I make out of this is that it doesn't like my index (count) variable.
    Can anything be done to fix this?
    I use XI 3.0 SP14
    Thanks
    Olof Trönnberg

    Hi,
    Return code - 99
    1) Export  parameter might be wrong.
    2) Check Oss Notes 901366 & 708338.
    3) 99 occurs when there is a mismatch in the mapping
    4) 99 occur if all the active correlations are not used.
    5) Try this SXI_CACHE select your business process and
       click on activate. change the  the return code to 02
       and upon activating again.
    This will help you :
    http://help.sap.com/saphelp_bw31/helpdata/en/c6/893bca449311d1893e0000e8323c4f/content.htm
    Regards
    Agasthuri Doss

  • BPM: Loop condition not coming outside of the loop

    Hi Experts,
    I am working on BPM. In the loop I am giving the condition as
    (ForSyncResponse./p1:MT_Test_JDBC_Req_response/row_response/Row/indicator u2260 9)
    If indication not equal to the 9(Integer) then it should come out of the loop otherwise loop needs to be repeat( Iam getting this data from the database through Send Synch step). When ever iam sending data other than 9 then it repeating if I send 9 also even though the loop condition is not satisfying and its keep on repeating the loop. Can you please let me know what might be ther problem.
    Thanks & Regards,
    Purushotham

    Hi Prasadh,
             I am able to give thie "Create the following expression in the expression editor:
    /MT_Test_JDBC_Req_response/row_responseindicator != 9"  expression
               How can i give the second"(/MT_Test_JDBC_Req_response/row_responseindicator != 9 EX)" condition??
              I tried with giving the AND but it is not allowing me to enter the 9.
         Can you please let me know.
    Thanks & Regards,
    Purushotham

  • BPM Loop Condition ?

    We have a output xml in BPM as shown below :
    <?xml version="1.0" encoding="utf-8" ?>
    <Product>
    <ProductRecord>
      <ProductID schemeID="MaterialNumber" schemeAgencyID="MDM30_FILEADAPTER01" schemeAgencySchemeAgencyID="ZZZ">KRANTI_MAT1</ProductID>
      <ProductID schemeID="ProductGUID" schemeAgencyID="QM3_002" schemeAgencySchemeAgencyID="ZZZ">416452CBD0746B23E10000000A1553FC</ProductID>
      <ProductTypeCode>01</ProductTypeCode>
    <Category>
      <CategoryID schemeID="ProductCategoryGUID" schemeAgencyID="QM3_002" schemeAgencySchemeAgencyID="ZZZ">4162C19D0C250E78E10000000A1553FC</CategoryID>
      <CategoryID schemeID="StandardCategoryID" schemeAgencyID="MDM30_FILEADAPTER01" schemeAgencySchemeAgencyID="ZZZ">MATCLASS2_ROOT</CategoryID>
      </Category>
      </ProductRecord>
      </Product>
    The product id tag is 1..undbounded.
    We want a loop condition in BPM wherein as soon as  we get a line of ProductID with   schemeID="ProductGUID" then we want to exit the loop.
    Can anybody help us with the loop condition.
    Regards,
    Anurag

    Hi Prasadh,
             I am able to give thie "Create the following expression in the expression editor:
    /MT_Test_JDBC_Req_response/row_responseindicator != 9"  expression
               How can i give the second"(/MT_Test_JDBC_Req_response/row_responseindicator != 9 EX)" condition??
              I tried with giving the AND but it is not allowing me to enter the 9.
         Can you please let me know.
    Thanks & Regards,
    Purushotham

  • CcBPM check condition expression

    Hi,
         For a xml response say "
    <header>
      <part1/>
       <part2/>
    </header>
    How do i provide the condtion expresion  in ccBPM via Xpath (or any other way( to see if part2 tag is absent?
    Regards,
    Premjit

    Hi Premjit,
    Using the condition editor just query the existence of this node element (by using the existence operator (EX)).
    Regards,
    ---Satish

  • In PI 7.1, condition editor does not show the outbound interface structure

    Hello,
    I am using PI 7.1, I need to use condition whild determing receivers. So I opened the condition editor, then open the expression editor, select XPath instead of Context object. I would expect that the outbound interface structure appears in the box underneath the XPath, so that I can navigate the structure to choose the field I want to use. However nothing appears here. Do you knwo why is that? Or do I need to do anything to bring up the outbound interface structure in the expression editor?
    Thanks
    Jayson

    Hi Jayson,
    I had the same problem
    the use of context objects and the value help for xpath is available for XI3.0 interfaces in PI 7.10 only. The functionality for "new" interfaces has been implemented in 7.11 only.
    you have to use xpath w/o value help.
    I have created a context object in one of our 7.10 test systems, and indeed I was unable to use it in a receiver determination unless the service interface pattern is "Stateles (XI 3.0 compatible)". If you were to change the service interface to that pattern, you have to change the operation name unless it is already identical to the interface name. So that may not be an option for you.
    It was possible to use the context object in a receiver rule but then I could not activate the receiver determination because the software component version was supposedly unknown. I will check with my PI contacts - please let me know if the change to "XI 3.0" interface would be a possible workaround for you.
    Try the steps which I am giving below, although it's a workaround and don't know the exact reason why it is failing.
    1. Open your Outbound Message Interface (which you are using in your Receiver Determination) in IR, edit it and change the Interface pattern (which is there just below the category "Outbound") to "Stateless (XI30 - Compatible)" , save it activate it.
    2. Follow the same step for your Inbound Message Interface. Change the Interface Pattern from "Sateless" to "Stateless (XI30 - Compatible)" .
    3. Go to ID. Remove your Outbound and Inbound Message Interface from their respective Business Service/Comp and add it again.
    4. Create your your receiver determination again using the Outbound and Inbound MI you have changed.
    5. Open condition editor of your receiver determination.You should be able to see your Message Interface and can choose the XPath.
    Thanks,
    Raj
    Edited by: raj reddy on Jan 21, 2009 5:41 PM

  • Receiver determination wildcard in condition editor

    Hi experts,
    I have a question regarding the condition editor for receiver determinations on PI 7.1. I have an xpath expression on the left side and I need to have a condition on the right side that includes a certain pattern.
    One example:
    p1:myDocument/element = 1A2B*
    There I would want to read the xml element "element" and redirect to a certain communcation component if the value of 'element' starts with 1A2B.. regardless if its 1A2B3 or 1A2BC and so on.
    Is that possible? I tried like in the example to use * as a wildcard, but that didn't work.
    Any help would be appreciated.

    It should not be = operator ....it should be Contains Pattern Operator
    Refer: http://help.sap.com/saphelp_nwpi71/helpdata/EN/67/49767669963545a071a190b77a9a23/content.htm
    Regards,
    Abhishek.

  • While opening condition editor its not showing me the structure

    Hello Experts,
         Mine is a proxy to file scenerio.....with a condition in reciver detrmination and while giving conditon in condition editor,  due to an unknown reason,  its not populating the Message Structure.
    It is giving an error messege " Message interface does not exist in any software components installed on this business system "
    If there is some 1 with similar experience,
    pls revert back,
    Arnab .
    Edited by: Arnab Mondal on Sep 25, 2008 12:14 PM

    Hi,
    If you get the following msg while selecting the BS in Receiver Determination
    "Message interface does not exist in any software components installed on this business system"
    1) Open ID-----Double click on Business system that which u are using in the scenario
    2) Check whether you are able to see the SWC in the Othere attributes TAB
    3) If it is not there means goto SLD----Open the Technical System of R/3 by choosing Web as ABAp type
    4) Click on Installed Products TAB
    5) Click on Add New product and add your Product of the SWC whcih you are using for developement and Save it
    6) Then goto Business systems TAB in the same Technical systems window and click on the Business System appears in the window.
    7) Click on Installed products and Check the check box of your Product and then finally save that.
    Now you should be able to see the SWC in the Othere attributes TAB in ID
    Regards
    Seshagiri

  • PI 7.0 Condition Editor: Picking particular value of multiline element

    Hi PI-Gurus,
    we're on PI 7.0 with the old condition editor. Within a condition we have to check a value of an element at a particular position. If the value in the second E1EDK14 segment (QUALF 007) is "04", we can process the message. Otherwise the message hast to be stopped.
    Example:
    <E1EDK14 SEGMENT="1">
      <QUALF>006</QUALF>
      <ORGID>01</ORGID>
    </E1EDK14>
    <E1EDK14 SEGMENT="1">
      <QUALF>007</QUALF>
      <ORGID>04</ORGID>
      </E1EDK14>
    <E1EDK14 SEGMENT="1">
      <QUALF>008</QUALF>
      <ORGID>1000</ORGID>
    </E1EDK14>
    Is this possible to address a particular element in the ORGID list?
    As I understand, normally the ORGID's come as a multiline element and can be addressed like this:
    /ORDERS05/IDOC/E1EDK14/ORGID
    My guess is the following:
    /ORDERS05/IDOC/E1EDK14<b>[1]</b>/ORGID  - and unchecking the multiline checkbox
    Am I right, or is there any other solution?
    Help is as always highly appreciated and will be rewarded!
    Thanks in advance!
    Matthias

    Hi,
    The condition editor uses full-blown xpath expressions so you could even use something like
    ORDERS05/IDOC/E1EDK14[QUALF='007' and ORGID='04']/ORGID
    and then for the operator use EX
    or
    /ORDERS05/IDOC/E1EDK14[QUALF='007']/ORGID
      and then operator = and value 04
    Edited by: ciochinah on Feb 16, 2011 7:59 PM

  • I pull fiftyfour bytes of data from MicroProcessor's EEPROM using serial port. It works fine. I then send a request for 512 bytes and my "read" goes into loop condition, no bytes are delivered and system is lost

    I pull fiftyfour bytes of data from MicroProcessor's EEPROM using serial port. It works fine. I then send a request for 512 bytes and my "read" goes into loop condition, no bytes are delivered and system is lost

    Hello,
    You mention that you send a string to the microprocessor that tells it how many bytes to send. Instead of requesting 512 bytes, try reading 10 times and only requesting about 50 bytes at a time.
    If that doesn�t help, try directly communicating with your microprocessor through HyperTerminal. If you are not on a Windows system, please let me know. Also, if you are using an NI serial board instead of your computer�s serial port, let me know.
    In Windows XP, go to Start, Programs, Accessories, Communications, and select HyperTerminal.
    Enter a name for the connection and click OK.
    In the next pop-up dialog, choose the COM port you are using to communicate with your device and click OK.
    In the final pop
    -up dialog, set the communication settings for communicating with your device.
    Type the same commands you sent through LabVIEW and observe if you can receive the first 54 bytes you mention. Also observe if data is returned from your 512 byte request or if HyperTerminal just waits.
    If you do not receive the 512 byte request through HyperTerminal, your microprocessor is unable to communicate with your computer at a low level. LabVIEW uses the same Windows DLLs as HyperTerminal for serial communication. Double check the instrument user manual for any additional information that may be necessary to communicate.
    Please let me know the results from the above test in HyperTerminal. We can then proceed from there.
    Grant M.
    National Instruments

  • JMM: legal to optimize non-volatile flag out of particular loop condition?

    Does Java Memory Model allow JIT compiler to optimize non-volatile flag out of loop conditions in code like as follows...
    class NonVolatileConditionInLoop {
      private int number;
      private boolean writingReady = true; // non-volatile, always handled inside synchronized block
      public synchronized void setNumber(int n) {
        while (!writingReady) { // non-volatile flag in loop condition
          try { wait(); }
          catch (InterruptedException e) { e.printStackTrace(); }
        this.number = n;
        this.writingReady = false;
        notifyAll();
      public synchronized int getNumber() {
        while (writingReady) { // non-volatile flag in loop condition
          try { wait(); }
          catch (InterruptedException e) { e.printStackTrace(); }
        this.writingReady = true;
        notifyAll();
        return number;
    }...so that it will execute like this:
    class NonVolatileConditionInLoopHacked {
      private int number;
      private boolean writingReady = true; // non-volatile, always handled inside synchronized block
      public synchronized void setNumber(int n) {
        if (!writingReady) { // moved out of loop condition
          while (true) {
            try { wait(); }
            catch (InterruptedException e) { e.printStackTrace(); }
        this.number = n;
        this.writingReady = false;
        notifyAll();
      public synchronized int getNumber() {
        if (writingReady) { // moved out of loop condition
          while (true) {
            try { wait(); }
            catch (InterruptedException e) { e.printStackTrace(); }
        this.writingReady = true;
        notifyAll();
        return number;
    This question was recently discussed in [one of threads|http://forums.sun.com/thread.jspa?messageID=11001801#11001801|thread] at New To Java forum.
    My take on it is that optimization like above is legal. From the perspective of single-threaded program, repeated checks for writingReady are redundant because it is not modified within the loop. As far as I understand, unless explicitly forced by volatile modifier (and in our case it is not), optimizing compiler "has a right" to optimize based on single-thread execution assumption.
    Opposite opinion is that JMM prohibits such an optimization because methods containing the loop(s) are synchronized.

    gnat wrote:
    ...so that it will execute like this:
    class NonVolatileConditionInLoopHacked {
    private int number;
    private boolean writingReady = true; // non-volatile, always handled inside synchronized block
    public synchronized void setNumber(int n) {
    if (!writingReady) { // moved out of loop condition
    while (true) {
    try { wait(); }
    catch (InterruptedException e) { e.printStackTrace(); }
    this.number = n;
    this.writingReady = false;
    notifyAll();
    public synchronized int getNumber() {
    if (writingReady) { // moved out of loop condition
    while (true) {
    try { wait(); }
    catch (InterruptedException e) { e.printStackTrace(); }
    this.writingReady = true;
    notifyAll();
    return number;
    This question was recently discussed in [one of threads|http://forums.sun.com/thread.jspa?messageID=11001801#11001801|thread] at New To Java forum.
    My take on it is that optimization like above is legal. From the perspective of single-threaded program, repeated checks for writingReady are redundant because it is not modified within the loop. As far as I understand, unless explicitly forced by volatile modifier (and in our case it is not), optimizing compiler "has a right" to optimize based on single-thread execution assumption.
    Opposite opinion is that JMM prohibits such an optimization because methods containing the loop(s) are synchronized.One of the problems with wait() and your the proposed optimization is that "interrupts and spurious wakeups are possible" from wait() . See [http://java.sun.com/javase/6/docs/api/java/lang/Object.html#wait()] Therefore your wait() would loop without checking if this optimization would occur and a interrupt or spurious wake-up happened. Therefore for this reason I do not believe writingReady would be rolled out of the loop. Also the code isn't even equivalent. Once all the threads wake-up due to the notifyAll() they would spin in the while(true) and wait() again. I don't think the JMM prohibits such an optimization because methods containing the loop(s) are synchronized, but because it contains a wait(). The wait() is kind of a temporary flow control escape out of the loop.
    Example:
    writingReady is true
    Thread A calls getNumber(). It waits().
    Thread B calls setNumber(). It calls notifyAll() and writingReady is now false;
    Thread A wakes up in getNumber() and while(true) loop and waits again(). //Big problem.

  • Less or less than equal in the for loop condition

    Hi,
    What do you prefer, what is more common, which one is more easily readable, less or less than equal in the for loop condition?
    for (int i = 0; i < arr.lenght; i++){..}
    //or
    for (int i = 0; i <= arr.lenght - 1 ; i++){..}I know this is basic programming and nothing to do with Java, so if this forum is not for this purpose, could you please suggest a general programming forum?
    I would really appreciate it as I have many general questions :)
    Thanks in advance,
    lemonboston

    lemonboston wrote:
    Hi,
    What do you preferPersonal preference, which is useless to you
    , what is more common,Based on years of reading open source code, the first
    which one is more easily readable, less or less than equal in the for loop condition?Personal opinion, which is useless to you
    I would really appreciate it as I have many general questions :)If you don't want to think about it yourself (which you should be doing in stead of asking general questions), simply attack it lazily. Both examples achieve exactly the same, but the first one is less to type and to read.

  • Help with a while loop condition

    I'm trying to write to a File. I ask the user for input, then I enter a while loop and test the condition. The loop works, but it won't stop. I've tried everything. Here is my code please help!!
    thanks
    inputline = keyboard.readLine();//read the keyboard
    try{
    while( inputline != null ){
    DiskOut.println( inputline );
    DiskOut.flush();
    inputline = keyboard.readLine();//read the keyboard again
    }//end while
    }//end try
    catch (IOException e) { 
    e.printStackTrace();
    }//end catch
    also i've tried these while loop conditions:
    while(inputline != "\n" || inputline != "\r") and the sort

    while(inputline != "\n" || inputline != "\r")The condition
    X!=Y OR X!=Z (given Y != Z)
    is always true. X will always not be equal to at least one of the values. So you'll want to use:
    while(!inputline.equals("\n") && !inputline.equals("\r"))In other words, "while inputline is not equal to either of them". Note the use of && instead of ||.
    If "keyboard" is simply a BufferedReader on top of System.in (and not your own class), the trailing line feeds and carriage returns won't even be in the string returned by readLine(). Your best bet is this:
    while(null != inputline && 0 != inputline.length())Make sure you type the two parts of that AND condition in the order above. If for whatever reason there are trailing \r and \n on the strings, you'll want to accomodate for platforms that may include both characters.
    // trim the trailing newline characters
    while(inputline.endsWith("\r") ||
          inputline.endsWith("\n")) {
       inputline = inputline.substring(0,inputline.length()-1);
    // or maybe this will work if you don't mind losing
    //  the whitespace at the beginning of the string:
    inputline = inputline.trim();Hope that helps somewhat.

  • New object inside loop condition

    I would like to create new object inside loop condition and use in its body
    while(new File(localization).exists()){
         //now would like use File object created above
    }What's the notation for that?

    YoungWinston wrote:
    TheGreatEmperor wrote:
    I would like to create new object inside loop condition and use in its body
    while(new File(localization).exists()){
    //now would like use File object created above
    }What's the notation for that?Encephalopathic gave it to you, but I'd worry about ending up with a never-ending loop. What about
    if ((myFile = new File(fileString)).exists()) { ...instead?
    Winston1) Same thing I put (except change the name "f" with "myFile")
    2) you could get a never-ending loop with your answer (depending on the body)
    3) The previous answer by Encephalopathic would NOT give a never-ending loop unless there was a never-ending listing of files with the name:
    "Foo" + fileCounter + ".txt"; where "fileCounter" is incrementing (as done in his code)

  • Re: loop condition using length

    Hi friends,
    in a loop condition i am using below coding.
    LOOP AT I_FORM1 INTO W_FORM1.
    A = STRLEN( W_FORM1-LOTNO ).
    LOOP AT I_AUFM INTO W_AUFM WHERE CHARG+0(A) = W_FORM1-LOTNO.
    ENDLOOP.
    ENDLOOP.
    But coming error is
    The length specification "(A)" is not a numeric literal or a numeric constant.
    how is it possible please help me any body.

    Hello ,
    Data type of variable A should be a integer .
    Edited by: Annasaheb More on Jul 2, 2011 9:20 AM

Maybe you are looking for

  • How to write an inputter for a custom input file format?

    On a project I'm working on I've got a custom capture log of driver communications between user-mode to system drivers. I've been trying to figure out how I can use Windows Message Analyzer to input my custom capture format and visualize the result (

  • MSI 7030 with newest raid bios

    Is there a custom bios build of release 1.7 with the newest nvraid bios built in.  IE higher than version 4.81??

  • Need help for transfer itune library to new computer.

    I bought I new computer and I want to transfer my itunes library from my old computer to my new one. i have been able to get my music and apps but I can't get my movies and tv shows. I can't find how to back them up on to cd and I tried redownloading

  • How to stop program excecution...

    Hi.. I would like to know how I can stop the execution of a program, not using System.out.exit(..). I do not want the application be closed. Let me be more specific.. My program reads text from a file and depending a condition (ie. if the length of t

  • Photostitch unexpectedly quits in os 10.7

    Photostitch unexpected quits in OS X 10.7.  I think I saw something about Canon not supporting this version of the operating system.  Is this correct?  If not, what's the solution?  If it is correct, is there equivalent program I can use to combine b