Assistance with Xpath expression in BPEL

Hi,
Recently trained on BPEL but new to XPATH. I would like to ask your advice on how best to search an XML response like the one given below.
As part of a BPEL flow I would like to obtain the EntityId of the CustomerService where AddonID=26 and CustomerServiceStatus=Active. There can be 0 (zero) or 1 such entries.
I realise I could count the number of CustomerServices and then loop through each and test for the above criteria, but is there is better/more efficient way? - Thanks.
<GetSubscriptionByMSISDN_OutputVariable>
<part name="parameters">
<GetSubscriptionByMSISDNResponse>
<gsresp:GetSubscriptionByMSISDNResult>
<resp:Result>
<ErrorCode>0000</ErrorCode>
<Success>true</Success>
<ErrorMessage>Operación finalizada con éxito.</ErrorMessage>
<ErrorMessageExtend/>
</resp:Result>
<gsresp:Subscription>
<entity:EntityId>14372</entity:EntityId>
<subs:Balance>0</subs:Balance>
<subs:CreditLimitByDay>0</subs:CreditLimitByDay>
<subs:CreditLimitByMonth>0</subs:CreditLimitByMonth>
<subs:ConsumptionLimitLock>0</subs:ConsumptionLimitLock>
<subs:ConsumptionLimitAlert>0</subs:ConsumptionLimitAlert>
<subs:PricesPlan>1</subs:PricesPlan>
<subs:PricesDescription>Pospago 1</subs:PricesDescription>
<subs:StartDate/>
<subs:SubscriptionStatus>InUse</subs:SubscriptionStatus>
<subs:MSISDN>66666666666</subs:MSISDN>
<subs:HasCreditOnTime>false</subs:HasCreditOnTime>
<subs:Consumption/>
<subs:CustomerServices>
<entity:EntityId>61584</entity:EntityId>
<addo:Description>Activation</addo:Description>
<addo:ContractedTo/>
<addo:ContractedFrom>2008-09-08T04:40:22</addo:ContractedFrom>
<addo:CustomerServiceStatus>Active</addo:CustomerServiceStatus>
<addo:AddonId>28</addo:AddonId>
</subs:CustomerServices>
<subs:CustomerServices>
<entity:EntityId>61585</entity:EntityId>
<addo:Description>Activation</addo:Description>
<addo:ContractedTo/>
<addo:ContractedFrom>2008-09-08T04:40:32</addo:ContractedFrom>
<addo:CustomerServiceStatus>Active</addo:CustomerServiceStatus>
<addo:AddonId>30</addo:AddonId>
</subs:CustomerServices>
<subs:CustomerServices>
<entity:EntityId>61602</entity:EntityId>
<addo:Description>Activation</addo:Description>
<addo:ContractedTo/>
<addo:ContractedFrom>2008-09-08T04:39:48</addo:ContractedFrom>
<addo:CustomerServiceStatus>Active</addo:CustomerServiceStatus>
<addo:AddonId>1</addo:AddonId>
</subs:CustomerServices>
<subs:CustomerServices>
<entity:EntityId>61603</entity:EntityId>
<addo:Description>Activation</addo:Description>
<addo:ContractedTo/>
<addo:ContractedFrom>2008-09-08T04:40:11</addo:ContractedFrom>
<addo:CustomerServiceStatus>Active</addo:CustomerServiceStatus>
<addo:AddonId>26</addo:AddonId>
</subs:CustomerServices>
<subs:CustomerServices>
<entity:EntityId>61600</entity:EntityId>
<addo:Description>Activation</addo:Description>
<addo:ContractedTo>2008-09-08T03:40:11</addo:ContractedTo>
<addo:ContractedFrom>2008-08-08T00:00:00</addo:ContractedFrom>
<addo:CustomerServiceStatus>Inactive</addo:CustomerServiceStatus>
<addo:AddonId>26</addo:AddonId>
</subs:CustomerServices>
<subs:CustomerServices>
<entity:EntityId>74665</entity:EntityId>
<addo:Description>Descp: Add Services</addo:Description>
<addo:ContractedTo/>
<addo:ContractedFrom>2008-09-26T17:45:58</addo:ContractedFrom>
<addo:CustomerServiceStatus>Active</addo:CustomerServiceStatus>
<addo:AddonId>45</addo:AddonId>
</subs:CustomerServices>
<subs:CustomerServices>
<entity:EntityId>77493</entity:EntityId>
<addo:Description>Descp: Add Services</addo:Description>
<addo:ContractedTo/>
<addo:ContractedFrom>2008-09-30T11:14:28</addo:ContractedFrom>
<addo:CustomerServiceStatus>Active</addo:CustomerServiceStatus>
<addo:AddonId>108</addo:AddonId>
</subs:CustomerServices>
<subs:CustomerServices>
<entity:EntityId>77684</entity:EntityId>
<addo:Description>Descp: Add Services</addo:Description>
<addo:ContractedTo/>
<addo:ContractedFrom>2008-09-30T13:57:12</addo:ContractedFrom>
<addo:CustomerServiceStatus>Active</addo:CustomerServiceStatus>
<addo:AddonId>31</addo:AddonId>
</subs:CustomerServices>
<subs:CustomerServices>
<entity:EntityId>91228</entity:EntityId>
<addo:Description>Descp: Add Services</addo:Description>
<addo:ContractedTo/>
<addo:ContractedFrom>2008-11-06T13:43:01</addo:ContractedFrom>
<addo:CustomerServiceStatus>Active</addo:CustomerServiceStatus>
<addo:AddonId>36</addo:AddonId>
</subs:CustomerServices>
<subs:NobilllId>0</subs:NobilllId>
</gsresp:Subscription>
</gsresp:GetSubscriptionByMSISDNResult>
</GetSubscriptionByMSISDNResponse>
</part>
</GetSubscriptionByMSISDN_OutputVariable>

Hi Dietrich,
Thanks for all the help, and your patience. I think you're getting me closer to figuring out what I should be doing. I can see now in the transformation mapper how I should have constructed the 'if' test, but I am still having an issue when I run the process. The problem being the wrong element in the array is being selected.
Given the following input data to the transformation:
<inputVariable>
     <part name="payload">
          <ns1:AnitBPELProcess1ProcessRequest>
               <ns1:msisdn>640005076</ns1:msisdn>
               <ns1:CustomerServiceCollection>
                    <ns1:EntityID>1966</ns1:EntityID>
                    <ns1:AddonId>26</ns1:AddonId>
                    <ns1:Status>Inactive</ns1:Status>
               </ns1:CustomerServiceCollection>
               <ns1:CustomerServiceCollection>
                    <ns1:EntityID>1991</ns1:EntityID>
                    <ns1:AddonId>26</ns1:AddonId>
                    <ns1:Status>Active</ns1:Status>
               </ns1:CustomerServiceCollection>
          </ns1:AnitBPELProcess1ProcessRequest>
     </part>
</inputVariable>
...and the following transformation (ony relevant part shown):
<xsl:template match="/">
<ns0:VoiceMailProductDetails>
<xsl:if test='(/ns0:AnitBPELProcess1ProcessRequest/ns0:CustomerServiceCollection/ns0:AddonId = "26") and (/ns0:AnitBPELProcess1ProcessRequest/ns0:CustomerServiceCollection/ns0:Status = "Active")'>
<ns0:VoiceMailKPNEntityId>
<xsl:value-of select='/ns0:AnitBPELProcess1ProcessRequest/ns0:CustomerServiceCollection/ns0:EntityID'/>
</ns0:VoiceMailKPNEntityId>
</xsl:if>
</ns0:VoiceMailProductDetails>
</xsl:template>
...why does the transformation set the target field "VoiceMailKPNEntityId" to 1996, when the correct array element is the 2nd with an EntityID of 1991?
I was expecting the 'value-of select' to have used the element that matched the criteria as it is within the 'if'.
Thanks - Anit
PS: I did also play round with using xpath query within an Assign to retrieve the EntityID, but this faulted with a "selectionFailure" error when my test data did not contain a row that met the search criteria.

Similar Messages

  • Assistance with Regular Expression and Tcl

    Assistance with Regular Expression and Tcl
    Hello Everyone,
      I recently began learning Tcl to develop scripts for automating network switch deployments. 
    In my script, I want to name the device with a location and the last three octets of the base mac address.
    I can get the Base MAC address by : 
    show version | include Base
     Base ethernet MAC Address       : 00:00:00:DB:CE:00
    And I can get the last three octets of the MAC address using the following regular expression. 
    ([0-9a-f]{2}[:-]){2}([0-9a-f]{2}$)
    But I have not been able to figure out how to call the regular expression in the tcl script.
    I have checked several resources but have not been able to figure it out.  Suggestions?
    Ultimately, I want to set the last three octets to a variable (something like below) and then call the variable when I name the switch.
    set mac [exec "sh version | i Base"] (include the regular expression)
    ios_config "hostname location$mac"
    Thanks for any assistance in advance.
    Chris

    This worked for me.
    Switch_1(tcl)#set result [exec show ver | inc Base]   
    Base ethernet MAC Address       : 00:1B:D4:F8:B1:80
    Switch_1(tcl)#regexp {([0-9A-F:]{8}\r)} $result -> mac
    1
    Switch_1(tcl)#puts $mac                               
    F8:B1:80
    Switch_1(tcl)#ios_config "hostname location$mac"      
    %Warning! Hostname should contain at least one alphabet or '-' or '_' character
    locationF8:B1:80(tcl)#

  • How to evaluate dynamic XPath expression in BPEL?

    I have an xml file where I keep many settings for my BPEL process. At runtime, I read the file and I want to select values from it based on values in the process payload.
    For example, imagine that the process payload is an order:
    <order>
    <header>
    <id/>
    <customer_id/>
    <team_id/>
    </header>
    <items>
    <item>
    <id/>
    <sku/>
    <price/>
    <quantity/>
    </item>
    </items>
    </order>
    Now, in my xml settings file, I have a section where I keep a mapping of "team_id" and "assignment_group", so that for each team id, I can select the appropriate group to whom a task should be assigned. The relevant section of the settings file will look something like this:
    <assignment_groups>
    <group team_id='0923230'>invoice_approvers</group>
    <group team_id='3094303'>order_approvers</group>
    <group team_id='3434355'>shipping_approvers</group>
    </assignment_groups>
    So, imagine I get an order input to my process where the team_id is '3094303'. Now I have to lookup the correct assignment group in my settings file.
    So, I construct the dynamic XPath expression
    /settings/assignment_groups/group[@team_id=3094303]
    I know that this would evaluate to "order_approvers". However, even though I have the XPath expression in a BPEL variable, and I have my settings file as a BPEL variable also, I don't know how to execute the XPath expression against the settings BPEL variable to retrieve the correct value.
    Any ideas appreciated.
    Thanks,
    Jack

    James:
    Thank you for the response. Incidentally, this is the very same document and section that I have been looking at for guidance. Specifically, the section titled "Dynamically indexing by Constructing an XPath at Run Time" on page 12-13.
    I tried to do something similar to the example at the top of page 13:
    <variable name="iterator" type="xsd:integer"/>
    <assign>
    <copy>
    <from expression="concat('/invoice/line-item[',bpws:getVariableData('iterator'), ']/line-total')"/>
    <to variable="xpath"/>
    </copy>
    <copy>
    <from expression="bpws:getVariableData('input', 'payload',bpws:getVariableData('xpath')) + ..."/>
    </copy>
    </assign>
    I am able to achieve the first copy operation to get my dynamic XPath into a BPEL variable and that's fairly straightforward. But I am unable to get the second copy to work. Specifically, I am not sure what to put in the second argument of the bpws:getVariableData function. I have tried many different combinations, but when I try to compile my program, I get the following compilation error:
    Error:
    [Error ORABPEL-10902]: compilation failed
    [Description]: in "C:\code\TrainingWS\SampleGetSettings\bpel\SampleGetSettings.bpel", XML parsing failed because "org.collaxa.thirdparty.jaxen.expr.DefaultFunctionCallExpr".
    [Potential fix]: n/a.
    Thanks,
    Jack

  • Problem with Xpath expression

    Hi all,
    I have an XML document with entries of the following form:
    <record><header><identifier>info:ugent-repo/aleph/rug01-000000003</identifier><datestamp>2007-01-20</datestamp></header><metadata><marc:record xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd">
    <marc:leader>00000nam  22      a 4500</marc:leader>
    <marc:controlfield tag="001">000000003</marc:controlfield>
    <marc:controlfield tag="005">20050826200104.0</marc:controlfield>
    <marc:controlfield tag="008">970601s1971    xx      r     000 0 ger d</marc:controlfield>
    <marc:datafield tag="020" ind1=" " ind2=" ">
    <marc:subfield code="a">3110035170</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="040" ind1=" " ind2=" ">
    <marc:subfield code="a">UGent</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="050" ind1=" " ind2=" ">
    <marc:subfield code="a">HE155 .P85</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="100" ind1="1" ind2=" ">
    <marc:subfield code="a">Putschke, Wolfgang</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="245" ind1="1" ind2="0">
    <marc:subfield code="a">Sachtypologie der Landfahrzeuge :</marc:subfield>
    <marc:subfield code="b">ein Beitrag zu ihrer Entstehung, Entwicklung und Verbreitung.</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="260" ind1=" " ind2=" ">
    <marc:subfield code="a">Berlin :</marc:subfield>
    <marc:subfield code="b">de Gruyter,</marc:subfield>
    <marc:subfield code="c">1971.</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="300" ind1=" " ind2=" ">
    <marc:subfield code="a">VII, 163 p., krtn, ill.</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="440" ind1=" " ind2="0">
    <marc:subfield code="a">Schriften zur Volksforschung</marc:subfield>
    <marc:subfield code="v">4</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="852" ind1="4" ind2=" ">
    <marc:subfield code="4">Dept. LW17</marc:subfield>
    <marc:subfield code="5">L67A</marc:subfield>
    <marc:subfield code="b">LW17V</marc:subfield>
    <marc:subfield code="c">L67A</marc:subfield>
    <marc:subfield code="j">L67A.V18.447</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="920" ind1=" " ind2=" ">
    <marc:subfield code="a">book</marc:subfield>
    </marc:datafield>
    </marc:record></metadata></record>Now it works to get information out of the file using marc tags and tag codes: I do it with the following command:
    <entry key="AUTHOR" value="//marc:datafield[@tag='100']/marc:subfield[@code='a']"/>but now I want to get the url out of the identifier field... I thought this command should work, but it doesn't:
    <entry key="URL" value="//record/header/identifier"/>Does anyone has an idea what I'm doing wrong?
    thanks in advance
    Mathias

    this is the beginning of the xml file...
    <?xml version="1.0" encoding="UTF-8" ?>
    <?xml-stylesheet type="text/xsl" href="/OAI/style/rug01.xsl"?>
    <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"><responseDate>2007-10-09T11:32:38Z</responseDate><request metadataPrefix="marc" verb="ListRecords">http://aleph.ugent.be:8080/OAI/rug01</request><ListRecords>
    <record><header status="deleted"><identifier>info:ugent-repo/aleph/rug01-000000001</identifier><datestamp>2007-03-27</datestamp></header></record>
    <record><header><identifier>info:ugent-repo/aleph/rug01-000000002</identifier><datestamp>2007-01-20</datestamp></header><metadata>
    <marc:record xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd">
    <marc:leader>00000nam  2200301 i 4500</marc:leader>
    <marc:controlfield tag="001">000000002</marc:controlfield>
    <marc:controlfield tag="005">20060108100247.0</marc:controlfield>
    <marc:controlfield tag="008">780804s1977    enk      b    001 0 eng  </marc:controlfield>
    <marc:datafield tag="010" ind1=" " ind2=" ">
    <marc:subfield code="a">78307846</marc:subfield>
    </marc:datafield>
    ...Hope you guys can help me out with this, because I really don't know what I'm doing wrong
    gr

  • XPATH expression to get Array node

    Hi
    I have a problem with an XPATH expression in BPEL. I want to get to a particular node in the following result set ..
    <return xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns3="http://com.quion.taken.services/ITakenService.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:Array" ns2:arrayType="ns3:com_quion_dto_taken_BouwnotaVoorraadDTO[2]">
    <item xsi:type="ns3:com_quion_dto_taken_BouwnotaVoorraadDTO">
    <begunstigde xsi:type="xsd:string">Sjoerd</begunstigde>
    <datum xsi:type="xsd:dateTime">2005-10-31T23:00:00.000Z</datum>
    <bedrag xsi:type="xsd:string">1000.0</bedrag>
    <geldLeningId xsi:type="xsd:string">4.0</geldLeningId>
    <rekeningnummer xsi:type="xsd:string">1234</rekeningnummer>
    <notaId xsi:type="xsd:string">1.0</notaId>
    </item>
    <item xsi:type="ns3:com_quion_dto_taken_BouwnotaVoorraadDTO">
    <begunstigde xsi:type="xsd:string">Laszlo</begunstigde>
    <datum xsi:type="xsd:dateTime">2005-10-31T23:00:00.000Z</datum>
    <bedrag xsi:type="xsd:string">1.0</bedrag>
    <geldLeningId xsi:type="xsd:string">4.0</geldLeningId>
    <rekeningnummer xsi:type="xsd:string">5678</rekeningnummer>
    <notaId xsi:type="xsd:string">2.0</notaId>
    </item>
    </return>
    The first thing is that my variable in BPEL does not show the ïtem"level", it shows for example 'return/notaId'.
    However I can get to the second node by keying in
    EXPRESSION 1:
    bpws:getVariableData('invokeGetBouwnotaVoorraadVoorLening_getBouwnotaVoorraadVoorLening_OutputVariable','return','/return/item[1]/notaId')
    No I want to dynamically determine the particular node instance. I do this as follows [copied from the Array sample]:
    EXPRESSION 2:
    bpws:getVariableData('invokeGetBouwnotaVoorraadVoorLening_getBouwnotaVoorraadVoorLening_OutputVariable','return','/return/item[', bpws:getVariableData('i'),']/notaId')
    BPEL throws the following error
    assignNotaId (faulted)
    [2005/11/09 09:49:36] Updated variable "invokeTaskManager_initiateTask_InputVariable" More...
    <invokeTaskManager_initiateTask_InputVariable>
    <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="payload">
    <task xmlns="http://services.oracle.com/bpel/task">
    <taskId />
    <title />
    <creationDate />
    <creator />
    <modifyDate />
    <modifier />
    <assignee>jstein</assignee>
    <status />
    <expired />
    <expirationDate />
    <duration />
    <priority />
    <template />
    <customKey />
    <conclusion />
    <attachment />
    </task>
    </part>
    </invokeTaskManager_initiateTask_InputVariable>
    [2005/11/09 09:49:36] Error in evaluate <from> expression at line "172". The result is empty for the XPath expression : "bpws:getVariableData('invokeGetBouwnotaVoorraadVoorLening_getBouwnotaVoorraadVoorLening_OutputVariable','return','/return/item[', bpws:getVariableData('i'),']/notaId')".
    [2005/11/09 09:49:36] "{http://schemas.xmlsoap.org/ws/2003/03/business-process/}selectionFailure" has been thrown. less
    <selectionFailure xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/">
    <part name="summary">
    <summary>empty variable/expression result. xpath variable/expression expression "bpws:getVariableData('invokeGetBouwnotaVoorraadVoorLening_getBouwnotaVoorraadVoorLening_OutputVariable','return','/return/item[', bpws:getVariableData('i'),']/notaId')" is empty at line 172, when attempting reading/copying it. Please make sure the variable/expression result "bpws:getVariableData('invokeGetBouwnotaVoorraadVoorLening_getBouwnotaVoorraadVoorLening_OutputVariable','return','/return/item[', bpws:getVariableData('i'),']/notaId')" is not empty.</summary>
    What is wrong with my expression 2?
    Thanks
    Jan Willem

    This Example works fine for arrays that are part of a WSDL message.
    But in 10.1.3.1 this does not work with a array that is part of an XSD declaration
    for Example XSD snippet
    <xsd:element name="itemList">
              <xsd:complexType>
                   <xsd:sequence>
                        <xsd:element maxOccurs="unbounded" minOccurs="1" ref="tns:Item" />
                   </xsd:sequence>
              </xsd:complexType>
         </xsd:element>
    using the following in assign statement
    <copy>
    <from expression="concat('/ns9:itemList/ns9:Item[',string(bpws:getVariableData('index')),']')"/>
    <to variable="idxXpath"/>
    </copy>
    <copy>
    <from expression="bpws:getVariableData('OutputItemList',bpws:getVariableData('idxXpath'))"/>
    <to variable="idx_item"/>
    </copy>
    gives a compiler error that is
    Error(176):
    [Error ORABPEL-10085]: invalid argument
    [Description]: in line 176 of "D:\OnlineShopping_1\bpel\OnlineShopping.bpel", the second argument "bpws:getVariableData("idxXpath")" for getVariableData is not a literal expression.
    [Potential fix]: Please correct the second argument, you might need to escape using single quote or " to make it literal.
    Can anyone site the reason for the same or a possible solution?
    Message was edited by:
    user607972

  • Need help with accesing variable with xpath.

    Hi All,
    I need help with xpath in "Switch" BPEL construct. Switch is used to compare value assigned to output vairable and follow one path for "Deny" and another for "Approve". The following is data type for output variable.
    <element name="processResponse">
         <complexType>
              <sequence>
                   <element name="result" type="string"/>
              <sequence>
         <complexType>
    </element>
    The following expressions in Switch statement throw lava.lang.Exception. It error is xpath internal error".
    x20:compare('Deny',$outputvariable.payload/client:result)
    x20:compare('Deny',bpws:getVariableData('outputvariable','payload','/client:processResponse/client:result')
    It works with x20:compare('Deny','Deny'). So I assumed it must be accessing the variable.
    Any help greatly appreciated.
    Thanks,
    Satish

    Cany you try the following
    x20:compare('Deny',string($outputvariable.payload/client:result))
    x20:compare('Deny',string(bpws:getVariableData('outputvariable','payload','/client:processResponse/client:result'))
    Regards
    Albin I
    http://www.albinsblog.com/

  • Assigning JMS message in BPEL: The result is empty for the XPath expression

    Hi,
    My project, an Oracle BPEL 11g project, is reading an XML payload from a JMS queue. I would like to transform the message and assign the elements of the messages to other variables. But when I am doing that in the "assign" step, it raises an error: Error in evaluate <from> expression at line "63". The result is empty for the XPath expression : "/ns2:publishProject/payload/Message".
    Even though I can see the message payload in the Audit with all the values.
    To me it looks like a name space issue, but I could not find out how to correct it. Any hint will be a big help. Please let me know if you want to check the .xsd for the message.

    I publish a JMS message to a topic in one BPEL process and have another BPEL process read from the topic and start the flow. The problem I have is that the first process is writing fine to the topic, but the second process seems to be reading twice. I am seeing two instances of the second process in em.
    Can anyone help? I am using JDev 11.1.1.1.0
    Thanks

  • Receiver determination - Xpath expression problem with count

    I am working with a scenario where I pick up records from a JDBC connection and if the number of records I pick up is less than a certain number I want to call a webservice.  If it is greater than the number I want to write out a file to be processed by a different process on the receiving end.  I have created the receiver determination condition with the following conditions:
    (/p1:MT_HOG_Data/row[count(row) > 3] EX)
    (/p1:MT_HOG_Data/row[count(row) <= 3] EX)
    The integration is always processing the second condition no matter how many records come in.  I have tried with and without the multiline option.  Can anyone help with this?
    I have searched through the forum and checked the following links without any resolution:
    http://wiki.sdn.sap.com/wiki/display/XI/XpathConditioninReceiverDetermination
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/ab/13bf7191e73a4fb3560e767a2525fd/frameset.htm
    /people/shabarish.vijayakumar/blog/2006/06/07/customise-your-xpath-expressions-in-receiver-determination
    I can't find any examples where a count of records is checked in the expression editor.  Thanks in advance for any help.

    You can not use the EX operator in that case, because that is used only for node existence checks, not for value checks.
    Do you have a row number in your structure ? Then you could write the xpath expression with that counter tag and value
    Example: you want to send to receiver A if count > 3, else to B:
    you set  /rowNumber EQUAL 4 for sender A
    and /rowNumber NOT EQUAL 4 for sender B
    The condition is applied to the whole document. If one of the node/values are true for that condition, then the whole condition is set to true.
    Problem with that is that the second condition also will be true because nodes for that condition will be found
    better would be to have a rowcount tag in the structure. If that is not possible, you can use the "Enhanced Receiver determination" where you can define a mapping which determines the receivers. There you can do anything complicated you want.
    CSY

  • Xpath expression not working with xmlparserv2 10.x jar in websphere application server 8

    Hi,
    I am using xmlparserv2 10.x  jar in websphere application server to transform xml. Due to some unknown reason we are seeing inconsistent result for the xpath expression we used inside the xslt.
    .|following-sibling::* This is the xpath expression we use.
    the meaning of the expression is to union the current node and the following siblings of the current node. But while rendering the page( a servlet) for first two times it gives the expected result. From the third time, it is giving unexpected results. It is missing the first node in the following-sibling::* So it just results in current node and misses the next node and then combine the nodes following the next node.
    For example when executing the above expression on the node A , it should result A B C D. It is returing correctly for first 3 times. From the 4th time it just results  A C D and misses B.
    <root>
         <A />
         <B />
         <C />
         <D />
    </root>
    But it giving results consistently when using xmlparserv2 9.x jar. But it is not 1.5 compliant.
    Pleas help!..
    Thanks,
    SP.

    If you are new to JSF, then I'd try and simplify the environment in which you are working as the first step to achieving a successful outcome.
    JSF 1.2 is a certified and well tested component of WLS, so we know it works. I'm not sure of the effect of all those additional modules you are adding in there -- it appears as if you have gotten a Faces implementation instantiated, but there could be some form of version difference/conflict since it can't find a method its looking for.
    Using Oracle Enterprise Pack for Eclipse (http://www.oracle.com/technology/software/products/oepe/oepe_11115.html) you can build yourself out a pretty simple JSF application to get started from and deploy it to a WLS server. This would remove all the additional libraries you currently have, provide you with a bundled applicaton to deploy and give you a pretty good environment from which you can learn and experiment with JSF.
    -steve-

  • 1     Unable to retrieve the form values entered by the user from the xpath expression(with or without s

    1.1 Description of the Workflow
    We have designed a Workflow, which has an init form HighLevelQuestionnaire.
    1. The user attempts to start the workflow by submitting this form, which has an XML schema embedded.
    2. When user submits the data, we set workflow variables to fetch data from the init-form and all the values entered by the user are stored in the database.
    3. Based on the values, value of Risk Level is calculated to be either High or Medium, and user is routed to one of the two routes.
    4. The user QPAC is used to show the next form to the user.
    Another form has been designed called AssessRisk in which user is asked to confirm the Risk Level.
    5. At this point, we use Script QPAC to print the values in the log.
    1.2 Problem description
    1. In the Point No. 6 of the workflow, the values are not printed in the log. A blank space is printed instead.
    2. Initially, we embedded the schema in the form. But when values were not printed, we removed the schema. Even then it didnt work.
    1.2.1 User QPAC Specifications
    Properties of user QPAC used in Step 4 of the workflow
    Mappings Tab: -
    Input Variable --- No variable
    Template URL ----- Form11.xdp
    Output Variable ---- myform
    Myform is a form-variable, which has template URL as Form11.xdp
    1.2.2 Script QPAC
    1.2.2.1 With XML Schema embedded
    import com.adobe.workflow.pat.service.*;
    System.out.println("----------- High Level Questions -----------");
    System.out.println("--1- the RiskLevel is: " + patExecContext.getProcessDataStringValue("/process_data/myform/form-data/data/xdp/dataset s/data/RiskLevel/general/Risk_Level") + " @@@@@");
    Note:- Here RiskLevel is the schema root of myform and Risk_Level is the schema variable mapped with textfield on the form
    1.2.2.2 Without XML Schema embedded
    System.out.println("--1.1- the RiskLevel is: " + patExecContext.getProcessDataStringValue("/process_data/myform/form-data/data/xdp/dataset s/data/fields/Risk_Level") + " @@@@@");
    1.2.2.3 Conclusion
    In both the cases, a blank value is printed. In both the cases, we get some output which is when we use
    System.out.println("--1.1- the RiskLevel is: " + patExecContext.getProcessDataStringValue("/process_data/myform/form-data/data/xdp/dataset s/data ") + " @@@@@");
    In this case all the values are printed with space in between.
    This is the basic feature which has to be used while developing workflows.

    Hi
    You might want to try using VariableLogger, at:
    http://www.avoka.com/avoka/qpac_library.shtml
    It's a little more reliable than the script QPAC, especially if one of your xpath expressions is wrong.
    Please note that embedding the schema makes no difference in how the data from the form is stored. What makes the difference is whether your fields are bound to specify schema elements, or whether they use the "normal" binding.
    Howard

  • UCCX XPath-expression with -operator does not work

    Hi all,
    I'd like to read opening hours from an XML file. The UCCX version is 8.5.
    The XML looks like this:
    <ccdata>
       <dow>
          <dow6>
             <open>
                <from hour="8"  minute = "00" />
                <until hour="19" minute ="15" />
             </open>           
         </dow6>
      </dow>
    </ccdata>
    I simpified the file for testing, it should contain several open items later for every day of week.
    I want to use an XPath expression to check if there's a open item for the current day of week and time.
    I started with a simplified expression that should return the node for an hour value of 8:
    //ccdata/dow/dow6/open/from[@hour=8 ]/@hour
    that's working- it returns "8".
    But if I change the expression to return the node for an hour value less then 9:
    //ccdata/dow/dow6/open/from[@hour<9]/@hour
    it returns nothing. If I enter the expression into a XPath test tool ("XPath Visualizer Tool") it looks ok.
    Any ideas? Is that a bug?
    Thanks in advance
    Jörg

    It must be a bug- I tried it on UCCX 7.0(1)SR03 and it's working there.

  • XPath expression to element with xsl: namespace

    Hi,
    I have a problem selecting a node in an XSL document. What I'm trying to do is to load an XSL file and change the 'select' attribute of <xsl:for-each select='//whatever'>
    I tried it something like this:
    Node articleSelect = XPathAPI.selectSingleNode(xslDOM, "//for-each");
    articleSelect.getAttributes().getNamedItem("select").setNodeValue("//article[@ArticleNr='" + articleNumber + "']");However, articleSelect is always null so the second line throws an exception. I also tried "//xsl:for-each" and "//xsl:for-each[@select='//whatever']" and whatnot as the XPath expression, but still no luck... :(
    Any thoughts or ideas will be greatly appreciated :)
    Greetings,
    Erik

    Erik, your code is working fine but you must ensure that the document builder used to create xslDOM has nameSpaceAware = true!
    May I suggest this rewriting - not necessary - but more clear I think:
    Element articleSelect = (Element) XPathAPI.selectSingleNode(xslDOM, "//xsl:for-each");
    articleSelect.setAttribute("select", "//article[@ArticleNr='" + articleNumber + "']");

  • XPath expression to element with xsl: namespace  - Take 2

    I posted the below question earlier today. Unfortunately, it seemed to have disappeared from the forum although it still is in my watches list ~:-/
    Anyways, here it goes:
    Hi,
    I have a problem selecting a node in an XSL document. What I'm trying to do is to load an XSL file and change the 'select' attribute of <xsl:for-each select='//whatever'>
    I tried it something like this:
    Node articleSelect = XPathAPI.selectSingleNode(xslDOM, "//for-each");articleSelect.getAttributes().getNamedItem("select").setNodeValue("//article[@ArticleNr='" + articleNumber + "']");
    However, articleSelect is always null so the second line throws an exception. I also tried "//xsl:for-each" and "//xsl:for-each[@select='//whatever']" and whatnot as the XPath expression, but still no luck... :(
    Any thoughts or ideas will be greatly appreciated :)
    Greetings,
    Erik

    Never mind... the original post misteriously re-appeared :-)

  • Using the variable placeholder ? in an XPath expression

    I'm trying to using the variable operator (?) in an Oracle prepared statement used in a query where clause. Here is the query:
    select xt.APPLICATION_NAME, xt.VERSION, xt.EVENT_TYPE, xt.SENDING_SITE, xt.RECEIVING_SITE, xt.EVENT_ID
          from AUDITED_EVENT_XML_MIN e,
             XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
                    '/xae:auditable-event'
                    PASSING e.xml_event_content
                    COLUMNS
                    APPLICATION_NAME VARCHAR2(255) PATH 'xae:application-name',
                    VERSION          VARCHAR2(255) PATH 'xae:version',
                    EVENT_TYPE       VARCHAR2(255) PATH 'xae:event-type',
                    SENDING_SITE     VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.4/HD.2',
                    RECEIVING_SITE   VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.6/HD.2',
                    EVENT_ID         VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.10') xt
                where existsNode(E.XML_EVENT_CONTENT, '/xae:auditable-event[xae:event-type=?]','xmlns:xae="http://gov/va/med/datasharing/audit/endpoint/audit"') = 1This code works when the ? is replaced with "aValue". I need to use the ? so that my Java client can pass a variable value into the query.
    Is this a supportable feature or am I doing something wrong?
    I didn't see any examples in the Oracle XML DB Developers Guide where there was a ? in an XPath expression.
    I also tried "?" with the same issue...
    Here is the version info:
    SQL*Plus: Release 11.1.0.6.0 - Production on Mon Sep 10 18:41:55 2012
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing optionsAny assistance would be greatly appreciated.
    Thanks in advance...
    Edited by: flyeagle5683 on Sep 10, 2012 5:49 PM

    select xt.APPLICATION_NAME, xt.VERSION, xt.EVENT_TYPE, xt.SENDING_SITE, xt.RECEIVING_SITE, xt.EVENT_ID
          from AUDITED_EVENT_XML_MIN e,
             XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
                    '/xae:auditable-event'
                    PASSING e.xml_event_content
                    COLUMNS
                    APPLICATION_NAME VARCHAR2(255) PATH 'xae:application-name',
                    VERSION          VARCHAR2(255) PATH 'xae:version',
                    EVENT_TYPE       VARCHAR2(255) PATH 'xae:event-type',
                    SENDING_SITE     VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.4/HD.2',
                    RECEIVING_SITE   VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.6/HD.2',
                    EVENT_ID         VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.10') xt
                where XMLEXISTS(
                           'declarre namespace xae ="http://gov/va/med/datasharing/audit/endpoint/audit"; (: :)
                            $XML/xae:auditable-event[xae:event-type=$VALUE]'
                            passing e.xml_event_content as "XML",
                                      :1 as "VALUE"
                ) or you can do
    select xt.APPLICATION_NAME, xt.VERSION, xt.EVENT_TYPE, xt.SENDING_SITE, xt.RECEIVING_SITE, xt.EVENT_ID
          from AUDITED_EVENT_XML_MIN e,
             XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
                    '/xae:auditable-event'
                    PASSING e.xml_event_content
                    COLUMNS
                    APPLICATION_NAME VARCHAR2(255) PATH 'xae:application-name',
                    VERSION          VARCHAR2(255) PATH 'xae:version',
                    EVENT_TYPE       VARCHAR2(255) PATH 'xae:event-type',
                    SENDING_SITE     VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.4/HD.2',
                    RECEIVING_SITE   VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.6/HD.2',
                    EVENT_ID         VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.10') xt
          WHERE EVENT_TYPE = :1Edited by: mdrake on Sep 10, 2012 7:23 PM
    Edited by: mdrake on Sep 10, 2012 7:24 PM

  • Using the variable ? operator in an XPath Expression

    I'm trying to using the variable operator (?) in an Oracle prepared statement used in a query where clause. Here is the query:
    select xt.APPLICATION_NAME, xt.VERSION, xt.EVENT_TYPE, xt.SENDING_SITE, xt.RECEIVING_SITE, xt.EVENT_ID
          from AUDITED_EVENT_XML_MIN e,
             XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
                    '/xae:auditable-event'
                    PASSING e.xml_event_content
                    COLUMNS
                    APPLICATION_NAME VARCHAR2(255) PATH 'xae:application-name',
                    VERSION          VARCHAR2(255) PATH 'xae:version',
                    EVENT_TYPE       VARCHAR2(255) PATH 'xae:event-type',
                    SENDING_SITE     VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.4/HD.2',
                    RECEIVING_SITE   VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.6/HD.2',
                    EVENT_ID         VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.10') xt
                where existsNode(E.XML_EVENT_CONTENT, '/xae:auditable-event[xae:event-type=?]','xmlns:xae="http://gov/va/med/datasharing/audit/endpoint/audit"') = 1This code works when the ? is replaced with "aValue". I need to use the ? so that my Java client can pass a variable value into the query.
    Is this a supportable feature or am I doing something wrong?
    I didn't see any examples in the Oracle XML DB Developers Guide where there was a ? in an XPath expression.
    I also tried "?" with the same issue...
    Here is the version info:
    SQL*Plus: Release 11.1.0.6.0 - Production on Mon Sep 10 18:41:55 2012
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing optionsAny assistance would be greatly appreciated.
    Thanks in advance...

    I incorporated this suggestion and it worked very well. Thanks!
    Now I have converted my solution to use a structured index. As such, I want to write the where clauses in terms of column names rather than XPath expressions.
    I hoped it was as simple as changing the code that generates the XPath expression to generate a SQL expression. After making that change, I'm now getting this error:
    Caused by: java.sql.SQLSyntaxErrorException: ORA-00920: invalid relational operator
         at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:91)
         at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
         at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:686)
         at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:617)
         at oracle.jdbc.driver.T2CPreparedStatement.executeForDescribe(T2CPreparedStatement.java:559)
         at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1077)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3381)
         at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3425)
         at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1490)
         at gov.va.med.datasharing.audit.dao.jdbc.runner.MapQueryRunner.run(MapQueryRunner.java:47)
         at gov.va.med.datasharing.audit.web.dao.jdbc.AuditableEventsQueryDAOImpl.getAuditableEventsByDate(AuditableEventsQueryDAOImpl.java:150)It seemed to me that if it worked for the XPath expression that it should also work for the SQL expression.
    The static SQL is:
    SELECT PK_ID, EVENT_TYPE, OUTCOME, SENDING_SITE, RECEIVING_SITE, CREATED_TIME, EVENT_ID, PATIENT_ID FROM
      (SELECT rownum as rn, PK_ID, EVENT_TYPE, OUTCOME, SENDING_SITE, RECEIVING_SITE, CREATED_TIME, EVENT_ID, PATIENT_ID FROM
         (SELECT aet.AUDITABLE_EVENT_XML_PK_ID AS PK_ID, xt.EVENT_TYPE, xt.OUTCOME, xt.SENDING_SITE, xt.RECEIVING_SITE, aet.CREATED_TIME as CREATED_TIME, xt.EVENT_ID, xt.PATIENT_ID
            FROM AUDITABLE_EVENT_XML aet,
              XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
                '/xae:auditable-event'
                PASSING aet.xml_event_content
                COLUMNS
                EVENT_TYPE       VARCHAR2(255) PATH 'xae:event-type',
                SENDING_SITE     VARCHAR2(255) PATH 'xae:sending-site',
                RECEIVING_SITE   VARCHAR2(255) PATH 'xae:receiving-site',
                EVENT_ID         VARCHAR2(255) PATH 'xae:event-id',
                PATIENT_ID           VARCHAR2(255) PATH 'xae:patient-id',
                OUTCOME                VARCHAR2(255) PATH 'xae:outcome') xt
            WHERE aet.CREATED_TIME BETWEEN ? AND ?
                 AND ?
          ) ORDER BY CREATED_TIME desc
        ) WHERE rn &gt; ? and rn &lt;= ?So I'm thinking that Oracle must perform strong checking in SQL, not allowing the '=' operator to be substituted. If I run this query in Toad, replacing the ? with the SQL, it runs fine...
    Can someone tell me whether or not this is a legal substitution?
    The SQL that runs in Toad is:
    SELECT PK_ID, EVENT_TYPE, OUTCOME, SENDING_SITE, RECEIVING_SITE, CREATED_TIME, EVENT_ID, PATIENT_ID FROM
      (SELECT rownum as rn, PK_ID, EVENT_TYPE, OUTCOME, SENDING_SITE, RECEIVING_SITE, CREATED_TIME, EVENT_ID, PATIENT_ID FROM
         (SELECT aet.AUDITABLE_EVENT_XML_PK_ID AS PK_ID, xt.EVENT_TYPE, xt.OUTCOME, xt.SENDING_SITE, xt.RECEIVING_SITE, aet.CREATED_TIME as CREATED_TIME, xt.EVENT_ID, xt.PATIENT_ID
            FROM AUDITABLE_EVENT_XML aet,
              XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
                '/xae:auditable-event'
                PASSING aet.xml_event_content
                COLUMNS
                EVENT_TYPE       VARCHAR2(255) PATH 'xae:event-type',
                SENDING_SITE     VARCHAR2(255) PATH 'xae:sending-site',
                RECEIVING_SITE   VARCHAR2(255) PATH 'xae:receiving-site',
                EVENT_ID         VARCHAR2(255) PATH 'xae:event-id',
                PATIENT_ID         VARCHAR2(255) PATH 'xae:patient-id',
                OUTCOME             VARCHAR2(255) PATH 'xae:outcome') xt
            WHERE aet.CREATED_TIME BETWEEN TO_DATE ('9/19/2011 12:00:01 AM','MM/DD/YYYY HH:MI:SS PM')
                                         AND TO_DATE ('12/20/2012 12:00:00 AM','MM/DD/YYYY HH:MI:SS PM')
                AND (OUTCOME=0 or OUTCOME=1)
          ) ORDER BY CREATED_TIME desc
        ) WHERE rn > 0 and rn <= 5;Any assistance will be appreciated,
    Thanks in advance.

Maybe you are looking for

  • How can I get my iTunes to start up after a clean re-install?

    Following the corruption of many of my Applications and Files, I had to have a Clean Re-install done. That solved most of the problems, but when I try to start iTunes it comes up with the iTunes Software Licence Agreement. When I click on Agree, I ge

  • IPhoto's duplicating my pictures

    Hello, I have two issues here, please be kind and bare with me: Issue 1 I was downloading some new photos from my camera today. I use a 256 mb compact flash card but it still holds many of my old photographs. Today I just wanted to download the new o

  • Business Rules Runtime Prompts

    Hello, in my planning application, i have a few business rules that cannot be linket do any dataform. Users must run them directly via "Tools->Business Rules" menu'. These Business Rules have Runtime Prompt. User can fill them directly in the text fi

  • Distiller 9.1 no longer shows up on tool bar of word docx

    I installed Adobe distiller 9.1 last year on my new lap top that has Vista Home OS.  I had not used distiller in months, but noticed today that it does not show up as the main conversion on word or when I use print pdf on a document to convert it. I

  • Configuration Binding issues

    Hi All, I am creating a service, and supplying some default values for the configuration via properties. but when i am deploying the code - the configuration itself indicates unbound, until i save it and any changes i create a lost when i redeploy th