Inhalt | Pflichtenheft, Seite 1 |
Pflichtenheft ToDo-Liste
(Auftraggeber: SEV-GmbH, interner
Betriebsauftrag)
Die SEV-GmbH entwickelt und vertreibt die Verkaufssteuerungssoftware Delphin, die auch intern zur Dokumentation aller Vorgänge verwendet wird. Zugrunde liegt ein Client-Server Datenbanksystem zur Speicherung und Bereitstellung der Daten.
Als neues Modul in Delphin ist eine
ToDo-Liste zu entwickeln, die es den Mitarbeitern der Support- und Entwicklungsabteilung
ermöglicht, schnell und lückenlos alle Kundenmeldungen (Anwenderfragen,
Programmfehler, Störungen im Arbeitsablauf etc.) zu erfassen und deren
Bearbeitungsstand zu dokumentieren.
Damit soll gleichzeitig ein Werkzeug
zur Kontrolle über die Erledigung und den Supportaufwand des jeweiligen
Vorgangs zur Verfügung stehen.
Die folgenden Informationen müssen verwaltet werden:
Info / Aufgabentext mit Kategorie (Art der Meldung) Erfaßdatum / -uhrzeit Erfassender Mitarbeiter Betroffener Kunde / Partner Zu erledigen von (Mitarbeiter) Priorität (extern/intern) Datum Arbeitsbeginn Datum Termin (Deadline) Erledigtflag mit Erledigtdatum / -uhrzeit Erledigt durch (Mitarbeiter) Info / Ergebnistext Zeitaufwand
Das Modul stellt eine Sofort-Dokumentation
mit geeignet gewählten Voreinstellungen für die zu jedem Eintrag
verwalteten Felder zur Verfügung.
Die Liste aller Einträge muß
nach den Kriterien sortierbar sein (nicht Freitextfelder).
Über Sichtfilter (z.B. nur
ein Mitarbeiter, ein Kunde, Stichtag etc.) wird die Liste auf eine Auswahl
aller Einträge eingeschränkt.
Anbindung an Delphin:
Beim Neueintrag wird der geöffnete
Kunde übernommen, dieser kann überschrieben werden (über
Suche in der Datenbank). Ein Partner kann dazugewählt werden.
Datum, Uhrzeit und Mitarbeiter werden
automatisch eingetragen.
Die Priorität stellt die bereits
in Delphin verwalteten Prioritätsstufen zu Auswahl.
Die angebotenen Kategorien werden
in einer neuen Tabelle verwaltet (Pflege kann zukünftig in der Delphin-Systemadministration
erfolgen).
Inhalt | Modulbeschreibung, Seite 1 |
Modulbeschreibung ToDo-Liste
Inhaltsübersicht
Modulbeschreibung, Seite 2 |
create
table ToDo (
ToDoId integer not null, ErfDat datetime, ErfAnwId char(10), DelphinId integer, PartnerId float, PrioInt char(10), PrioExt char(10), AnwId char(10), Kategorie char (10), BeginDat datetime, TerminDat datetime, Erledigt char(1), ErlDat datetime, ErlAnwId char(10), Aufwand float, AufgabeInfo long, ErgebnisInfo long); |
create
table Kategorie (
KatKurz char(10) not null, Kategorie char(30)); create unique index uxToDoId
alter table ToDo
create unique index uxKatKurz
alter table Kategorie
|
alter
table ToDo
foreign key fToDoErfAnw (ErfAnwId) references Mitarbeiter; alter table ToDo
alter table ToDo
alter table ToDo
|
alter
table ToDo
foreign key fToDoPId (PartnerId) references Partner; alter table ToDo
alter table ToDo
alter table ToDo
|
Inhalt | Modulbeschreibung, Seite 3 |
Das Modul meldet sich beim Start
wie üblich an und setzt die globale Variable
bToDoModul = TRUEEs wird ein neues Fenster (frmToDo) bereitgestellt, in dem die ToDo-Daten angezeigt und verwaltet werden.
Der Aufruf des Fensters erfolgt über den neuen Menüpunkt ToDo oder Strg+T
Das Modul greift auf die folgenden Tabellen zu (*: Neue Tabellen)
- Kunden
- Partner
- Mitarbeiter
- AktPrio
- ToDo*
- Kategorie*
(Adressdaten)
(Partnerdaten zu Adressen)
(Delphin-Anwender)
(Prioritätsstufen der Aktivitäten)
(ToDo-Daten)
(Klassifizierung der ToDo-Einträge)
Angesprochene globale Variablen:
Inhalt | Modulbeschreibung, Seite 4 |
Alle Funktionen sind in frmToDo
zusammengefaßt.:
Neue Einträge werden in der Tabelle immer ganz oben
eingefügt.
Änderungen nimmt der
Anwender direkt in der Tabelle vor.
Dafür werden Auswahldaten in
Comboboxen angeboten oder freie Einträge (Datetime oder Number) ermöglicht.
Das Speichern der Einträge und Änderungen erfolgt automatisch ohne Zutun des Anwenders.
Sortiert wird die Tabelle mit der Tabellen-Standardsortierung SalTblSortRows.
Nach dem Löschen eines Eintrags wird die Tabelle neu gefüllt, da sonst das Sortieren mit SalTblSortRows zu einem Fehler führt.
Die Adressensuche verwendet den üblichen Aufruf von mdifrmAdrSuche mit nModus=3. Über die Abschlußmeldung AM_Fertig an hWndChef (Handle des aufrufenden Fensters, hier frmToDo.tblToDo.colName1) wird die Aktualisierung des Namensfeldes ausgelöst.
Der Listendruck verwendet
die Tabellen-Druckfunktion dlgTblPrint. Durch Deselektion aller Listeneinträge
vor dem Aufruf von dlgTblPrint werden die Druckoptionen mit der Voreinstellung
'Alle' statt mit 'Markierte' angeboten. Nach dem Schließen des Dialogs
wird der aktuelle Listeneintrag wieder markiert.
Das Feld 'Infos drucken' gibt nach
jedem Listeneintrag den Inhalt der versteckten Tabellenspalte 'colInfos'
aus, in der die Einträge aus den beiden Freitext-Infofeldern vorformatiert
zusammengefaßt sind.
Zeitpunkte von Aktualisierungen:
- Tabelle:
bei jedem neuen Aufbau, (Filtern, Aktuelle Zeigen, Eintrag löschen)
nicht bei Sortierung
- Comboboxen:
Listeninhalt bei Dropdown
- Freitextfelder:
bei Klick auf Listeneintrag
Inhalt | Softwaredokumentation, Seite 1 |
Softwaredokumentation ToDo-Liste
Modul: | ToDo.apl ( alle verwendeten globalen Elemente sind in der technischen Übersicht der Modulbeschreibung aufgeführt ) |
Forms: | ConfigToDo, frmToDo |
ConfigToDo: | Übliches Anmeldefenster (clsModulStart)
Setzt bToDoModul = TRUE in On SAM_Destroy |
frmToDo: | Verwaltet alle Funktionen der ToDo-Liste |
Variablen:
Boolean: bErfMA
Boolean: bErfDat
Boolean: bKunde
Boolean: bPartner
Boolean: bPrioInt
Boolean: bPrioExt
Boolean: bKategorie
Boolean: bDoMA
Boolean: bBeginDat
Boolean: bTerminDat
Boolean: bErledigt
Boolean: bErlDat
Boolean: bErlMA
Boolean: bAufwandFilterung Ja/Nein für jede zulässige Spalte
(Aufwand war ursprünglich für die Filterung
vorgesehen, ist z.Zt. aber auskommentiert)Window Handle: hWndTbl
Window Handle: hWndCol
Window Handle: hWndSucheWindow Handles für
- Tabelle
- Spalte
- AdreßsucheNumber: nI
Number: nAktZeile
String: sWhere
String: sString
String: sTitel
Long String: sLString
- Allg Zählvariable
- Zeilenindex
- String für Bedingung in Select
- Allg. String
- Spaltentitel
- Allg. Long String
fMarkierung | Setzt die Markierung in der Tabelle neu. |
fZeile | Setzt Kontext, Fokus und Markierung auf die Spalte, deren ToDoId mit der übergebenen ID übereinstimmt (0: erste Zeile). |
fSpeichern | Speichert den aktuellen Listeneintrag (Update). |
Popup Menu: Filter | Steuert die Sichtenfilterung durch Setzen der entsprechenden Filter-Variablen und Senden von AM_Aktualisieren an tblToDo. |
Softwaredokumentation, Seite 2 |
tblToDo:
Tabelle: tblToDo ToDo-Liste Multiline: mlAufgabe
mlErgebnisMeldung zum aktuellen Eintrag
Ergebnis zum aktuellen EintragButtons: pbNeu
pbAlle
pbLöschen
pbDrucken
pbAbbruchFügt einen neuen Eintrag in die Liste ein
Zeigt alle offenen Einträge
Löscht aktuellen Eintrag auf der Datenbank
Ruft den Tabellendruck für die Liste auf
Schließt das Fenster frmToDoVariablen:
Boolean: bRichtung[1:17] Array für die Sortierrichtung Number: naColHandles[1:17] Array für die Spalten-Handles Number: nI Allg. Zählvariable Number: nAnzZeilen Aktuelle Anzahl der Einträge in der Liste Number: nAktSort Spaltennummer, nach der sortiert wird (gleich 0, wenn keine Sortierung) Number: nAktId Sichert bei Bedarf die aktuelle ToDoId Number: nAufwand Für das Füllen der Spalte colAufwand String: saFilter[*] Speichert die aktuellen Filterwerte
Spalten (*: für den Anwender nicht sichtbar):
colId* ToDoId (eindeutig) colErfDat Datum der Erfassung colErfAnw AnwenderId der Erfassung colDelphinId* DelphinId (Kundenbezug) colPartnerId* PartnerId (Partnerbezug) colName1 Kundenname (eindeutig durch DelphinId) colPName Partneranrede und Name (eindeutig durch PartnerId) colKategorie Kategorie der Meldung colTerminDat Deadline colBeginDat Geplanter Arbeitsbeginn colAnw AnwenderId Bearbeiter colPrioInt Interne Priorität (SEV) colPrioExt Externe Priorität (Kunde) colAufwand Aufwand der Erledigung in Stunden colErledigt Erledigt Ja/Nein colErlDat Datum der Erledigung colErlAnw AnwenderId der Erledigung colInfos* Zusammenfassung der Multilinefelder für den Ausdruck
Softwaredokumentation, Seite 3 |
AM_AddRow | Löst die notwendigen Schritte zum Einfügen und Füllen eines neuen Eintrags aus. |
In Tabelle: | Sendet AM_AddRow an alle Spalten |
In Spalte: | Setzt die Standardvorgaben für das jeweilige Feld (neue ToDoId, Datum, Kunde, Mitarbeiter) |
AM_Aktualisieren | Löst die Aktualisierung für das angesprochene Objekt aus |
In Tabelle: | Füllt die Tabelle mit SalTblPopulate entsprechend den Vorgaben für Filterung und Sortierung (Übergabe von Filter: ja/nein und Spaltennummer an wParam und lParam, bei Übergabe von 0, 0 wird die aktuelle Darstellung aktualisiert) |
In Spalte: | Kunde: holt Name1 aus Tabelle
Kunden entsprechend der DelphinId
Partner: holt PName aus Tabelle Partner entsprechend der PartnerId Aufwand: holt Aufwand aus Tabelle ToDo (erst in nAufwand, dann Zuweisung zu colAufwand, sonst fehlerhafte Darstellung in Spalte) Infos: faßt mlAufgabe und mlErgebnis zusammen |
Das Speichern von Änderungen
wird im allg. durch On SAM_Validate ausgelöst.
Eine neue Adresse wird mit On AM_Fertig
eingetragen und gespeichert, der Klick auf 'erledigt' mit On SAM_AnyEdit.
Bei On SAM_Close von frmToDo wird
ebenfalls eine Speicherung ausgelöst um auch die letzte Änderung
sicher abzufangen (kein SAM_Validate, wenn das Fenster mit 'Schließen'
beendet wird).
fSpeichern: | die Felder mlAufgabe und mlErgebnis werden nicht direkt im update verwendet sondern zunächst Long Strings zugewiesen, da sonst bei längeren Einträgen Fehlern beim Speichern auftreten. |
Message AM_Aktualisieren an tblToDo:
Softwaredokumentation, Seite 4 |
Hinweis:
colPartnerId und colPName werden
beide in derselben Reihenfolge gefüllt, um die korrekte Zuordnung
des Partnernamens zur PartnerId bei der Auswahl aus der Combobox sicherzustellen.
|
Message SAM_Click an pbNeu:
Message SAM_Click an pbAlle:
Message SAM_Click an pbLöschen:
Message SAM_Click an pbDrucken:
Grundsatz: Alle Änderungen
in der Tabelle und in den Multilinefeldern werden durch Messages an diese
ausgelöst. Dies geschieht mit AM_AddRow und AM_Aktualisieren. Damit
können andere Objekte nur die in der Tabelle / den Freitextfeldern
definierten Wirkungen hervorrufen.
Die Datenbanktabellen und Relationen sind in der Modulbeschreibung dargestellt.