Activities involved in mainframe integration usually require:
Mapping mainframe data structures to open world constructs such as Java classes or XML Schema.
Mapping mainframe programs to open world processes (Web Service operations, Java methods, …).
These mapping activities occur at development time and usually produce meta-data that can later be used by runtime engines to flow requests and data between the mainframe application and the open world.
At the core of LegStar is an XML schema to COBOL binding language. This is similar in spirit to the Java to XML Schema binding language introduced by the JAXB standard. This COBOL binding language materializes as XML schema annotations or Java annotations.
LegStar COBOL binding language tries to cover all the real issues facing integration developers such as how to map COBOL weakly typed variables to Java strongly typed ones, deal with complex "REDEFINES", variable size arrays, code page conversions, numeric conversions and support for multiple input/output programs (CICS Containers).
LegStar provides tooling to support data and process mapping activities. These tools are provided as ant scripts but they are also available as a rich set of plug-ins for the Eclipse platform.
Runtime mainframe integration activities can be separated into:
Data binding activities where data streams in mainframe format are transformed to, or from, open world objects such as Java classes or XML.
Remote Procedure Call activities where mainframe programs are invoked, or call outbound open world processes.
LegStar provides runtime capabilities for IBM CICS, where CICS programs act either as servers, serving requests coming from the open world or as clients, calling remote Web or Java services.
The LegStar various modules are only loosely coupled and can be used in a large number of scenarios. For instance, one can use the data binding capabilities without using the LegStar RPC mechanisms.
Integration targets are not limited to Web Services. There are various projects using LegStar to integrate directly with major ESBs or ETLs for instance.
The easiest way to present the LegStar architecture is to show how it supports two common integration use cases:
An existing mainframe program, say a COBOL CICS program, needs to be exposed as a Web Service.
A mainframe application needs to execute a remote Web Service.
The first use case is very common but the importance of the second one is growing rapidly as legacy sub-systems are being replaced by new applications running on J2EE and .Net platforms.
There is a large number of variations on these 2 main use cases, for instance developers might need to expose legacy functionalities as REST rather than plain Web Services, or developers might need to map complex structures to Java objects rather than XML. Developers might need to describe new structures in XML schema and then map these to Java and COBOL in support for two parallel developments (rather than integration), etc. LegStar is modular so that features can be selected and combined as necessary.