Evaluation einer neuen Softwarearchitektur und Erstellung eines Prototyps
Creators: name: Ferber, Markus
name: Jans, Lukas
Publisher: name: ZHAW Zürcher Hochschule für Angewandte Wissenschaften
Year: 2023
Subjects: 005: Computerprogrammierung, Programme und Daten

description: Die BORM-INFORMATIK AG entwickelt und vertreibt eine Betriebsführungslösung mit Hauptfokus auf die Abläufe von produzierenden und projektorientierten Betrieben im holzverarbeitenden Sektor. Im Zuge der Umlagerung der Business-Logik auf den BormServer ergab sich die Notwendigkeit einer Lösung zur Verwaltung von zeitlich gesteuerten oder von Usern ausgelösten Hintergrundprozessen. Bestehende Lösungen wurden bei Bedarf individuell implementiert. Ziel dieser Arbeit war die Erarbeitung eines Konzepts für eine einheitliche, zweckbestimmte Verwaltung solcher Prozesse (Tasks) sowie die Implementation eines entsprechenden Prototyps. Dazu wurden zunächst verschiedene Taskverwaltungs-Frameworks evaluiert und für die Anwendung auf dem BormServer getestet. Diese Recherchen führten zur Auswahl des .NET-Frameworks Hangfire. Im Hinblick auf die Integration in den BormServer wurden die benötigten Systemoperationen definiert sowie eine Architektur- und eine Verteilungsübersicht entworfen. Basierend auf diesem Konzept wurde anschliessend der Prototyp implementiert. Für die Verifikation der Funktionalität wurden Unit-Tests geschrieben und Systemtests durchgeführt. Die Tasks selber werden als Python-Skripts implementiert. Task-Metadaten werden in der BORM-Datenbank gespeichert. Anhand eines einfachen Beispiels wurde die Möglichkeit der Integration von BORM-internen Python-Bibliotheken demonstriert. Mit der bestehenden Implementation ist es nun möglich, Tasks zu starten, für die zeitliche Steuerung aktiv oder inaktiv zu setzen, sowie den Status eines Tasks abzufragen. Tasks können zudem erstellt, geändert und gelöscht werden. Die Interaktion mit der Taskverwaltung erfolgt über die API-Endpoints des BormServers. Weitere Funktionalitäten, wie die Verarbeitung von Task-Resultaten sowie das Abbrechen von laufenden Tasks, wurden im Rahmen des Prototyps konzeptionell aufgezeigt. Das weitere Vorgehen beinhaltet die Umsetzung dieser Funktionalitäten sowie die Integration des Hangfire-Datenspeichers in die BORM-Datenbank.
description: BORM-INFORMATIK AG develops and distributes a business management solution with the focus on the processes of manufacturing and project-oriented companies in the woodworking sector. In the course of moving the business logic to the BormServer, the need arose for a solution to manage time-controlled or user-triggered background processes. Existing solutions were implemented individually as needed. The aim of this thesis was to develop a concept for a uniform, purpose-specific control of such processes (tasks) and to implement a corresponding prototype. To this end, various task management frameworks were evaluated and tested for use on the BormServer. This research led to the selection of the .NET framework Hangfire. For the integration into the BormServer, the required system operations were defined and an architecture and a distribution overview were designed. Based on this concept, the prototype was then implemented. For the verification of the functionality, unit tests were written and system tests were performed. The tasks themselves are implemented as Python scripts. Task metadata is stored in the BORM database. A simple example was used to demonstrate the possibility of integrating BORM-internal Python libraries. With the existing implementation, it is now possible to start tasks, set them active or inactive for time control, and query the status of a task. Tasks can also be created, changed and deleted. Interaction with the task management takes place via the API endpoints of the BormServer. Further functionalities, such as the processing of task results and the cancellation of running tasks, were conceptually demonstrated within the scope of the prototype. The next steps include the implementation of these functionalities and the integration of the Hangfire data storage into the BORM database.