nw  

Task System in F# für Verbrauchdatenanalyse

Zusammenfassung

Automatisierungsframework in F#, das dank funktionaler Prinzipien typsichere Kombinationen von wiederverwendbaren Modulen zu mächtigen Applikationen erlaubt.

Schlüsselbegriffe

.NET, F#, F# Interactive, MSSQL, Automatisierung, NLog, Fuchu Testing

Ausgangslage

Die Wichtigkeit des Einsatzes von Verbrauchsdaten-Zählern mit Kommunikationsschnittstelle nimmt laufend zu. Noch heute werden jedoch in der Rapp Enserv rund die Hälfte aller Heizungszähler einmal pro Jahr von Hand abgelesen. Die restlichen Zählerinformationen werden in verschiedenen Intervallen (auf Abruf, zweimal pro Monat, zweimal im Jahr) über verschiedene Schnittstellen (GSM, lokales Funknetz, Web-Interface) zur Firma geliefert. In diesen Daten sieht die Firma Potenzial, könnte doch frühzeitig erkannt werden ob ein Gerät defekt ist oder ob in einer Wohnung trotz Leerstand ein Verbrauch gemessen wird, um nur zwei Beispiele zu nennen.

Unabhängig davon gibt es in der Informatikabteilung ein Bedürfnis, wiederkehrende Aufgaben zu automatisieren. So wird zurzeit pro Woche eine sogenannte Kontrollliste von Hand erstellt, welche unter anderem alle noch zu offerierenden Reparaturen enthält. Andere Aufgaben, welche in Zukunft über ein eigenes System abgedeckt werden könnten, wären die Synchronisation von Datenbanken, Schnittstellen in Drittsysteme (Abacus3, XOR4) und weitere betriebliche Aufgaben.

Aus diesen verschiedenen Gründen wurde ein System entwickelt, mit welchem einzelne Komponenten zu einer Aufgabe verknüpfen werden können. Zudem steht die Wiederverwendbarkeit und Erweiterbarkeit im Fokus der Lösung.

Zielsetzung

Während dem Projekt soll eine Software enstehen, welche durch die Firma Rapp Enserv für die Automatisierung von Aufgaben eingesetzt werden kann. Die Anwender der Software sind die Mitarbeiter der Informatikabteilung der Firma und es wird bewusst auf eine graphische Oberfläche verzichtet.

Im Projekt sollen zwei konrete Aufgabe umgesetzt werden. Das ist zum einen der sogenannte "KontrolllisteTask". Die Kontrollliste wird zurzeit manuell von einem Rapp Mitarbeiter einmal pro Woche erstellt. Darin sind Listen enthalten, welche für die Mitarbeiter als Hilfsinstrument eingesetzt werden. Die Listen beinhalten Datenbank-Abfrageresultate wiederkehrende zum Beispiel alle Offerten, welche seit mind. vier Wochen im Status "offeriert" sind. Bei diesen müsste der Rapp Mitarbeiter auf die Kunden zugehen und sich nach dem Stand erkunden.

Der zweite Task ist der sogenannte "QundisTask". Dieser verarbeitet die erhaltenen Zähler-Informationen der Firma Qundis. Diese Daten sind für die Firma besondern intressant, da sie in einem sehr regelmässigen Abstand von zwei Wochen bei der Firma eintreffen. Es gibt ein grosses Potenzial in diesen Daten welches zurzeit nicht genutzt wird. Im "QundisTask" sollen diese Daten analysiert und kontrolliert werden. Fehler oder Abweichungen in den Daten sollen protokolliert und dem Mitarbeiter der Firma Rapp Enserv zur Verfügung gestellt werden.

Ergebnisse

Als Resultat wurde die typensichere und erweiterbare Software «TaskSystem» in F# entwickelt. Sie erlaubt es, wiederkehrende Aufgaben, so genannte «Tasks», zu modellieren und zu automatisieren.


Die Tasks werden dabei auf kleine einzelne Einheiten unterteilt, welche als «Module» bezeichnet werden. Module sollen eine möglichst stark abgegrenzte Teilaufgabe erledigen, um die Wiederverwendbarkeit möglichst hoch zu halten. Module werden mit verschiedenen Verknüpfungs-Operationen zu einem Task modelliert, um einen Anwendungsfall abzubilden. Während das Herzstück in F# programmiert wurde, können Module auch in C# oder anderen .NET Sprachen programmiert werden. Um die Vorteile der Entwicklungsunterstützung zu behalten, findet die Taskmodellierung sowie die Modulentwicklung in Visual Studio von Microsoft statt.

Task-Kombination als Schema dargestellt:
Task-Kombination im F#-Code:

Innerhalb des Projekts wurden zwei spezifische Tasks implementiert. Der «KontrolllisteTask» ist dabei für die Erstellung von CSVDateien zuständig, welche zuvor einmal pro Woche manuell generiert wurden. Der «QundisTask» verarbeitet erhaltene Verbrauchsdaten. Er die Messdaten in den erhaltenen Textdateien sowie anhand von Informationen in der Haupt-Datenbank der Firma auf Vollständigkeit und Fehler. Durch die Automatisierung dieser Aufgaben fallen zeitintensive manuelle Arbeiten weg. Zudem werden fehlerhafte Verbrauchsdaten-Zähler sowie inkorrekte Messdaten frühzeitig erkannt und können zeitnah repariert werden. Die Qualität der Heiz- und Nebenkostenabrechnung für die Kunden kann dadurch gesteigert werden.

Projektdaten

1 Semester, 360 Stunden pro Person, Bachelor Thesis

Projektdaten
Projektart Projektarbeit 8. Semester
Projektdauer 1 Semester
Aufwand in Personenstunden 720 Personenstunden (360 pro Person)
Teamgrösse 2 Personen
Auftraggeber

Rapp Enserv AG
Hochstrasse 100
4018 Basel
Webseite Auftraggeber

Projektteam

Roger Matl
Student Informatik (Berufsbegleitend)
8. Semester
roger.matl@students.fhnw.ch


Cédric Mendelin
Student Informatik (Berufsbegleitend)
8. Semester
cedric.mendelin@students.fhnw.ch

Kontakt

Daniel Kröni
daniel.kroeni@fhnw.ch


Dierk König
dierk.koenig@fhnw.ch

zurück