Dezentrale Projekt- und Auftragsverwaltung
Kurzbeschreibung:
- Entwicklung und Implementierung einer datenbankbasierten Projekt- und Auftragsverwaltung mit:
- Autragsannahme, dezentral und mehrplatzfähig
- Auswertefunktion
- PDF-Generierung
- Faxfunktion
- zentrale Datenablage
Aufgabenstellung:
Die Aufgabe bestand darin, für einen Handwerkervermittlungsservice die Auftragsannahme mehrplatzfähig und dezentral zu gestalten. Die Auftragsannahme soll von verschiedenen Büros aus funktionieren und ggf. auch "zeitgleich" von mehreren Orten aus durchgeführt werden können. Dazu ist eine datenbankbasierte Lösung erforderlich. Weiterhin soll eine Auswertefunktion implementiert werden und eine Anfrage im PDF-Format generiert werden können, die anschließend an den entsprechenden Handwerker gefaxt werden kann.
Gelöst wurde die Aufgabe mit einem Server unter Linux, der über VPN erreichbar ist. Installiert wurde als Datenbank MySQL, als Fileservice steht Samba in der Version 4.0 zur Verfügung.Die Programmierung des Frontends und weiterer Funktionen wurde in Python 2.4 realisiert.
Randbedingungen:
Für die Verbindung der dezentralen Arbeitsplatzrechner mit dem (zentralen) Server steht an jedem Standort mindestens eine normale DSL 6000 als WAN-Verbindung mit dynamischer IP-Vergabe zur Verfügung.
Erreichbare Datenrate (Geschwindigkeit): 512kb/s upload und 6000kb/s download.
Routing, gateway und firewalling über ein handelsübliches Gateway (AVM/Lancom).
Betriebsysteme der Arbeitsplatzrechner: Windows 2000 und XP Professional
Durchführung:
Server und Netzwerk
Für die Funktion des Servers wurde ein handelüblicher PC mit einem aktuellen Prozessor (P4 3,0 GHZ HT) und 1GB Speicher ausgewählt, der über zwei Netzwerkkarten, eine ISDN-Karte für die Fernwartung sowie über zwei 80GB SATA-Festplatten verfügt, die als RAID0 zusammengefasst sind.
Da der Server mit den entferneten Standorten über eine Dialup-DSL-Leitung verbunden ist, sind nur relativ geringe Datenraten - Upload: 512 kb/s - möglich. Zudem wird die Verbindung einmal täglich vom ISP getrennt.
Wegen der geringen Datenrate sollte die notwendige Frontend-Software auf den Arbeitsplatzrechnern laufen und die Datenübertragung auf die Nutzdaten beschränkt werden. Um aber einen möglichst geringen Aufwand bei der Pflege der Software zu haben, entschlossen wir uns, die Software für das Frontend zentral am Server abzulegen und bei jedem Programmstart zu laden. Da dieser Start nur einmal am Tag notwendig ist, kann die Wartezeit beim Start in Kauf genommen werden.
Wegen der Trennung und dynamischer Adressvergabe ist eine Namensauflösung des Server durch die Clients über einen dyndns-Service notwendig, der bei jedem Verbindungsaufbau seitens des Servers dessen IP-Adresse in seine Datenbank aufnimmt und zur Namensauflösung zur Verfügung stellt.
Dadurch ,dass die Anwendung nicht in einem privaten LAN betrieben wird, sondern über ein öffentliches Netz, ist die Implementierung eines VPN notwendig, um die Daten und den Server vor unautorisiertem Zugriff zu schützen. Hier wurde eine Variante mit pptp-Protokoll gewählt, die ebenfalls wegen der Zwangstrennung täglich erneut aufgebaut werden muss.
Durch die dezentral Arbeitsweise musste für die Verwaltung der Daten auf eine Datenbank zurück gegriffen werden, die als Client - Server Installation läuft. Hierbei fiel die Wahl auf die freie Datenbank 'MySQL', die sich in sehr vielen Projekten als ausreichend stabil und zuverlässig herausgestellt hat.
Für die zentrale Ablage von Dokumenten, wie zB. Anfragen, Abrechnungen usw., und die Programmdateien wurde der Fileservice Samba installiert und konfiguriert, so dass die Arbeitsplatzrechner über VPN auf die eingerichteten Netzlaufwerke zugreifen können.
Das Backup der Daten erfolgt remote über ssh/scp/rsync.
Die Datenbanken werden ebenfalls nach einem Dump per ssh/scp übertragen und anschließend gesichert.
Frontend(-Software)
Für die Eingabe, Verwaltung und Auswertung der Projekte/Aufträge sollte ein Frontend entwickelt werden, das
1. mit Open Source-mitteln gepflegt werden kann.
2. im Quellcode bekannt ist.
3. ohne aufwendige Entwicklungsumgebung programmiert werden kann.
4. erweiterbar ist.
Unsere Wahl viel auf die Scriptsprache Python.
In der aktuellen Ausprägung besteht das Frontend aus folgenden Modulen:
Eingabe- und Verwaltungsmaske für Projekte/Aufträge
Pflegemodul für Handwerker- und Gewerktabellen
Auswertungsmodul für Abrechnungszwecke
Ausgabemodul für formatierte Ausgabe in PDF-Dateien.
Funktionsweise/Ablauf
Ein potentieller Kunde nimmt telefonisch Kontakt mit der Auftragsannahme auf. Diese gibt Kontaktdaten und Auftragsdaten ein und erhält aufgrund der Gewerkeauswahl passende Handwerker angeboten.
Nach erfolgter Eingabe unde Speicherung des Auftrags kann dieser vorformatiert in einer PDF-Datei gesspeichert werden, die automatisch im AcrobatReader göffnet wird. Von dort aus kann der Auftrag dann gedruckt oder dem betreffende Handwerker gefaxt werden.
Nach erfolgter Rückmeldung durch den Handwerker, wird das Datum der Rückmeldung dem Projekt hinzugefügt. Abgeschlossene, abgelehnte oder bereits abgerechnete Projekte/Aufträge werden ebenfalls gekennzeichnet. So können monatlich Auswertungen zur Abrechnung mit Handwerkern durchgeführt werden. Auch statistische Auswertungen sind möglich.
Erweiterungsmöglichkeiten
Weitere Funktionen lassen sich auf Wunsch in das bestehende System einbinden.
Geplant sind mittelfristig:
- Zugriff über Webfrontend auf die Datenbank
- Administration
- Handwerker-Rückmeldung online, Statusabfrage uvm.
- Automatische Faxfunktion
Weitere Möglichkeiten:
- Projektanfragen des Kunden online als Alternative zur telefonischen Bearbeitung
- Handwerker - Kundenkommunikation
- ...
Sie wollen mehr zu diesem Projekt Wissen?
| Ansprechpartner: | Peter Heikens |
|---|