What is the ISG+IRT/JIM System ?

The ISG+IRT/JIM system is one of the first components of Infosphere software that demonstrates the usefulness of the Infopipe abstraction. Infopipe Stub Generator (ISG), which is the main component of the system, generates the Infopipe Stub code to manage XML representations of information flow from an explicit description of its syntax and semantics requirements. Using ISG, developers may concentrate on the transformation of information, rather than spending time on the tedious and error-prone tasks of parsing and generating fast-changing XML streams.

Infopipes for Information Flow-Centric Applications

Infopipes are the software components, which link information producers to consumers, for building information flow-centric applications. Each infopipe consists of an input end, a processing middle, and an output end. The input consumes information and relays it to the middle. The middle is designed to work as a filter or an event handler, and its result is passed to the output, which then produces information. Infopipes can be combined, allowing developers to construct information flow-centric applications.

Figure 1: Infopipes for Information Flow-Centric Applications

Design of the Infopipe for XML Processing

We locate an XML parser at the consumer-end of the infopipe to capture information flow. It is designed to parse XML and create an internal data structure for the infopipe stub. Meanwhile, we locate an XML generator at the producer-end of the infopipe to generate outgoing information flow from the internal data structure. The infopipe stub passes a part of the internal data structure to program variables for access and manipulation by the infopipe processing middle, written by the infopipe developers. Similarly, the stub passes the result of processing middle to the data structure, from which appropriate XML representation is created by the XML generator.

Figure 2: Design of the Infopipe for XML Processing

Infopipes Execution Support

Figure 3 illustrates the hierarchical overview of the infopipe and its execution support architecture. The middle method execution is supported by its stub; the interface between the middle method and the stub is defined by the Infopipe-spec, which is specified by the infopipe developer. The infopipe including the stub is then supported to execute by the IRT. The interface between the infopipe stub and the IRT is defined by the Infopipe system as the Infopipe Runtime System Interface. The yellow allow in the Figure 5 shows the information processing flow.

Figure 3: Infopipes Execution Support

Infopipes Development Flow using ISG and IRT

Here is the Infopipe Development Flow using ISG and IRT.

  1. Specify their Infopipe Spec.
  2. Use ISG to generate three Java files from the Infopipe Spec. The developers will get <Infopipe>.java, <Infopipe>Exception.java and <Infopipe>Stub.java. The former two Java files are used as templates and the last one, <Infopipe>Stub.java, is the Stub implementation; it is not supposed to be edited by the developers.
  3. Edit and write their code for the middle method in <Infopipe>.java. If necessary, they write the exception code in <Infopipe>Exception.java, too.
  4. Compile the java files to class files with javac. Those four steps are the all things the infopipe developers need to do before they execute the infopipe.
  5. Finally, use IRT to execute the Infopipe with the name of the Infopipe as an argument; with the name, IRT recognizes the three Infopipe class files and instantiates the stub and middle method dynamically at the booting time.

It is quite easy to build the infopipe from the Infopipe Spec.

Figure 4: Infopipes Development Flow using ISG and IRT