Content-based Routing

An important requirement for message processing is a dispatching of a received message to one or more receivers based on the content of the message.

This section explains how content-based routing can be implemented for Infinity Process Platform.

Modeling of Routing

Routing topologies are modeled as process definitions in IPP. Conditions for transitions are defined against the process message data.

Messages and Process Data

Many routing conditions - especially in early steps of the processing - can be defined against message header data (e.g. the type of a FIX or SWIFT message).

As header and body message structures, possibly received via Camel triggers in IPP, they can be mapped to different process data:

Marshalling of the message body into corresponding structured data types in IPP might occur later in the process if needed.

Internal Representation of Structured Data in IPP

IPP allows you to model arbitrary structured data types for process data. The concepts for structured data types are conceived to cover the semantics of XSD schemas e.g.

In fact structured data types are very often used in IPP to represent request and response messages for the invocation of Web services. The corresponding structured data types are directly imported from the corresponding XSD fragments of the WSDL definition for these Web services.

However, the internal representation of data of structured data types in IPP is more efficient as the XML payload for Web Service invocation:

Data of structured data types are represented as Map/List structures in Java. Hence, memory and performance footprint close to a compiled solution can be achieved.

Message Type-based Routing

The following definition of a Camel trigger will instantiate the corresponding whenever FIX messages are received from the QuickFIX/J endpoint:

The process data FIX Message Type can immediately be used for routing decisions.

Message Body-specific Routing

Message bodies or entire messages can be mapped to process data of structured data types. Assume a structured data type NewOrderSingle, which represents the FIX Message structure for NewOrderSingle.

If the message content of a corresponding FIX message has been mapped to process data of type NewOrderSingle, values of message fields can be used in routing decisions.