Before you proceed

Before considering about paths to nodes, review some of the basic concepts of an integration engine.

To make the individual pieces of data of an input message available for handling, the integration engine parses the data to a Business Document instance. Business Documents are formal descriptions of the way the data of the input message is structured.

A Business Document describes the data carried and mapped in the integration engine from a hierarchical point of view: Business Documents are composed of nodes. Each node either holds data or groups a subset of nodes. Nodes in Business Documents are named, but these names do not have to be unique in a Business Document.

A given node of a Business Document can be optional, multiple or mandatory. In addition to a name, each node has a property called cardinality that states the number of times the node can occur. There are four possible cardinalities:

  • 0..1
  • The node can occur at the most one time;
  • this is an optional node: can occur or be omitted.
  • 1..
  • The node occurs one time, no more nor less;
  • this is a mandatory node, cannot be omitted.
  • 1..n
  • The node must occur at least one time;
  • this node is mandatory but can have multiple occurrences.
  • 0..n
  • The node can be omitted or occur at least one time;
  • this node is optional and can have multiple occurrences.

It is easy to imagine the use of optional nodes: you might receive invoices in which some information is critical and some optional. For example, invoices in which the billed amount is needed but not necessarily the customer's birth date.

A node might occur more than one time in case of lists. Consider a mail address. It usually consists of one or more lines containing the exact location (street number, street name, floor..), a zip code and a city name.

For the zip code and city name this is no problem, you just define two nodes named zip_code and city_name. It is more complicated for the address lines. You can choose to define three nodes line_1, line_2 and line_3 that each holds one of your lines.

This method can be awkward: you might receive empty lines, and when a new record arrives, you might have to append line_xx nodes to hold more lengthy addresses. What is actually behind your collection of line_xx nodes is a list. In the integration engine, you prepare for this varied input by defining a unique node named lines with 1..n cardinality which indicates that this is a list of data with one or more items.

Related Links