Champagne: Champagne: Data Change Propagation for Data Change - - PowerPoint PPT Presentation
Champagne: Champagne: Data Change Propagation for Data Change - - PowerPoint PPT Presentation
Champagne: Champagne: Data Change Propagation for Data Change Propagation for Heterogeneous Information Systems Heterogeneous Information Systems Ralf Rantzau Carmen Constantinescu Uwe Heinkel Holger Meinecke University of Stuttgart
Motivation: Enterprise Application Integration Motivation: Enterprise Application Integration
Heterogeneous IT infrastructures Full enterprise data integration often
too expensive or infeasible
Need to change, establish and adapt
dependencies frequently and easily
Heterogeneous IT infrastructures Full enterprise data integration often
too expensive or infeasible
Need to change, establish and adapt
dependencies frequently and easily ERP ERP Stock Inventory Stock Inventory Legacy System Legacy System SCM SCM Facility Layout Design Facility Layout Design Order Management Order Management
Network of Data Dependencies
Loose coupling of information
systems is enough
Keep IS as autonomous as possible Build bridges between IS by defining
data dependencies
Loose coupling of information
systems is enough
Keep IS as autonomous as possible Build bridges between IS by defining
data dependencies
The Problem Our Approach
Dependency (Source, Propagation Script, Destinations) Dependency (Source, Propagation Script, Destinations)
XRL+ XSLT XSLT XSLT XML
XML-Based Data Change Propagation XML-Based Data Change Propagation
XML
Input Output
XSLT
Change Propagation
Changed Data (update, insert, delete) Data adapted to each destination Transformation Scripts Propagation Script (XRL+: Exchangeable Routing Language Plus) (XSLT: XML Stylesheet Language Transformations)
XML
Transformation Filtering (Xpath) Routing
XSLT XML XSLT
Dependency (Source, Propagation Script, Destinations)
Champagne Architecture Champagne Architecture
Filter (XPath)
(XML)
Propagation Manager
Propagation Engine (XRL+)
Input Output 1 Output N
Queue Manager (JMS)
Internal 1 Internal M
Transformer (XSLT)
(XML)
. . . Adaptors
Systems
S1 SN
AN A1 Schema Editor (XML Schema)
Dependency Manager
Graphical User Interface Dependency Editor (XRL+, XSLT)
Systems
- 1. Dependencies
- 2. Propagation Scripts (XRL+)
- 3. Transformation Scripts (XSLT)
- 4. System Info & Schemas (XML Schema)
Repository (RDBMS)
1 9 2 3 5 6 8
. . . . . . . . .
4 7
Runtime Tool Design-Time Tool
(any) (any)
Exchangeable Routing Language Plus (XRL+) Exchangeable Routing Language Plus (XRL+)
XRL: XML-Based Workflow Definition Language Introduced by W. v.d. Aaalst and A. Kumar, 2000 Routing Schema Elements:
Branch conditions Loops Sequential Execution Parallel Execution Wait, Event, Timeout
XRL: XML-Based Workflow Definition Language Introduced by W. v.d. Aaalst and A. Kumar, 2000 Routing Schema Elements:
Branch conditions Loops Sequential Execution Parallel Execution Wait, Event, Timeout
XRL+: Extension of XRL for Propagation Process Specification Major new elements:
MESSAGE_EVENT (system, schema, xml_out) PROPAGATE (system, schema, xml) TRANSFORM (xml_in, xml_out, xslt) FILTER (xml_in, xml_out, xpath_expr)
XRL+: Extension of XRL for Propagation Process Specification Major new elements:
MESSAGE_EVENT (system, schema, xml_out) PROPAGATE (system, schema, xml) TRANSFORM (xml_in, xml_out, xslt) FILTER (xml_in, xml_out, xpath_expr)
Example XRL+ Propagation Script Example XRL+ Propagation Script
<xrl:route id=“1” created_by=“script_designer” creation_date=“2002-08-20” xmlns:xrl=“http://www.uni-stuttgart.de/XRL”> <xrl:sequence> <xrl:wait sync=1> <xrl:message_event system=“OMS” schema=“production_order” xml_out=“PO”/> <xrl:timer_event type=“relative” time=“600”/> </xrl:wait> <xrl:parallel> <xrl:sequence> <xrl:filter xml_in=“PO” xml_out=“f1” expression=“//transport/@start=‘M003’”/> <xrl:transform xml_in=“f1” xslt=“OM2FLD.xsl” xml_out=“fld_out”/> <xrl:propagate xml=“fld_out” system=“FLD” schema=“material_flow”/> </xrl:sequence> <xrl:propagate xml=“PO” system=“Legacy” schema=“production_order” /> </xrl:parallel> </xrl:sequence> </xrl:route> <xrl:route id=“1” created_by=“script_designer” creation_date=“2002-08-20” xmlns:xrl=“http://www.uni-stuttgart.de/XRL”> <xrl:sequence> <xrl:wait sync=1> <xrl:message_event system=“OMS” schema=“production_order” xml_out=“PO”/> <xrl:timer_event type=“relative” time=“600”/> </xrl:wait> <xrl:parallel> <xrl:sequence> <xrl:filter xml_in=“PO” xml_out=“f1” expression=“//transport/@start=‘M003’”/> <xrl:transform xml_in=“f1” xslt=“OM2FLD.xsl” xml_out=“fld_out”/> <xrl:propagate xml=“fld_out” system=“FLD” schema=“material_flow”/> </xrl:sequence> <xrl:propagate xml=“PO” system=“Legacy” schema=“production_order” /> </xrl:parallel> </xrl:sequence> </xrl:route>
Propagate FLD Propagate FLD Filter start = M003 Filter start = M003 Transform OM2FLD.xsl Transform OM2FLD.xsl Wait sync=1 Wait sync=1 Propagate Legacy Propagate Legacy timer_event time = 600 sec timer_event time = 600 sec message_event message_event
FLD Output Queue FLD Output Queue Legacy Output Queue Legacy Output Queue Input Queue Input Queue
input.xml
<?xml version=”1.0” encoding=”ISO8859-2”?> <production_order> <operation> <transport start=”M002” dest=”M001” qual=”A12”> <part no=”P001” amount=”5000”/> </transport> </operation> <operation> <drilling unit=”M001” cost_center=”DM1”> <part no=”P001” amount=”5000”/> <manufacturing_lead_time days=”0” hours=”3” mins=”40”/> </drilling> </operation> <operation> <transport start=”M001” dest=”M003” qual=”C13”> <part no=”P001” amount=”5000”/> </transport> </operation> <operation> <milling unit=”M003” cost_center=”BM2” > <part no=”P001” amount=”5000”/> <manufacturing_lead_time days=”0” hours=”1” mins=”13”/> </milling> </operation> </production_order>
- m2fld.xsl
- rder_management.xrl
XML-Based Data Change Propagation: An Example XML-Based Data Change Propagation: An Example
<?xml version=”1.0” encoding=”ISO8859-2”?> <xslt:transform version=”1.0” xmlns:xslt=”http://www.w3.org/1999/XSL/Transform”> <xslt:output method=”xml” encoding=”ISO8859-2” indent=”yes”/> <xslt:template match=”/production_order”> <material_flow> <xslt:apply-templates select=”.”/> </material_flow> </xslt:template> <xslt:template match=”//transport”> <xslt:element name=”transport”> <xslt:attribute name=”start”> <xslt:value-of select=”@start”/> </xslt:attribute> <xslt:attribute name=”dest” <xslt:value-of select=”@dest”/> </xslt:attribute> . . . <xsl:variable name=”qual” select=”@qual”/> <xslt:element name=”employee”> <xslt:attribute name=”hourly_wage” <xslt:value-of select= ”document(‘http://www.SMS.com/employee.xml’) //employee[qual@q=$qual]h_wage@h_w”/> </xslt:attribute> </xslt:element> </xslt:element> </xslt:template> </xslt:transform> <?xml version=”1.0” encoding=”ISO8859-2”?> <xrl:ROUTE id=”ex” created_by=”script_designer” creation_date=”2002-08-20”> <xrl:SEQUENCE> <xrl:WAIT sync=”1”> <xrl:MESSAGE_EVENT system=”OMS” schema=”production_order” xml_out=”input”/> </xrl:WAIT> <xrl:TRANSFORM xml_in=”om” xslt=”om2fld.xsl” xml_out=”t1”/> <xrl:PROPAGATE xml=”output” system=”FLD” schema=”material_flow”/> </xrl:SEQUENCE> </xrl:ROUTE>
Source Data (XML)
Propagated Data
(XML)
Propagation Script (XRL+) Transformation Script (XSLT)
- utput.xml
... <material_flow> <transport start=”M002” dest=”M001”> <part no=”P001” amount=”5000”/> <employee qualification=”A12” hourly_wage=”129”/> </transport> <transport start=”M001” dest=”M003”> <part no=”P001” amount=”5000”/> <employee qualification=”C13” hourly_wage=”45”/> </transport> </material_flow> ...
Destination Data (XML)