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...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2 Preliminaries and Existing Techniques<br />

Receive (o1)<br />

[service: s3, out: msg1]<br />

Assign (o1)<br />

[out: msg1]<br />

@type='MATMAS04'<br />

Translation (o3)<br />

[in: msg1, out: msg2]<br />

Assign (o4)<br />

[in: msg2, out: msg3]<br />

Switch (o2)<br />

[in: msg1]<br />

Invoke (o7)<br />

[service s1, in: msg3]<br />

@type='MATMAS05'<br />

Translation (o5)<br />

[in: msg1, out: msg2]<br />

Assign (o6)<br />

[in: msg2, out: msg3]<br />

Receive (o1)<br />

[service: s5, out: msg1]<br />

Assign (o2)<br />

[in: msg1, out: msg2]<br />

Invoke (o3)<br />

[service: s4, in: msg2, out: msg3]<br />

INNER<br />

Join (o4)<br />

[in: msg1,msg3, out: msg4]<br />

Invoke (o2)<br />

[service s1, in: msg1, out msg2]<br />

Invoke (o3)<br />

[service s2, in: msg1, out msg3]<br />

Join (o4)<br />

[in: msg2,msg3, out: msg4]<br />

Groupby (o5)<br />

[in: msg4, out: msg5]<br />

INNER<br />

Assign (o8)<br />

[in: msg2, out: msg4]<br />

Assign (o5)<br />

[in: msg4, out: msg5]<br />

Assign (o6)<br />

[in: msg5, out: msg1]<br />

Invoke (o9)<br />

[service s2, in: msg4]<br />

Invoke (o6)<br />

[service s3, in: msg5]<br />

Invoke (o7)<br />

[service s3, in: msg1]<br />

(a) Plan P 1<br />

(b) Plan P 2<br />

(c) Plan P 3<br />

Figure 2.9: Example Horizontal <strong>Integration</strong> <strong>Flows</strong><br />

2.4.1 Horizontal <strong>Integration</strong>: EAI<br />

The use case <strong>of</strong> horizontal integration addresses the integration <strong>of</strong> the operational systems<br />

(SCM, Material, ERP, CRM, and eCommerce) <strong>of</strong> our example scenario. This use case<br />

is typical for EAI (Enterprise Application <strong>Integration</strong>) scenarios, where updates within<br />

an operational system trigger immediate data synchronization in the sense <strong>of</strong> message<br />

exchange by data-driven integration flows. Due to the OLTP character in terms <strong>of</strong> many<br />

short business transactions in the operational systems, many instances <strong>of</strong> integration flows<br />

with rather small amounts <strong>of</strong> data per instance are executed over time. Within the scope<br />

<strong>of</strong> this use case, various integration flows exist. We pick four concrete examples with<br />

different characteristics and define these integration flows in detail.<br />

Example 2.4 (Material Synchronization). Figure 2.9(a) illustrates an integration flow<br />

(plan P 1 ) that is used to synchronize material (basic material and products) master data<br />

from the ERP system to the SCM system as well as to the Material system. Essentially,<br />

when new material has been created within the ERP system, a proprietary material message<br />

is automatically sent to the integration platform. This asynchronously initiates a plan<br />

instance <strong>of</strong> P 1 . The Receive operator (o 1 ) writes the internal message to an instancelocal<br />

variable. Subsequently, a Switch operator o 2 evaluates the message type (MATMAS04<br />

or MATMAS05 for inter-version compatibility) and decides which alternative Switch path is<br />

executed. After specific schema transformations (Translation) that differ according to<br />

the present message type, queries are prepared (Assign) in order to send (Invoke) the<br />

data to the external systems s 1 (SCM) and s 2 (Material).<br />

Example 2.5 (Orders Processing). The integration flow (plan P 2 ) shown in Figure 2.9(b)<br />

propagates order messages that have been submitted within our eCommerce Web shop to<br />

the central ERP system. During execution <strong>of</strong> an instance <strong>of</strong> this plan, additional master<br />

data <strong>of</strong> the customer are read from the CRM database and joined to this message. In<br />

detail, the Receive operator (o 1 ) gets an orders message from the queue and writes it<br />

to a local variable. Then, the Assign operator (o 2 ) is used in order to prepare a query<br />

with the customer name <strong>of</strong> the received message as a parameter. Subsequently, the Invoke<br />

operator (o 3 ) queries the external system s 4 (CRM system) in order to load master data<br />

information for that customer. Here, one SQL query Q i per plan instance (per received<br />

28

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

Saved successfully!

Ooh no, something went wrong!