25.01.2015 Views

Cost-Based Optimization of Integration Flows - Datenbanken ...

Cost-Based Optimization of Integration Flows - Datenbanken ...

Cost-Based Optimization of Integration Flows - Datenbanken ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2.3 <strong>Integration</strong> Flow Meta Model<br />

Flow Meta Model<br />

According to our classification <strong>of</strong> integration flows, our flow meta model defines a plan P<br />

<strong>of</strong> an integration flow as a hierarchy <strong>of</strong> sequences with control-flow semantics that uses<br />

instance-local, materialized intermediates.<br />

In detail, the flow meta model exhibits an instance-based execution model, which means<br />

that each incoming message m i or scheduled time event e i (in case <strong>of</strong> plans that are initiated<br />

by an internal scheduler) conceptually initiates a new instance p i <strong>of</strong> a plan P .<br />

This instance is then executed within a single master thread (except for modeled parallel<br />

subflows) such that no queues between operators are required. As a consequence <strong>of</strong> this execution<br />

model, a plan instance p i has a local state, while a plan P is stateless by definition,<br />

which stands in contrast to standing queries in DSMS. With these control-flow semantics,<br />

both the data flow and the control flow can be appropriately described because data dependencies<br />

as well as temporal dependencies are expressible. The single operators use<br />

local messages as variables (data dependencies), while edges between operators describe<br />

the temporal order <strong>of</strong> these operators. Similar types <strong>of</strong> instance-based process models are<br />

typical for workflow-based integration systems [BPA06, OAS06, WfM05]. Putting it all<br />

together, a plan <strong>of</strong> an integration flow is defined as follows:<br />

Definition 2.1 (Plan). A plan P <strong>of</strong> an integration flow is defined with P = (o, c, s) as<br />

a 3-tuple representation. Let o = {o 1 , o 2 . . . , o m } denote a sequence <strong>of</strong> operators, let c<br />

denote the context <strong>of</strong> P as a set <strong>of</strong> local message variables, and let s denote a set <strong>of</strong><br />

services s = {s 1 , s 2 . . . , s l } that represent outbound adapters. An instance p i <strong>of</strong> a plan<br />

P , with P ⇒ p i , executes the sequence <strong>of</strong> operators exactly once. Each operator o j has a<br />

specific type as well as a unique node identifier nid. We distinguish between atomic and<br />

complex operators, where complex operators recursively contain sequences <strong>of</strong> operators with<br />

o j = {o j,1 , o j,2 . . . , o j,m ′}. A single operator can have multiple input variables and multiple<br />

output variables. Each service s i contains a type, a configuration and a set <strong>of</strong> operations.<br />

Our flow meta model includes specific operator types for integration flows in order<br />

to describe local processing steps and the interaction with external systems. In detail,<br />

this flow meta model defines a set <strong>of</strong> interaction-, control-flow-, and data-flow-oriented<br />

operators by combining common process description languages with the relational algebra.<br />

We use the min-max notation [KE09] to describe the minimal and maximal number <strong>of</strong><br />

input and output messages <strong>of</strong> each specific operator type. In addition, we identify complex<br />

operators that recursively contain arbitrary other operators.<br />

The interaction-oriented operators describe the interaction between the integration platform<br />

and the external systems. These operators use adapters in order to encapsulate the<br />

Table 2.1: Interaction-Oriented Operators<br />

Name Description Input Output Complex<br />

Invoke<br />

Receive<br />

Reply<br />

Actively write/read data to/from<br />

external systems<br />

Passively receive a message from an<br />

invoking client system (listener)<br />

Send a result to the invoking client<br />

system<br />

(0,1) (0,1) No<br />

(0,0) (1,1) No<br />

(1,1) (0,0) No<br />

23

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!