Our experience with the Intelligent Broker

Clovertech Forums Read Only Archives Intelligent Health Broker Intelligent Health Broker Our experience with the Intelligent Broker

  • Creator
    Topic
  • #51003
    Richard Hart
    Participant

      I’ve been requested to post our experience

      We’ve been using the IB (IHB) in one production site since last year with very few issues. The IB is a web server that sits in front of Cloverleaf and provides the necessary hooks for web services. The IB is easy to install and certainly makes the calling of web services and providing of web services from Cloverleaf a seamless task.

      We’ve had to call support a few times and found one memory leak bug (now fixed). The HealthVision support has been great and their response quick.  Our Australian support managed to get information from other international users which was also helpful.

      Our current production site reads (FTP) large data files in FRL or CSV format and translates this to XML for sending and on the reverse, receives XML messages which are used to create FRL files. This worked well with pretty much Cloverleaf out-of-the-box, with the message data being sent as a SOAP message body – in hindsight it should have been sent as an attachment!

      We, as an organisation, are attempting to move to a SOA environment, employing the NEHTA standards and this is where a good (preferably great) understanding of XML, XML schema and WSDL’s is required.  The Cloverleaf out-of-the-box setup will not work for us as we are using extra WSA variables, a message meta data schema and the message content schemas. As usual, Cloverleaf has all the hooks in place for the coding side of things, but the GUI WSDL creation tool output requires massaging with the extra schemas/namespaces! Thankfully, the architects are pretty cluey which has helped – XML namespaces can be a world of pain.

      The IB security options appear to be satisfactory – I’ve not worked with these, so my comment is second-hand.

      The IB uses SOAP 1.1 faults and we would like to use SOAP 1.2 faults (NEHTA) – no one else has asked HealthVision for SOAP 1.2, so, understandably they haven’t coded for it!

      This is a quote from one of our architects documents with respect to web services…

      Quote:


      There are many published standards for Web Services and many ways of implementing them. Simply adhering to these standards does not automatically guarantee that Web Services are interoperable or behave as expected.

    Viewing 4 reply threads
    • Author
      Replies
      • #68392
        Richard Hart
        Participant

          This is just an update to my initial post.

          So far the Intelligent Broker has been very reliable; after starting, it just works!

          We run on AIX and the server hosts the IB and Cloverleaf versions.

          Note that the IB is linked to a Cloverleaf version!

          We have had the web services I was developing in my previous post in production for more than a year now without issue. During a document ‘bulk load’ we managed 5 messages per second, too fast for some of the SOA code later so it required throttling!

          My advice for first time users is to read the IB_Development guide and for the DEV/TEST environment, set debug on and modify the IB setup to allow connectivity from the SQuirrelSQL client tool just in case!

          We have custom inbound code, based on the supplied IbEnvelopeIn,  as we use data in the SOAP message header (its a bit like the HL7 MSH segment) and MTOM attachments.  The IB documentation is great which makes life easier.

          We have found the IB Support – not that we’ve needed it much recently – fantastic. One thing to be aware of is that the error below …

          Quote:

          jvm 12   |

          jvm 12   | ERROR 09:58:00.187 [Worker#5] IB | caught exception processing action ‘IBgetNetConfig.xsp’

          jvm 12   | com.quovadx.bpms.core.CWException: (HXML_072) Error processing XSP “IBgetNetConfig.xsp”

          jvm 12   |      at com.quovadx.bpms.api.HXML.executeHXML(HXML.java:558)

          jvm 12   |      at com.quovadx.bpms.api.RequestProcessor.executeRequest(RequestProcessor.java:107)

          jvm 12   |      at com.quovadx.bpms.api.RequestProcessor.processRequest(RequestProcessor.java:182)

          jvm 12   |      at com.quovadx.bpms.api.CWTransactionalJob.handleRequest(CWTransactionalJob.java:231)

          jvm 12   |      at com.quovadx.bpms.api.CWTransactionalJob.run(CWTransactionalJob.java:140)

          jvm 12   |      at com.quovadx.bpms.core.WorkerPool$Worker.run(WorkerPool.java:67)

          jvm 12   | ERROR 09:58:00.306 [Worker#5] IB | Error detected:

          jvm 12   | ERROR 09:58:00.306 [Worker#5] IB |   (Cloverleaf_01) Rogue Wave Platform X encountered an error while converting an Integrator Configuration file to XML “org.w3c.dom.DOMException: NAMESPACE

          _ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.

          jvm 12   | “

          jvm 12   | ERROR 09:58:00.306 [Worker#5] IB |   (HXML_063) Error processing tag “”

          jvm 12   | ERROR 09:58:00.306 [Worker#5] IB |   (HXML_072) Error processing XSP “IBgetNetConfig.xsp”

          jvm 12   | com.quovadx.bpms.core.CWException: (Cloverleaf_01) Rogue Wave Platform X encountered an error while converting an Integrator Configuration file to XML “org.w3c.dom.DOMException: NAMESPACE_E

          RR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.

          caused when a NetConfig contains ‘bad’ data will stop the IB tables from being updated, so new IB site will not work until this is fixed. Our ‘bad’ data was SOAP headers required in the TCLCurl outbound code. We have moved these to a config file which is loaded on thread startup and is part of our standard TCL coding template.

          Once I wrote the library code for ‘our standards’, creating a web services stub is easy as our code is in two parts; generic SOAP header validation which does not care about the body; and then specific SOAP body validation.  A web service stub can then be created by adding the header validation and ACK return.

        • #68393
          Jim Kosloskey
          Participant

            Richard,

            Thanks for your insight.

            We are about to travel down the IHB road and your input is helpful.

            I have a couple of questions.

            Above you state

            Quote:


            My advice for first time users is to read the IB_Development guide and for the DEV/TEST environment, set debug on and modify the IB setup to allow connectivity from the SQuirrelSQL client tool just in case!

            I have the IHB 2.2 Documentation from clovertech but I do not see that document. I see IB-DevelopmentTools.pdf and IB_UserGuide.prd, and IB_relnotes.pdf. I am assuming you are referring to one of these (I am reading them all).

            Also in your first post:

            Quote:


            Our current production site reads (FTP) large data files in FRL or CSV format and translates this to XML for sending and on the reverse, receives XML messages which are used to create FRL files. This worked well with pretty much Cloverleaf out-of-the-box, with the message data being sent as a SOAP message body – in hindsight it should have been sent as an attachment!

            I have done some reading and it appears many are suggesting using mime attachments rather than SOAP Body for messages. As you have progressed have you moved to using attachements? If so, did you have to do anything special (like in Tcl) to accomplish using attachments rather than SOAP body?

            Thanks again for sharing!

            email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

          • #68394
            David Harrison
            Participant

              We are purchasing IHB for Cloverleaf 5.6 and we have been offered training at extra cost. I’m just wondering if you need the training – I just had the basic training course for Cloverleaf and picked things up as I went, with the help of this forum of course. So I’m thinking we’ll try IHB out of the box and see how we get on.

              Any insights welcome.

              Thanks,

              Dave

            • #68395
              Jim Kosloskey
              Participant

                David,

                Well we never did move to IB so I don’t have an actual in practice response.

                Rather my opinion would be that any assistance would be valuable unless you are fully knowledgeable of SOA and Web Services and in particular the Apache functionality tha IB deploys.

                From my initial analysis, I came to the conclusion using ODBC would be critical in our environment as many of the systems which contained the data needed or were the repositories did not have any Web based service. Rather what we invisioned was Stored Procedures providing services which we would invoke via Cloverleaf ODBC and use IB to expose these non Web based services to the Web world as if these services did have a Web component (we would be the broker/bus for them).

                I think the approach would have worked well.

                I am interested to hear how you progress (you can email me directly if you like) as I am still hoping to get involved with IB here or elsewhere before my career ends. I am not optimistic about that happening here.

                email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

              • #68396
                Gaurav Mittal
                Participant

                  Hi Richard,

                  I am creating Client on IHB and I am getting following error:-

                  jvm 1    | ERROR 08:16:36.074 [Worker#8] IB.siteThread.gauravm.dest4_src4_typ_out |     (HXML_072) Error processing XSP “IBSoapOutbound.xsp”

                  jvm 1    | ERROR 40XL1: A lock could not be obtained within the time requested

                  jvm 1    |      at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.services.locks.LockSet.lockObject(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.services.locks.SinglePool.lockAnObject(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.services.locks.SinglePool.lockObject(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.store.raw.xact.RowLocking2.lockRecordForRead(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.store.access.heap.HeapController.lockRow(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.store.access.heap.HeapController.lockRow(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.store.access.btree.index.B2IRowLocking3.lockRowOnPage(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.store.access.btree.index.B2IRowLocking3._lockScanRow(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.store.access.btree.index.B2IRowLockingRR.lockScanRow(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.store.access.btree.BTreeForwardScan.fetchRows(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.store.access.btree.BTreeScan.fetchNext(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.sql.execute.TableScanResultSet.getNextRowCore(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowCore(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown Source)

                  jvm 1    |      at org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source)

                  jvm 1    |      at com.quovadx.bpms.api.SQLExec.SQLExecTag(SQLExec.java:241)

                  jvm 1    |      at com.quovadx.bpms.api.HXML.evalHXMLTag(HXML.java:1576)

                  jvm 1    |      at com.quovadx.bpms.api.HXML.executeNode(HXML.java:1484)

                  jvm 1    |      at com.quovadx.bpms.api.HXML.executeNode(HXML.java:1316)

                  jvm 1    |      at com.quovadx.bpms.api.HXML.executeNode(HXML.java:1316)

                  jvm 1    |      at com.quovadx.bpms.api.HXML.doExecuteNode(HXML.java:491)

                  jvm 1    |      at com.quovadx.bpms.api.HXML.executeProc2(HXML.java:991)

                  jvm 1    |      at com.quovadx.bpms.api.HXML.resultDocFromExecuteProc(HXML.java:786)

                  jvm 1    |      at com.quovadx.bpms.api.HXML.executeProc(HXML.java:835)

                  jvm 1    |      at com.quovadx.bpms.api.HXML.executeHXML(HXML.java:553)

                  jvm 1    |      at com.quovadx.bpms.api.RequestProcessor.executeRequest(RequestProcessor.java:107)

                  jvm 1    |      at com.quovadx.bpms.api.RequestProcessor.processRequest(RequestProcessor.java:182)

                  jvm 1    |      at com.quovadx.bpms.api.CWTransactionalJob.handleRequest(CWTransactionalJob.java:231)

                  jvm 1    |      at com.quovadx.bpms.api.CWTransactionalJob.run(CWTransactionalJob.java:140)

                  jvm 1    |      at com.quovadx.bpms.core.WorkerPool$Worker.run(WorkerPool.java:67)

                  from your point bad data i am not using custom tcl and simple using ibclientenvelopeout IB proc but still getting this error.

                  May I have your valuable tip to get rid of this error.

                  Regards,

                  Gaurav.

                  Richard Hart wrote:

                  This is just an update to my initial post.

                  So far the Intelligent Broker has been very reliable; after starting, it just works!

                  We run on AIX and the server hosts the IB and Cloverleaf versions.

                  Note that the IB is linked to a Cloverleaf version!

                  We have had the web services I was developing in my previous post in production for more than a year now without issue. During a document ‘bulk load’ we managed 5 messages per second, too fast for some of the SOA code later so it required throttling!

                  My advice for first time users is to read the IB_Development guide and for the DEV/TEST environment, set debug on and modify the IB setup to allow connectivity from the SQuirrelSQL client tool just in case!

                  We have custom inbound code, based on the supplied IbEnvelopeIn,

              Viewing 4 reply threads
              • The forum ‘Intelligent Health Broker’ is closed to new topics and replies.