General Questions
- What is ChainBuilder ESB'?
ChainBuilder ESB is a set of visual tools and runtime components that implement an Enterprise Service Bus (ESB). The visual tools consist of Eclipse-based GUI plugins and a web-based administrative console. The runtime components are JBI compliant. ChainBuilder ESB can be used to build out a Service-Oriented Architecture, as an Enterprise Application Integration tool set or as a framework to build composite applications.
Java Business Integration (JBI) is a specification that defines an open, modular framework for implementing an ESB. JBI defines the contracts between a core runtime system called a container and plug-in components that perform specific functions. Any JBI compliant components can be used with any JBI compliant container allowing the user to mix and match. JBI is a Java Community Process (JCP) specification called JSR 208.
An enterprise service bus (ESB) is a software system that makes business services available in a unified manner. This makes sevices on the ESB inherently reusable. An ESB usually consists of components that implement business logic and a messaging bus that interconnects these components to form an application. Applications in an ESB are usually constucted declaratively with configuration files rather than procedurally in a programming language.
ChainBuilder Common Services Layer (CCSL) is a software module in ChainBuilder ESB. CCSL provides a general service layer between JBI components and a JBI container. General services are things like centralized error handling and user-defined scripting. CCSL is designed to be inserted transparently between a JBI compliant component and contianer. This makes CCSL services available to components from other vendors.
A User Point of Control (Upoc) is a point in the message processing where control can be passed to user supplied code. This allows the processing model to be significantly altered by a small amount of user code. ChainBuilder ESB provides Upoc's at strategic points in the message flow such as before a message is sent to the router or after is is retrieved from it. Upocs also allow user defined operations to be used in a transformation. User defined code can be written in Groovy Script or Java with other options like Java Script coming in the future.
Message Definition Language (MDL) is an XML vocabulary used to define generalized message formats. Generalized formats consist of fixed width, delimited or tagged formats or compositions of these formats.
A Finite State Machine (FSM) is a mathematical concept. One common use for finite state machines is in implementing parsers that identify looping and hierarchical grammars. ChainBuilder ESB uses a finite state machine to parse tagged message definitions.
- What is tagged message definition?
A tagged message definition is one where a data element in the message identifies its location in the grammar. This is in contrast to a positional definition where the position in a message directly corresponds to the position in the grammar. Tagged definitions included segment based formats like X12, HL7 and EDIFACT. XML is also a tagged definition since the element tags define the position in the grammar. However, the term "tagged format" usually refers to non-XML legacy formats. Tagged definitions allow for looping and hierachical grammars that are not possible with positional definitions.
- Is there any limitation of the tagged based definition?
The tagged definition in ChainBuilder ESB is quite flexible. It allows looping and hierarchical grammars with mandatory or optional elements and groups. However, these elements must occur in a well defined order. That is, a grammar may not consist of a set of elements occurring in random order. There are plans to implement a "choice" contstruction in the future that will allow randomly ordered elements.
- Can you explain the component metadata?
Component metadata refers to message exchange properties that have special meaning for a particular component. For example, an FTP component may allow the file name to be specified on a per-message basis using metadata. It may also populate a filename property when creating an exchange. These metadata usually provide advanced features that are not commonly needed. Metadata is physically stored as message exchange properties. These properties can be accesses by user defined code in Upoc's or by operations in the mapping transformer. See the component documentation for details on the metadata supported by a particular component.
- Can you explain how the class loader works in ChainBuilder ESB?
ChainBuilder ESB requires access to several artifacts for proper operation. These include message definitions, transformation control files, etc. The ChainBuilder ESB class loader mechanism provides access to these artifacts which are stored in well known locations. The ChainBuilder ESB class loader is built on the standard JBI class loader and a detailed description is beyond the scope of this document. Please see the developer documentation for more information.
- What is an ESB project and a SA project?
The ESB project contains the shared format definition, map file, Java class or Groovy used by the SA project. It contains the X12 format definitions. The ESB can not be deployed as a standalone application. The SA project depends on one ESB project. You can use artificats defined in the parent ESB project in your SA project. A SA project can be deployed as a standalone application.
ChainBuilder ESB GUI
- How to change the dependent ESB project for a SA project?
Open the
projectinfo.xml file in the SA project. Then change the
superproject name attribute.
- What is HL7 or X12 Edior?
The HL7 and X12 editors are used to create or modify variant definitions. They are called variants becase they use a standard version as the starting point. Only the changes from the standard need to be defined. HL7 and X12 variants are created by using right-click-->new in the formats/x12 or hl7 directories.
- What is the auto mapping? how does it work?
Auto mapping is a feature of the map editor where it will try to match up the elemts between a source and target format. Copy operations are created for all the elements that can be matched. Automapping is performed by dragging a piece of the source tree into the target tree. The entire subtree of the dragged element is automapped. This screenshot shows an example of automapping an HL7 version 2.2 message into a version 2.4 message. You can see that over half the items were automatically mapped. This dramatically reduces the amount of work in generating a map when the source and target formats are similar.
- I find there is the taggedMDL.xml file in the format directory. What is it?
- What do different colores mean in the Map Editor?
The small colored blocks next to the elements in the format tree are a quick indication of which elements have been used. Red means that an element has not been used in an operation. Green means that it has been used. Yellow means that some of the sub tree elements have been used and others have not. The auto mapping screen shot shows all three colors.
- I see the installer Service Unit created for my SA project. What is it?
The installer is a service unit used by ChainBuilder ESB to transfer its artifacts from the IDE into the runtime environment. All of ChainBuilder's special artifacts like message formats and transformations are packaged into the installer service unit. The installer component recreates these files in the runtime environment. The installer is basically a way of using the JBI deployment mechanism to store and transfer files. This way, we do not need a separate copy mechanism like FTP and all the artifacts are packaged together in one service assembly which eliminates problems with stale files.
- Can I manually copy the files from an existing ChainBuilder ESB project into a new project?
In general no. Many of the ChainBuilder ESB configuration files have the project name embedded in them. this is necessary so that files with the same name in different projects can be distinguished. It is possible to copy the files but you must be prepared to do some editing of the raw files. The eclipse search feature makes this editing easier but it is still an involved process.
ChainBuilder ESB Runtime
- How to turn on log4j debug information?
When running tests with
cbesb_run, debug logging can be enabled by using the
-debug option. That is,
cbesb_run -debug my_project
In server mode, the log4j configuration is read from CBESB_HOME/apache-servicemix/conf/log4j.xml. This directory contains some alternate copies of the log4j configuration file. debug_log4j.xml contains the setings for full debug and normal_log4j.xml contains the non-debug settings (this is same as log4j.xml initially).
You can copy one of these alternate files over top of log4j.xml to change the logging behavior. The Servicemix server must ge stopped and restarted to make the change take effect. The full debug logging is quite intense so you may wish to edit the file yourself to enable certain portions. See log4j documentation for details.
- How to enable the ActiveMQ?
When running tests with
cbesb_run, ActiveMQ can be enabled by using the
-ActiveMQ option. That is,
cbesb_run -ActiveMQ my_project
- What is the error database?
The error database is used to save exchanges that encounter some type of exception during processing. Normally, these exchanges would simply disappear with, at most, a message in the log file.
The default installation uses the Derby database manager for the error database. The default location is in
CBESB_HOME/db/errordb. The Derby network server is required to make the database available to multiple users. The network server is run by the DerbyServer component anytime it is installed and started.
- Can I use my Oracle server as the error database for ChainBuilder ESB?
Yes, the database connection properties are stored in
CBESB_HOME/conf/errordb/errordb.properties. This file may be modified to change the JDBC datasource used for the error database. Of course, the error database tables must be created in the target datasource. The sql for creating these tables is not part of the installation at this time. You must use the Derby dblook utility to extract the DDL statements from the default error database.
- What is the DerbServer Component?
This is a sepcial component that runs the Apache Derby network server. The Derby server is required to support the error data in the default installation. The DerbyServer component is unusual in the fact that is has no service unit deployed to it. It simply starts the derby server any time the component is started.
If you are not using the default error database configuration you may not need the DerbyServer component installed.
ChainBuilder ESB Admin Console
- What is the ChainBuilder ESB Admin Console?
The ChainBuilder ESB Admin Console is a web-based application used to control and monitor the running ChainBuilder ESB server. The default URL for the admin console is
http://localhost:8080/console.
This is a great wiki site. Keep posting!
teen chat
--Bhei Swan, 11-Jun-2010
This is very informative writing service
--Becky
, 30-Jun-2010