# Geschäftsprozesse am Beispiel von einem Kalender ###### tags: `cfmlnotes` ## Ausgangspunkt -- Monats-/Wochenansicht :::info Ausgangspunkt ist ein Kalender-System, welches bisher zwei Geschäftsprozesse anbietet. ::: In der Fachsprache sind Geschäftsprozesse (**Gp**, engl. bussiness process) oft Scripte/Programme die System-Funktionen beschreiben, die der Nutzer durch sog. Use-Cases (**Uc**) anstoßen/starten kann. Das gesamte System wird formal mit Gps und Ucs beschrieben. Das Hilft den Überblick zu behalten und **genau zu wissen, was man programmieren muss und was nicht**, und um zu wissen **welche Forms in welchen Webseiten/Scripten ausgeführt bzw. angezeigt werden**. ## Front/Back-End * *Back-End*: **Jede System-Funktion** wird formal durch einen Gp beschrieben. Am Ende liegen eine Menge an Gp vor, die Daten aus dem System lesen und/oder ins System schreiben. Gps sind Script/Programme, die auf einem Server gestartet werden und mit Hilfe von Txt-Files/Datenbanken/Sensoren/etc. lesen und schreiben. Die Gps werden von den Ucs mit gewissen Parametern in einem Nutzungskontext aufgerufen. * *Front-End*: Im Browser werden auf einer Webseite Informationen, die aus dem Back-End kommen, grafisch aufgearbeitet. Uc können im Front-End z.B. über Klicks auf Submit-Buttons in einer Form vom Nutzer Ucs angestoßen/gestartet werden, welche dann Gps mit gewissen Parametern ausführen. * *Transaktion*: Somit steuert der Nutzer über das Front-End die Aüsführung der Funktionen des Back-End. Dieser Prozess wird oft *Transaktion* genannt. Das Back-End wird oft über API-Programmierschnittstellen oder Command-Line-Befehle angesteuert und mit dem Front-End in CFML-Scripten "verbunden", wobei das Front-End eine grafische Nutzeroberfläche (GUI) bietet. * *Glue-Code*: Verbindet das Front-End in gewissen Ucs/Nutzungsszenarien mit Gps/Funktionen des Back-Ends. ## Gps und Ucs im Kalender-System Ein Gp hat im Allgemeinen immer die folgendne Informationen *(Name, Parameter, Skript)*. Innerhalb von einem Uc startet der Benutzer einen Gp mit gewissen Parametern in einem Kontext. Im Use-Case Monat-Vor wird z.b. der Gp zur Berechnung der Monatsansicht ausgeführt und dabei entsprechend der aktuelle Monat/Jahr angepasst, damit die Ansicht für den vorherigen Monat erzeugt wird. Gps/Ucs bieten im Prinzip eine "wirtschafts-orientierte Fachsprache" zur Beschreibung einer Programm/Zugriffsstruktur mit welcher BWLer klarkommen. **Gp**: parametrisierte Prozedur, die eine Transaktion im System darstellt **Uc**: Aufruf einer parametrisierten Prozedur in einem gewissen Nutzungskontext Wenn man mal mit echten Kunden zu tun hat reden die dann so. :smile: (Variablennamen und Skriptnamen müssen im Folgenden entsprechend deiner Programmierung angepasst werden.) ### Gps Das betreachtete Kalender-System besitzt bisher zwei Gp zum anzeigen einer Wochen/Monatsansicht eines Kalenders: 1. *Gp-Monatsansicht-berechnen* Patameter: Monat, Jahr Skript: kalender_monat.cfm Output: HTML-Code für Monatsansicht für Monat in Jahr Use-Cases: *Uc-Monat-Vor*, *Uc-Monat-Zurück* 2. *Gp-Wochenansicht-berechnen* Parameter: Woche, Jahr Skript: kalender_woche.cfm Output: HTML-Code für Wochenansicht für Woche in Jahr Use-Cases: *Uc-Woche-Vor*, *Uc-Woche-Zurück* ### Ucs Der HTML-Code der vom System erzeugt wird erlaubt dem Nutzer Zugriff auf vier folgende Ucs, die wiederum Gps ausführen: 1. Uc-Monat-Vor: Gp-Monatsansicht-berechnen(Monat-1, Jahr) 2. Uc-Monat-Zurück: Gp-Monatsansicht-berechnen(Monat+1, Jahr) 3. Uc-Woche-Vor: Gp-Wochenansicht-berechnen(Woche-1, Jahr) 4. Uc-Woche-Zurück: Gp-Wochenansicht-berechnen(Woche+1, Jahr) ## Erweiterung Kalender-System um neue Geschäftsprozesse :::info Aufgabe ::: Benenne die neuen Gps/Ucs, um Termine im Kalender zu verwalten (speichern, entfernen, anzeigen, bearbeiten)? ... dann wird klar was als nächstes zu tun ist. ### Gps -- erweitert 1. *Gp-Monatsansicht-erzeugen* Patameter: Monat, Jahr Skript: kalender_monat.cfm Aktion: HTML-Code für Monatsansicht für Monat in Jahr erzeugen, enthält Forms für Use-Cases: *Uc-Monat-Vor*, *Uc-Monat-Zurück* 2. *Gp-Wochenansicht-erzeugen* Parameter: Woche, Jahr Skript: kalender_woche.cfm Aktion: HTML-Code für Wochenansicht für Woche in Jahr erzeugen, enthält Forms für Use-Cases: *Uc-Woche-Vor*, *Uc-Woche-Zurück* 3. *Gp-Termin-speichern* Parameter: Datum, TerminName, Termininfo, UhrzeitAnfang, UhrzeitEnde Skript: kalender_monat.cfm; kalender_woche.cfm Aktion: Termindarstellung im jeweiligen Skript, also in der jeweiligen Kalenderansicht (monat/woche), enthält Forms für Use-Cases: *Uc-Termin-speichern/hinzufügen* 4. *Gp-Termin-entfernen* Parameter: Datum, TerminName, Termininfo, UhrzeitAnfang, UhrzeitEnde Skript: kalender_monat.cfm; kalender_woche.cfm Aktion: Entfernen des Termins aus der Datenbank um ihn nicht mehr anzeigen zu lassen. Use-Cases: *Uc-Termin-entfernen* ... ### Ucs -- erweitert 1. Uc-Monat-Vor: Gp-Monatsansicht-erzeugen(Monat-1, Jahr) 2. Uc-Monat-Zurück: Gp-Monatsansicht-erzeugen(Monat+1, Jahr) 3. Uc-Woche-Vor: Gp-Wochenansicht-erzeugen(Woche-1, Jahr) 4. Uc-Woche-Zurück: Gp-Wochenansicht-erzeugen(Woche+1, Jahr) 5. ... ...