Process input xml

Hi,
I'm trying to do a simple (BPEL) program that receives a xml message and extracts the data from it.
Like:
<name>
<first>Lara</first>
<last>Larissa</last>
</name>
and I want to extract "Lara" and "Larissa".
Help me :)

Hi,
This would involve the following steps:
- From JDeveloper, create a BPEL process. Note that in its WSDL there is a reference to a RequestMessage that in turn refers to an XML Schema (XSD) definition. The XSD describes the structure of the XML types and elements.
- Change the XSD to reflect your name element structure.
- In the BPEL process you work on the XML that comes in. You have the option to create variables and use Assign activities or XSL Transformations in order to manipulate the XML structures.
Note: ideally (at least IMHO) you would start by modeling and defining the business domain, create XML structures for it and then base your BPEL services on these. But maybe that will sink in once you played around with your first BPEL processes.
Also, to get you started, BPEL comes with loads of samples that are to deploy, study and play around with.
Enjoy,
Sjoerd

Similar Messages

  • Could not initiate the BPEL process :the input xml is not well formed err

    Hi
    I am calling a bpel process from the bpel console. It is a syncronous process and just fetches values from the database. I see that when ever i call this for some inputs i get the following error , in the response.
    Could not initiate the BPEL process because the input xml is not well formed, the reason is :
    Error parsing envelope: (1, 6168) Invalid char in text. Please correct the input xml.
    When i see the log i have the following message
    fault.collaxa.cube.ws> <AdapterFramework::Outbound> Returning outbound XMLRecord for OutputParameters
    Exception: Error parsing envelope: (1, 6168) Invalid char in text.
    e.ws.saaj.soap.soap11.SOAPImplementation11.createEnvelope(SOAPImplementation11.java:103)
    e.ws.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:76)
    e.ws.saaj.soap.MessageImpl.getSOAPBody(MessageImpl.java:935)
    ate__ws._jspService(_ngDoInitiate__ws.java:455)
    erver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
    .runtimev2.JspPageTable.service(JspPageTable.java:453)
    .runtimev2.JspServlet.internalService(JspServlet.java:591)
    .runtimev2.JspServlet.service(JspServlet.java:515)
    let.http.HttpServlet.service(HttpServlet.java:856)
    nd.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64)
    urity.jazn.oc4j.JAZNFilter$1.run(JAZNFilter.java:396)
    ity.AccessController.doPrivileged(Native Method)
    rity.auth.Subject.doAsPrivileged(Subject.java:517)
    I understand that the error is coming with parsing the output from the database values. Further i see the process is completed successfully when i see the flow and log and the out is present in the output response. Has any body faced this issue. What is that character that it is nto able to parse as the error says.
    Thanks
    -Pradip

    hi
    I have tried it using both xml and the initiate tab. I get the same error every time i do it for a particular value. i further think that this is occuring for the out put response that is got from the data base as the log says. ( given in the initial post). I can surely paster the input xml for you
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/db/top/InputXXESIOEHEADERSIFACE">
    <ns1:XxesiOeHeadersIfaceCollection>
    <ns1:XxesiOeHeadersIface>
    <ns1:orderSource></ns1:orderSource>
    <ns1:originalsystemreference></ns1:originalsystemreference>
    <ns1:customerNumber></ns1:customerNumber>
    <ns1:Country></ns1:Country>
    </ns1:XxesiOeHeadersIface>
    </ns1:XxesiOeHeadersIfaceCollection>
    </soap:Body>
    </soap:Envelope>

  • "Could not initiate the BPEL process because the input xml is not well form

    hi all,
    i am new to BPEL and tring to create a BPEL WebServices. now i got struck up with one issue like below
    "Could not initiate the BPEL process because the input xml is not well formed, the reason is : Error parsing envelope Please correct the input xml."
    But according to BPEL compiler there are no errors in the design and deployment as well. when i tries to initiate the deployed WS i am facing the above issue.
    can anybody help me to fix this issue. Thanks in advance.
    Regards,
    Kalyan

    hi' Kalyan,
    The issue seems to be due to XSD file which you are importing while making the new BPEL process,
    the XSD file is very sensitive even a simple upper case will create error, XSD file are many times used when you want
    to pass some entries to be updated in the database.
    use this XSD file:"discountflow.xsd"
    <schema attributeFormDefault="qualified"
    elementFormDefault="qualified"
    targetNamespace="http://www.autoloan.com/ns/autoloan"
    xmlns:tns="http://www.autoloan.com/ns/autoloan"
    xmlns="http://www.w3.org/2001/XMLSchema">
    <!--<element name="Demo" type="tns:DemoType"/>-->
    <element name="Order" type="tns:OrderType"/>
    <complexType name="OrderType">
    <sequence>
    <element name="orderid" type="int"/>
    <element name="tenantid" type="int"/>
    <element name="orderstatusid" type="int"/>
    </sequence>
    </complexType>
    </schema>
    <complexType name="Discount">
    <sequence>
    <element name="approval" type="boolean"/>
    <element name="discount" type="int"/>
    <element name="quantity" type="int"/>
    </sequence>
    </complexType>
    </schema>
    -Yatan

  • Could not initiate the BPEL process because the input xml is not well forme

    Your test request generated the following exception/fault:
    Could not initiate the BPEL process because the input xml is not well formed, the reason is :
    Error parsing envelope: (2, 152) Invalid char in text. Please correct the input xml.
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body xmlns:ns1="http://xmlns.oracle.com/RO_Update2">
    <ns1:RO_Update2ProcessRequest>
    <ns1:UserName>operations</ns1:UserName>
    <ns1:Responsibility>Depot Repair Engineer</ns1:Responsibility>
    <ns1:API_VER>1.0</ns1:API_VER>
    <ns1:P_commit>T</ns1:P_commit>
    <ns1:init_msg>T</ns1:init_msg>
    <ns1:Org_ID>207</ns1:Org_ID>
    <ns1:R_Number>10782</ns1:R_Number>
    <ns1:R_Status>1008</ns1:R_Status>
    <ns1:Obj_Ver_No>1</ns1:Obj_Ver_No>
    </ns1:RO_Update2ProcessRequest>
    </soap:Body>
    </soap:Envelope>

    Try
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
    <ns1:RO_Update2ProcessRequest xmlns:ns1="http://xmlns.oracle.com/RO_Update2">
    <ns1:UserName>operations</ns1:UserName>
    <ns1:Responsibility>Depot Repair Engineer</ns1:Responsibility>
    <ns1:API_VER>1.0</ns1:API_VER>
    <ns1:P_commit>T</ns1:P_commit>
    <ns1:init_msg>T</ns1:init_msg>
    <ns1:Org_ID>207</ns1:Org_ID>
    <ns1:R_Number>10782</ns1:R_Number>
    <ns1:R_Status>1008</ns1:R_Status>
    <ns1:Obj_Ver_No>1</ns1:Obj_Ver_No>
    </ns1:RO_Update2ProcessRequest>
    </soap:Body>
    </soap:Envelope>

  • Mapping complete input XML structure into one field on target

    Hi,
    I have a scenario where I need to map the complete input XML structure as it is, into one field on target side. so can we achieve this in Graphical Mapping? If yes, please share your valuable info.
    Regards,
    Shiva.

    Hello,
    this is the java map code.just compile it and made a .zip file import it and use it Interface Mapping.
    import com.sap.aii.mapping.api.StreamTransformation;
    import com.sap.aii.mapping.api.AbstractTrace;
    import com.sap.aii.mapping.api.StreamTransformationConstants;
    import java.util.Map;
    import java.io.*;
    public class PayloadToXMLField1 implements StreamTransformation {
        String strXML = new String();
       //Declare the XML tag for your XML message
       String StartXMLTag = "<DocumentBody>";
       String EndXMLTag = "</DocumentBody>";
       //String StartXMLTag1 = "<Code>";
       //String EndXMLTag1 = "</Code>";
        AbstractTrace trace;
        private Map param = null;
        public void setParameter(Map param) {
            this.param = param;
        public void execute(InputStream in, OutputStream out) {
            trace =
                (AbstractTrace) param.get(
                    StreamTransformationConstants.MAPPING_TRACE);
            trace.addInfo("Process Started");
            try {
                StringBuffer strbuffer = new StringBuffer();
                byte[] b = new byte[4096];
                for (int n;(n = in.read(b)) != -1;) {
                    strbuffer.append(new String(b, 0, n));
                strXML = strbuffer.toString();
            } catch (Exception e) {
                System.out.println("Exception Occurred");
            String outputPayload =
                StartXMLTag
             + "<![CDATA["
             + strXML
             + "]]>"
             + EndXMLTag;
            try {
                out.write(outputPayload.getBytes());
             trace.addInfo("Process Completed");;
            } catch (Exception e) {
                trace.addInfo("Process Terminated: Error in writing out payload");;

  • FODC0002 [{bea-err}FODC0002a]: Error parsing input XML: Error at line:2 col

    I have an ODSI Physical Service that is based on a Java Function. The Java Function builds a SQL statement and uses JDBC to query for a ResultSet. One of the columns that is queried is a Clob. Sometimes, the data in this column causes an XMLBeans validation exception in ODSI: {err}XQ0027: Validation failed: error: decimal: Invalid decimal value: unexpected char '114'
    The issue is not consistently replicable with particular database record, the database records that present this issue at one point in time will be resolved after a restart of ODSI and replaced by another list of records that present the same error.
    As can be seen from the stack trace, it looks like the issue is happening after the database query has returned and while the process is assembling the SOAP response.
    Error at line:2 col:481 Line:2 '=' expected, got char[99]
    at weblogic.xml.babel.scanner.ScannerState.expect(ScannerState.java:241)
    at weblogic.xml.babel.scanner.OpenTag.read(OpenTag.java:60)
    at weblogic.xml.babel.scanner.Scanner.startState(Scanner.java:251)
    at weblogic.xml.babel.scanner.Scanner.scan(Scanner.java:178)
    at weblogic.xml.babel.baseparser.BaseParser.accept(BaseParser.java:533)
    at weblogic.xml.babel.baseparser.BaseParser.accept(BaseParser.java:510)
    at weblogic.xml.babel.baseparser.EndElement.parse(EndElement.java:34)
    at weblogic.xml.babel.baseparser.BaseParser.parseElement(BaseParser.java:457)
    at weblogic.xml.babel.baseparser.BaseParser.parseSome(BaseParser.java:326)
    at weblogic.xml.stax.XMLStreamReaderBase.advance(XMLStreamReaderBase.java:195)
    at weblogic.xml.stax.XMLStreamReaderBase.next(XMLStreamReaderBase.java:237)
    at weblogic.xml.stax.XMLEventReaderBase.parseSome(XMLEventReaderBase.java:189)
    at weblogic.xml.stax.XMLEventReaderBase.nextEvent(XMLEventReaderBase.java:122)
    at weblogic.xml.query.parsers.StAXEventAdaptor.queueNextTokens(StAXEventAdaptor.java:136)
    at weblogic.xml.query.parsers.StAXEventAdaptor.queueNextTokens(StAXEventAdaptor.java:124)
    at weblogic.xml.query.parsers.BufferedParser.fetchNext(BufferedParser.java:79)
    at weblogic.xml.query.iterators.GenericIterator.next(GenericIterator.java:104)
    at weblogic.xml.query.runtime.navigation.ChildPath.fetchNext(ChildPath.java:308)
    at weblogic.xml.query.iterators.GenericIterator.hasNext(GenericIterator.java:133)
    at weblogic.xml.query.schema.BestEffortValidatingIterator$OpenedIterator.hasNext(BestEffortValidatingIterator.java:224)
    at weblogic.xml.query.schema.ValidatingIterator.fetchNext(ValidatingIterator.java:82)
    at weblogic.xml.query.iterators.GenericIterator.next(GenericIterator.java:104)
    at weblogic.xml.query.xdbc.iterators.ItemIterator.fetchNext(ItemIterator.java:86)
    at weblogic.xml.query.iterators.LegacyGenericIterator.next(LegacyGenericIterator.java:109)
    at weblogic.xml.query.schema.BestEffortValidatingIterator.fetchNext(BestEffortValidatingIterator.java:85)
    at weblogic.xml.query.iterators.GenericIterator.next(GenericIterator.java:104)
    at weblogic.xml.query.xdbc.iterators.ItemIterator.fetchNext(ItemIterator.java:86)
    at weblogic.xml.query.iterators.LegacyGenericIterator.next(LegacyGenericIterator.java:109)
    at weblogic.xml.query.runtime.typing.SeqTypeMatching.fetchNext(SeqTypeMatching.java:137)
    at weblogic.xml.query.iterators.GenericIterator.next(GenericIterator.java:104)
    at com.bea.dsp.wrappers.jf.JavaFunctionIterator.fetchNext(JavaFunctionIterator.java:273)
    at weblogic.xml.query.iterators.GenericIterator.next(GenericIterator.java:104)
    at weblogic.xml.query.runtime.querycide.QueryAssassin.fetchNext(QueryAssassin.java:54)
    at weblogic.xml.query.iterators.GenericIterator.peekNext(GenericIterator.java:163)
    at weblogic.xml.query.runtime.qname.InsertNamespaces.fetchNext(InsertNamespaces.java:247)
    at weblogic.xml.query.iterators.GenericIterator.next(GenericIterator.java:104)
    at weblogic.xml.query.runtime.core.ExecutionWrapper.fetchNext(ExecutionWrapper.java:88)
    at weblogic.xml.query.iterators.GenericIterator.next(GenericIterator.java:104)
    at weblogic.xml.query.xdbc.iterators.ItemIterator.fetchNext(ItemIterator.java:86)
    at weblogic.xml.query.iterators.LegacyGenericIterator.hasNext(LegacyGenericIterator.java:130)
    at weblogic.xml.query.xdbc.util.Serializer.serializeItems(Serializer.java:251)
    at com.bea.ld.server.ResultPusher$DSP25CompatibilityPusher.next(ResultPusher.java:236)
    at com.bea.ld.server.ResultPusher.pushResults(ResultPusher.java:112)
    at com.bea.ld.server.XQueryInvocation.execute(XQueryInvocation.java:770)
    at com.bea.ld.EJBRequestHandler.invokeQueryInternal(EJBRequestHandler.java:624)
    at com.bea.ld.EJBRequestHandler.invokeOperationInternal(EJBRequestHandler.java:478)
    at com.bea.ld.EJBRequestHandler.invokeOperation(EJBRequestHandler.java:323)
    at com.bea.ld.ServerWrapperBean.invoke(ServerWrapperBean.java:153)
    at com.bea.ld.ServerWrapperBean.invokeOperation(ServerWrapperBean.java:80)
    at com.bea.ld.ServerWrapper_s9smk0_ELOImpl.invokeOperation(ServerWrapper_s9smk0_ELOImpl.java:63)
    at com.bea.dsp.ws.RoutingHandler$PriviledgedRunner.run(RoutingHandler.java:96)
    at com.bea.dsp.ws.RoutingHandler.handleResponse(RoutingHandler.java:217)
    at weblogic.wsee.handler.HandlerIterator.handleResponse(HandlerIterator.java:287)
    at weblogic.wsee.handler.HandlerIterator.handleResponse(HandlerIterator.java:271)
    at weblogic.wsee.ws.dispatch.server.ServerDispatcher.dispatch(ServerDispatcher.java:176)
    at weblogic.wsee.ws.WsSkel.invoke(WsSkel.java:80)
    at weblogic.wsee.server.servlet.SoapProcessor.handlePost(SoapProcessor.java:66)
    at weblogic.wsee.server.servlet.SoapProcessor.process(SoapProcessor.java:44)
    at weblogic.wsee.server.servlet.BaseWSServlet$AuthorizedInvoke.run(BaseWSServlet.java:285)
    at weblogic.wsee.server.servlet.BaseWSServlet.service(BaseWSServlet.java:169)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3498)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(Unknown Source)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    <Apr 29, 2011 12:47:01 PM EDT> <Notice> <ODSI> <BEA-000000> <LabOrderDataServices> <Error occurred performing ODSI operation: {ld:LabOrder/logical/LabOrderReport}getLabOrderDetails:1
    weblogic.xml.query.exceptions.XQueryDynamicException: ld:LabOrder/logical/LabOrderReport.ds, line 34, column 6: {err}FODC0002 [{bea-err}FODC0002a]: Error parsing input XML: Error at line:2 col:481 Line:2 '=' expected, got char[99]
    at weblogic.xml.query.iterators.AbstractIterator.reportUserError(AbstractIterator.java:95)
    at weblogic.xml.query.iterators.AbstractIterator.reportUserError(AbstractIterator.java:147)
    at weblogic.xml.query.parsers.Parser.reportParseError(Parser.java:157)
    at weblogic.xml.query.parsers.StAXEventAdaptor.queueNextTokens(StAXEventAdaptor.java:225)
    at weblogic.xml.query.parsers.StAXEventAdaptor.queueNextTokens(StAXEventAdaptor.java:124)
    Truncated. see log file for complete stacktrace
    javax.xml.stream.XMLStreamException: Error at line:2 col:481 Line:2 '=' expected, got char[99]
    at weblogic.xml.stax.XMLStreamReaderBase.advance(XMLStreamReaderBase.java:206)
    at weblogic.xml.stax.XMLStreamReaderBase.next(XMLStreamReaderBase.java:237)
    at weblogic.xml.stax.XMLEventReaderBase.parseSome(XMLEventReaderBase.java:189)
    at weblogic.xml.stax.XMLEventReaderBase.nextEvent(XMLEventReaderBase.java:122)
    at weblogic.xml.query.parsers.StAXEventAdaptor.queueNextTokens(StAXEventAdaptor.java:136)
    Truncated. see log file for complete stacktrace
    Error at line:2 col:481 Line:2 '=' expected, got char[99]
    at weblogic.xml.babel.scanner.ScannerState.expect(ScannerState.java:241)
    at weblogic.xml.babel.scanner.OpenTag.read(OpenTag.java:60)
    at weblogic.xml.babel.scanner.Scanner.startState(Scanner.java:251)
    at weblogic.xml.babel.scanner.Scanner.scan(Scanner.java:178)
    at weblogic.xml.babel.baseparser.BaseParser.accept(BaseParser.java:533)
    Truncated. see log file for complete stacktrace
    >
    Can somebody shed some light on this issue?
    Thanks
    Edited by: user738507 on May 6, 2011 7:21 AM

    Here is the java function:
         * Iterate through the search results and build out the XmlBean response
         * @param helper A helper class used to simplify common JDBC commands
         * @param doc The XmlBean document to populate
         * @param isCollectionsIncluded True if Collection info should be included in results, False otherwise
         * @param isFullDetailsIncluded True if Result data should be included in results, False otherwise
         * @throws Exception
         private static void addOrders(XmlBeansJDBCHelper helper, LabOrderReportDocument doc,
                   boolean isCollectionsIncluded, boolean isFullDetailsIncluded) throws Exception {
              int rows = 0;
              ResultSet rs = helper.getResultSet();
              LabOrders labOrders = doc.getLabOrderReport().addNewLabOrders();
              LabOrder record = null;
              HashMap<Long, Collection> parentCollectionMap = null;
              // initialize variable used to track when child elements of the XML should be created
              long previousRowOrderId = 0;
              long previousRowParentOrderCollectionId = 0;
              long previousRowOrderCollectionId = 0;
              long previousRowResultId = 0;
              boolean isRootCollectionNode = false;
              LabOrder.Collections lastParentOuterCollectionsAdded = null;
              com.idexx.services.lde.laborder.Collection.Collections lastParentInnerCollectionsAdded = null;
              com.idexx.services.lde.laborder.Collection lastCollectionAdded = null;
              Result lastResultAdded = null;
              // Loop through the results and build XmlBean nodes for each row
              // Since the SQL is joining Orders to Collections (one-to-many) to Results (one-to-many),
              // and returning a flat structure, there will be duplicate Order data on each row when
              // multiple collections exist on the Order, and duplicate Collection data when multiple
              // Results exist. We can use this fact to determine when to create a new Collection, or
              // Result node.
              while (helper.getResultSet().next())
                   rows++;
                   long currentRowParentOrderCollectionId = 0;
                   long currentRowOrderCollectionId = 0;
                   long currentRowResultId = 0;
                   long currentRowResultRemarkId = 0;
                   //int rowno = helper.getResultSet().getRow();
                   // Get the Order ID
                   logDebug("Getting the OrderId.....");
                   BigInteger dbOrderId = JDBCHelper.getBigInteger(rs, DataConstants.ORDER_ID);
                   logDebug("DONE getting the OrderId.");
                   long currentRowOrderId = dbOrderId.longValue();
                   // Determine the Order ID, Order Collection ID, and Result ID currently being processed.
                   // These will be used to determine whether to start a new LabOrder Bean, Collections Bean, or Results Bean
                   if (isCollectionsIncluded || isFullDetailsIncluded) {
                        // Get the ParentOrderCollectionID
                        logDebug("Getting the Parent Collection Order ID.....");
                        BigInteger dbParentOrderCollectionId = JDBCHelper.getBigInteger(rs, DataConstants.PARENT_ORDER_COLLECTION_ID);
                        if ( dbParentOrderCollectionId != null )
                             currentRowParentOrderCollectionId = dbParentOrderCollectionId.longValue();
                        else
                             currentRowParentOrderCollectionId = 0;
                        // Get the OrderCollectionID
                        logDebug("Getting the Order Collection ID.....");
                        BigInteger dbOrderCollectionId = JDBCHelper.getBigInteger(rs, DataConstants.ORDER_COLLECTION_ID);
                        if ( dbOrderCollectionId != null )
                             currentRowOrderCollectionId = dbOrderCollectionId.longValue();
                        else
                             currentRowOrderCollectionId = 0;
                        if ( isFullDetailsIncluded ) {
                             // Get the ResultID
                             logDebug("Getting the Result Id.....");
                             BigInteger dbResultId = JDBCHelper.getBigInteger(rs, DataConstants.RESULT_ID);
                             if ( dbResultId != null )
                                  currentRowResultId = dbResultId.longValue();
                             else
                                  currentRowResultId = 0;
                             // Get the ResultRemarkID
                             BigInteger dbResultRemarkId = JDBCHelper.getBigInteger(rs, DataConstants.RESULT_REMARK_ID);
                             if ( dbResultRemarkId != null )
                                  currentRowResultRemarkId = dbResultRemarkId.longValue();
                             else
                                  currentRowResultRemarkId = 0;
                   isRootCollectionNode = (currentRowParentOrderCollectionId == 0);
                   logDebug("currentRowOrderId: " + currentRowOrderId);
                   logDebug("previousRowOrderId: " + previousRowOrderId);
                   logDebug("currentRowResultId: " + currentRowResultId);
                   logDebug("previousRowResultId: " + previousRowResultId);
                   logDebug("currentRowResultRemarkId: " + currentRowResultRemarkId);
                   logDebug("previousRowResultRemarkId: N/A");
                   logDebug("currentRowParentOrderCollectionId: " + currentRowParentOrderCollectionId);
                   logDebug("previousRowParentOrderCollectionId: " + previousRowParentOrderCollectionId);
                   logDebug("currentRowOrderCollectionId: " + currentRowOrderCollectionId);
                   logDebug("previousRowOrderCollectionId: " + previousRowOrderCollectionId);
                   if ( currentRowOrderId != previousRowOrderId ) {
                        parentCollectionMap = new HashMap<Long, Collection>();
                        lastParentOuterCollectionsAdded = null;
                        lastParentInnerCollectionsAdded = null;
                        lastCollectionAdded = null;
                        lastResultAdded = null;
                        // This is a new Order, generate a new Lab Order bean
                        record = addOrder(labOrders, helper, dbOrderId, isFullDetailsIncluded);
                        logDebug("Order Added!");
                        // If there is Parent Collection data and it should be included, build a Collections element,
                        // and populate the first one
                        if ( !isRootCollectionNode && (isCollectionsIncluded || isFullDetailsIncluded) ) {
                             lastParentOuterCollectionsAdded = record.addNewCollections();
                             lastCollectionAdded = addCollection(record, helper, lastParentOuterCollectionsAdded, true);
                             logDebug("Collection Added! Is it null? " + (lastCollectionAdded == null));
                        // If there is Collection data and it should be included, build a Collections element,
                        // and populate the first one
                        if ( currentRowOrderCollectionId > 0 && (isCollectionsIncluded || isFullDetailsIncluded) ) {
                             if ( isRootCollectionNode ) {
                                  lastParentOuterCollectionsAdded = record.addNewCollections();
                                  lastCollectionAdded = addCollection(record, helper, lastParentOuterCollectionsAdded, false);
                                  parentCollectionMap.put(new Long(currentRowOrderCollectionId), lastCollectionAdded);
                                  logDebug("parent collection added to map: " + currentRowOrderCollectionId);
                             else {
                                  lastParentInnerCollectionsAdded = lastCollectionAdded.addNewCollections();
                                  lastCollectionAdded = addCollection(record, helper, lastParentInnerCollectionsAdded, false);
                             logDebug("Collection Added! Is it null? " + (lastCollectionAdded == null));
                             // If there is Result data and it should be included, build a Results element,
                             // and populate the first one
                             if ( currentRowResultId > 0 && isFullDetailsIncluded ) {
                                  logDebug("Adding result....");
                                  lastResultAdded = addResult(record, helper, lastCollectionAdded);
                                  logDebug("Result Added!");
                                  // If there is Result Remark data and it should be included, build a ResultRemarks element,
                                  // and populate the first one
                                  if ( currentRowResultRemarkId > 0 && isFullDetailsIncluded ) {
                                       addResultRemark(record, helper, lastResultAdded);
                        logDebug("DONE getting first Collection and Result.");
                   else if ( currentRowParentOrderCollectionId != previousRowParentOrderCollectionId
                             && (isCollectionsIncluded || isFullDetailsIncluded) ) {
                        // This is a new, top level, Order Collection to be included
                        lastParentOuterCollectionsAdded = null;
                        lastParentInnerCollectionsAdded = null;
                        lastCollectionAdded = null;
                        lastResultAdded = null;
                        logDebug("Getting next Order Collection...");
                        // If there is Parent Collection data and it should be included, build a Collections element,
                        // and populate the first one
                        if ( !isRootCollectionNode ) {
                             lastCollectionAdded = (com.idexx.services.lde.laborder.Collection)parentCollectionMap.get(new Long(currentRowParentOrderCollectionId));
                             logDebug("A Collection Added! Is it null? " + (lastCollectionAdded == null));
                        // If there is Collection data and it should be included, build a Collections element,
                        // and populate the first one
                        if ( currentRowOrderCollectionId > 0 ) {
                             if ( isRootCollectionNode ) {
                                  //LabOrder.Collections collections = record.addNewCollections();
                                  lastParentOuterCollectionsAdded = record.getCollections();
                                  lastCollectionAdded = addCollection(record, helper, lastParentOuterCollectionsAdded, false);
                                  parentCollectionMap.put(new Long(currentRowOrderCollectionId), lastCollectionAdded);
                             else {
                                  lastParentInnerCollectionsAdded = lastCollectionAdded.addNewCollections();
                                  lastCollectionAdded = addCollection(record, helper, lastParentInnerCollectionsAdded, false);
                             logDebug("B Collection Added! Is it null? " + (lastCollectionAdded == null));
                             // If there is Result data and it should be included, build a Results element,
                             // and populate the first one
                             if ( currentRowResultId > 0 && isFullDetailsIncluded ) {
                                  lastResultAdded = addResult(record, helper, lastCollectionAdded);
                                  // If there is Result Remark data and it should be included, build a ResultRemarks element,
                                  // and populate the first one
                                  if ( currentRowResultRemarkId > 0 && isFullDetailsIncluded ) {
                                       addResultRemark(record, helper, lastResultAdded);
                   else if ( currentRowOrderCollectionId != previousRowOrderCollectionId
                             && (isCollectionsIncluded || isFullDetailsIncluded) ) {
                        // This is a new Order Collection to be included inside of a parent collection
                        logDebug("Getting next CHILD Order Collection...");
                        logDebug("isRootCollectionNode: " + isRootCollectionNode);
                        logDebug("Order ID: " + helper.getBigInteger(DataConstants.ORDER_ID));
                        logDebug("Order Collection ID: " + helper.getBigInteger(DataConstants.ORDER_COLLECTION_ID));
                        logDebug("Collection ID: " + helper.getBigInteger(DataConstants.COLLECTION_ID));
                        if ( isRootCollectionNode ) {
                             lastCollectionAdded = addCollection(record, helper, lastParentOuterCollectionsAdded, false);
                             parentCollectionMap.put(new Long(currentRowOrderCollectionId), lastCollectionAdded);
                        else {
                             com.idexx.services.lde.laborder.Collection parentCollection = (com.idexx.services.lde.laborder.Collection)parentCollectionMap.get(new Long(currentRowParentOrderCollectionId));
                             if(parentCollection == null) {
                                  log(LOG_LEVEL.WARN, "Parent Collection with id: " + currentRowParentOrderCollectionId + " is null for collection id: " + currentRowOrderCollectionId + " but isRootCollectionNode is " + isRootCollectionNode);
                             } else {
                                  lastParentInnerCollectionsAdded = parentCollection.getCollections();
                                  logDebug("Is lastParentInnerCollectionsAdded null? " + (lastParentInnerCollectionsAdded == null));
                                  lastCollectionAdded = addCollection(record, helper, lastParentInnerCollectionsAdded, false);
                        // If there is Result data and it should be included, build a Results element,
                        // and populate the first one
                        if ( currentRowResultId > 0 && isFullDetailsIncluded ) {
                             lastResultAdded = addResult(record, helper, lastCollectionAdded);
                             // If there is Result Remark data and it should be included, build a ResultRemarks element,
                             // and populate the first one
                             if ( currentRowResultRemarkId > 0 && isFullDetailsIncluded ) {
                                  addResultRemark(record, helper, lastResultAdded);
                   else if ( currentRowResultId != previousRowResultId
                             && isFullDetailsIncluded ) {
                        // There is a new Result to be included
                        logDebug("Getting next Result...");
                        // This is a new result to be included
                        lastResultAdded = addResult(record, helper, lastCollectionAdded);
                        // If there is Result Remark data and it should be included, build a ResultRemarks element,
                        // and populate the first one
                        if ( currentRowResultRemarkId > 0 && isFullDetailsIncluded ) {
                             addResultRemark(record, helper, lastResultAdded);
                   else if ( isFullDetailsIncluded ) {
                        // There is a new Result Remark to include
                        logDebug("Getting next Result Remark...");
                        // This is a new result remark to be included
                        addResultRemark(record, helper, lastResultAdded);
                   logDebug("Done building response.");
                   previousRowResultId = currentRowResultId;
                   previousRowParentOrderCollectionId = currentRowParentOrderCollectionId;
                   previousRowOrderCollectionId = currentRowOrderCollectionId;
                   previousRowOrderId = currentRowOrderId;
              logDebug("Found " + rows + " rows of data.");
         }

  • Large input xml request to BPEL

    Does BPEL load the whole input request xml in memory?
    I have a input request having multiple IDs. The oracle business rule transforms 1 id at a time.
    BPEL calls the business rule in flowN for a size of 20. (processes 20 ids at a time)
    The input request size is huge more than 150K ids at a time. Does BPEL load the whole input xml in memory ( DOM tree)?
    what is a better way to do it

    Avoid calling the BPEL process with big payload.
    It loads everything into memory, you could use debatching technique in the file adapter to split the payload into more manageable sizes.
    Do stress testing to check whether its working fine under different loads.
    --Prasanna                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Batch input xml files to one flatfile output

    I have a receive location where I would need to wait for couple of minutes to get
    all the xml files needed to process. Every file in that receive location is of same format.
    I would need to produce one output flat file for all the input xml files received within couple of minutes.A mapping need
    to be applied on every file before it's converted to a flat file batch.
    I tried to batch the input xml files but I am unable to implement the mapping which has to be applied on every input xml
    file.
    How do I approach this?

    Thank you for your response.The transformed xml has got header, body and trailer so when I processed two files by using the map in the receive port. The batched output flat file is as below:
    HEADER 27052014                                   
    1      HSGbryan_oNSYS300270520141038                                     
    2      HSG3851911NSYS150220420141455                      22042014       
    3      HSG3851909NSYS150220420141449                      22042014       
    4      HSG3853034NSYS150220420141436                      22042014       
    TRAILER      4
    HEADER 27052014                                   
    1      HSGbryan_oNSYS150270520141045                                     
    TRAILER      1
    However, the required output is
    HEADER 27052014                                   
    1      HSGbryan_oNSYS300270520141038                                     
    2      HSG3851911NSYS150220420141455                      22042014       
    3      HSG3851909NSYS150220420141449                      22042014       
    4      HSG3853034NSYS150220420141436                      22042014        
    5      HSGbryan_oNSYS150270520141045                                     
    TRAILER      5
    Is there anything we can tweak in to have one header and trailer with the body having sequential row count for the entire flat file batched message?

  • Can biztalk accept input xml with extra tags in it? if yes, How?

    I have the following sample input xml:
    <Students Class='xyz'>
    <Student count='0'>
    <FName value='Alex'/>
    <LName value='James'>
    <Age value='22'>
    <DOB value='01/01/2001'>
    <ID value='123'>
    </Student>
    <Student count='1'>
    <FName value='Victor'/>
    <LName value='Brown'>
    <Age value='23'>
    <DOB value='02/12/2000'>
    <ID value='541'>
    </Student>
    </Students>
    And my input schema accepts the xml which is similar to the above xml except it does not have <Age> and <DOB> tags in it. which means that the <Age> and <DOB> tags are extra tags in my input xml which is not
    required by the input schema.
    Question: is it possible in biztalk to accept the above xml as it is (i.e. along with <Age> and <DOB> tags) to populate the schema which accepts all xml except <Age> and <DOB> tags?
    Can it just pick up the required tags and populate the input schema?
    Thanks
    manibest

    Automatic change in the published schema on the basis of a received messages is still science fiction :)
    There is still a way for you to handle these messages. If in the receive pipeline you do not enforce schema validation, in your orchestration you use bound receive ports [not direct ports] and receive the message as an XMLDocument, you should still be able
    to receive/process the document.
    The ability of an predefined Schema to accept additional data elements is called an OPEN CONTENT Model [refer
    http://msdn.microsoft.com/en-us/library/aa468557.aspx] and you can create a schema to support such things if that is how you expect messages. So in your schema you define elements of type
    "xsd:any" to accept content changes even with schema validation turned on.
    Regards.

  • How to transfer multi-input xml file to One xml file using BPM?

    Hi!
    Using BPM, We wana transfer multiful xml file to One xml at Remote FTP Server.
    I don't know how to design BPM.
    ============== samle1: input xml====================
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE Shipments SYSTEM "DTD/Shipment.dtd">
    <Shipments>
      <sendingPartnerID>XXX</sendingPartnerID>
      <receivingPartnerID>XXX_UPSTMS</receivingPartnerID>
      <receivingMessageType>TPSDLS</receivingMessageType>
      <Shipment ID="0081646547" Type="CREATE">
        <CustomerID>XXX</CustomerID>
      </Shipment>
    </Shipments>
    ============== samle2: output xml====================
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE Shipments SYSTEM "DTD/Shipment.dtd">
    <Shipments>
      <sendingPartnerID>XXX</sendingPartnerID>
      <receivingPartnerID>XXX_UPSTMS</receivingPartnerID>
      <receivingMessageType>TPSDLS</receivingMessageType>
      <Shipment ID="0081646547" Type="CREATE">
      </Shipment>
      <Shipment ID="0081886548" Type="CREATE">
      </Shipment>
      <Shipment ID="0081646999" Type="CREATE">
      </Shipment>
    </Shipments>
    Message was edited by: ChangSeop Song

    Hi,
    To convert multiple xml files into a single file, you will have to perform a N:1 mapping.
    The following tutorials are available on SAP to help you understand BPM and also to collect multiple XML messages so that they can be mapped into a single message. Check them out,
    http://help.sap.com/saphelp_nw04/helpdata/en/08/16163ff8519a06e10000000a114084/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/08/16163ff8519a06e10000000a114084/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm
    Regards,
    Bhavesh

  • Composer Process Report XML Format

    Hi,
    We generated 'Process Report' -- XML format in Oracle BPM Composer. After generating saved content in a xml file. When tried to open this file, getting error message like not in proper xml format etc., Have we missed any thing in installing or configuring Composer. pleased suggest.
    -- Thanks .... Murthy

    @trevorbutler -  Could you send us what version of Ant you're using and a  sample of how you're using the <junit> Ant task?  Additionally,  can you validate that the example you gave for the JUnit output is from  the <junit> Ant task and not the <junitreport> task?  Could you also let us know which version of JUnit you used with Ant, just in case?
    FWIW - The XML output that you see from running tests in JUnit via the <junit> Ant task is output that has been defined without specification by the folks at Apache Ant.  There has been a lot of discussion on standardizing the output amongst the folks at TestNG, the Maven Surefire plugin and others, but I haven't seen anything standardized come out of that.  Here is a wiki page that has some of that discussion http://wiki.apache.org/ant/Proposals/EnhancedTestReports.  t's also important to note, that the aggregate results of the <junitreport> task contain a slight variation on the output produced by the <junit> task.  Consequently, we have to emulate the lowest common denominator that we know will work with the tools out there that parse the XML output associated with an xUnit framework (e.g. - Ant tasks, CI server, etc).  This being said, we rely on the community to keep us up to date with variations that we may have missed or for which need to update.  It's not so much that we've decided to exclude any particular elements from the output, we just need help fine tuning as time goes on.
    Thanks for the help.
    -Brian

  • Email input xml as body of mail

    Dear all
    I need to provide the input xml in the body of the mail. The body of the mail should be the input xml.
    I understand that in order to provide the content in the email body we need to use the XIMail30  package. However this is only for the text. But we need xml in the email body?
    Regards
    Monika

    hi,
    >>>But we need xml in the email body?
    what you can do is you can use escape chars
      "   & quot;
      <   & lt;
      >   & gt;
      &   & amp;
    which will allow you to send XML data as text and it will be visible as "XML" in the e-mail body right ?
    or you can use CDATA to wrap the XML too and send as text
    Regards,
    Michal Krawczyk

  • Input XML - DB - Output XML

    I have been able to get Liquid Data up and running.
    I have set my Output XSD as the target schema
    I have included my DB and mapped it to the Output XSD
    I am having problems getting the Input XML into my project. When I include in my XML source (input xsd) it does not show all the elements....
    My bigger question is, can I through Liquid Data, map an input XML file to a DB (run sql to match up XML element value and DB table values) and export the SQL recordset to my defind XML file?
    I started down this road based on a 'yes' answer from a
    peer.
    Spending a little more time than I had hoped on this one...
    I need to do this below..
    <Membership_ID>000001</Membership_ID> //Input XML
    ...db....
    Select * from Member_Table where XML.Membership_ID = Member_Table.Memb_ID
    ...db....
    Insert Into Pre-Defined XML.....
    <Memb_F_Name>Elvis</Memb_F_Name>
    <Memb_L_Name>Costello</Memb_L_Name>
    <Memb_City>Miami</Memb_City>
    <Memb_Age>50</Memb_Age>
    <Memb_ID>000001</Memb_ID> //Makes Hit On This
    Making progress but, any examples would be great...
    TIA
    Jay

    to use an xml file as a datasource, create an XML File Datasource in the LD Console (you need to specify a schema there). Go to the DataView Builder, reconnect to the server, it will show the XML File source with all the elements defined in the schema.
    To compare values with a db against values in a file, you need to defined an LD rdbms source for the db and an LD XML file source for the file.
    Then write your xquery - it will look something like...
    for $file_rec in document("MyFileSource")
    for $db_rec in document("MyDBSource")
    where $db_rec/Member_id eq $file_rec/Member_id
    return
    $db_rec

  • Input XML having multiple values in the same tag

    Hi,
    In my scenario, my input XML is in the following format...
    <Product>
    <Site_ID>A1, A2, A3</Site_ID>
    <SIte_Name>ABC, XYZ, PQR</Site_Name>
    </Product>
    A1 corresponds to ABC
    A2 corresponds to XYZ and so on...
    Is there some way to retrieve values from such a source file and then map it to the target
    i.e A1 ABC has to go as one record
    A2 XYZ has to go as a second record and so on..
    Thanks in advance,
    Regards,
    Karen

    using xslt you can retrive Site_ID values and Site_name and then you have to use your own abap logic to split the values.
    for example
    site_name = 'A1, A2, A3, A4' .
    then you can use split site_name at ',' into table <itab>

  • Input XML Format needs to be Translated Into CSV String Format

    Hi,
    I need to translate input xml format to CSV string format in BPEL.
    How to use xpath function to do this?
    Thanks

    1. In the partner link of the file adapter you can run the wizard and create a XSD according to your CSV format.
    (you just need to create an example of CSV)
    The wizard will create a XSD automatically.
    2. Assign an invoke activity to that partner link.
    3. Use transformation to pass data from your XML input into the invoke variable.
    Arik

Maybe you are looking for