Lavoisier
Context ● Operations Portal ~ 2004 ○ Data retrieved from services developed in various countries > Technologies were heterogeneous > Technologies were potentially replaced with newer ones ○ Data retrieved from many distributed sources > Memory overload issues > Data source availability and latency issues ● Many other applications need to aggregate data ~ Now ○ Multiplicity of technologies, protocols, formats ○ We need to factorize the development efforts for supporting : > New technologies > Common features (robustness, monitoring, security) 2
What does Lavoisier ? 3
What does Lavoisier ? Heterogeneous protocols • data formats • 4
What does Lavoisier ? d r d a a n S t Heterogeneous L ) M ( X a t m o r f t a d a • protocols h ) a t P ( X g e a • g u a n l r y u e q • data formats T ) E S • R P I ( A y e r q u • 5
What does Lavoisier ? Rendering format chosen by user d r d a a n S t Heterogeneous L ) M ( X a t m o r f t a d a • protocols h ) a t P ( X g e a • g u a n l r y u e q • data formats T ) E S • R P I ( A y e r q u • 6
Lavoisier architecture HTTP DATABAS CSV E LDAP 7
Lavoisier architecture plug-in ENGINE HTTP DATABAS CSV E LDAP 8
Lavoisier architecture plug-in ENGINE SERVICE HTTP REST DATABAS CSV E LDAP 9
A chain of plug-ins EXAMPLE ○ Retrieve a distant CSV File ○ Extract columns ○ Provides a html output . 10
A chain of plug-ins EXAMPLE ○ Retrieve a distant CSV File ○ Extract columns Retrieve a distant HTTP Connector ○ CSV File Provides a html output . CSV Serializer 11
A chain of plug-ins EXAMPLE ○ Retrieve a distant CSV File ○ Extract columns Retrieve a distant HTTP Connector ○ CSV File Provides a html output . CSV Serializer Extract XML Template columns 12
A chain of plug-ins EXAMPLE ○ Retrieve a distant CSV File ○ Extract columns Retrieve a distant HTTP Connector ○ CSV File Provides a html output . CSV Serializer Extract XML Template columns Provides HTML Renderer a html output 13
Into the “views” file < views xmlns="http://software.in2p3.fr/lavoisier/application.xsd" > < view name="my_example_view" > </ view > </ views > 14
Into the “views” file < views xmlns="http://software.in2p3.fr/lavoisier/application.xsd" > < view name="my_example_view" > < connector type ="HTTPConnector" > < parameter name ="url" > http://software.in2p3.fr/lavoisier/input.csv</ parameter > HTTP Connector </ connector > </ view > </ views > 15
Into the “views” file < views xmlns="http://software.in2p3.fr/lavoisier/application.xsd" > < view name="my_example_view" > < connector type ="HTTPConnector" > < parameter name ="url" > http://software.in2p3.fr/lavoisier/input.csv</ parameter > HTTP Connector </ connector > < serializer type ="CSVSerializer" > < parameter name ="header" >true</ parameter > CSV Serializer </ serializer > </ view > </ views > 16
Into the “views” file < views xmlns="http://software.in2p3.fr/lavoisier/application.xsd" > < view name="my_example_view" > < connector type ="HTTPConnector" > < parameter name ="url" > http://software.in2p3.fr/lavoisier/input.csv</ parameter > HTTP Connector </ connector > < serializer type ="CSVSerializer" > < parameter name ="header" >true</ parameter > CSV Serializer </ serializer > < processors > [XML TEMPLATEs ] </ processors > XML Templates </ view > </ views > 17
Into the “views” file < views xmlns="http://software.in2p3.fr/lavoisier/application.xsd" > < view name="my_example_view" > < connector type ="HTTPConnector" > < parameter name ="url" > http://software.in2p3.fr/lavoisier/input.csv</ parameter > HTTP Connector </ connector > < serializer type ="CSVSerializer" > < parameter name ="header" >true</ parameter > CSV Serializer </ serializer > < processors > [XML TEMPLATEs ] </ processors > XML Templates </ view > </ views > http://myserver:8080/lavoisier/my_example_view?accept=html HTML Renderer 18
Structure of a view <view name=”my_structure”> <!-- the connector is adapted to the technology, protocol or format of the data source --> <connector type=""> [...] </connector> Connector [1] <!-- optional if the connector output is already in xml format → <!-- in case select the serializer corresponding to the connector output format --> Serializer [0,1] <serializer type=""> [...] </serializer> 19 </view>
Structure of a view <view name=”my_structure”> <!-- the connector is adapted to the technology, protocol or format of the data source --> <connector type=""> [...] </connector> Connector [1] <!-- optional if the connector output is already in xml format → <!-- in case select the serializer corresponding to the connector output format --> Serializer [0,1] <serializer type=""> [...] </serializer> <!-- validates the structure or the content of the output → Validator <validator></validator> [0,1] 20 </view>
Structure of a view <view name=”my_structure”> <!-- the connector is adapted to the technology, protocol or format of the data source --> <connector type=""> [...] </connector> Connector [1] <!-- optional if the connector output is already in xml format → <!-- in case select the serializer corresponding to the connector output format --> Serializer [0,1] <serializer type=""> [...] </serializer> <!-- validates the structure or the content of the output → Validator <validator></validator> [0,1] <!-- describe the rules to transform the xml structure--> <processors> [ XML Templates ] </processors> [0,n] XML Templates 21 </view>
Structure of a view <view name=”my_structure”> <!-- the connector is adapted to the technology, protocol or format of the data source --> <connector type=""> [...] </connector> Connector [1] <!-- optional if the connector output is already in xml format → <!-- in case select the serializer corresponding to the connector output format --> Serializer [0,1] <serializer type=""> [...] </serializer> <!-- validates the structure or the content of the output → Validator <validator></validator> [0,1] <!-- describe the rules to transform the xml structure--> <processors> [ XML Templates ] </processors> [0,n] XML Templates <!-- describe how to cache data and the associated refresh triggering rules --> <cache> [0,1] Cache trigger <trigger type=""></trigger> trigger </cache> 22 </view>
Structure of a view <view name=”my_structure”> <!-- the connector is adapted to the technology, protocol or format of the data source --> <connector type=""> [...] </connector> Connector [1] <!-- optional if the connector output is already in xml format → <!-- in case select the serializer corresponding to the connector output format --> Serializer [0,1] <serializer type=""> [...] </serializer> <!-- validates the structure or the content of the output → Validator <validator></validator> [0,1] <!-- describe the rules to transform the xml structure--> <processors> [ XML Templates ] </processors> [0,n] XML Templates <!-- describe how to cache data and the associated refresh triggering rules --> <cache> [0,1] Cache trigger <trigger type=""></trigger> trigger </cache> <!-- organise data around 2D formats : table, chart --> [0,1] Pre-Renderers <pre-renderers> [...] <pre-renderers> <!-- overwrite default values for the renderers, including html templates <renderers> [0,n] <renderer type=""> [...] </renderer> Renderers 23 </renderers> </view>
Recommend
More recommend