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

    1. Elemente
    2. Technische Übersicht
    3. Funktionalität


    Inhalt

    1. Elemente

    1. Library: ToDo.apl
    2. In sev.apt (Rahmenmodul zur Erstellung der Delphin.exe für SEV)
      1. Einbindung einer Library: ToDo.apl
        Neuer Menüpunkt: ToDo
    3. In delphini.apl (Standardmodul mit Deklarationen für Delphin)
      1. Neue User-Message: AM_Fertig
        Neue Variablen: Boolean: bToDoModul (Modulanmeldung)
            Window Handle: hWndToDo (Handle von frmToDo)
    4. In adresse.apl (Adressmodul)

    5. Für nModus = 3 (Adressensuche mit Rückgabe der DelphinId in Array)
        Message AM_Fertig senden
          an aufrufendes Fenster
          über globalen Window Handle hWndChef
          in mdifrmAdrSuche und mdifrmTrefferKu
    6. Datenbanktabellen und Relationen:
    Es sind zwei neue Tabellen zu generieren:
        1. Tabelle zur Verwaltung der ToDo-Listendaten
        2. Parametertabelle für die Verwaltung der Kategorien der ToDo-Einträge



    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 
    on ToDo (ToDoId);

    alter table ToDo 
    primary key (ToDoId);

    create unique index uxKatKurz 
    on Kategorie (KatKurz);

    alter table Kategorie 
    primary key (KatKurz);

    Folgende Relationen bestehen zwischen den beteiligten Tabellen:
    1. User-Kennungen aus Tabelle Mitarbeiter
    2. Kunden (DelphinId) aus Tabelle Kunden
    3. Partner (PartnerId) aus Tabelle Partner
    4. Prioritätsstufen aus Tabelle AktPrio
    5. ToDo-Eintragskategorien aus Tabelle Kategorie
     
    alter table ToDo 
    foreign key fToDoErfAnw (ErfAnwId) 
    references Mitarbeiter;

    alter table ToDo 
    foreign key fToDoAnw (AnwId) 
    references Mitarbeiter;

    alter table ToDo 
    foreign key fToDoErlAnw (ErlAnwId) 
    references Mitarbeiter;

    alter table ToDo 
    foreign key fToDoDId (DelphinId) 
    references Kunden;

    alter table ToDo 
    foreign key fToDoPId (PartnerId)
    references Partner;

    alter table ToDo
    foreign key fToDoPriI (PrioInt)
    references AktPrio;

    alter table ToDo
    foreign key fToDoPriE (PrioExt)
    references AktPrio;

    alter table ToDo
    foreign key fToDoKat (Kategorie)
    references Kategorie;



    Inhalt Modulbeschreibung, Seite 3
    1. Technische Übersicht


    Das Modul meldet sich beim Start wie üblich an und setzt die globale Variable

    bToDoModul = TRUE
    Es 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:

    Aufgerufene globale Funktionen: Verwendete Forms und Dialogs: Verwendete Klassen: Verwendete User-Messages:



    Inhalt Modulbeschreibung, Seite 4
    1. Funktionalität


    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: bAufwand
    Filterung 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: hWndSuche
    Window Handles für
    -   Tabelle
    -   Spalte
    -   Adreßsuche
    Number: 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
    Funktionen:
       
    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
     
    Child Windows :
     
    Tabelle: tblToDo ToDo-Liste
    Multiline: mlAufgabe
    mlErgebnis
    Meldung zum aktuellen Eintrag
    Ergebnis zum aktuellen Eintrag
    Buttons: pbNeu
    pbAlle
    pbLöschen
    pbDrucken
    pbAbbruch
    Fü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 frmToDo
    tblToDo: Variablen:  
    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

      User-Messages:  
    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
    Weitere wichtige Auszüge und Anmerkungen:

    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.
    Diese Comboboxen dürfen daher nicht mit der Eigenschaft 'sortiert' versehen werden.


     

    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.

    Inhalt