Skip to content

Commit

Permalink
Tutorial to perform preprocessing and create new steps
Browse files Browse the repository at this point in the history
  • Loading branch information
CarolineMethner committed Nov 19, 2018
1 parent ece996b commit a804dd2
Show file tree
Hide file tree
Showing 8 changed files with 272 additions and 96 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -57,3 +57,4 @@ servicecaller/.gitignore
servicecaller/.settings/org.eclipse.jdt.core.prefs
servicecaller/.classpath
servicecaller/.settings/org.eclipse.m2e.core.prefs
spark-importer/pipeline_configuration.json
67 changes: 67 additions & 0 deletions README.de.md
@@ -0,0 +1,67 @@


# BPMN.AI

[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) [![Build Status]https://travis-ci.org/viadee/bpmn.ai?branch=%22master%22)](https://travis-ci.org/viadee/bpmn.ai)

*Read this in other languages: [English](README.en.md), [German](README.md).*

Bpmn.ai bezeichnet den Ansatz, Standard-Prozessdaten für ein Data Mining aufzubereiten und zu nutzen. Bpmn.ai umfasst die gesamte Pipeline von der Datenextraktion, über die Transformation und Aufarbeitung der Daten, bis hin zum Anlernen eines geeigneten Machine Learning Algorithmus und dem zur Verfügung stellen, der daraus gewonnen Erkenntnisse.
Diese können unter anderem zur Optimierung und Automatisierung von Prozessen verwendet werden, sind aber generell für verschiedenste Anwendungen interessant (z.B.
Engpassanalysen, Prozessdauervorhersagen).

Daraus ergibt sich das folgende Gesamtbild einer Java-fokussierten KI-Infrastruktur [bpmn.ai](https://www.viadee.de/bpmnai), die sich sehr leicht aufsetzen und auch mit großen Datenmengen betreiben lässt:

![](./spark-importer/doc/Pipeline.png)

In diesem Repository enthalten ist die (konfigurierbare) Datenaufbereitungs-Pipeline mittels Apache Spark. Oft sind 80% des Aufwands eines Data-Mining-Projektes geprägt durch Datenaufbereitung: Wenn die Datenquelle "bekannt" ist, kann hier viel wiederverwendet werden und alle profitieren von der Weiterentwicklung.

# Zusammenarbeit

Das Projekt wird betrieben und weiterentwickelt von der viadee Unternehmensberatung GmbH in Münster, Westfalen. Ergebnisse aus Abschlussarbeiten an der WWU Münster und der FH Münster sind eingeflossen.

* Weitere Abschlussarbeiten sind geplant: Ansprechpartner dazu ist Dr. Frank Köhne von der viadee.
* Community-Beiträge zum Projekt sind gern gesehen: Hierzu bitten wir Github-Issues mit Vorschägen (oder PR) zu öffnen, die wir dann im Team bearbeiten können.
* Außerdem suchen wir nach weiteren Partnern, die interessante Prozessdaten für die Erprobung des Toolings haben oder auch einfach Interesse an einer Diskussion rund um KI in der Geschäftsprozessautomatisierung.

# Roadmap
Aktuell sammeln wir Feedback und priorisieren Ideen für die Weiterentwicklung. Abzusehen ist aber schon:
* Das bpmn.ai-Tooling soll einfacher zugänglich, anschaulicher werden.
* Wir planen Ansätze aus der Explainable AI (XAI) wie bspw. [Anchors](https://github.com/viadee/javaAnchorExplainer) in den Anwendungsprozess zu integieren.

# Komponenten

## spark-importer

Der Spark-Importer enthält drei Apache Spark-Anwendungen, die der Aufgabe dienen, Daten aus der Camunda-Engine zu übernehmen und sie in eine Data-Mining-Tabelle zu überführen, die eine Zeile pro Prozessinstanz mit zusätzlichen Spalten für jede Prozessvariable enthält. Diese Data-Mining-Tabelle wird dann verwendet, um einen Machine Learning Algorithmus zu trainieren, um bestimmte Ereignisse des Prozesses in der Zukunft vorherzusagen.
Für die folgenden Anwendungen stehen zur Verfügung:

* SparkImporterCSVApplication
* SparkImporterKafkaImportApplication
* SparkImporterKafkaDataProcessingApplication

Jede dieser Anwendungen erfüllt einen anderen Zweck.

### Datenpipeline

Die folgende Grafik zeigt die Pipeline, durch die die Daten von Camunda zur Machine Learning Engine fließen. Jede der drei Anwendungen dient einem bestimmten Zweck und Anwendungsfällen rund um den Import in, die Datenaggregation und -transformation innerhalb und den Export von Daten aus Apache Spark.

![alt text](./spark-importer/doc/SparkImporterApplicationFlow.png "SparkImporterCSVApplication Pipeline")

### SparkImporterCSVApplication

Diese Anwendung (Anwendungsklasse: CSVImportAndProcessingApplication) nimmt Daten aus einem CSV-Export von Camunda-History-Datenbanktabellen auf und aggregiert sie zu einer Data-Mining-Tabelle. Das Ergebnis ist auch eine CSV-Datei mit der Data-Mining-Tabellenstruktur.

### SparkImporterKafkaImportApplication

Diese Anwendung (Anwendungsklasse: KafkaImportApplication) ruft Daten von Kafka ab, in denen drei Warteschlangen zur Verfügung gestellt wurden und mit Daten aus dem History-Ereignishandler von Camunda gefüllt werden:

* processInstance: gefüllt mit Ereignissen auf der Ebene der Prozessinstanz
* activityInstance: gefüllt mit Ereignissen auf der Ebene der Activity-Instanz
* variableUpdate: gefüllt mit Ereignissen, die passieren, wenn eine Variable in irgendeiner Weise aktualisiert wird.

Die abgerufenen Daten werden dann an einem definierten Ort als Parkettdateien gespeichert. Es findet keine Datenverarbeitung durch diese Anwendung statt, da sie als Spark-Anwendung laufen kann, die ständig Daten aus Kafka-Streams empfängt.

### SparkImporterKafkaDataProcessingApplication

Diese Anwendung (Anwendungsklasse: SparkImporterKafkaDataProcessingApplication) ruft Daten aus einem Kafka-Import ab. Die Daten durchlaufen die gleichen Schritte wie in der CSV-Import- und Verarbeitungsanwendung, es ist nur eine separate Anwendung, da sie eine andere Eingabe als der CSV-Fall haben.
68 changes: 0 additions & 68 deletions README.en.md

This file was deleted.

57 changes: 29 additions & 28 deletions README.md
Expand Up @@ -2,66 +2,67 @@

# BPMN.AI

[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) [![Build Status](https://travis-ci.org/junit-team/junit4.svg?branch=master)](https://travis-ci.org/viadee/bpmn.ai)
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) [![Build Status](https://travis-ci.org/viadee/bpmn.ai?branch=%22master%22)](https://travis-ci.org/viadee/bpmn.ai)

*Read this in other languages: [English](README.en.md), [German](README.md).*

Bpmn.ai bezeichnet den Ansatz, Standard-Prozessdaten für ein Data Mining aufzubereiten und zu nutzen. Bpmn.ai umfasst die gesamte Pipeline von der Datenextraktion, über die Transformation und Aufarbeitung der Daten, bis hin zum Anlernen eines geeigneten Machine Learning Algorithmus und dem zur Verfügung stellen, der daraus gewonnen Erkenntnisse.
Diese können unter anderem zur Optimierung und Automatisierung von Prozessen verwendet werden, sind aber generell für verschiedenste Anwendungen interessant (z.B.
Engpassanalysen, Prozessdauervorhersagen).
Bpmn.ai describes the approach of preparing and using standard process data for data mining. Bpmn.ai covers the entire pipeline, which means data extraction, transformation and processing of the data, learning a suitable machine learning algorithm and providing the gained knowledge.
These can be used among other things to optimize and automate processes. Furthermore they are generally of interest for a wide variety of applications (e.g. bottleneck analyses, process duration predictions).

Daraus ergibt sich das folgende Gesamtbild einer Java-fokussierten KI-Infrastruktur [bpmn.ai](https://www.viadee.de/bpmnai), die sich sehr leicht aufsetzen und auch mit großen Datenmengen betreiben lässt:
This results in the following overall picture of a Java-focused AI infrastructure [bpmn.ai](https://www.viadee.de/bpmnai), which is very easy to set up and can also be used with large datasets:

![](./spark-importer/doc/Pipeline.png)
![](./spark-importer/doc/Pipeline.en.png)

In diesem Repository enthalten ist die (konfigurierbare) Datenaufbereitungs-Pipeline mittels Apache Spark. Oft sind 80% des Aufwands eines Data-Mining-Projektes geprägt durch Datenaufbereitung: Wenn die Datenquelle "bekannt" ist, kann hier viel wiederverwendet werden und alle profitieren von der Weiterentwicklung.
This repository contains the (configurable) data preparation pipeline using Apache Spark. Oftentimes 80% of the effort of a data mining project is spent on data preparation: If the data source is "known", a lot of things can be reused and everyone benefits from further development.

# Zusammenarbeit
# Collaboration

Das Projekt wird betrieben und weiterentwickelt von der viadee Unternehmensberatung GmbH in Münster, Westfalen. Ergebnisse aus Abschlussarbeiten an der WWU Münster und der FH Münster sind eingeflossen.
The project is operated and further developed by the viadee Consulting GmbH in Münster, Westphalia. Results from theses at the WWU Münster and the FH Münster have been incorporated.

* Further theses are planned: Contact person is Dr. Frank Köhne from viadee.
* Community contributions to the project are welcome: For this we ask you to open Github-Issues with suggestions (or PR), which we can then edit in the team.
* We are also looking for further partners who have interesting process data for testing tooling or who are simply interested in a discussion about AI in the context of business process automation.

* Weitere Abschlussarbeiten sind geplant: Ansprechpartner dazu ist Dr. Frank Köhne von der viadee.
* Community-Beiträge zum Projekt sind gern gesehen: Hierzu bitten wir Github-Issues mit Vorschägen (oder PR) zu öffnen, die wir dann im Team bearbeiten können.
* Außerdem suchen wir nach weiteren Partnern, die interessante Prozessdaten für die Erprobung des Toolings haben oder auch einfach Interesse an einer Diskussion rund um KI in der Geschäftsprozessautomatisierung.

# Roadmap
Aktuell sammeln wir Feedback und priorisieren Ideen für die Weiterentwicklung. Abzusehen ist aber schon:
* Das bpmn.ai-Tooling soll einfacher zugänglich, anschaulicher werden.
* Wir planen Ansätze aus der Explainable AI (XAI) wie bspw. [Anchors](https://github.com/viadee/javaAnchorExplainer) in den Anwendungsprozess zu integieren.
We are currently collecting feedback and prioritising ideas for further development. We have already planned:
* The bpmn.ai-Tooling should become more accessible and more descriptive.
* We plan to integrate approaches from the Explainable AI (XAI) such as [Anchors](https://github.com/viadee/javaAnchorExplainer) into the application process.

# Komponenten
# Components

## spark-importer

Der Spark-Importer enthält drei Apache Spark-Anwendungen, die der Aufgabe dienen, Daten aus der Camunda-Engine zu übernehmen und sie in eine Data-Mining-Tabelle zu überführen, die eine Zeile pro Prozessinstanz mit zusätzlichen Spalten für jede Prozessvariable enthält. Diese Data-Mining-Tabelle wird dann verwendet, um einen Machine Learning Algorithmus zu trainieren, um bestimmte Ereignisse des Prozesses in der Zukunft vorherzusagen.
Für die folgenden Anwendungen stehen zur Verfügung:
The Spark Importer contains three Apache Spark applications that are used to transfer data from the Camunda engine to a data mining table that consists of one row per process instance with additional columns for each process variable. This data mining table is then used to train a machine learning algorithm to predict certain future events of the process.
The following applications are available:

* SparkImporterCSVApplication
* SparkImporterKafkaImportApplication
* SparkImporterKafkaDataProcessingApplication

Jede dieser Anwendungen erfüllt einen anderen Zweck.
Each of these applications serves a different purpose.


### Datenpipeline
### Data pipeline

Die folgende Grafik zeigt die Pipeline, durch die die Daten von Camunda zur Machine Learning Engine fließen. Jede der drei Anwendungen dient einem bestimmten Zweck und Anwendungsfällen rund um den Import in, die Datenaggregation und -transformation innerhalb und den Export von Daten aus Apache Spark.
The following graphic shows the pipeline through which the data flows from Camunda to the Machine Learning Engine. Each of the three applications serves a specific purpose and specific use cases concerning importing, aggregating and transforming data and exporting it from Apache Spark.

![alt text](./spark-importer/doc/SparkImporterApplicationFlow.png "SparkImporterCSVApplication Pipeline")

### SparkImporterCSVApplication

Diese Anwendung (Anwendungsklasse: CSVImportAndProcessingApplication) nimmt Daten aus einem CSV-Export von Camunda-History-Datenbanktabellen auf und aggregiert sie zu einer Data-Mining-Tabelle. Das Ergebnis ist auch eine CSV-Datei mit der Data-Mining-Tabellenstruktur.
This application (class: CSVImportAndProcessingApplication) takes data from a CSV export of the Camunda history database tables and aggregates it to a data mining table. The result is also a CSV file of the data mining table structure.

### SparkImporterKafkaImportApplication

Diese Anwendung (Anwendungsklasse: KafkaImportApplication) ruft Daten von Kafka ab, in denen drei Warteschlangen zur Verfügung gestellt wurden und mit Daten aus dem History-Ereignishandler von Camunda gefüllt werden:
This application (class: KafkaImportApplication) retrieves data from Kafka in which three queues have been provided and filled with data from the Camunda history event handler:

* processInstance: gefüllt mit Ereignissen auf der Ebene der Prozessinstanz
* activityInstance: gefüllt mit Ereignissen auf der Ebene der Activity-Instanz
* variableUpdate: gefüllt mit Ereignissen, die passieren, wenn eine Variable in irgendeiner Weise aktualisiert wird.
* processInstance: filled with events at process instance level
* activityInstance: filled with events at activity instance level
* variableUpdate: filled with events that happen when a variable is updated in any way.

Die abgerufenen Daten werden dann an einem definierten Ort als Parkettdateien gespeichert. Es findet keine Datenverarbeitung durch diese Anwendung statt, da sie als Spark-Anwendung laufen kann, die ständig Daten aus Kafka-Streams empfängt.
The retrieved data is then stored at a defined location as parquet files. There is no data processing by this application as it can run as a Spark application that constantly receives data from Kafka streams.

### SparkImporterKafkaDataProcessingApplication

Diese Anwendung (Anwendungsklasse: SparkImporterKafkaDataProcessingApplication) ruft Daten aus einem Kafka-Import ab. Die Daten durchlaufen die gleichen Schritte wie in der CSV-Import- und Verarbeitungsanwendung, es ist nur eine separate Anwendung, da sie eine andere Eingabe als der CSV-Fall haben.
This application (class: SparkImporterKafkaDataProcessingApplication) retrieves data from a Kafka import. The data goes through the same steps as in the CSV import and processing application, it is a separate application because it has a different input than the CSV case.

0 comments on commit a804dd2

Please sign in to comment.