Viola is a streaming conformance checking approach which allows the discovery and conformance of a process, where the data is generated from IoT devices.
- Automatically derive a EGSM process model starting from a labeled sensor log
- Process a stream of unlabeled data, in order to be provided to the EGSM engine
- Recognize activities starting from a stream of data
- Verify the conformance at runtime
VIOLA requires Python and Node.js to run.
Pre-process the labeled sensor log in order to obtain a format suitable for the classification algorithm.
For example:
run "Experiments - Linac/normal/LogPreprocessing - Windowing.ipynb"
Derive a Decision Tree and convert it to rules.
For example:
run "Experiments - Linac/normal/Dtree - Classifier.ipynb"
Discover a Directly-Follows Graph.
For example:
python "Experiments - Linac/discover-dfg.py"
Create the EGSM process model.
For example:
python "Experiments - Linac/build-egsm.py"
Run the EGSM engine:
- Download the SMARTifact E-GSM Engine
- Copy the files siena.xml and infoModel.xsd produced during the offline phase inside the data/dfg folder (create the folder if does not exist)
- Start the engine:
node server.js
Process the stream of data:
- Run the CEP system.
For example:
python "Experiments - Linac/Server-lerror1.py"
- Start streaming events. Make a REST GET call to the following endpoint (e.g., with a web browser, cURL or Postman): http://localhost:8080/api/start
And visualize the results!
For example:
python "Experiments - Linac/validator.py"