Jan 23

I have been making references  to Tom Barrett’s tutorials in my blog entries, screencasts, and writeups, but without providing the links to them. Now, courtesy of Tom, I am able to do so. See below for the link and the description of Tom’s tutorials.

++++
The three tutorial documents from CEC 2008 are posted at:
http://wikis.sun.com/display/OpenESBTutor/Tom+Barrett%27s+Open+ESB+and+Mural+Tutorials

See the following section:

Sun Customer Engineering Conference (CEC) – Three Tutorials
The following three tutorials were developed for customer-facing systems engineers at Sun and at Sun partners. They were delivered at CEC 2008 held in Las Vegas in November, 2008. The goal of these three tutorials is to document the steps necessary to create, from scratch, three demonstrations that were delivered in Java CAPS/GlassFish ESB/Open ESB-related sessions at CEC 2008.

1. Exploring GlassFish ESB (V 1.1) – 90 pages – November 6, 2008 This tutorial is based upon an Internet store front scenario where customers purchase items and purchase orders (POs) are generated and forwarded to the “backend” Purchaser. The Purchaser, in turn, collaborates with the Supplier which coordinates shipping and generates a delivery notices (DNs). DNs are returned to the Purchaser and the Purchaser matches up DNs with POs before forwarding instructions to Finance for further processing.

Specific technical topics include:

Custom encoder to marshal XML to delimited records and unmarshal delimited records to XML
BPEL: looping, predicates and correlation
Service Engines: BPEL
Binding Components: HTTP, File, JMS

2. Exploring Sun ESB Suite: Open ESB Technology (V 1.1) – 51 pages – November 18, 2008
This tutorial explores a health care scenario that analyzes HL7 ADT (Admission Discharge Transfer) records to identity patient length of stays that have exceeded an average threshold set by management.  The Intelligent Event Processor (IEP) computes a moving average and identifies ADT records that note an exceptional patient length of stay.  IEP generates an alert for each excessive length of stay detected.

Specific technical topics include:

Intelligent Event Processor (IEP) (Time-Based Window, Relation Aggregator, Correlator / Filter)
BPEL orchestration
File BC for ADT record input
BPEL process invokes IEP via HTTP binding component
IEP uses File BC for output
Service Engines: BPEL, IEP
Binding Components: HTTP, File

3. Exploring Sun MDM Suite: Open ESB and Mural Technology (V 1.0) – 111 pages – November 6, 2008
This tutorial explores a health care scenario where multiple patient master databases exist containing duplicate and inconsistent patient information. A patient master index is defined and a patient application is generated that stores its master index in MySQL, provides a web-based interface to maintain index records, surfaces web services that can be called by other applications to do programmatic access to the index records and supports a JMS topic to broadcast master index changes to other hospital applications.

Specific technical topics include:

Defining patient data model
Establishing MySQL tables
BPEL process feeding index via web service call
BPEL process “listening” on JMS topic for index updates
Using Master Index Data Manager web app
Service Engines: BPEL
Binding Components: File, JMS

Errata:  If you have trouble with this version of the tutorial, please see these errata notes.  Thanks to all who have provided feedback. I’ll address these issues/comments in the next version of the tutorial.

— Tom Barrett

Jan 08

The Archive, “__Book_20061221_1320_512_with_Env.zip“, contains all (I think) projects featured in the book “Java CAPS Basics – Implementing Common EAI Patterns”, ISBN-13 978-0-13-713071-9, whether in Part I or in Part II (which is on the CD that accompanies the hardcopy book).

See Note JavaCAPSBasics_ProjectExports_Archive.pdf for additional details, including project hierarchy and prerequisite Java CAPS components.

Jan 01

This Note walks the reader through development of a Java CAPS 6/JBI-based / OpenESB-based solution that addresses a Healthcare-related business problem. The Note elaborates on the healthcare background necessary to get a notion of what is being done and why, and provides detailed steps required to implement and exercise the solution to the business problem.

Updated note, where GlassFsish ESB v2.1 is used instead of Java CAPS 6, is available at 00_HL7_Example_Development_Instructions_Final_1.1.2.pdf

We will use the HL7 Binding Component, the File Binding Component, the JMS Binding Component, the SOAP/HTTP Binding Component, the BPEL 2.0 Service Engine, the JavaEE Service Engine, the HL7 Encoder and EJB-based Web Services in a JBI-based solution.

In the process we will create XML Schema Documents (XSDs), Web Services Description Language Documents (WSDLs), a BPEL 2.0 Business Process, an EJB-based “Implementation First” web service, an EJB- and WSDL-based “Interface First” web service, a bunch of Composite Applications, BPLE 2.0 mapping, BPEL 2.0-based Web Service orchestration, on-the-fly conversion of HL7 version 2.3.1 delimited messages to their XML equivalents. We will get a pretty good exposure to what OpenESB and Java CAPS 6/JBI components look like, how they work and how they can be used to create real business solutions. Above all, we will develop and test a solution that is more sophisticated then the customary “Hello World” examples but not so complex as to take too long to build and become too hard to comprehend by a novice user.

The particular business problem and the particular solution came about because once upon a time there was intent to build a series of related OpenESB projects – HL7 Processor, MDM Processor and IEP Processor – that would:

  • receive HL7 v2.x delimited messages
  • convert HL7 v2.x messages to their equivalent XML format
  • split message stream into ADT A01s, ADT A03s and other
  • convert A01s to an abbreviated Custom Patient XML format
  • convert A03s to an abbreviated Custom Discharge format
  • send Custom Patients to a JMS Queue for processing by a MDM solution
  • send Custom Discharges to a JMS Queue for processing by an IEM solution
  • have the MDM process Custom Patients into a Master Patient Index
  • have the IEP process Custom Discharges to flag excessive length of stay

The MDM Processor and the IEP Processor made it to the Sun CEC 2008 as demonstrations, with associated Tutorials by Tom Barrett, and demonstration recordings by me. The HL7 Processor did not make it. With the appearance of Java CAPS 6 Update 1 more JBI components made it into the officially supported Sun product. While the HL7 BC and the HL7 Encoder did not make it into this Update they will, eventually. Both components are already available from the OpenESB site and can be installed into the Java CAPS 6 Update 1 installation as unsupported components. This is what we will do for this Note.

The complete Note is to be found here.

The archive containing supplementary material you can use to save yourself the trouble of downloading component and, above all else, containing test files with HL7 delimited records, is here.

For these interested in processing HL7 using GlassFish ESB v2.1 there is a blog entry, “GlassFish ESB v2.1, MySQL v5.1 – Make HL7 v2.3.1 Delimited Messages from Custom Delimited Records with HL7 Encoder“, which discusses, amongst other things, how to create a custom HL7 v2 ADT A04 XSD and a “match any” XSD.

Tagged with:
Dec 19

Following the CEC 2008 Conference in Las Vegas, where the Java CAPS Stream saw a bunch of presentations and demonstrations, I am happy to offer screencasts of the three demonstration sessions I recorded for the event.

The GlassFish ESB screencast is the ScreenCast of the CEC 2008 GlassFish ESB Essentials Lab demonstration. This is a recording of the demonstration described in detail by Tom Barrett in
the GlassFish ESB Tutorial and Lab document. The screencast is an extended version of what the CEC audience got to see. In this screencast I use the OpenESB distribution to discuss, design and implement an abbreviated Supply Chain solution
. I use the File BC, the SOAP/HTTP BC, BPEL 2.0 SE, the Custom Ecoder, the XSD Editor, the WSDL Editor, BPEL correlations, BPEL Pick wit Timer, CASA Editor and a bunch of other OpenESB/GlassFish ESB featiures and facilities. Watching the screencast will give you a pretty good idea what the tooling looks like, how easy it is ti use it, how a theoretical requirement can be turned into a practical design and how that design can be implemented and exercised using the tooling and infrastructure you can get free of charge and use as much as you might desire.

Data for the following two screencasts/demonstrations is produced by the solution discussed in the next blog entry, which ought to precede these two.

The Java CAPS 6/Mural Master data Management screencast is the ScreenCast of the CEC 2008 Java CAPS Essentials Master Data Management (MDM) Lab demonstration. This is a recording of the demonstration described in detail by Tom Barrett in the Java CAPS Essentials MDM Tutorial and Lab document. In the screencast I discuss what the Master Data Management (MDM) is, how a Healthcare enterprise might leverage it to improve its business and how the OpenESB or Java CAPS 6 can be used to implement MDM. I use OpenESB to design a Master Patient Index Data Model, implement it with the tool, generate Data Model-based Master Index Data Management Web Application, build an integration solution to feed the MDM solution with transactional data form Hospital Information Systems and build a broadcast processor solution that can be used to send master patient index updates to downstream systems which have a need to be kept in synch with the enterprise view of the patient. One will get a very good idea of what the core Master Data Management is about, how easy it is to create the MDM Application and related integration components using the OpenESB/Java CAPS 6 tooling, and how the business of maintaining master patient index looks and works like.

The Java CAPS 6 / Intelligent Event Processor screencast is the ScreenCast of the CEC 2008 Java
CAPS Essentials IEP Lab demonstration. This is a recording of the demonstration described in detail by Tom Barrett in the Java CAPS Essentials IEP Tutorial and Lab document.The screencast is what the CEC audience got to see. In this screencast I demonstrate how an Intelligent Event Processing (IEP) solution is built and exercised. The solution addresses a Helathcare business problem – it calculates an Average Length of Stay for each patient in a sliding time window, based on data from an ADT A03 HL7 Discharge message, works out which patients’ Length of Stay exceeds average for the patients in the window by 1.5 times, and passes records related to these patients
on while discarding ‘normal’ records.

The AVIs were recorded with Camtasia Studio. You may need a Camtasia Player to playe them on Windows. You could also try getting a Camtasia codec for your platform/player from the Camtasia site.

I had audio quality problems when directly playing the recordings through Mozilla, which used the Quicktime plugin. The best thing to do is to download the recordings and try different players until one works for you.;

Enjoy.

Tagged with:
Dec 07

Every now and then someone has a need/desire to collect and process performance and usage metrics of JMS destinations and the messaging system.  Knowing that there is a buildup of messages in a particular destination over time might indicate that a downstream component is failing or the downstream external system is not available. This, in turn, may enable operational staff in the enterprise to intervene before things get out of hand. In more sophisticated solutions, knowing that a buildup of messages occurs may enable the solution to automatically bring on line additional resources, perhaps by starting additional copies of appropriate components or starting additional machines which host consumers that will take up the load.

The Java Message Queue implementation (hereafter Java MQ) has monitoring metrics collection built in and provides a convenient way of programmatic access to these metrics.

Java CAPS 5.1, Java CAPS 6, GlassFish ESB (commercially supported subset of OpenESB) and OpenESB all provide support for the Java MQ as the messaging infrastructure so solutions can be built to take advantage of this functionality.

This Note presents example projects, built using Java CAPS 6 Classic components and an example built using the Java CAPS 6/GlassFish ESB JMS JCA Adapter, which receive and “process” Java MQ metrics. How you can take advantage of this capability in your enterprise solutions is up to you and your creativity.

Nov 18

It has been a while. I was busy. One of the things that kept me busy was putting together demonstrations for the CEC 2008 in Las Vegas, then delivering them. As an offshoot of that work I have a fair bit of material to share, which will take some time to put together into a form that can be posted in the blog. This piece is the first one.

Whereas Java CAPS 6 supports interaction with the Java MQ infrastructure through the Enterprise Manager, neither OpenESB nor GlassFishESB include the ‘Enterprise’ class functionality found in the Java CAPS ‘classic’, GUI for interaction with the JMS being one of example.

Here is a step-by-step on how to configure Hermes JMS (http://www.hermesjms.com/) for use with Java MQ, distributed as part of the OpenESB, GlassFishESB and Java CAPS 6. <- This link points to the original post.

The updated post, including material from the comments below, is available as HermesJMS_Configuration_for_JavaMQ and should be used instead.

Aug 27

In a number of blog entries I used Oracle 9i as the database against which solutions under discussion were executed. This is dandy for people who have Oracle, which is a payware piece and quite expensive. For these who don’t have Oracle the examples would have been less useful. To remedy this situation, and take advantage of availability of Sun MySQL Community Server as a Free, Open Source software, I resolved to use My SQL in all blog notes, which require a database, which I will be developing from now on. For these who care, MySQL is the third most used RDBMS in the World. Some of the largest web sites in the World use it.See my blog at http://blogs.sun.com/javacapsfieldtech/entry/mysql_community_server_and_gui for discussion of how to obtain, install and configure MySQL Community Server on Windows.

This note discusses how to configure the Java CAPS 6 JDBC eWay (Repository) to connect to the MySQL Community Server both in XA and non-XA mode. In particular, the note points out an additional, critical configuration item that is undocumented and is bound to trip plenty of people. I hope this will save you the time and the trouble of working out for yourself what the correct incantations are.

The entire note is contained in Java CAPS 6 JDBC eWay _Repository_ MySQL Configuration.pdf

Tagged with:
Jul 27

In Note 6 we explored the transactional behavior of a JCA MDB invoked by a JMS Adapter and orchestrating an Oracle JCA Adapter (a transactional end point) and a Batch Local File JCA Adapter (a non-transactional end point). In this Note let’s explore the issue of transactionality of a JCA Message-Driven Bean invoked by a non-transactional end point.

Let’s take the example from the “Java CAPS Basics: Implementing Common EAI Patterns Companion CD” book, ISBN: 0-13-713071-6, Chapter 11 “Scalability and Resilience”, Section 11.2 “Exception Handling”, subsection 11.2.1 “Exceptions in Java Collaborations”, 11.2.1.2 “Other Java Collaborations”. The book from which this section comes is available on the Companion CD. Let’s re-work this example using Java CAPS 6 JCA Adapters.

The example illustrates exception processing behaviour involving a Batch Inbound Adapter-triggered JCA Message-Driven Bean.
The Batch Inbound Adapter is designed to poll a directory for a file. When it finds a file that matches the name, or the name pattern, it immediately renames the fie by prepending a GUID to the original name then triggers the MDB and passes to it the original name of the file, the current name of the file and the directory in which the file was found. This behavior prevents other possible file pollers from getting hold of the file and gives the first comer exclusive access to the file. The MDB is designed to take the name of the file as given and rename the file to the original name with the suffix “~.in” appended, to indicate the file was read and processed. To do this the MDB will use the Batch Local File JCA Adapter’s capability to post-process the file by renaming or deleting it. To explore the transactional behavior the MDB will explicitly throw an exception after it renames the file.
The complete Note is available in 07BatcyhInboundTriggeredJCANonTransacionality.pdf.

Jul 27

Rather then inventing an example to discuss and illustrate the use of the Oracle JCA Adapter let’s build a solutions that uses the Oracle JCA Adapter and shows additional Java CAPS 6 facilities of interest.

Let’s take the example from the “Java CAPS Basics: Implementing Common EAI Patterns Companion CD” book, ISBN: 0-13-713071-6, Chapter 11 “Scalability and Resilience”, Section 11.2 “Exception Handling”, subsection 11.2.1 “Exceptions in Java Collaborations”, 11.2.1.1 “JMS-Triggered Java Collaborations”. The book from which this section comes is available on the Companion CD. Let’s re-work this example using Java CAPS 6 JCA Adapters.

This example illustrates exception handling involving a JMS-triggered JCA Message-Driven Bean.
The MDB is designed to receive a JMS message, update a field in a database table row with the value of the text message, write the text message, together with the timestamp, to a file and finish.

The complete Note is provided in 06JMSTriggeredJCAwithOracle.pdf

Update: Thanks to Dao Tien Tran for pointing out a typo on page 5. I corrected the typo and uploaded the corrected document.  Change is marked in color and with a change bar.

Jul 24

As at now there does not seem to be a way to stream FTP payloads to the local file system, or stream local files to FTP servers in the JBI environment. This kind of functionality may or may not appear in the OpenESB project, perhaps in conjunctions with the FTP BC or the File BC or both. In the meantime, a Java CAPS 6 developer can use the JCA Adapters-based solution to stream payloads of arbitrary size between FTP servers and local file systems in either direction.

This Note walks through the implementation of a Batch FTP JCA solution, which is triggered by a JMS Message, and performs a streaming FTP transfer of an arbitrarily large payload between a remote FTP server and the local file system. This Note re-implements the inbound part of the “Java CAPS 5.1 and Java CAPS 6 – Streaming Large FTP Transfers” Note available at http://blogs.sun.com/javacapsfieldtech/entry/streaming_large_ftp_transfers_with.
It should be easy enough to re-implement the outbound part of that Note using the material in this Note.

The complete Note is available in 04JCAStreamingFTPIn.pdf.

preload preload preload