Svg out | ||||
---|---|---|---|---|
|
ID
Acronym: Simulation Environment Monitoring
Use-cases: Loire Flooding, HelloDiag
Description
R-IOSEMIT enables you to simulate a predefined set of data called events. An event has to follow a predefined structure and a topic. In R-IOSuite three types of sensors can be simulated: the events emitted from webservices, from tweets or from the Maple location tags.
Summary
Table of Contents | ||
---|---|---|
|
The main functionalities
Synchronize | |
Create a sensor | |
Start/Stop/Play/Pause a sensor |
How does the interpretation work?
R-IOSEMIT enables R-IOSUITE to interpret events in real-time. It uses a Complex Event Processing (CEP) engine to apply the interpretation rules available in your Use-Case (at src/main/resources/webjars/gind/usecases/loireflooding/interpretation-rules.
R-IORED will be design to update these rules through a dedicated tool.
- The first event is notified to the CEP engine by the notify() method of the CEP rules manager
- The second event is notified to the CEP engine etc.
... - When an event fulfills the conditions of an interpretation rule, the High level interpretation engine notifies that a node or a edge has to be deleted/updated or added to the ACTIVE WORLD (stored in Neo4J). This action is stated in the interpretation rule.
- Then, the interpretation manager uses the notification to update the ACTIVE WORLD with the interpret() method.
Gliffy | ||||
---|---|---|---|---|
|
How to add a sensor?
Simulated Data Source
Files (.xml) to be linked to a simulated WSN data source:
Illustration: Loire Flooding
- Topic Set Producer - Topics corresponding to the events to be simulated
- Sensors Event Topic Namespace - List of topics available
- Event - file with the events to be simulated
- Configuration - file with the configuration of the simulation: the frequency of the simulation and the configuration of the graph to be fed (on the interface during the simulation)
Files (.xml) to be linked to a simulated Mapple data source:
Illustration: HelloDiag
- Event - file with the events to be simulated
- Configuration - file with the configuration of the simulation, especially to configure the graph to be fed (on the interface during the simulation)
Structure of the configuration file
<datasetConfiguration>:
- <emissions>: <frequency> (n <time>) OR <period>
- <chartConfig>:
- <title>
- <lineChart> OR <map>
<lineChart>:
- <eventType>
- <axisX (1 fois)> : <title>
AND <mappingEventElement> - <axisY (n fois)> : <title>
AND <mappingEventElement>
AND <color (hexa)>
AND <referenceLine> (<name> AND <value>) - <preview (boolean)>
<map>: <mapEvent> :
- <eventType>
- <latitudeMappingEventElement>
- <longitudeMappingEventElement>
- <preview (boolean)>
- <polyline>: <color (hexa)>
How to configure the graph to be displayed on R-IOSEMIT during the simulation?
Example of event
Example of graph
Example of Mapping file
How to configure interpretation engines ?
R-IO Suite allows to define rules in order to consider and interpret incoming events. There are 2 ways to configure this interpretation.
We can either use a CEP or a ML mechanism. Both interpretations are configured with the same configuration schema (see following).
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.gind.emac.fr/InterpretationConfigs" xmlns:tns="http://www.gind.emac.fr/InterpretationConfigs" elementFormDefault="qualified"> <xsd:element name="interpretationConfigs"> <xsd:complexType> <xsd:sequence> <xsd:element ref="tns:interpretationConfig" minOccurs="0" maxOccurs="unbounded"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="cepRule"> <xsd:complexType> <xsd:sequence> <xsd:element name="streamDefinition" type="xsd:string"></xsd:element> <xsd:element name="rule" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="mlConfig"> <xsd:complexType> <xsd:sequence> <xsd:element name="moduleName" type="xsd:string"></xsd:element> <xsd:choice> <xsd:element name="dataSetToTrain" type="anyURI"></xsd:element> <xsd:sequence> <xsd:element name="features" type="anyURI"></xsd:element> <xsd:element name="labels" type="anyURI"></xsd:element> </xsd:sequence> </xsd:choice> <xsd:element name="trainedModel" type="anyURI" minOccurs="0"></xsd:element> <xsd:element name="useTrainedModel" type="xsd:boolean"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="interpretationConfig"> <xsd:complexType> <xsd:sequence> <xsd:element name="name" type="QName"></xsd:element> <xsd:choice> <xsd:element ref="tns:cepRule"></xsd:element> <xsd:element ref="tns:mlConfig"></xsd:element> </xsd:choice> <xsd:element ref="tns:eventAction" maxOccurs="unbounded" minOccurs="0" /> <xsd:element ref="tns:context" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="context"> <xsd:complexType> <xsd:sequence> <xsd:element ref="tns:subscriptionsRequired" minOccurs="0" maxOccurs="1" /> <xsd:element name="collaborationName" type="xsd:string" minOccurs="0"></xsd:element> <xsd:element name="knowledgeSpaceName" type="xsd:string" minOccurs="0"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="eventAction"> <xsd:complexType> <xsd:sequence> <xsd:element name="eventElementName" type="xsd:QName" /> <xsd:element name="schemaDefinition"> <xsd:complexType> <xsd:choice> <xsd:element name="content" type="xsd:string" /> <xsd:element name="url" type="xsd:string" /> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="topic" type="xsd:QName" /> <xsd:element name="publishDestination" type="xsd:string" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="subscriptionsRequired"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="entry"> <xsd:complexType> <xsd:sequence> <xsd:element name="topic" type="xsd:QName" /> <xsd:element name="correspondingEvent" type="xsd:QName" /> <xsd:element minOccurs="0" name="endpointAddressToSubscribe" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> |