# 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. ...
...