Ein komplexes Modell

Werbung
Teil III
Komplexe Modelle
1
2
Epc Simulator und Bflow Toolbox
Benutzerhandbuch zur Modellierung von Epc*s mit bflow Toolbox und
deren Simulation mit dem Epc Simulator
Teil III
komplexe Modelle
Letzte Aktualisierung: 6. Juni 2013
Impressum
Prof. Dr. Christian Müller
Technische Fachhochschule Wildau [FH] , Germany
[email protected]
3
Inhaltsverzeichnis
1
Aufgabe des Simulationsmodells ....................................................................... 6
2
Erstellung der epc-Modelle................................................................................. 7
3
2.1
„BBI.epc“.................................................................................................. 7
2.2
„flughafen.epc“......................................................................................... 8
2.3
„einreise_nat.epc“ .................................................................................. 11
2.4
„einreise_inter.epc“ ................................................................................ 14
2.5
„ausreise_nat.epc“ ................................................................................. 17
2.6
„ausreise_inter.epc“ ............................................................................... 20
2.7
kontrolle.epc .......................................................................................... 23
2.8
personkontrolle.epc ............................................................................... 26
2.9
„gepaeckkontrolle.epc“ .......................................................................... 28
2.10
„crewbereich.epc“ .................................................................................. 30
2.11
„Zoll_crew.epc“ ...................................................................................... 32
2.12
Pfade der einzelnen Process Interfaces festlegen ................................. 33
2.12.1
Process Interface im BBI.epc ...................................................... 33
2.12.2
Process Interface im flughafen.epc ............................................. 33
2.12.3
Process Interface im epc-Diagramm „einreise_nat“ .................... 34
2.12.4
Process Interface im epc-Diagramm „einreise_inter“ .................. 34
2.12.5
Process Interface im epc-Diagramm „ausreise_nat“ ................... 34
2.12.6
Process Interface im epc-Diagramm „ausreise_inter“ ................. 34
2.12.7
Process Interface im epc-Diagramm „crewbereich“ .................... 34
2.12.8
Process Interface im epc-Diagramm „kontrolle“ .......................... 34
Das komplexe Simulationsmodel mit Java-Code anreichern ........................... 35
3.1
Epc_Modellname.java ........................................................................... 35
3.2
Logic_Modellname.java ......................................................................... 35
3.3
Master_NAME.java ................................................................................ 35
3.4
Model.java ............................................................................................. 35
3.5
Rule_<Rollenbezeichnung>.java ........................................................... 35
3.6
Slave_Ressourcenbezeichnung.java ..................................................... 35
3.7
Information_<Informationsobjektname>.java ......................................... 36
4
4
5
6
7
Datenbank anlegen und für das Simulationsmodell vorbereiten ...................... 36
4.1
Datenbank installieren ........................................................................... 36
4.2
MySQL Connector ................................................................................. 37
Anlegen der eigenen Java-Klassen.................................................................. 38
5.1
Erzeugen der Klasse „DataAccessObject“............................................. 38
5.2
Erzeugen der Klasse „Gepaeck“ ............................................................ 39
5.3
Erzeugen der Klasse „Handgepaeck“ .................................................... 41
5.4
Erzeugen der Klasse „Pass“ .................................................................. 42
Codefragmente in den bestehenden Klassen integrieren ................................ 43
6.1
Codeerweiterung in der Klasse „Information_Flugdaten“....................... 43
6.2
Codeerweiterung in der Klasse „Master_Passagier“ ............................. 45
6.3
Codeerweiterung in der Klasse „Information_Fluginformation“ .............. 48
6.4
Codeerweiterung in der Klasse „Master_Crewmember“ ........................ 50
6.5
Codeerweiterung in der Klasse „BBI“ .................................................... 53
6.6
Codeerweiterung in der Klasse „Epc_einreise_inter“ ............................. 54
6.7
Codeerweiterung in der Klasse „Epc_flughafen“ ................................... 55
6.8
Codeerweiterung in der Klasse „Epc_Gepaeckkontrolle“ ...................... 56
6.9
Codeerweiterung in der Klasse „Epc_kontrolle“ ..................................... 57
6.10
Codeerweiterung in der Klasse „Epc_personkontrolle“ .......................... 58
6.11
Codeerweiterung in der Klasse „Epc_Zoll_Crew“ .................................. 58
Abbildungsverzeichnis ..................................................................................... 60
5
1 Aufgabe des Simulationsmodells
Das vorliegende Simulationsmodell soll den Ablauf an einem internationalen
Flughafen aus Sicht der Zollbehörde simulieren.
Hierzu wird unterschieden, ob der Passagier abfliegen möchte oder von einer Reise
zurückkehrt. Anschließend werden die Passagiere, die Besatzung und das Gepäck
durch Zollbeamte kontrolliert. Da ein weiblicher Passagier nicht von einem
männlichen Zollbeamten kontrolliert werden darf, wird dieser Fall bei der Kontrolle
ebenfalls unterschieden. Sollte der Zoll bei der Kontrolle etwas finden, so wird die
Ware beschlagnahmt oder die Person festgenommen.
Die Kontrollen sind bei nationalen Flügen leichter, als bei internationalen Flügen.
HINWEIS:
Da es sich hierbei um ein Hochschul-Tutorial handelt, sind die Abläufe
nicht wahrheitsgetreu, sondern fiktiv.
Der erste Abschnitt dieses Tutorials befasst sich mit der Modellierung der einzelnen
epc-Diagramme und deren Attributen.
Im zweiten Abschnitt werden die erstellten epc-Diagramme durch eigene JavaKlassen erweitert. Außerdem werden die vorhanden Java-Klassen teilweise mit
eigenem Code angereichert, um den gewünschten Ablauf zu erhalten. Um die
benötigten Informationen je Passagier zu halten und ggf. auch Informationen zu
speichern, wird eine MySQL Datenbank eingebunden. Wie die Datenbank in das
Simulationsmodell eingebunden wird, ist ebenfalls erläutert.
6
2 Erstellung der epc-Modelle
2.1
„BBI.epc“
Zu Beginn wird ein neues epc-Diagramm im dazu vorgesehenen Ordner erstellt. Eine
Anleitung zum Erstellen eines neuen Projektes, eines Ordners und das Anlegen des
epc-Diagramms ist im Tutorial Teil II – „Einfache Modelle“ erklärt.
Wie im Tutorial Teil II – „Einfache Modelle“ bereits erwähnt, beginnt jedes Modell mit
einem Group-Element.
Nach dem die Group angelegt wurde, werden die Personentypen (PersonType), die
im Modell vorkommen, angelegt. In diesem Modell handelt es sich dabei um
„Passagier“, „Crewmember“, „Mitarbeiter“ und „Mitarbeiterin“. Sowohl an dem
Personentyp „Mitarbeiter“, als auch am Personentyp „Mitarbeiterin“ wird nun ein
Participant angelegt. Durch den Participant wird nun die Person „Zollbeamter“ bzw.
„Zollbeamtin“ als Ressource angelegt und diese stehen von nun an im gesamten
Modell zur Verfügung. Außerdem wird an den Personentypen „Passagier“ und
„Crewmember“ ein Informationsobjekt gehangen, wodurch später im Java-Code ein
Informationsobjekt bereit gestellt wird, welches für jede Entity des Typs Passagier im
laufenden Simulationsmodell existiert und in dem dann die verschiedenen
Informationen aus diesem Objekt abgerufen werden können.
Abbildung 1- BBI.epc
7
Im Anschluss wird das Modell validiert. Der Validator hat automatisch die
notwendigen Attribute für jedes Element als Platzhalter hinzugefügt. Es ist nun die
Aufgabe des Anwenders diese Attribute mit den gewünschten Werten zu befüllen.
Abbildung 2 - BBI.epc inkl. Attribute
Hinweis: Die Attribute, die in der Abbildung 2 - BBI.epc inkl. Attributemit blau
umrahmt sind, sind die Attribute des Modells.
Nachdem alle Attribute eingepflegt sind, muss das nachfolgende epc angelegt
werden, damit das Process Interface den Pfad zum neuen epc erhalten kann.
2.2
„flughafen.epc“
Nun, da das Hauptmodell fehlerfrei ist, wird das zweite Modell mit Inhalt gefüllt.
Dieses Modell beginnt wie üblich mit einem Event, welches den Eintritt und damit den
Prozessfluss startet.
Wie bereits im Unterpunkt „Aufgabe des Simulationsmodells“ festgehalten, soll
nachdem der Passagier den Flughafen betreten hat entschieden werden, ob er zum
8
Abflugterminal oder zum Ankunftsterminal muss. Diese Entscheidung wird durch ein
exklusives „Oder“ (XOR) dargestellt (siehe Tutorial II – einfache Modelle), da der
Passagier entweder durch einen Flug am Airport ankommt, oder er verreisen möchte.
Ist diese Entscheidung getroffen und der Passagier ist zum Beispiel im
Abflugterminal eingetroffen, so sucht er sich nun das von ihm benötigte Gate aus.
Hierbei gibt es die Möglichkeiten, dass es sich um einen nationalen oder um einen
internationalen Flug handelt. Auch bei dieser Entscheidung handelt es sich um ein
exklusives „Oder“ (XOR), da es sich lediglich um eine Art des Fluges handeln kann.
Das weitere Verfahren, welches der Passagier durchlaufen muss, ist in weiteren
epc´s dargestellt. Um dies deutlich zu machen, wird jeweils ein Process Interface an
dem jeweiligen Event für die unterschiedlichen Gates angeheftet.
Dieses Vorgehen ist analog zum Vorgehen, wenn der Passagier in das
Ankunftsterminal geht.
Abbildung 3 - flughafen.epc
9
Nun, da das epc-Diagramm angelegt ist, wird dieses validiert. Durch die Validierung
wird auch in diesem Modell darauf hingewiesen, dass benötigte Attribute noch
fehlen. Als Platzhalter wurden diese bereits vom Validator eingefügt und müssen nun
durch den Anwender mit den nötigen Informationen gefüllt werden.
Abbildung 4 - flughafen.epc inkl. Attribute
Da wir die Entscheidung später über den Java-Code klären wollen, muss dort immer
Condition und Individual angegeben werden (siehe blaue Attribute Views in
Abbildung 4).
Nach erneuter Validierung sollten in diesem epc-Diagramm lediglich noch die
Angaben der Pfade für die vier Process Interfaces fehlen.
10
2.3
„einreise_nat.epc“
Nachdem das Flugzeug das Terminal erreicht hat, steigen die Passagiere aus dem
Flugzeug aus. Parallel wird das Gepäck der Passagiere ebenfalls entladen und durch
die Gepäckkontrolle geprüft. Dies geschieht in einem separaten epc-Diagramm,
welches durch ein Process Interface hier eingebunden wird. Anschließend wird dem
Passagier sein Gepäck ausgehändigt. Sollte das Gepäck illegale Waren enthalten
haben, so wird der Passagier durch den Zoll an die Polizei übergeben. War das
Gepäck in Ordnung, so kann der Passagier den Flughafen verlassen. Diese
Entscheidung wird durch ein exklusives „Oder“ (XOR) dargestellt, da das Gepäck
entweder illegale Waren enthält oder in Ordnung ist. Nachdem dies modelliert wurde,
sollte folgendes epc-Diagramm entstanden sein.
11
Abbildung 5 - einreise_nat.epc
Nachdem dieses epc-Diagramm erneut validiert wurde, müssen auch hier die
Attributwerte eingepflegt werden.
12
Abbildung 6 - einreise_nat.epc inkl. Attribute
Nach erneuter Validierung sollte dieses epc-Diagramm ohne Fehler sein, Ausnahme
bildet hierbei wieder das Process Interface. Dieses wird später den Pfad zum
nachfolgenden epc-Diagramm erhalten.
13
2.4
„einreise_inter.epc“
Der Anfang dieses epc-Diagramms ähnelt dem des epc-Diagramms
„einreise_nat.epc“. Nachdem das Flugzeug am Terminal angekommen ist, steigen
die Passagiere aus und parallel wird das Gepäck entladen und durch den Zoll
überprüft. Nachdem die Passagiere ihr Gepäck erhalten haben, findet die
Passkontrolle, durch einen Zollbeamten, statt. Bei dieser Entscheidung gibt es zwei
mögliche Ausgänge, die durch ein exklusives „Oder“ (XOR) modelliert sind.
Entweder, der Pass ist in Ordnung und der Besucher kann die Passkontrolle
verlassen, oder der Pass ist nicht in Ordnung und der Passagier wird in Gewahrsam
genommen. Sollte der Pass in Ordnung sein, so muss der Passagier sich nun
entscheiden, ob er etwas zu verzollen hat, oder nicht.
Entscheidet er sich für den Ausgang, dass er etwas zu verzollen hat, wird eine
Kontrolle durchgeführt, welche in einem separaten epc-Diagramm abgebildet wird.
Bei dieser Kontrolle gibt es ebenfalls zwei mögliche Ausgänge. Der erste mögliche
Ausgang ist der, dass die Ware illegal ist und der Passagier in Gewahrsam
genommen wird. Der zweite Ausgang ist, dass der Passagier nach der Kontrolle, den
Flughafen verlassen darf. Diese Entscheidung ist ebenfalls durch ein exklusives
„Oder“ (XOR) modelliert, da nur eines der beiden Ereignisse eintreten darf.
Entscheidet sich der Passagier für den Ausgang, dass er nichts zu verzollen hat, so
werden durch einen Zollbeamten per Zufall Passagiere bestimmt, die doch zur
Kontrolle müssen. Da diese Kontrolle ebenfalls via Process Interface auf das gleiche
kontrolle.epc-Diagramm zeigt, gibt es auch hier die bereits genannten zwei
möglichen Ausgänge. Sollte der Passagier nicht durch den Zollbeamten ausgewählt
worden sein, so kann er den Flughafen verlassen.
Nachdem dieser Vorgang modelliert ist, sollte folgendes epc-Diagramm entstanden
sein.
14
Abbildung 7 - einreise_inter.epc
Nun muss das epc-Diagramm validiert werden und die eingefügten Platzhalter für die
benötigten Attribute durch den Anwender ausgefüllt werden. Die nachfolgende
Abbildung zeigt die einzelnen Attribut Views mit den angegebenen Werten.
15
Abbildung 8 - einreise_inter.epc inkl. Attribute
Sind alle Attributwerte gesetzt, sollte eine erneute Validierung lediglich noch Fehler
an den Process Interfaces melden, um die wir uns später kümmern werden (siehe
2.12 „Pfade der einzelnen Process Interfaces festlegen“).
16
2.5
„ausreise_nat.epc“
Sobald der Passagier angekommen ist, legt er sein Gepäck auf das Förderband und
geht zur Sicherheitskontrolle des Zolls. Parallel läuft das Gepäck zur
Gepäckkontrolle, welche sich in einem separaten epc-Diagramm befindet.
Bei der Sicherheitskontrolle gibt es zwei mögliche Ereignisse, die eintreten können.
Diese Entscheidung wird durch ein exklusives „Oder“ (XOR) dargestellt, da nur eins
der beiden Ereignisse eintreten kann.
Das erste Ereignis ist, dass der Passagier Waren mitführt, die er nicht mit ins
Flugzeug nehmen darf. Tritt dieser Fall ein, so muss der Passagier diese Waren dem
Zoll aushändigen und darf anschließend die Sicherheitskontrolle verlassen.
Der zweite Fall besagt, dass der Passagier keine verbotenen Waren mit sich führt
und direkt den Kontrollbereich verlassen darf.
Anschließend wird das Gepäck an die Fluggesellschaft übergeben und der Passagier
wartet auf das Bording seines Flugzeuges, bis er an Bord gehen kann.
Die nachfolgende Abbildung zeigt das fertige „ausreise_nat.epc“.
17
Abbildung 9 - ausreise_nat.epc
Ist das epc-Diagramm fertig modelliert, so muss es validiert werden und mit den
nötigen Attributen gefüllt werden.
18
Abbildung 10 - ausreise_nat.epc inkl. Attribute
Nachdem das epc-Diagramm mit allen notwendigen Attributen ausgefüllt ist, sollte
eine erneute Validierung nur noch darauf hinweisen, dass das Process Interface
19
noch den Pfad zum weiterführenden epc-Diagramm benötigt. Dies wird im Abschnitt
2.12 – „Pfade der einzelnen Process Interfaces festlegen“ umgesetzt.
2.6
„ausreise_inter.epc“
Die internationale Ausreise beginnt ebenfalls damit, dass der Passagier sein Gepäck
auf das Förderband legt und zur Sicherheitskontrolle geht.
Bei der Sicherheitskontrolle angekommen, wird sowohl der Passagier, als auch sein
Handgepäck überprüft. Die Überprüfung des Handgepäcks findet in einer Funktion
statt. Die Überprüfung der Person findet in einem weiteren epc-Diagramm statt und
wird hier durch ein Process Interface eingebunden.
Wurde der Passagier und sein Handgepäck überprüft, stellt sich die Frage, ob er
verbotene Waren dabei hat. Hat er verbotene Gegenstände dabei, so muss er diese
direkt beim Zoll abgeben und darf anschließend den Kontrollbereich verlassen. Hat
er keine verbotenen Gegenstände dabei, so darf er direkt den Kontrollbereich
verlassen. Da jeweils nur eins der beiden Ereignisse eintreten kann, wird diese
Entscheidung durch ein exklusives „Oder“ (XOR) modelliert.
Parallel dazu, wird das Gepäck zur Sicherheitskontrolle gebracht und dort überprüft.
Die Überprüfung findet in einem separaten epc-Diagramm statt und wird durch ein
Process Interface hier eingebunden.
Anschließend stellt sich die Frage, ob nun alles in Ordnung ist. Da es sich auch
hierbei um eine Frage handelt, die genau eine Antwort haben darf, wird dies
ebenfalls durch ein exklusives „Oder“ (XOR) modelliert.
Sollte alles in Ordnung sein, so wird das Gepäck verladen und der Passagier wartet
auf das Bording seines Fluges. Abschließend geht der Passagier an Bord des
Flugzeuges.
Sollte es doch noch Unstimmigkeiten geben, so wird weder das Gepäck des
Passagiers verladen noch darf der Passagier selbst das Flugzeug betreten. Der Zoll
führt in diesem Fall erneut eine Überprüfung durch und es wird anschließend
entschieden, ob der Passagier (inkl. Gepäck) an Bord des Flugzeuges darf, oder ob
er nicht fliegen darf.
Das gesamte „ausreise_inter.epc“ ist in Abbildung 11 zusehen.
20
Abbildung 11 - ausreise_inter.epc
Sobald das epc-Diagramm komplett modelliert ist, muss es validiert werden, damit
die benötigten Attribute als Platzhalter eingetragen werden. Nun erfolgt das Ausfüllen
der Attributwerte mit den gewünschten Angaben (siehe Abbildung 12).
21
Abbildung 12 - ausreise_inter.epc inkl. Attribute
Nachdem alle Attributwerte eingetragen wurden, sollte das epc-Diagramm erneut
validiert werden. Der Validator sollte wieder nur darauf hinweisen, dass die Process
Interfaces noch die entsprechenden Pfade benötigen.
22
2.7
kontrolle.epc
Bei der Kontrolle wird er Passagier normal vom Zoll überprüft.
Findet die erste Prüfung etwas, das den Vorschriften widerspricht, so besteht die
Möglichkeit, dass eine Personenkontrolle durchgeführt wird. Die Personenkontrolle
ist als eigenständiges epc-Diagramm angelegt und wird somit durch ein Process
Interface in diese Prozesskette integriert. Diese Überprüfung kann dann als Ergebnis
haben, dass etwas gefunden wurde und der Passagier an die Polizei übergeben
wird, oder dass alles in Ordnung ist und der Passagier die Kontrolle verlassen darf.
Findet die erste Überprüfung nichts, kann der Passagier sofort den Kontrollbereich
verlassen.
Das komplette epc-Diagramm ist in Abbildung 13 zusehen.
23
Abbildung 13 - kontrolle.epc
Anschließend muss auch dieses epc-Diagramm validiert werden, damit die
benötigten Attribute als Platzhalter hinzugefügt werden und vom Anwender mit
Werten versehen werden können.
Die Werte der einzelnen Attribute ist in Abbildung 14 abgebildet.
24
Abbildung 14 - kontrolle.epc inkl. Attribute
Nach erneuter Validierung sollte auch dieses epc-Diagramm nur noch den Fehler
besitzen, dass das Process Interface den Pfad zum epc-Diagramm „personkontrolle“
benötigt.
25
2.8
personkontrolle.epc
Zu Beginn der Personenkontrolle muss der Passagier seine Taschen leeren.
Anschließend wird je nach Geschlecht die Überprüfung durch einen Zollbeamten
oder durch eine Zollbeamtin durchgeführt. Die Überprüfung kann als Ergebnis haben,
dass entweder der Passagier illegale Waren dabei hat, oder das er keine verbotenen
Gegenstände besitzt.
Das vollstände epc-Diagramm ist in Abbildung 15 dargestellt.
Abbildung 15 - personkontrolle.epc
Anschließend muss validiert werden, damit die Attribute eingetragen werden können.
26
Abbildung 16 - personkontrolle.epc inkl. Attribute
Sind alle Attribute, wie in Abbildung 16 eingetragen, muss das epc-Diagramm erneut
validiert werden. Es sollte nun fehlerfrei sein.
27
2.9
„gepaeckkontrolle.epc“
Im epc-Diagramm „Gepaeckkontrolle“ wird das Gepäck zuerst gescannt. Sollte dabei
ein Verdacht entstanden sein, wird dieses Gepäckstück gesondert von einer
Zollbeamtin überprüft. Diese Überprüfung bestätigt entweder den Verdacht und das
Gepäckstück erhält eine Markierung oder es handelte sich um eine Fehleinschätzung
und das Gepäckstück ist in Ordnung. Das komplette epc-Diagramm ist in der
Abbildung 17 zusehen.
Abbildung 17 - gepaeckkontrolle.epc
28
Nachdem das epc-Diagramm fertig modelliert ist, muss es validiert werden. Dadurch
werden wieder die Attribute als Platzhalter eingetragen und können nun vom
Anwender ausgefüllt werden.
Abbildung 18 - gepaeckkontrolle.epc inkl. Attribute
Sind alle Attribute ausgefüllt, wie in Abbildung 18 zusehen, muss das epc-Diagramm
erneut validiert werden. Der Validator sollte nun zeigen, dass das epc-Diagramm
fehlerfrei ist.
29
2.10 „crewbereich.epc“
Die Flugzeugbesatzungen werden nicht in der Prozesskette der Passagiere
betrachtet, sondern in einem separaten Fall.
Sobald ein Crewmitglied den Flughafen betritt, geht er in den Crewbereich. Dort
überprüft er den Flugplan. Diese Überprüfung kann als Ausgang haben, dass der
Flug gestrichen ist und das Crewmitglied neu eingeteilt wurde. Der zweite Ausgang
dieser Überprüfung kann sein, dass das Crewmitglied zum Briefing geht und
anschließend zur Zollkontrolle, damit der Flug stattfinden kann. Das komplette epcDiagramm ist in Abbildung 19 dargestellt.
Abbildung 19 - crewbereich.epc
30
Nachdem das epc-Diagramm fertig modelliert ist, muss es validiert werden. Durch die
Validierung werden die benötigten Attribute als Platzhalter eingefügt. Diese können
nun wie in Abbildung 20 dargestellt ausgefüllt werden.
Abbildung 20 - crewbereich.epc inkl. Attribute
Nachdem alle Attribute eingetragen wurden, sollte das epc-Diagramm erneut validiert
werden. Der Validator sollte nun nur noch darauf hinweisen, dass das Process
Interface den Pfad zum nachfolgenden epc-Diagramm benötigt.
31
2.11 „Zoll_crew.epc“
In diesem epc-Diagramm wird die Sicherheitsüberprüfung der Crewmitglieder
dargestellt. Hierfür überprüft ein Zollbeamter den Pass des Crewmitglieds. Ist dieser
nicht in Ordnung, so wird er in Gewahrsam genommen. Ist der Pass in Ordnung, so
wird im nächsten Schritt das Gepäck des Crewmitgliedes überprüft. Auch diese
Überprüfung hat die beiden Ausgangmöglichkeiten, dass das Crewmitglied entweder
in Gewahrsam genommen wird, oder es den Zollbereich verlassen darf. Das fertige
epc-Diagramm ist in Abbildung 21 dargestellt.
Abbildung 21 - Zoll_crew.epc
Nach der Modellierung des epc-Diagramms, muss dieses validiert werden. Dadurch
werden auch in diesem epc-Diagramm die Attribute als Platzhalter eingefügt. Diese
müssen nun durch den Anwender ausgefüllt werden (siehe Abbildung 22).
32
Abbildung 22 - Zoll_crew.epc inkl. Attribute
Wurden alle Attribute richtig eingepflegt, so sollte eine erneute Validierung zeigen,
dass das epc-Diagramm nun fehlerfrei ist.
2.12 Pfade der einzelnen Process Interfaces festlegen
Nun, da alle epc-Diagramme fertig sind, können, soweit noch nicht geschehen, alle
Process Interfaces den entsprechenden Pfad zum nachfolgenden epc-Diagramm
erhalten. Wie diese Pfade gesetzt werden wurde bereits im Tutorial Teil II – „Einfache
Modelle“ erklärt.
2.12.1 Process Interface im BBI.epc
Das Process Interface „Flughafen“ soll auf das epc-Diagramm „flughafen.epc“
zeigen.
Das Process Interface „Crewbereich“ soll auf das epc-Diagramm „Crewbereich.epc“
verweisen.
2.12.2 Process Interface im flughafen.epc
Das Process Interface „Ausreise national“ soll auf das epc-Diagramm
„ausreise_nat.epc“ verweisen.
Das Process Interface „Ausreise international“ soll auf das epc-Diagramm
„ausreise_inter.epc“ zeigen.
Das Process Interface „Einreise national“ soll auf das epc-Diagramm
„einreise_nat.epc“ verweisen.
33
Das Process Interface „Einreise international “ soll auf das epc-Diagramm
„einreise_inter.epc“ zeigen.
2.12.3 Process Interface im epc-Diagramm „einreise_nat“
Das Process Interface „Gepaeckkontrolle“ soll auf das epc-Diagramm
„Gepaeckkontrolle.epc“ zeigen.
2.12.4 Process Interface im epc-Diagramm „einreise_inter“
Das Process Interface „Gepaeckkontrolle“ soll auf das epc-Diagramm
„Gepaeckkontrolle.epc“ verweisen.
Die Process Interfaces „kontrolle“ verweisen auf das epc-Diagramm „kontrolle.epc“.
2.12.5 Process Interface im epc-Diagramm „ausreise_nat“
Das Process Interface „Gepaeckkontrolle“ soll auf das epc-Diagramm
„Gepaeckkontrolle.epc“ zeigen.
2.12.6 Process Interface im epc-Diagramm „ausreise_inter“
Das Process Interface „Gepaeckkontrolle“ soll auf das epc-Diagramm
„Gepaeckkontrolle.epc“ verweisen.
Die Process Interfaces „kontrolle“ verweisen auf das epc-Diagramm „kontrolle.epc“.
2.12.7 Process Interface im epc-Diagramm „crewbereich“
Das Process Interface „Zollbereich“ soll auf das epc-Diagramm „zoll_crew.epc“
zeigen.
2.12.8 Process Interface im epc-Diagramm „kontrolle“
Das Process Interface „Personkontrolle“ soll auf das epc-Diagramm
„Personkontrolle.epc“ verweisen.
Sind alle Process Interface mit den entsprechenden Pfaden belegt, so sollte die
Validierung der einzelnen epc-Diagramme keine Fehler mehr aufweisen.
Zum Abschluss muss nun das Simulationsmodell generiert werden. Hierzu wird der
Generator aufgerufen. Das Simulationsmodell sollte nun als Java-Klassen im
Projektbaum zu sehen sein.
34
3 Das komplexe Simulationsmodel mit Java-Code anreichern
Hinweis: Für diesen Abschnitt sind Kenntnisse in der Java-Programmierung nötig!
Im Kapitel 2(Erstellung der epc-Modelle) wurde ein komplexes Modell in Bflow
angelegt. In diesem Kapitel soll dieses Modell nun mit Java-Klassen und Java-Code
erweitert werden.
Um diese Erweiterungen durchführen zu können, muss erst einmal klar sein, welche
Aufgabe die erzeugten Java-Klassen übernehmen.
3.1
Epc_Modellname.java
Die epc-Klassen stellen die einzelnen EPKs des Modells dar.
3.2
Logic_Modellname.java
Die Logic-Klassen beinhalten die Prozesslogik, die in den EPKs hinterlegt ist. Zu
beachten ist, dass an diesen Klassen keine Veränderungen durchgeführt werden!
3.3
Master_NAME.java
In den Master-Klassen sind die vorhandenen Entities hinterlegt. In diesen Klassen
kann die Entity durch Codeerweiterung zur Startzeit bestimmte Werte erhalten.
3.4
Model.java
Die Klasse Model.java stellt das Hauptmodell dar. Diese Java-Klasse ist die
ausführende Java-Klasse und startet somit die Simulation.
3.5
Rule_<Rollenbezeichnung>.java
Die Rule-Klassen stellen die Ressourcen in dem Modell dar. In dieser Klasse wird die
Ressource jedoch nur namentlich benannt. Die Klassen arbeiten mit den SlaveKlassen eng zusammen.
3.6
Slave_Ressourcenbezeichnung.java
In den Slave-Klassen stehen die zu dieser Ressource angegeben Attribute. Sie
beinhalten somit die eigentlichen Ressourceneigenschaften.
35
3.7
Information_<Informationsobjektname>.java
In dieser Klasse können durch eigenen Code Informationen angelegt werden, auf die
im Verlauf des Simulationsmodells Zugriff genommen werden kann. Nachdem das
Simulationsmodell generiert wurde, beinhaltet diese Klasse lediglich einen
Konstruktor sowie eine String Variable, welche den Namen enthält sowie eine
Variable vom Typ Model, welches dem Simulationsprojekt entspricht. Beide
Variablen werden im rudimentären Konstruktor befüllt.
4 Datenbank anlegen und für das Simulationsmodell vorbereiten
4.1
Datenbank installieren
Im vorliegenden Projekt wird eine Datenbank genutzt, um zusätzliche Informationen
sowohl bereitzustellen, als auch zu speichern.
Bei der Datenbank handelt es sich um MySQL in der Version 5.1.41.
MySQL Datenbanken können in den aktuellsten Versionen direkt unter
http://www.mysql.de/downloads/ bezogen werden.
Für das Projekt selbst wurde jedoch auf das XAMPP Paket von „apachefriends“
zurückgegriffen.
Es ist unter http://www.apachefriends.org/de/xampp.html erhältlich und bietet
gleichzeitig phpMyAdmin, welches ein auf PHP basierendes GUI für die MySQL
Datenbank ist.
Eine ausführliche Erklärung für die Installation der aktuellsten XAMPP Version findet
man unter:
http://www.apachefriends.org/de/xampp-windows.html#1098
Eine Installationsanleitung für die reine MySQL Datenbank ist zu finden unter:
http://dev.mysql.com/doc/refman/5.1/de/windows-installation.html
Achtung: Hierbei ist zu beachten, dass bei der reinen MySQL Installation, kein
Administrationstool mit grafischer Oberfläche mit installiert wird. Hier wird zusätzlich
ein Tool wie beispielsweise die MySQL Workbench benötigt:
http://dev.mysql.com/downloads/gui-tools/5.0.html
36
Nach der Installation sollte eine Datenbank mit der Bezeichnung „bflow_flughafen“
angelegt werden und das dem Projekt beigelegt SQL File importiert werden.
Anschließend sollten folgende 14 Tabellen zur Verfügung stehen:
Abbildung 23 - Tabellenübersicht nach SQL File import
4.2
MySQL Connector
Um eine Verbindung zwischen der Datenbank und Java zu etablieren, ist ein
sogenannter JDBC- Treiber notwendig. Die jeweils aktuellste Version ist unter
http://dev.mysql.com/downloads/connector/j/ erhältlich.
Zur besseren Übersicht des Projektes wurde im entsprechenden Projektverzeichnis
ein Unterordner „libs“ erstellt und die jar-Datei dort abgelegt.
Als nächstes muss das jar-File in das Projekt eingebunden werden.
Dazu wird das Projekt im Bflow Package Explorer rechts geklickt und die
Eigenschaften im darauf erscheinenden Context Menü ausgewählt.
Als nächstes wird der JavaBuildPath gewählt und auf Add JARs geklickt. Nun wird im
Projektbaum das libs-Verzeichnis und dann die darin befindliche mysql-connector
Datei ausgewählt. Ein Klick auf „OK“ bindet diese nun in das Projekt ein, so dass der
Treiber in den Java Klassen zur Verfügung steht.
37
Abbildung 24 - JAR Datei importieren
5 Anlegen der eigenen Java-Klassen
5.1
Erzeugen der Klasse „DataAccessObject“
Das DataAccessObject ist ein Objekt, welches den Zugriff auf Daten in der
Datenbank ermöglicht. In diesem Projekt wird eine MySQL Datenbank genutzt.
Daher greift diese Klasse auf den Java-MySQL Connector(JDBC) zu.
Neben den Variablen, welche für einen Zugriff auf eine Datenbank und die
Authentifizierung bei dieser nötig sind, beinhaltet die DataAccessObjekt Klasse
verschiedene Methoden, die das Absetzen von SQL Abfragen an die Datenbank
ermöglichen sowie den Erhalt entsprechender Results.
Variablen:
Variable
Username
Password
Driver
Datenbank
Connection
Beschreibung
Benutzername zur Authentifizierung
Passwort zur Authentifizierung
Klassenname der Treiber Klasse
Name der Zieldatenbank
Enthält die etablierte Verbindung zur
Datenbank
38
Methoden:
Methode
Connect()
Dissconnect()
isConnected()
ReturnQuery(String)
RunQuery(String)
getInsertID(String)
Beschreibung
Etabliert eine Verbindung basierend auf
den Authentifizierungsveriablen
Trennt die bestehende Verbindung zur
Datenbank
Gibt einen boolschen Wert zurück, der
den Verbindungsstatus zur Datenbank
widerspiegelt
Liefert ein ResultSet als Ergebnis
übergebenen Abfrage zurück
Führt eine übergebene Abfrage aus und
liefert einen boolschen Wert wieder,
welcher den Erfolg oder Misserfolg der
Abfrage wiederspiegelt.
Liefert den Schlüssel eines Übergebenen
Inserts zurück
Das DataAccessObject (DAO) wird im Code selbst, in der Hauptklasse des Projektes
(BBI.java) eingebunden und im Konstruktor dieser Klasse die connect() Methode
aufgerufen.
Von dort wird auf die Instanz des Objektes von allen anderen Klassen zugegriffen.
Dies dient dazu, dass zu jeder Zeit lediglich eine Verbindung etabliert und genutzt
wird. Mehrere Instanzen würden zu einem Connectiontimeout der Datenbank führen,
da schnell die maximale Anzahl der Verbindungen erreicht werden würde.
Natürlich kann im DataAccessObjekt auch ein beliebiger anderer JDBC Treiber
genutzt werden, beispielsweiste eine PostgreS oder Oracle Database Variante.
Hierzu muss lediglich die entsprechende Variable „Driver“ abgeändert werden.
Hierbei ist jedoch zu beachten, dass der entsprechende Treiber zuvor korrekt
eingebunden werden muss. (Vgl. 4.2)
5.2
Erzeugen der Klasse „Gepaeck“
Die Klasse „Gepaeck“ repräsentiert die Gepäckstücke, welche sowohl von den
Passagieren als auch von den Crewmitgliedern durch den Zoll geführt werden.
39
Die Gepäckstücke, werden dabei zufällig aus einem Pool erzeugt. Der Gepäckpool
selbst, ist eine Tabelle in der Datenbank mit der Bezeichnung „waren“.
Insgesamt wird das Gepäckstück, durch 4 Variablen beschrieben.
Variable
Bezeichnung
Verboten
Wert
maxMenge
Bezeichnung
Bezeichnung des Gepäckstücks
Boolsches Flag, das anzeigt ob die
Einfuhr verboten ist
Monetärer Geldwert des Gepäckstücks
Maximale Menge die von dieser Ware
eingeführt werden darf
Zu diesen Variablen, verfügt die Klasse über die jeweils entsprechenden Getter- und
Setter-Methoden.
Im Konstruktor dieser Klasse, werden zum Zeitpunkt der Erzeugung die einzelnen
Variablen mit einem zufälligen Datensatz aus der Tabelle „waren“ befüllt:
Abbildung 25 - Konstruktor der Klasse Gepaeck
40
5.3
Erzeugen der Klasse „Handgepaeck“
Die Klasse „Handgepaeck“ repräsentiert Kleinstgegenstände, welche der Passagier
bei oder an sich führt und welche ebenfalls mit Restriktionen belegt sein können.
Diese Klasse wird genau wie die Klasse „Gepaeck“ aus einer Datenpool-Tabelle aus
der Datenbank befüllt. Die Tabelle heißt „handgepaeck“.
Das Handgepäck verfügt jedoch nur über zwei beschreibende Variablen.
Variable
Bezeichnung
verboten
Beschreibung
Bezeichnung des Gegenstandes
Boolsches Flag, das anzeigt, ob die
Mitnahme verboten ist
Zu diesen Variablen verfügt die Klasse über die jeweils entsprechenden Getter- und
Setter-Methoden.
Im Konstruktor dieser Klasse werden zum Zeitpunkt der Erzeugung die einzelnen
Variablen mit einem zufälligen Datensatz befüllt:
Abbildung 26 - Konstruktor der Klasse Handgepaeck
41
5.4
Erzeugen der Klasse „Pass“
Die Klasse „Pass“ repräsentiert das Ausweisdokument von jedem Passagier oder
Crewmitglied.
Die Klasse verfügt dabei über zwei beschreibende Variablen.
Variable
passNummer
Abgelaufen
Beschreibung
Passnummer, die das Dokument
eindeutig identifiziert.
Boolsches Flag, das anzeigt, ob das
Dokument noch gültig ist
Zusätzlich verfügt die Klasse über die entsprechenden Getter und Setter Methoden.
Im Konstruktor der Klasse wird über eine random UUID eine repräsentative
Passnummer generiert, sowie zufällig festgelegt, ob der Pass abgelaufen ist oder
nicht. (Wahrscheinlichkeit 12:3).
Abbildung 27 - Konstruktor der Klasse Pass
42
6 Codefragmente in den bestehenden Klassen integrieren
ACHTUNG: Codefragmente dürfen nur innerhalb des gekennzeichneten Bereichs
eingefügt werden, da sie sonst bei erneuter Generierung gelöscht werden.
Codefragment 1 - Kennzeichnung für den Bereich der Codeerweiterung
6.1
Codeerweiterung in der Klasse „Information_Flugdaten“
Die Klasse „information_Flugdaten“ stellt ein zusätzliches Informationsobjekt dar,
welches in die Klasse „Master_Passagier“ eingebunden ist und als
Informationscontainer für diese dient.
Variablenerweiterung:
Variable
Gepaeck
Handgepaeck
Einreise
National
Flugnummer
airline
Beschreibung
Hierbei handelt es sich um ein ListenObjekt, welches Gepaeck-Klassen
enthält und somit das Reisegepäck des
Passagiers abbildet (vgl. 4.2)
Hierbei handelt es sich um ein ListenObjekt, welches Handgepaeck- Klassen
enthält und somit das Handgepäck des
Passagiers abbildet (vgl. 4.3)
Einreise Integerabbildung eines
Boolsches Flags, welches signalisiert, ob
es sich um einen ein- oder ausreisenden
Passagier handelt
Einreise Integerabbildung eines
Boolsches Flags, welches signalisiert, ob
es sich um einen nationalen oder
internationalen Passagier handelt
Zufällig generierte Stringrepräsentation
der Flugnummer des Passagiers
Zufällige Fluglinie aus der Datenbank für
den Flug des Passagiers
43
Konstruktorerweiterung:
Im Konstruktor werden zunächst die Arraylisten für das Gepäck und das Handgepäck
initialisiert und anschließend mit mehreren Instanzen der jeweiligen Klassen befüllt.
Anschließend wird die Flugnummer generiert und eine zufällige Fluggesellschaft aus
der Datenbank abgefragt.
Abbildung 28 - Konstruktorerweiterung Information_Flugdaten
44
Methodenerweiterung:
Neben den Setter und Getter Methoden für die zusätzlich eingepflegten Variablen
wurden drei weitere Methoden eingepflegt:
Methode
randBool()
generateString()
generateFlugnummer()
Beschreibung
Generiert mit Hilfe der java.util.Random
Klasse eine Integerrepräsentation (0:1)
eines zufälligen boolschen Wertes
Generiert eine zufällige Zeichenkette mit
einer Länge gemäß dem Parameter
„length“ und aus dem Zeichenpool des
String Parameters „characters“
generateFlugnummer greift auf die
Methode generateString() zurück und
übergibt dieser die gewünschte Länge
und den gewünschten Zeichenvorrat
Abbildung 29 - Methodenerweiterung Klasse Information_Flugdaten
6.2
Codeerweiterung in der Klasse „Master_Passagier“
Bei der „Master_Passagier“- Klasse handelt es sich um einen BFlow „PersonType“,
welcher mit eigenem Java Code den Anforderungen entsprechend erweitert wurde.
Zum einen wurden eigene Variablen eingeführt, zum anderen wurde der Konstruktor
entsprechend modifiziert und eigene Methoden eingebunden.
45
Variablen Anpassungen:
Innerhalb des individuellen Codeblocks wurden folgende Änderungen eingefügt:
Variable
Vorname
Nachname
Geschlecht
Pass
VORNAMEN_SQL_MAENNLICH
VORNAMEN_SQL_WEIBLICH
NACHNAMEN_SQL
Beschreibung
Der Vorname des Passagiers, welcher
auch in den Logs Verwendung findet
Der Nachname des Passagiers, welcher
auch in den Logs Verwendung findet
Boolsches Flag, welches das Geschlecht
des Passagiers widerspiegelt und für die
Auswahl der Vornamentabelle genutzt
wird (Boolsches Flag per Integer
Repräsentation == Performance
Optimierung für SQL Inserts)
Einbindung der Pass-Klasse, und
Widerspiegelung des Ausweisdokuments
des Passagiers
Enthält die SQL Abfrage, um einen
zufälligen männlichen Vornamen aus der
Datenbank zu erhalten
Enthält die SQL Abfrage, um einen
zufälligen weiblichen Vornamen aus der
Datenbank zu erhalten
Enthält die SQL Abfrage, um einen
Nachnamen aus der Datenbank zu
erhalten
Konstruktor Anpassungen:
Im ersten Teil der Konstruktor Anpassungen, wird zunächst über die Funktion
randBool() ein zufälliges Geschlecht festlegt. Als nächstes wird eine Passinstanz
erzeugt. (siehe 5.4).
Auf Basis des Geschlechts wird nun mit Hilfe der SQL Strings eine Abfrage an die
Datenbank gestellt und die Variablen Vorname und Nachname mit den erhaltenen
Werten belegt:
46
Abbildung 30 - Konstruktor Erweiterung - Teil 1
Im Zweiten Teil der Konstruktorerweiterung werden die generierten
Passagierinformationen, sowie die zusätzlichen Daten aus dem Informationsobjekt
„Information_Passagierdaten“ mit Hilfe der Datenbank mitgeloggt, um zusätzliche
Informationen über den Programmablauf zu erhalten.
Dabei wird die Tabelle „passagierlog“ genutzt, welche am Ende der Simulation eine
Gesamtübersicht aller erzeugter Passagiere enthält.
47
Im nächsten Schritt wird zufällig entschieden, ob der entsprechende Passagier auf
der Fahndungsliste steht, und im positiven Fall wird dies ebenfalls in der Datenbank
geloggt, unter der Tabelle „Fahndung“:
Abbildung 31 - Konstruktorerweiterung - Teil 2
Methodenerweiterung:
Die Methodenerweiterung in dieser Klasse beschränkt sich ausschließlich auf die
Setter und Getter Methoden für die zusätzlich eingepflegten Variablen.
6.3
Codeerweiterung in der Klasse „Information_Fluginformation“
Die Klasse „information_Fluginformation“ stellt ein zusätzliches Informationsobjekt
dar, welches in die Klasse „Master_Crewmember“ eingebunden ist und als
Informationscontainer für diese dient.
Variablenerweiterung:
48
Variable
Gepaeck
Handgepaeck
Flugnummer
airline
Beschreibung
Hierbei handelt es sich um ein ListenObjekt, welches Gepaeck-Klassen
enthält und somit das Reisegepäck das
Passagiers abbildet (vgl. 4.2)
Hierbei handelt es sich um ein ListenObjekt, welches Handgepaeck-Klassen
enthält und somit das Handgepäck das
Passagiers abbildet (vgl. 4.3)
Zufällig generierte Stringrepräsentation
der Flugnummer des Passagiers
Zufällig Fluglinie aus der Datenbank für
den Flug des Passagiers
Konstruktorerweiterung:
Im Konstruktor werden zunächst die Arraylisten für das Gepäck und das Handgepäck
initialisiert und anschließend mit mehreren Instanzen der jeweiligen Klassen befüllt.
Anschließend wird die Flugnummer generiert und eine zufällige Fluggesellschaft aus
der Datenbank abgefragt.
49
Methodenerweiterung:
Neben den Setter und Getter Methoden für die zusätzlich eingepflegten Variablen
wurden drei weitere Methoden eingepflegt:
Methode
randBool()
generateString()
generateFlugnummer()
6.4
Beschreibung
Generiert mit Hilfe der java.util.Random
Klasse eine Integerrepräsentation (0:1)
eines zufälligen boolschen Wertes
Generiert eine zufällige Zeichenkette mit
einer Länge gemäß dem Parameter
„length“ und aus dem Zeichenpool des
String Parameters „characters“
generateFlugnummer greift auf die
Methode generateString() zurück und
übergibt dieser die gewünschte Länge
und den gewünschten Zeichenvorrat
Codeerweiterung in der Klasse „Master_Crewmember“
Bei der Master_Crewmember Klasse handelt es sich um einen BFlow „PersonType“,
welcher mit eigenem Java Code den Anforderungen entsprechend erweitert wurde.
Zum einen wurden eigene Variablen eingeführt, zum anderen wurden der
Konstruktor entsprechend modifiziert und eigene Methoden eingebunden.
50
Variablen Anpassungen:
Innerhalb des individuellen Codeblocks wurden folgende Änderungen eingefügt:
Variable
Vorname
Nachname
Geschlecht
Pass
VORNAMEN_SQL_MAENNLICH
VORNAMEN_SQL_WEIBLICH
NACHNAMEN_SQL
Beschreibung
Der Vorname des Passagiers, welcher
auch in den Logs Verwendung findet
Der Nachname des Passagiers, welcher
auch in den Logs Verwendung findet
Boolsches Flag, welches das Geschlecht
des Passagiers widerspiegelt, und für die
Auswahl der Vornamentabelle genutzt
wird (Boolsches Flag per Integer
Repräsentation == Performance
Optimierung für SQL Inserts)
Einbindung der Pass-Klasse, und
Widerspiegelung des Ausweisdokuments
des Passagiers
Enthält die SQL Abfrage, um einen
zufälligen männlichen Vornamen aus der
Datenbank zu erhalten
Enthält die SQL Abfrage, um einen
zufälligen weiblichen Vornamen aus der
Datenbank zu erhalten
Enthält die SQL Abfrage, um einen
Nachnamen aus der Datenbank zu
erhalten
Konstruktor Anpassungen:
Im ersten Teil der Konstruktor Anpassungen, wird zunächst über die Funktion
randBool() ein zufälliges Geschlecht festlegt. Als nächstes wird eine Passinstanz
erzeugt. (siehe 5.4).
Auf Basis des Geschlechts wird nun mit Hilfe der SQL Strings eine Abfrage an die
Datenbank gestellt und die Variablen Vorname und Nachname mit den erhaltenen
Werten belegt:
51
Im Zweiten Teil der Konstruktorerweiterung werden die generierten
Passagierinformationen, sowie die zusätzlichen Daten aus dem Informationsobjekt
„Information_Crewmember“ mit Hilfe der Datenbank mitgeloggt, um zusätzliche
Informationen über den Programmablauf zu erhalten.
Dabei wird die Tabelle „crewlog“ genutzt, welches am Ende der Simulation eine
Gesamtübersicht des gesamten erzeugten Bordpersonals enthält.
Im nächsten Schritt, wird zufällig entschieden, ob der entsprechende Crewmember
auf der Fahndungsliste steht, und im positiven Fall wird dies ebenfalls in der
Datenbank geloggt, unter der Tabelle „Fahndung“:
52
Methodenerweiterung:
Die Methodenerweiterung in dieser Klasse beschränkt sich ausschließlich auf die
Setter und Getter Methoden für die zusätzlich eingepflegten Variablen.
6.5
Codeerweiterung in der Klasse „BBI“
Wie bereits im Punkt 2.1 beschrieben, handelt es sich hierbei um das Haupt-epc des
Simulationsmodells.
Die Hauptklasse der Simulation „BBI“ wurde um das DataAccessObject erweitert.
Dies wurde zum einen als Variable eingebunden, zum anderen wurde der
Konstruktor erweitert, um in die Variable eine Instanz des Objektes zu laden und
über dieses eine Verbindung zur Datenbank zu etablieren. (vgl. 5.1).
53
6.6
Codeerweiterung in der Klasse „Epc_einreise_inter“
In diesem epc-Diagramm werden alle Passagiere abgefertigt, die durch einen
internationalen Flug einreisen. Hierzu durchlaufen die Passagiere mehrere
Kontrollen. Für weitere Erklärungen siehe 2.4 - „einreise_inter.epc“.
In dieser Klasse wurde die auf die Funktion „Pässe werden kontrolliert“ folgende
XOR Komponente mit eigenem Java Code erweitert, um basierend auf den vorher
beschriebenen Informationsobjekten zu entscheiden, ob der aktuell kontrollierte
Passagier über einen gültigen Pass verfügt und nicht auf der Fahndungsliste
(Datenbanktabelle „Fahndung“) steht.
Abbildung 32 – Erweiterung von XOR 129 - nachfolgend der Funktion "Pässe werden kontrolliert"
Wenn der Passagier über einen abgelaufenen Pass verfügt oder auf der
Fahndungsliste steht, wird er in Gewahrsam genommen. Dies wird über die
Datenbanktabelle „Gewahrsam“ zusätzlich mitgeloggt (unter Angabe eines
entsprechend aussagekräftigen Grundes).
54
6.7
Codeerweiterung in der Klasse „Epc_flughafen“
In diesem epc-Diagramm soll sich der Passagier entscheiden, ob er abfliegt oder
angekommen ist. Anschließend steht zur Auswahl, ob es sich um einen
internationalen Flug oder um einen nationalen Flug handelt (siehe 2.2).
Diese Klasse wurde erweitert, um die Auswahl der korrekten Warteschlagen (national
oder international und jeweils Ankunft oder Abflug) basierend auf seinen Flugdaten
zu treffen.
Grundlage hierfür bilden die beiden Variablen „einreise“ und „national, welche als
boolsche Operatoren fungieren.
Insgesamt wurden hierfür 3 XOR Elemente erweitert.
Erweiterung von XOR 333 – nachfolgend der Funktion “Auswahl des Terminals”:
//@@_begin of individual code for this method
Master_Passagier passagier = (Master_Passagier) proc;
decision_id_342_Event_Betreten_Gate_national =
(passagier.getInformation_id_329_Document_Flugdaten().getNational() == 1)
? true:false;
decision_id_343_Event_Betreten_Gate_international =
(passagier.getInformation_id_329_Document_Flugdaten().getNational() == 0)
? true:false;
//@@_end of individual code for this method
Erweiterung von XOR 339 – nachfolgend der Funktion “Auswahl des Gates”:
//@@_begin of individual code for this method
Master_Passagier passagier = (Master_Passagier) proc;
decision_id_340_Event_Betreten_Gate_national =
(passagier.getInformation_id_329_Document_Flugdaten().getNational() == 1)
? true:false;
decision_id_341_Event_Betreten_Gate_international =
(passagier.getInformation_id_329_Document_Flugdaten().getNational() == 0)
? true:false;
//@@_end of individual code for this method
Erweiterung von XOR 336 – nachfolgend der Funktion “Auswahl des Gates”:
//@@_begin of individual code for this method
Master_Passagier passagier = (Master_Passagier) proc;
decision_id_335_Event_Betreten_des_Ankunftsterminals =
(passagier.getInformation_id_329_Document_Flugdaten().getEinreise() == 1)
? true:false;
decision_id_334_Event_Betreten_des_Abflugterminals =
(passagier.getInformation_id_329_Document_Flugdaten().getEinreise() == 0)
? true:false;
//@@_end of individual code for this method
55
6.8
Codeerweiterung in der Klasse „Epc_Gepaeckkontrolle“
In diesem epc-Diagramm wird das Gepäck der Passagiere kontrolliert und ggf.
markiert, damit der Passagier zum Gepäck ausfindig gemacht werden kann. Siehe
auch 2.9 - „gepaeckkontrolle.epc“.
In der Klasse „Epc_Gepäckkontrolle“, wurden insgesamt zwei XOR Elemente mit
Java Code angereichert.
Dabei handelt es sich zum einen um das zur Funktion „Gepaeck scannen“ gehörige
XOR Element, sowie um das zur Funktion „Prüfung durch Zollbeamten“ gehörige.
Dabei sind beide Erweiterungen sehr ähnlich. In beiden wird die Gepäck – ArrayListe
im Informationsobjekt des Passagiers geprüft. Die Prüfung besteht dabei in der
Zustandsermittlung des „verboten“ Flags in der Klasse Gepäck. Bei der Prüfung
durch den Zollbeamten, kommt noch ein Zufallswert zum Tragen, der eine vorherige
Fehleinschätzung imitieren soll.
XOR Erweiterung „Gepaeck scannen“
Abbildung 33 – Erweiterung von XOR 279 – nachfolgend der Funktion „Gepaeck scannen“
XOR Erweiterung „Prüfung durch Zollbeamten“
56
Abbildung 34 – Erweiterung von XOR 285 – nachfolgend der Funktion „Prüfung durch Zollbeamten“
6.9
Codeerweiterung in der Klasse „Epc_kontrolle“
Im kontrolle.epc wird das Handgepäck des Passagiers kontrolliert. Hat die Suche
einen verbotenen Gegenstand gefunden, so kann es später ggf. zur Personkontrolle
führen. Weitere Informationen zum epc-Diagramm „kontrolle“ finden Sie unter 2.7.
In der Klasse „Epc_kontrolle“ wurde das XOR Element zur Funktion „Kontrolle wird
durchgeführt“ so erweitert, dass die Kontrolle von Kleinstgegenständen am Passagier
abgebildet wird.
Die Funktionsweise ist ähnlich wie in 6.8. Es wird lediglich auf die Klasse
„Handgepaeck“ im Informationsobjekt zugegriffen.
Abbildung 35 – Erweiterung von XOR 152 – nachfolgend der Funktion „Kontrolle wird durchgeführt“
57
6.10 Codeerweiterung in der Klasse „Epc_personkontrolle“
In diesem epc-Diagramm wird der Passagier selbst überprüft, d.h. es wird kontrolliert,
ob er verbotene Gegenstände in den Jackentaschen bzw. am Körper mit sich führt
(siehe 2.8).
Im „Epc_personkontrolle“ wird die eigene Codeerweiterung nur genutzt, um zu
bestimmten, ob es sich um einen männlichen oder weiblichen Passagier handelt und
entsprechend der Zollbeamte oder eine Zollbeamtin die Kontrolle vornehmen muss.
Dazu wird das boolsche Flag „geschlecht“ in der Klasse „Master_Passagier“ geprüft.
Abbildung 36 - Codeerweiterung Klasse Epc_personkontrolle
6.11 Codeerweiterung in der Klasse „Epc_Zoll_Crew“
In dem epc-Diagramm „Zoll_Crew“ wird jedes Crewmitglied vor Abflug überprüft.
Hierzu werden die Passdaten und das Gepäck durch den Zoll kontrolliert. Siehe
Abschnitt 2.11 - „Zoll_crew.epc“.
In dieser Klasse wird die Zollkontrolle des Bordpersonals gesondert betrachtet.
Hierzu werden die Passdaten als auch das mitgeführte Gepäck kontrolliert. (vgl. 5.2
und 5.4)
Bei der Passkontrolle wird sowohl die Passnummer mit der Fahndungsliste
abgeglichen, als auch geprüft, ob der jeweilige Pass noch gültig ist.
Bei der Gepäckkontrolle ist wiederum das Flag „verboten“ zu prüfen.
58
Abbildung 37 - Codeerweiterung Klasse Epc_Zoll_Crew – Passkontrolle
Abbildung 38 - Codeerweiterung Codeerweiterung Klasse Epc_Zoll_Crew – Gepäckkontrolle
59
7 Abbildungsverzeichnis
Abbildung 1- BBI.epc ....................................................................................................... 7
Abbildung 2 - BBI.epc inkl. Attribute ................................................................................. 8
Abbildung 3 - flughafen.epc ............................................................................................. 9
Abbildung 4 - flughafen.epc inkl. Attribute ...................................................................... 10
Abbildung 5 - einreise_nat.epc ....................................................................................... 12
Abbildung 6 - einreise_nat.epc inkl. Attribute ................................................................. 13
Abbildung 7 - einreise_inter.epc ..................................................................................... 15
Abbildung 8 - einreise_inter.epc inkl. Attribute ............................................................... 16
Abbildung 9 - ausreise_nat.epc ...................................................................................... 18
Abbildung 10 - ausreise_nat.epc inkl. Attribute .............................................................. 19
Abbildung 11 - ausreise_inter.epc .................................................................................. 21
Abbildung 12 - ausreise_inter.epc inkl. Attribute ............................................................ 22
Abbildung 13 - kontrolle.epc ........................................................................................... 24
Abbildung 14 - kontrolle.epc inkl. Attribute ..................................................................... 25
Abbildung 15 - personkontrolle.epc ................................................................................ 26
Abbildung 16 - personkontrolle.epc inkl. Attribute .......................................................... 27
Abbildung 17 - gepaeckkontrolle.epc ............................................................................. 28
Abbildung 18 - gepaeckkontrolle.epc inkl. Attribute ........................................................ 29
Abbildung 19 - crewbereich.epc ..................................................................................... 30
Abbildung 20 - crewbereich.epc inkl. Attribute ............................................................... 31
Abbildung 21 - Zoll_crew.epc ......................................................................................... 32
Abbildung 22 - Zoll_crew.epc inkl. Attribute ................................................................... 33
Abbildung 23 - Tabellenübersicht nach SQL File import ................................................ 37
Abbildung 24 - JAR Datei importieren ............................................................................ 38
Abbildung 25 - Konstruktor der Klasse Gepaeck ............................................................ 40
Abbildung 26 - Konstruktor der Klasse Handgepaeck .................................................... 41
Abbildung 27 - Konstruktor der Klasse Pass .................................................................. 42
Abbildung 28 - Konstruktorerweiterung Information_Flugdaten ..................................... 44
Abbildung 29 - Methodenerweiterung Klasse Information_Flugdaten ........................... 45
Abbildung 30 - Konstruktor Erweiterung - Teil 1 ............................................................. 47
Abbildung 31 - Konstruktorerweiterung - Teil 2 .............................................................. 48
Abbildung 32 – Erweiterung von XOR 129 - nachfolgend der Funktion "Pässe werden
kontrolliert" ..................................................................................................................... 54
Abbildung 33 – Erweiterung von XOR 279 – nachfolgend der Funktion „Gepaeck
scannen“ ........................................................................................................................ 56
Abbildung 34 – Erweiterung von XOR 285 – nachfolgend der Funktion „Prüfung durch
Zollbeamten“ .................................................................................................................. 57
Abbildung 35 – Erweiterung von XOR 152 – nachfolgend der Funktion „Kontrolle wird
durchgeführt“.................................................................................................................. 57
Abbildung 36 - Codeerweiterung Klasse Epc_personkontrolle ....................................... 58
Abbildung 37 - Codeerweiterung Klasse Epc_Zoll_Crew – Passkontrolle ...................... 59
Abbildung 38 - Codeerweiterung Codeerweiterung Klasse Epc_Zoll_Crew –
Gepäckkontrolle ............................................................................................................. 59
60
Herunterladen