Beispielprozess FlowWorkJ

Werbung
Beispielprozess
FlowWorkJ
Diplomarbeit
Framework für Internet-basierte Workflow-Lösungen
Experte:
Jean-Jacques Jaquier
Betreuer:
Rolf Jufer, Hoang-Van Chau
Autoren:
Hugo Graf, Marco Zbinden
Version:
1.1
Status:
final
Ausgabedatum:
23.12.2002
Dokumentname:
Beispielprozess.doc
Webseite:
http://home.dtc.ch/flowworkj/
Beispielprozess - FlowWorkJ
Änderungskontrolle
Änderungskontrolle
Version
Datum
Ausführende Stelle
Bemerkungen/Art der Änderung
1.1
23.12.2002
Marco Zbinden
Korrekturen
1.0
06.12.2002
Marco Zbinden
Release Kandidat
0.6
12.11.2002
Hugo Graf
Start mit Datenmodell und Anwendungsfällen
0.5
09.10.2002
Marco Zbinden
Aktivität «Halbfabrikat bestellen» zugefügt
0.4
27.08.2002
Hugo Graf
XPDL-Prozessdefinition hinzugefügt
0.3
27.08.2002
Marco Zbinden
Überarbeitung
0.2
26.08.2002
Hugo Graf
Überarbeitung
0.1
26.08.2002
Marco Zbinden
Start
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 1
Beispielprozess - FlowWorkJ
Kapitel: 1 AusgangslageInhaltsverzeichnis
Inhaltsverzeichnis
1
1.1
1.2
Ausgangslage ............................................................................................................................4
Anmerkung................................................................................................................................4
Komponenten............................................................................................................................4
2
2.1
2.1.1
2.2
2.2.1
2.2.2
2.2.3
2.2.4
Installation..................................................................................................................................5
Datenbank vorbereiten..............................................................................................................5
Eigenschaften.........................................................................................................................7
Deployment der Komponenten und Prozesse ..........................................................................7
Testen des Web-Services ......................................................................................................7
JSP .........................................................................................................................................7
Session Bean auf Prolux-Server ............................................................................................8
Web-Service ...........................................................................................................................8
3
Prozesse und Datenmodelle.....................................................................................................9
3.1
Prozess ProluxLager.................................................................................................................9
3.2
Datenmodell ProluxLager .......................................................................................................10
3.3
Prozessablauf Prolux ..............................................................................................................11
3.4
Datenmodell Prolux.................................................................................................................12
3.5
Datenkatalog ...........................................................................................................................12
3.5.1
KUNDE .................................................................................................................................13
3.5.2
LIEFERANT..........................................................................................................................13
3.5.3
FILIALE.................................................................................................................................13
3.5.4
BAUTEIL...............................................................................................................................14
3.5.5
GERAET...............................................................................................................................14
3.5.6
VERWENDET.......................................................................................................................14
3.5.7
BESTELL_KOPF ..................................................................................................................14
3.5.8
BESTELL_POS ....................................................................................................................15
3.5.9
SEQUENZNUMBER ............................................................................................................15
3.6
Aktivitäten................................................................................................................................15
3.6.1
Anmerkung ...........................................................................................................................15
3.6.2
Bestellung entgegennehmen................................................................................................15
3.6.2.1
Ziel .....................................................................................................................................16
3.6.2.2
Normaler Ablauf .................................................................................................................16
3.6.2.3
Nachbedienungen..............................................................................................................18
3.6.3
Bonitätsprüfung durchführen ................................................................................................18
3.6.3.1
Normaler Ablauf .................................................................................................................18
3.6.4
Ablehnung prüfen .................................................................................................................18
3.6.4.1
Normaler Ablauf .................................................................................................................19
3.6.5
Lagermenge überprüfen.......................................................................................................19
3.6.5.1
Normaler Ablauf .................................................................................................................19
3.6.6
Teillieferung prüfen...............................................................................................................19
3.6.6.1
Normaler Ablauf .................................................................................................................20
3.6.6.2
Ausnahmen........................................................................................................................20
3.6.7
Teilauslieferung ....................................................................................................................20
3.6.8
Produktion vorbereiten .........................................................................................................20
3.6.9
Halbfabrikat erstellen............................................................................................................21
3.6.10
Produktion vorbereiten .........................................................................................................21
3.6.11
Produkt erstellen...................................................................................................................21
3.6.12
Rest- bzw. Volllieferung........................................................................................................21
3.6.13
Rechnung ausstellen............................................................................................................22
3.6.14
Zahlung verbuchen...............................................................................................................22
3.7
Beschreibung des FlowWorkJ Verkaufsprozesses.................................................................22
3.8
XPDL-Prozessdefintion für FlowWorkJ...................................................................................27
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 2
Beispielprozess - FlowWorkJ
4
4.1
4.2
4.2.1
Kapitel: 1 Ausgangslage
Verzeichnisse...........................................................................................................................34
Abbildungsverzeichnis ............................................................................................................34
Tabellenverzeichnis ................................................................................................................34
Literaturverzeichnis ..............................................................................................................34
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 3
Beispielprozess - FlowWorkJ
1
Kapitel: 1 Ausgangslage
Ausgangslage
Die Firma Prolux erstellt Geräte, die durch Kunden bestellt werden. Die Geräte bestehen aus Bauteilen, die Just-In-Time ab Prolux Lager angeliefert werden. Für diese Bauteile wird kein Bestand geführt.
Mit der Bestellung werden alle benötigten Bauteile mittels einem Web Services von einem zentralen
Lager (Prolux-Lager) angefordert. Dieses Lager kann die Bauteile immer liefern. Auch die Bestandsführung der Geräte ist sehr einfach ausgelegt; das System wird nur versuchen den Bestand nicht negativ werden zu lassen.
Auf beiden Servern kann je das gesamte FlowWorkJ-System installiert werden. Nur eine Ressourcen,
die Workflowprozesse und die Applikations-Datenbanken unterscheiden sich.
1.1
Anmerkung
Diese beiden Prozesse beanspruchen nicht, dass sie weder real noch vollständig sind.
1.2
Komponenten
Die Beispielprozesse sollen zeigen wie verschiedenartige Applikationen integriert werden können.
•
Stateless Session Bean: Dies kann separat auf den Applikationsserver deployed werden.
•
Interaktive JSPs: Diese müssen mit dem Workflow-Engine und Workflow-Client deployed werden.
•
Web-Service: Eine Applikation dieses Beispielsprozesses fungiert als Web-Service Client, der
eine neue Instanz des ProluxLager-Prozesses auf dem ProluxLager-Server kreiert. Aus diesem
Grund muss das Deployment des Web-Services mit dem Workflow Engine und Workflow Client
erfolgen. In der Abbildung 1 ist die Verteilung des Web-Services dargestellt.
Prolux-Server
JBoss
FlowWorkJ Enterprise Bean
ProluxLager-Server
JBoss
ProluxLagerService
Web-Service Client
Workflow Engine
FlowWorkJ-DBMS
FlowWorkJ-DBMS
Prolux-DBMS
ProluxLager-DBMS
Abbildung 1: Verteilungsdiagramm Prolux und Prolux Lager
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 4
Beispielprozess - FlowWorkJ
2
Kapitel: 2 Installation
Installation
Wie in der Abbildung 1 ersichtlich, müssen zwei Rechner für diesen Beispielprozess konfiguriert werden. Für die generelle Installation verweisen wir auf das Dokument Betriebshandbuch.
Der Beispielprozess besteht aus interaktiven JSPs, Session Bean und einem Web-Service.
2.1
Datenbank vorbereiten
Prolux benutzt für die Applikationsdatenverwaltung das Firebird-DBMS. Dieses DBMS wird bereits von
FlowWorkJ für die Workflow Daten verwendet.
1) Starten Sie IBConsole, danach betätigen Sie die rechte Maustaste auf «Local Server», im Kontextmenu «Login» wählen, User Name: «SYSDBA» und Passwort: «masterkey»
2) Erstellen Sie eine Datenbank mit dem Namen «Prolux», natürlich kann der «Dateiname» anders
sein als in der Abbildung 2 dargestellt. Alternativ kann auch eine schon bestehende Prolux.gdbDatei registriert werden.
Abbildung 2: IBConsole – Create Database
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 5
Beispielprozess - FlowWorkJ
Kapitel: 2 Installation
Abbildung 3: IBConsole
3) Führen Sie das SQL-Skript «sql\prolux\Prolux_CreateTable.sql» durch.
4) Führen Sie das SQL-Skript «sql\prolux\Prolux_InsertData.sql» durch. Danach die Funktion des
Menu «Transactions ➜ Commit» ausführen.
5) Erstellen Sie eine Datenbank mit dem Namen «Proluxlager», natürlich kann der «Dateiname»
anders sein als in der Abbildung 2 dargestellt. Alternativ kann auch eine schon bestehende
Proluxlager.gdb-Datei registriert werden.
6) Führen Sie das SQL-Skript «sql\proluxlager\ ProluxLager_CreateTable.sql» durch.
7) Führen Sie das SQL-Skript «sql\proluxlager\ProluxLager_InsertData.sql» durch. Danach die Funktion des Menu «Transactions ➜ Commit» ausführen.
8) «prolux\ressources\prolux.properties» muss angepasst werden. Die Eigenschaft «url» ist wahrscheinlich von der unten dargestellten verschieden.
# Speicherort der Prolux Datenbank, wird von den Applikationen der Prozessen benutzt.
# Auf dem Prolux-Server wird die Datenbank wahrscheinlich Prolux.gdb heissen.
# Auf dem ProluxLager-Server wird die Datenbank wahrscheinlich ProluxLager.gdb heissen.
dbProluxUrl=jdbc:firebirdsql:localhost/3050:g:/Projekte/flowworkj/firebird/Prolux.gdb
# Speicherort der Prolux Datenbank, wird nur vom Web-Service benutzt.
# Nur so können zum Testen die beiden Datenbanken auf dem gleichen Rechner liegen
dbProluxLagerUrl=jdbc:firebirdsql:localhost/3050:g:/Projekte/flowworkj/firebird/ProluxLager.gdb
# Anzahl der minimal geoeffneten Verbindungen
dbInitConnections=5
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 6
Beispielprozess - FlowWorkJ
Kapitel: 2 Installation
# Anzahl der maximal geoeffneten Verbindungen
dbMaxConnections=20
# Soll auf eine Verbindung gewartet werden, falls alle Verbindungen schon benutzt werden.
dbWaitForConnect=true
# Account für die Datenbank
dbUser=sysdba
# Passwort für die Datenbank
dbPassword=masterkey
# Der Datenbank-Treiber
dbDriver=org.firebirdsql.jdbc.FBDriver
# Web-Service kreiert diesen Prozess auf der dbProluxLagerURL
package_id=Beispielprozess
process_id=ProluxLager
user_id=a
filiale=1
Abbildung 4: prolux.properties
2.1.1
Eigenschaften
Unter prolux/ressources befindet sich die Property-Datei «prolux.properties», die Eigenschaften müssen entsprechend ihrer Umgebung angepasst werden. Wahrscheinlich muss nur die Eigenschaft
«dbProluxUrl» angepasst werden.
•
Auf dem Prolux-Server wird die Datenbank wahrscheinlich «Prolux.gdb» heissen.
•
Auf dem ProluxLager-Server wird die Datenbank wahrscheinlich «ProluxLager.gdb» heissen.
2.2
Deployment der Komponenten und Prozesse
Der Workflow-Client kann auf beiden Servern gleich deployed werden. Nur die Prozesse unterscheiden sich gemäss dem Server:
•
Auf dem Prolux-Server wird der Prozess «BeispielprozessVerkauf.xml» importiert. Zuvor muss
noch der «web_path» der Applikation «HalbfabrikatBestellen» gemäss der Adresse des WebServices angepasst werden.
•
Auf dem ProluxLager-Server wird der Prozess «ProluxLager.xml» importiert.
2.2.1
Testen des Web-Services
Nach der Installation kann der Web-Service auf dem ProluxLager-Server mit der URL
http://localhost:8080/axis/*/services/ProluxLagerService?wsdl getestet werden.
2.2.2
JSP
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 7
Beispielprozess - FlowWorkJ
Kapitel: 2 Installation
Mit dem Deployment des Workflow-Clients erfolgt das Deployment aller JSPs.
2.2.3
Session Bean auf Prolux-Server
Einige Applikationen sind mit einem stateless Session Bean realisiert. Das Deployment erfolgt mittels
«ApplicationIntegration/SessionBean/Beispielprozess/antDeployJBoss.bat».
Dieses
Deployment
macht nur auf dem Prolux-Server Sinn.
Falls der JBoss gestartet ist, kann das Deployment geprüft werden. Der Build-Prozess besteht aus
zwei Teilen: im ersten Teil wird das Session Bean deployed und im zweiten Teil erfolgt das Prüfen des
Deplyoments.
2.2.4
Web-Service
Der Web-Service wird mit dem Web-Client deployed, daher sind keine besonderen Vorkehrungen zu
treffen.
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 8
Beispielprozess - FlowWorkJ
3
Prozesse und Datenmodelle
3.1
Prozess ProluxLager
Kapitel: 3 Prozesse und Datenmodelle
Abbildung 5: Prozess ProluxLager
Der Prozess des Lagers soll nur zeigen, dass der Web-Service funktioniert. Die Aktivität «BestellungBearbeiten» zeigt die eingetroffene Bestellung der Bauteile an.
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 9
Beispielprozess - FlowWorkJ
3.2
Kapitel: 3 Prozesse und Datenmodelle
Datenmodell ProluxLager
FILIALE
FILIALE_NR:INTEGER NOT NULL
BESTELL_KOPF
FILIALE_KOPF BEST_NR:INTEGER NOT NULL
NAME:VARCHAR(30) NOT NULL
STRASSE:VARCHAR(30)
PLZ:INTEGER
ORT:VARCHAR(30) NOT NULL
TELEFON:VARCHAR(20)
TELEFAX:VARCHAR(20)
FILIALE_NR:INTEGER NOT NULL
BEST_DATUM:DATE NOT NULL
ZUSTAND:INTEGER
KOP_POS
BAUTEIL
BT_NR:INTEGER NOT NULL
BEZEICHNUNG:VARCHAR(30) NOT NULL
TYP:VARCHAR(25)
PREIS:FLOAT
LIEF_NR:INTEGER
BESTAND:INTEGER NOT NULL
BESTELL_POS
BAUTEIL_POS BEST_POS:INTEGER NOT NULL
BEST_NR:INTEGER NOT NULL
BT_NR:INTEGER NOT NULL
ANZAHL:INTEGER NOT NULL
LIEFERANT_BAUTEIL
LIEFERANT
LIEF_NR:INTEGER NOT NULL
NAME:VARCHAR(30) NOT NULL
STRASSE:VARCHAR(30)
PLZ:INTEGER
ORT:VARCHAR(30) NOT NULL
TELEFON:VARCHAR(20)
TELEFAX:VARCHAR(20)
SEQUENZNUMBER
TABLENAME:VARCHAR(30) NOT NULL
SEQUENZNUM:INTEGER NOT NULL
Abbildung 6: Datenmodell ProluxLager
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 10
Beispielprozess - FlowWorkJ
3.3
Kapitel: 3 Prozesse und Datenmodelle
Prozessablauf Prolux
Produktion
Auftragsbearbeitung
Gelb = JSP-Applikation
Orange = Session Bean
Blau = Web Service
Gruen = Datei up- und
download
Buchhaltung
t2
Lagermenge ueberpruefen
{And-Join} /
{Or-Split}
Kundenbetreuung
Bonitaetspruefung
durchfuehren
t7
t1
Bestellung
entgegennehmen
R2
{Or-Split}
t9[lieferung="T"]
Teillieferung
pruefen
{Or-Split}
Ablehnung
pruefen
t6
t11[OTHERWISE]
t8[OTHERWISE]
t0
{And-Split}
t13
[abgelehnt]
Verkauf
informieren
t5[bonitaetOK]
{And-Split}
t14
t15
t4[bonitaetOK]
t12[macheTeillieferung]
R3
R4
t3[OTHERWISE]
R1
t10[lieferung="V"]
{Or-Join}
{Or-Join}
Produktion vorbereiten
Teilauslieferung
t16
Halbfabrikat bestellen
Rechnung ausstellen
{Or-Join}
t19
t17
Produkt erstellen
t18
Rest- bzw.
Volllieferung
{Or-Join}
t20
Zahlung verbuchen
t21
Bestellung
abschliessen
Abbildung 7: Beispielprozess
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 11
Beispielprozess - FlowWorkJ
3.4
Kapitel: 3 Prozesse und Datenmodelle
Datenmodell Prolux
BAUTEIL
LIEFERANT
BT_NR:INTEGER NOT NULL
LIEF_NR:INTEGER NOT NUL
LIEFERANT_BAUTEIL
BEZEICHNUNG:VARCHAR(30) NOT N
NAME:VARCHAR(30) NOT NU
TYP:VARCHAR(25)
STRASSE:VARCHAR(30)
PREIS:FLOAT
PLZ:INTEGER
LIEF_NR:INTEGER
ORT:VARCHAR(30) NOT NUL
TELEFON:VARCHAR(20)
TELEFAX:VARCHAR(20)
BAUTEIL_VERWENDET
VERWENDET
BT_NR:INTEGER NOT NULL
GER_NR:INTEGER NOT NU
MENGE:INTEGER NOT NUL
GERAET_VERWENDET
GERAET
GER_NR:INTEGER NOT NULL
BEZEICHNUNG:VARCHAR(30) NOT N
TYP:VARCHAR(25)
BESTAND:INTEGER NOT NULL
PREIS:FLOAT NOT NULL
GERAET_POS
KUNDEN
KD_NR:INTEGER NOT NULL
NAME:VARCHAR(30) NOT NULL
STRASSE:VARCHAR(30)
PLZ:INTEGER
ORT:VARCHAR(30) NOT NULL
TELEFON:VARCHAR(20)
TELEFAX:VARCHAR(20)
KREDITLIMITE:INTEGER NOT NU
KUNDEN_KOPF
BESTELL_KOPF
BEST_NR:INTEGER NOT NU
KD_NR:INTEGER NOT NULL
BEST_DATUM:DATE NOT NU
BEZ_DATUM:DATE
ZUSTAND:INTEGER
RECH_DATUM:DATE
KOP_POS
BESTELL_POS
BEST_POS:INTEGER NOT NU
BEST_NR:INTEGER NOT NUL
GER_NR:INTEGER NOT NULL
ANZAHL:INTEGER NOT NULL
TEILLIEFERUNG:INTEGER
SEQUENZNUMBER
TABLENAME:VARCHAR(30) NOT N
SEQUENZNUM:INTEGER NOT NUL
Abbildung 8: Datenmodell Prolux
3.5
Datenkatalog
Die Datenkataloge von Prolux und Proluxlager unterscheiden sich nicht wesentlich, darum sind sie
zusammengefasst aufgeführt.
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 12
Beispielprozess - FlowWorkJ
3.5.1
Kapitel: 3 Prozesse und Datenmodelle
KUNDE
Attributname
Feldname
Beschreibung
KD_NR
Kunden-ID
Identifiziert den Kunden
NAME
Name
Name des Kunden
STRASSE
Strasse
Adresse des Kunden
PLZ
Postleitzahl
Postleitzahl des Standort des Kunden
ORT
Ort
Standort des Kunden
TELEFON
Telefon
Telefon des Kunden
TELEFAX
Telefax
Telefax des Kunden
KEDITLIMITE
Kreditlimite
Kreditlimite des Kunden, massgebend für die Bonität
Attributname
Feldname
Beschreibung
LIEF_NR
Lieferanten-ID
Identifiziert den Lieferanten
NAME
Name
Name des Lieferanten
STRASSE
Strasse
Adresse des Lieferanten
PLZ
Postleitzahl
Postleitzahl des Standort des Lieferanten
ORT
Ort
Standort des Lieferanten
TELEFON
Telefon
Telefon des Lieferanten
TELEFAX
Telefax
Telefax des Lieferanten
Attributname
Feldname
Beschreibung
FILIALE_NR
Filiale-ID
Identifiziert die Filiale
NAME
Name
Name der Filiale
STRASSE
Strasse
Adresse der Filiale
PLZ
Postleitzahl
Postleitzahl des Standort der Filiale
ORT
Ort
Standort der Filiale
TELEFON
Telefon
Telefon der Filiale
TELEFAX
Telefax
Telefax der Filiale
Tabelle 1: Entität Kunde
3.5.2
LIEFERANT
Tabelle 2: Entität Lieferant
3.5.3
FILIALE
Tabelle 3: Entität Lieferant
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 13
Beispielprozess - FlowWorkJ
3.5.4
Kapitel: 3 Prozesse und Datenmodelle
BAUTEIL
Attributname
Feldname
Beschreibung
BT_NR
Bauteil-ID
Identifiziert das Bauteil
BEZEICHNUNG
Bezeichnung
Beschreibt das Bauteil
TYP
Typ
Verfeinerte Beschreibung des Bauteils
PREIS
Preis
Preis des Bauteils
LIEF_NR
Lieferanten-ID
Identifiziert den Lieferanten des Bauteils
BESTAND
Bestand
(nur ProluxLager)
Beinhaltet den Bestand des Bauteils
Attributname
Feldname
Beschreibung
GER_NR
Gerät-ID
Identifiziert das Gerät
BEZEICHNUNG
Bezeichnung
Beschreibt das Gerät
TYP
Typ
Verfeinerte Beschreibung des Gerätes
BESTAND
Bestand
Beinhaltet den Bestand des Gerätes
PREIS
Preis
Preis des Gerätes
Attributname
Feldname
Beschreibung
BT_NR
Bauteil-ID
Identifiziert das Bauteil
GER_NR
Gerät-ID
Identifiziert das Gerät
MENGE
Menge
Beinhaltet die benötigte Menge eines Bauteil für
die Herstellung eines Gerätes
Attributname
Feldname
Beschreibung
BEST_NR
Bestell-ID
Identifiziert die Bestellung
KD_NR
Kunden-ID
Identifiziert den Kunden
BEST_DATUM
Bestelldatum
Datum der Bestellung
BEZ_DATUM
Bezahldatum
Datum des Zahlungseinganges
Tabelle 4: Entität Bauteil
3.5.5
GERAET
Tabelle 5: Entität Gerät
3.5.6
VERWENDET
Tabelle 6: Entität Verwendet
3.5.7
BESTELL_KOPF
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 14
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
Attributname
Feldname
Beschreibung
ZUSTAND
Zustand
Da es durchaus Bestellköpfe geben kann, die nie
abgeschlossen wurden, wird hier der Zustand der
Bestellung abgelegt.
RECH_DATUM
•
0: Bestell-Leiche
•
1: Bestellungserfassung ordnungsgemäss
abgeschlossen
Rechnungsdatum Datum der Rechnung
Tabelle 7: Entität Bestell_kopf
3.5.8
BESTELL_POS
Attributname
Feldname
Beschreibung
BEST_POS
Bestell-ID
Identifiziert die Bestellungsposition
BEST_NR
Kunden-ID
Identifiziert die Bestellung
GER_NR
Gerät-ID
Identifiziert das Gerät
ANZAHL
Anzahl
Anzahl der bestellten Geräte
TEILLIEFERUNG
Teillieferung
Nimmt die Information auf, wenn die Bestellmenge
die vorhandene Lagermenge übersteigt.
•
V: Volllieferung
•
T: Teillieferung
Tabelle 8: Entität Bestell_pos
3.5.9
SEQUENZNUMBER
Für die Realisierung von Surrogaten bieten einzelne DBMS verschiedene Hilfsmittel an: z.B. Row-Ids
oder Sequenz-Generatoren. In diesen Beispielprozessen wählten wir für die Entität BESTELL_KOPF
ein anderes Vorgehen, weil nach dem Insert sofort ein Select mit den Surrogaten durchgeführt wird.
Würde ein Vorgehen mit einem generierten Surrogate gewählt, wäre uns der Surrogate für die Selektion nicht bekannt.
Attributname
Feldname
Beschreibung
TABLENAME
N/A
Name der Tabelle
SEQUENZNUM
N/A
Die zuletzt vergebene Nummer
Tabelle 9: Entität Sequenznumber
3.6
Aktivitäten
3.6.1
Anmerkung
Der Bestand der Geräte ändert bei einer Voll- und Teillieferung.
3.6.2
Bestellung entgegennehmen
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 15
Beispielprozess - FlowWorkJ
3.6.2.1
Kapitel: 3 Prozesse und Datenmodelle
Ziel
Es kann eine Bestellung mit einem oder mehreren Artikeln mit unterschiedlichen Mengen erfasst werden. Eine erfasste Bestellung kann nicht mehr geändert werden, das heisst die Erfassung der Bestellung muss in einem Durchgang erfolgen.
1:
<<view>>
Kundenverwaltung
<<actor>>
Kundenbetreuun
1.2: erstelleBestellung()
<<view>>
Auftragsbearbeitung
1.2.2: berechneNeu()
1.3:[Kunde loeschen/aendern] //aendernDaten()
1.1:[Kunde nicht vorhanden] //neuerKunde()
1.2.1:*[Artikel hinzufuegen] //hinzufuegenArtikel(
<<view>>
Kunde hinzufuegen
<<view>>
Kundendaten aendern
1.1.1: bestaetigung()
<<view>>
Bestaetigung
1.3.1.1: bestaetigen()
<<view>>
Geraete - Artikellist
1.3.1: bestaetigenAenderung()
<<view>>
Aktion bestaetigen
Abbildung 9: Interaktionen «Bestellung entgegennehmen»
3.6.2.2
Normaler Ablauf
a. Die Kundenbetreuung wählt einen bestehenden Kunden bzw. erfasst einen Neukunden und wählt
diesen.
Abbildung 10: Prolux Kundenverwaltung
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 16
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
b. Die Kundenbetreuung kann in einer weiteren Web-Seite einen oder mehrere Artikel zur Bestellung
hinzufügen, dabei kann die Menge gesetzt werden.
Abbildung 11: Prolux Auftragsbearbeitung – Bestellung eingeben
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 17
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
Abbildung 12: Prolux Geräte Artikelliste
c.
Die Kundenbetreuung schliesst die Bestellung ab.
d. Das System setzt den Zustand des Bestellungs_kopfs auf 1.
3.6.2.3
Nachbedienungen
•
Die minimale Bestellmenge ist grösser 0.
•
Der Zustand des Bestellungs_kopfs ist 1, damit haben wir eine gültige Bestellung.
3.6.3
Bonitätsprüfung durchführen
3.6.3.1
Normaler Ablauf
a. Das Session Bean addiert alle Positionen des Kunden, die den Zustand 1 haben und deren
BEZ_DATUM null ist.
b. Falls die Summe der offenen Bestellungen die Kreditlimite übersteigt, wird ein «N» zurückgegeben andernfalls ein «J».
3.6.4
Ablehnung prüfen
Falls der Kunde die Bonitätsprüfung nicht bestanden hat, muss nun die Buchhaltung entscheiden, ob
sie die Bestellung trotzdem annimmt.
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 18
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
Abbildung 13: Prolux Bonität Ablehnung prüfen
3.6.4.1
Normaler Ablauf
a. Alle Preise der Positionen von Bestellungen dieses Kunden, welche den Zustand 1 und
BEZ_DATUM null ist, werden addiert. Das Total dieser Berechnung wird angezeigt wie auch alle
bisherigen Bestellungen.
b. Die Buchhaltung entscheidet aufgrund dieser Angaben, ob die Bestellung fortgesetzt oder abgebrochen wird.
3.6.5
Lagermenge überprüfen
3.6.5.1
Normaler Ablauf
a. Das System prüft für jede Position der Bestellung, ob diese ab Lager lieferbar ist (GERAET ➜
BESTAND >= BESTELL_POS ➜ ANZAHL).
b. Falls jede Position ab Lager geliefert werden kann, so erfolgt eine Abbuchung auf GERAET ➜
BESTAND um BESTELL_POS ➜ ANZAHL, dabei wird ein «V» (Volllieferung) zurückgegeben.
Falls ein oder mehrere Geräte ab Lager lieferbar sind, wird ein «T» (Teillieferung) zurückgegeben.
Ist kein Gerät ab Lager lieferbar, so wird ein «N» zurück gegeben.
3.6.6
Teillieferung prüfen
Falls nur eine Teilmenge der Geräte ab Lager lieferbar ist, muss die Auftragsbearbeitung in Rücksprache mit dem Kunden über eine eventuelle Teillieferung entscheiden. Mit der Teillieferung entscheidet
sich der Kunde die Lieferungen in zwei Malen zu erhalten.
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 19
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
Abbildung 14: Prolux Teillieferung prüfen
3.6.6.1
Normaler Ablauf
a. Bei der Auftragsbearbeitung wird die Bestellung mit den Positionen angezeigt. Jede Position enthält zusätzlich den Bestand (GERAET ➜ BESTAND).
b. Telefonisch ermittelt die Auftragsbearbeitung beim Kunden, ob dieser mit einer Teillieferung einverstanden ist. Die einzelnen BESTELL_POS ➜ TEILLIERFERUNG können dabei mutiert werden.
c.
Beim Abschliessen der Aktivität wird die Teillieferung BESTELL_POS ➜ TEILLIERFERUNG der
einzelnen Positionen vom GERAET ➜ BESTAND abgezogen.
3.6.6.2
Ausnahmen
Die BESTELL_POS ➜ TEILLIERFERUNG wird von der Auftragsbearbeitung über den Bestand gesetzt. Eine solche Mutation wird abgelehnt.
3.6.7
Teilauslieferung
a. Die Lieferpapiere und Produkte werden für den Abtransport bereitgestellt.
3.6.8
Produktion vorbereiten
a. Es wird ein Produktionsplan durch die Auftragsbearbeitung erstellt, diese Tätigkeit wird nicht durch
FlowWorkJ unterstützt.
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 20
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
b. Die Auftragsbearbeitung erstellt mit dem Produktionsplanungssystem ein Arbeitsblatt, welches für
die Produktion bestimmt ist.
c.
Die Auftragsbearbeitung lädt das Arbeitsblatt in den Workflow.
Abbildung 15: Prolux Produktionsplan upload
d. Die Bestellung für die Bauteile wird durch das System beim Abschliessen dieser Aktivität in den
Workflow-Daten gespeichert, was für die Bestellung der Halbfabrikate benötigt.
3.6.9
Halbfabrikat erstellen
Mittels einem Web-Service werden alle benötigen Bauteile beim Zentrallager angefordert.
3.6.10
Produktion vorbereiten
a. Der Workflow Engine überträgt als Web-Service Client, die nach Bauteilen aufgelöste Bestellung
zum Zentrallager.
3.6.11
Produkt erstellen
a. Es kann ein Produktionsplan heruntergeladen werden (analog Abbildung 15). Dieser enthält den
Ablauf für die Erstellung der Produkte
3.6.12
Rest- bzw. Volllieferung
Die Produkte und Lieferpapiere werden für den Abtransport bereit gestellt.
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 21
Beispielprozess - FlowWorkJ
3.6.13
Kapitel: 3 Prozesse und Datenmodelle
Rechnung ausstellen
a. Die Rechnung wird durch ein Session Bean gedruckt, in diesem Beispielsprozess wird natürlich
keine Rechnung gedruckt. Im BESTELL_KOPF ➜ RECH_DATUM wird das aktuelle Datum als
Rechnungsdatum eingetragen.
3.6.14
Zahlung verbuchen
a. Die Buchhaltung sieht die Rechnung, das heisst BESTELL_KOPF und BESTELL_POS mit dem
Rechnungstotal.
Abbildung 16: Prolux Auftragsbearbeitung – Zahlung verbuchen
b. Mit der Eingabe des Zahlungsdatums wird die Bezahlung der Rechnung bestätigt. Teilzahlung ist
nicht möglich.
3.7
Beschreibung des FlowWorkJ Verkaufsprozesses
Als Grundlage für diesen Beispielsprozess diente uns der «Sales Order Processing»-Prozess der
WfMC. [SOP]
Paket 'Beipielprozesse'
Workflow 'BeipielprozessVerkauf'
Name «Beipielprozess Verkauf»
// <Aktivität liste>
Aktivität 'BestellungAnnehmen'
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 22
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
Name "Bestellung entgegennehmen"
Beschreibung "Bestellung eingegangen"
Wenn Bestellung eintrifft, Verkauf, Finanzen und Auftragsbearbeitung informieren"
Implementation JSP – Bestellerfassung (Kunde und Artikel)
And-Split
Ende_Aktivität
Aktivität 'VerkaufInformieren'
Name "Verkauf informieren"
Beschreibung "Kunde bei Laune halten"
Implementation nein
Ende_Aktivität
Aktivität 'Bonitaetspruefung'
Name "Bonitätsprüfung durchführen"
Beschreibung "Kunde auf Bonität prüfen"
Implementation Session Bean - 'check_credit'
Or-Split 't3' 't4'
Ende_Aktivität
Aktivität 'LagermengeUeberpruefen'
Name "Lagermenge überprüfen"
Beschreibung "Artikel am Lager"
Implementation Session Bean
Ende_Aktivität
Aktivität 'AblehnungPruefen'
Name "Ablehnung prüfen"
Beschreibung "Kunde informieren, Bonität abwägen"
JSP-Schnittstelle zu Applikation
Implementation JSP – (BonitaetCheck)
Ende_Aktivität
Aktivität 'R1'
Beschreibung "Synchronisation bei positiver Bonität"
Route
Or-Join
Ende_Aktivität
Aktivität 'R2'
Beschreibung "Warten auf Lagerüberprüfung und Bonität, bevor Lieferung und Produktion"
Route
And-Join
Or-Split 't8' 't9' 't10'
Ende_Aktivität
Aktivität 'TeilliefungPruefen'
Name "Teilliefung prüfen"
Beschreibung "Kunde anfragen für Teillieferungsmöglichkeit"
Implementation JSP – (Teillieferung)
Or-Split 't11' 't12'
Ende_Aktivität
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 23
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
Aktivität 'R3'
Beschreibung "Teillieferung und Produktion"
Route
And-Split
Ende_Aktivität
Aktivität 'R4'
Beschreibung "R3 und Produktion"
Route
Or-Join
Ende_Aktivität
Aktivität 'ProduktionVorbereiten'
Name "Produktion vorbereiten"
Beschreibung "Wenn keine Ware an Lager oder Teilauslieferung nicht
erwünscht, Produktionsplan für Vollproduktion erstellen und ans
Lager produzieren"
Implementation Datei-Hinaufladen (Excel-Arbeitsblatt - Produktionsplan)
Or-Join
Ende_Aktivität
Aktivität 'HalbfabrikatBestellen'
Name "Halbfabrikat bestellen"
Beschreibung "Halbfabrikat werden über Web Services bestellt"
Implementation Web Service
Ende_Aktivität
Aktivität 'ProduktErstellen'
Name "Produkt erstellen"
Beschreibung "Ware herstellen, Produktionsplan ausführen"
Implementation Datei-Herunterladen (Excel-Arbeitsblatt - Produktionsplan)
Or-Join
Ende_Aktivität
Aktivität 'Teilauslieferung'
Name "Teilauslieferung"
Beschreibung "Wenn Teilauslieferung möglich, ausliefern"
Implementation nein
Ende_Aktivität
Aktivität 'RestVolllieferung'
Name "Rest- bzw. Volllieferung"
Beschreibung "ab Lager oder aus Produktion liefern - Lieferpapiere
erstellen"
Implementation nein
Or-Join
Ende_Aktivität
Aktivität 'RechnungAusstellen'
Name "Rechnung ausstellen"
Beschreibung "Rechnung ausstellen"
Implementation Session Bean
Ende_Aktivität
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 24
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
Aktivität 'ZahlungVerbuchen'
Name "Zahlung verbuchen"
Beschreibung "Buchhaltung verbucht die Zahlung"
Implementation JSP – (Zahlung verbuchen)
Ende_Aktivität
Aktivität 'BestellungAbschliessen'
Name "Bestellung abschliessen"
Beschreibung "Kundenbetreuung wird über den Bestellungsabschluss
informiert"
Implementation nein
Ende_Aktivität
// <Transition Information Liste>
Transition 't0'
Von ' BestellungAnnehmen '
Nach 'VerkaufInformieren'
Ende_Transition
Transition 't1'
Von ' BestellungAnnehmen '
Nach 'Bonitaetspruefung'
Ende_Transition
Transition 't2'
Von ' BestellungAnnehmen '
Nach 'LagermengeUeberpruefen'
Ende_Transition
Transition 't3'
Beschreibung "Buchhaltung gewährt Bonität nicht"
Von 'Bonitaetspruefung'
Nach 'AblehnungPruefen'
OTHERWISE
Ende_Transition
Transition 't4'
Beschreibung "Buchhaltung gewährt Bonität "
Von 'Bonitaetspruefung'
Nach 'R1'
Kondition Bonität = "boenitaetOK"
Ende_Transition
Transition 't5'
Beschreibung "Ablehnung unrechtmässig"
Von 'AblehnungPruefen'
Nach 'R1'
Kondition Ablehnung = "boenitaetOK"
Ende_Transition
Transition 't6'
Von 'R1'
Nach 'R2'
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 25
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
Ende_Transition
Transition 't7'
Von 'LagermengeUeberpruefen'
Nach 'R2'
Ende_Transition
Transition 't8'
Beschreibung "Ware nicht an Lager"
Von 'R2'
Nach 'ProduktionVorbereiten'
OTHERWISE
Ende_Transition
Transition 't9'
Beschreibung "Lieferungsmöglichkeit überprüfen"
Von 'R2'
Nach 'TeilliefungPruefen'
Kondition Lieferung = "lieferung.equals("T")"
Ende_Transition
Transition 't10'
Beschreibung "Ganze Bestellung an Lager"
Von 'R2'
Nach 'RestVolllieferung'
Kondition Lieferung = "lieferung.equals("V")"
Ende_Transition
Transition 't11'
Beschreibung "nicht alle Ware nicht an Lager und Teillieferung
nicht erwünscht"
Von 'TeilliefungPruefen'
Nach ' R4'
OTHERWISE
Ende_Transition
Transition 't12'
Beschreibung "Teillieferung"
Von 'TeilliefungPruefen'
Nach 'R3'
Kondition Lieferung = "macheTeillieferung"
Ende_Transition
Transition 't13'
Von 'R3'
Nach 'R4'
Ende_Transition
Transition 't14'
Von 'R3'
Nach 'Teilauslieferung'
Ende_Transition
Transition 't15'
Von 'R4'
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 26
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
Nach 'ProduktionVorbereiten'
Ende_Transition
Transition 't16'
Von 'ProduktionVorbereiten'
Nach 'HalbfabrikatBestellen'
Ende_Transition
Transition 't17'
Von 'HalbfabrikatBestellen'
Nach 'ProduktErstellen'
Ende_Transition
Transition 't18'
Von 'ProduktErstellen'
Nach 'RestVolllieferung'
Ende_Transition
Transition 't19'
Von 'RestVolllieferung'
Nach 'RechnungAusstellen'
Ende_Transition
Transition 't20'
Von 'RechnungAusstellen'
Nach 'ZahlungVerbuchen'
Ende_Transition
Transition 't21'
Von 'ZahlungVerbuchen'
Nach 'BestellungAbschliessen'
Ende_Transition
Ende_workflow
3.8
XPDL-Prozessdefintion für FlowWorkJ
<?xml version="1.0" encoding="UTF-8"?>
<Package Id="Beispielprozess" Name="Bestellung" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="FlowWorkJxpld.xsd">
<PackageHeader>
<XPDLVersion>0.03</XPDLVersion>
<Vendor>FlowWorkJ</Vendor>
<Created>2002-03-09 12:00</Created>
<Description>Ein einfacher Beispielprozess mit JSP-Integration</Description>
</PackageHeader>
<WorkflowProcesses>
<WorkflowProcess Id="BeispielprozessVerkauf">
<ProcessHeader DurationUnit="h">
<Limit>10</Limit>
<ValidFrom>2002-11-06 12:00</ValidFrom>
<ValidTo>2010-12-31 24:00</ValidTo>
</ProcessHeader>
<RedefinableHeader>
<Author>Marco Zbinden</Author>
<Responsibles>
<Responsible>a</Responsible>
</Responsibles>
</RedefinableHeader>
<Applications>
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 27
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
<Application Id="KundenArtikel" Name="Kunden und Artikel wählen">
<Description>Kunden und Artikel auswählen</Description>
<FormalParameters>
<FormalParameter Id="kd_nr" Mode="OUT">
<DataType>
<BasicType Type="INTEGER"/>
</DataType>
</FormalParameter>
<FormalParameter Id="best_nr" Mode="OUT">
<DataType>
<BasicType Type="INTEGER"/>
</DataType>
</FormalParameter>
</FormalParameters>
<ExtendedAttributes>
<ExtendedAttribute Name="html_path" Value="/BeispielAppl/kundenVerw.jsp"/>
</ExtendedAttributes>
</Application>
<Application Id="BonitaetCheck" Name="Bonität überprüfen">
<Description>Bonität mit Session Bean prüfen</Description>
<FormalParameters>
<FormalParameter Id="best_nr" Mode="IN">
<DataType>
<BasicType Type="INTEGER"/>
</DataType>
</FormalParameter>
<FormalParameter Id="bonitaetOK" Mode="OUT">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</FormalParameter>
</FormalParameters>
<ExtendedAttributes>
<ExtendedAttribute Name="jndi_path" Value="Beispielprozess"/>
<ExtendedAttribute Name="method" Value="checkBoni"/>
</ExtendedAttributes>
</Application>
<Application Id="ArtikelAmLager" Name="Zahlung verbuchen">
<Description>Lagermenge überprüfen</Description>
<FormalParameters>
<FormalParameter Id="best_nr" Mode="IN">
<DataType>
<BasicType Type="INTEGER"/>
</DataType>
</FormalParameter>
<FormalParameter Id="lieferung" Mode="OUT">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</FormalParameter>
</FormalParameters>
<ExtendedAttributes>
<ExtendedAttribute Name="jndi_path" Value="Beispielprozess"/>
<ExtendedAttribute Name="method" Value="checkStock"/>
</ExtendedAttributes>
</Application>
<Application Id="HalbfabrikatBestellen" Name="Halbfabrikat bestellen">
<Description>Halbfabrikat bestellen mit Web Service</Description>
<FormalParameters>
<FormalParameter Id="filiale_nr" Mode="IN">
<DataType>
<BasicType Type="INTEGER"/>
</DataType>
</FormalParameter>
<FormalParameter Id="mengen" Mode="IN">
<DataType>
<ArrayType LowerIndex="1" UpperIndex="99999">
<BasicType Type="INTEGER"/>
</ArrayType>
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 28
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
</DataType>
</FormalParameter>
<FormalParameter Id="bt_nrs" Mode="IN">
<DataType>
<ArrayType LowerIndex="1" UpperIndex="99999">
<BasicType Type="INTEGER"/>
</ArrayType>
</DataType>
</FormalParameter>
<FormalParameter Id="halbOk" Mode="OUT">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</FormalParameter>
</FormalParameters>
<ExtendedAttributes>
<ExtendedAttribute Name="web_path" Value="http://localhost:8080/axis/*/services
/ProluxLagerService"/>
<ExtendedAttribute Name="method" Value="makeOrder"/>
<ExtendedAttribute Name="port_type" Value="ProluxLagerService"/>
</ExtendedAttributes>
</Application>
<Application Id="BonitaetCheck2" Name="Ablehnung prüfen">
<Description>Manuell Bonität prüfen</Description>
<FormalParameters>
<FormalParameter Id="kd_nr" Mode="IN">
<DataType>
<BasicType Type="INTEGER"/>
</DataType>
</FormalParameter>
<FormalParameter Id="bonitaetOK" Mode="OUT">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</FormalParameter>
</FormalParameters>
<ExtendedAttributes>
<ExtendedAttribute Name="html_path" Value="/BeispielAppl/ablehnungBonitaetPruefen.jsp"/>
</ExtendedAttributes>
</Application>
<Application Id="Teillieferung" Name="Teillieferung prüfen">
<Description>Will der Kunde eine Teillieferung</Description>
<FormalParameters>
<FormalParameter Id="best_nr" Mode="IN">
<DataType>
<BasicType Type="INTEGER"/>
</DataType>
</FormalParameter>
<FormalParameter Id="macheTeillieferung" Mode="OUT">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</FormalParameter>
</FormalParameters>
<ExtendedAttributes>
<ExtendedAttribute Name="html_path" Value="/TeillieferungController"/>
</ExtendedAttributes>
</Application>
<Application Id="ProduktionVorbereiten" Name="Erstelle Prodkutionsplan ">
<Description>Estellung eines Produtionsplanes</Description>
<FormalParameters>
<FormalParameter Id="best_nr" Mode="IN">
<DataType>
<BasicType Type="INTEGER"/>
</DataType>
</FormalParameter>
<FormalParameter Id="filiale_nr" Mode="OUT">
<DataType>
<BasicType Type="INTEGER"/>
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 29
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
</DataType>
</FormalParameter>
<FormalParameter Id="mengen" Mode="OUT">
<DataType>
<ArrayType LowerIndex="1" UpperIndex="99999">
<BasicType Type="INTEGER"/>
</ArrayType>
</DataType>
</FormalParameter>
<FormalParameter Id="bt_nrs" Mode="OUT">
<DataType>
<ArrayType LowerIndex="1" UpperIndex="99999">
<BasicType Type="INTEGER"/>
</ArrayType>
</DataType>
</FormalParameter>
<FormalParameter Id="ProdPlan" Mode="OUT">
<DataType>
<BasicType Type="REFERENCE"/>
</DataType>
</FormalParameter>
</FormalParameters>
<ExtendedAttributes>
<ExtendedAttribute Name="updo_path" Value="/BeispielAppl/produktionUploadForm.jsp"/>
</ExtendedAttributes>
</Application>
<Application Id="HoleProduktionsPlan" Name="Prodkutionsplan herunterladen">
<Description>Nach Produktionsplan produzieren</Description>
<FormalParameters>
<FormalParameter Id="ProdPlan" Mode="IN">
<DataType>
<BasicType Type="REFERENCE"/>
</DataType>
</FormalParameter>
</FormalParameters>
<ExtendedAttributes>
<ExtendedAttribute Name="updo_path" Value="/BeispielAppl/produktionDownLoadForm.jsp"/>
</ExtendedAttributes>
</Application>
<Application Id="RechnungAusstellen" Name="Rechnung aussetellen">
<Description>Rechnung ausstellen</Description>
<FormalParameters>
<FormalParameter Id="best_nr" Mode="IN">
<DataType>
<BasicType Type="INTEGER"/>
</DataType>
</FormalParameter>
</FormalParameters>
<ExtendedAttributes>
<ExtendedAttribute Name="jndi_path" Value="Beispielprozess"/>
<ExtendedAttribute Name="method" Value="printBill"/>
</ExtendedAttributes>
</Application>
<Application Id="ZahlungVerbuchen" name="Zahlung verbuchen">
<Description>Zahlung wird verbucht</Description>
<FormalParameters>
<FormalParameter Id="best_nr" Mode="IN">
<DataType>
<BasicType Type="INTEGER"/>
</DataType>
</FormalParameter>
</FormalParameters>
<ExtendedAttributes>
<ExtendedAttribute Name="html_path" Value="/BeispielAppl/auftragsErfassung.jsp"/>
</ExtendedAttributes>
</Application>
</Applications>
<Activities>
<Activity Id="BestellungAnnehmen" Name="Bestellung entgegennehmen">
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 30
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
<Description>Bestellung eingegangen</Description>
<Implementation>
<Tool Id="KundenArtikel" Type="APPLICATION"/>
</Implementation>
<Performer>Kundenbetreung</Performer>
<TransitionRestrictions>
<TransitionRestriction>
<Split Type="AND"/>
</TransitionRestriction>
</TransitionRestrictions>
</Activity>
<Activity Id="VerkaufInformieren" Name="Verkauf informieren">
<Description>Kunde bei Laune halten</Description>
<Implementation>
<No/>
</Implementation>
<Performer>Kundenbetreung</Performer>
<TransitionRestrictions>
<TransitionRestriction>
<Split Type="XOR"/>
</TransitionRestriction>
</TransitionRestrictions>
</Activity>
<Activity Id="Bonitaetspruefung" Name="Bonitätsprüfung durchführen">
<Description>Kunde auf Bonität prüfen</Description>
<Implementation>
<Tool Id="BonitaetCheck" Type="APPLICATION"/>
</Implementation>
<TransitionRestrictions>
<TransitionRestriction>
<Split Type="XOR"/>
</TransitionRestriction>
</TransitionRestrictions>
</Activity>
<Activity Id="LagermengeUeberpruefen" Name="Lagermenge überprüfen">
<Description>Artikel am Lager</Description>
<Implementation>
<Tool Id="ArtikelAmLager" Type="APPLICATION"/>
</Implementation>
</Activity>
<Activity Id="AblehnungPruefen" Name="Ablehnung prüfen">
<Description>Kunde informieren, Bonität abwägen</Description>
<Implementation>
<Tool Id="BonitaetCheck2" Type="APPLICATION"/>
</Implementation>
<Performer>Buchhaltung</Performer>
</Activity>
<Activity Id="R1" Name="Synchronistation">
<Description>Synchronisation bei positiver Bonität</Description>
<Route/>
<TransitionRestrictions>
<TransitionRestriction>
<Join Type="XOR"/>
</TransitionRestriction>
</TransitionRestrictions>
</Activity>
<Activity Id="R2" Name="Synchronistation">
<Description>Warten auf Lager überprüfung und Bonität,
bevor Lieferung und Produktion</Description>
<Route/>
<TransitionRestrictions>
<TransitionRestriction>
<Join Type="AND"/>
<Split Type="XOR"/>
</TransitionRestriction>
</TransitionRestrictions>
</Activity>
<Activity Id="TeilliefungPruefen" Name="Teilliefung prüfen">
<Description>Kunde anfragen für Teillieferungsmöglichkeit</Description>
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 31
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
<Implementation>
<Tool Id="Teillieferung" Type="APPLICATION"/>
</Implementation>
<Performer>Auftragsbearbeitung</Performer>
<TransitionRestrictions>
<TransitionRestriction>
<Split Type="XOR"/>
</TransitionRestriction>
</TransitionRestrictions>
</Activity>
<Activity Id="R3" Name="Teillieferung und Produktion">
<Route/>
<TransitionRestrictions>
<TransitionRestriction>
<Join Type="AND"/>
</TransitionRestriction>
</TransitionRestrictions>
</Activity>
<Activity Id="R4" Name="R3 und Produktion">
<Route/>
<TransitionRestrictions>
<TransitionRestriction>
<Join Type="XOR"/>
</TransitionRestriction>
</TransitionRestrictions>
</Activity>
<Activity Id="ProduktionVorbereiten" Name="Produktion vorbreiten">
<Description>Produktion wird vorbereitet</Description>
<Implementation>
<Tool Id="ProduktionVorbereiten" Type="APPLICATION"/>
</Implementation>
<Performer>Auftragsbearbeitung</Performer>
<TransitionRestrictions>
<TransitionRestriction>
<Join Type="XOR"/>
</TransitionRestriction>
</TransitionRestrictions>
</Activity>
<Activity Id="HalbfabrikatBestellen" Name="Halbfabrikat bestellen">
<Description>Halbfabrikat bestellen</Description>
<Implementation>
<Tool Id="HalbfabrikatBestellen" Type="APPLICATION"/>
</Implementation>
</Activity>
<Activity Id="ProduktErstellen" Name="Produkt erstellen">
<Description>Ware herstellen, Produktionsplan ausführen</Description>
<Implementation>
<Tool Id="HoleProduktionsPlan" Type="APPLICATION"/>
</Implementation>
<Performer>Produktion</Performer>
</Activity>
<Activity Id="Teilauslieferung" Name="Teilauslieferung">
<Description>Wenn Teilauslieferung möglich, ausliefern</Description>
<Implementation>
<No/>
</Implementation>
<Performer>Auftragsbearbeitung</Performer>
</Activity>
<Activity Id="RestVolllieferung" Name="Rest- bzw. Volllieferung">
<Description>ab Lager oder aus Produktion liefern - Lieferpapiere erstellen</Description>
<Implementation>
<No/>
</Implementation>
<Performer>Auftragsbearbeitung</Performer>
<TransitionRestrictions>
<TransitionRestriction>
<Join Type="XOR"/>
</TransitionRestriction>
</TransitionRestrictions>
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 32
Beispielprozess - FlowWorkJ
Kapitel: 3 Prozesse und Datenmodelle
</Activity>
<Activity Id="RechnungAusstellen" Name="Rechnung ausstellen">
<Description>Rechnung ausstellen</Description>
<Implementation>
<Tool Id="RechnungAusstellen" Type="APPLICATION"/>
</Implementation>
</Activity>
<Activity Id="ZahlungVerbuchen" Name="Zahlung verbuchen">
<Description>Buchhaltung verbucht die Zahlung</Description>
<Implementation>
<Tool Id="ZahlungVerbuchen" Type="APPLICATION"/>
</Implementation>
<Performer>Buchhaltung</Performer>
</Activity>
<Activity Id="BestellungAbschliessen" Name="Bestellung abschliessen">
<Description>Kundenbetreuung wird über den Bestellungsabschluss informiert</Description>
<Implementation>
<No/>
</Implementation>
<Performer>Kundenbetreung</Performer>
</Activity>
</Activities>
<Transitions>
<Transition Id="t0" From="BestellungAnnehmen" To="VerkaufInformieren"/>
<Transition Id="t1" From="BestellungAnnehmen" To="Bonitaetspruefung"/>
<Transition Id="t2" From="BestellungAnnehmen" To="LagermengeUeberpruefen"/>
<Transition Id="t3" From="Bonitaetspruefung" To="AblehnungPruefen">
<Condition Type="OTHERWISE"/>
</Transition>
<Transition Id="t4" From="Bonitaetspruefung" To="R1">
<Condition Type="CONDITION">bonitaetOK.equals("J")</Condition>
</Transition>
<Transition Id="t5" From="AblehnungPruefen" To="R1">
<Condition Type="CONDITION">bonitaetOK.equals("J")</Condition>
</Transition>
<Transition Id="t6" From="R1" To="R2"/>
<Transition Id="t7" From="LagermengeUeberpruefen" To="R2"/>
<Transition Id="t8" From="R2" To="ProduktionVorbereiten">
<Condition Type="OTHERWISE"/>
</Transition>
<Transition Id="t9" From="R2" To="TeilliefungPruefen">
<Condition Type="CONDITION">lieferung.equals("T")</Condition>
</Transition>
<Transition Id="t10" From="R2" To="RestVolllieferung">
<Condition Type="CONDITION">lieferung.equals("V")</Condition>
</Transition>
<Transition Id="t11" From="TeilliefungPruefen" To="R4">
<Condition Type="OTHERWISE"/>
</Transition>
<Transition Id="t12" From="TeilliefungPruefen" To="R3">
<Condition Type="CONDITION">macheTeillieferung.equals("J")</Condition>
</Transition>
<Transition Id="t13" From="R3" To="R4"/>
<Transition Id="t14" From="R3" To="Teilauslieferung"/>
<Transition Id="t15" From="R4" To="ProduktionVorbereiten"/>
<Transition Id="t16" From="ProduktionVorbereiten" To="HalbfabrikatBestellen"/>
<Transition Id="t17" From="HalbfabrikatBestellen" To="ProduktErstellen">
<Condition Type="CONDITION">halbOk.equals("J")</Condition>
</Transition>
<Transition Id="t18" From="ProduktErstellen" To="RestVolllieferung"/>
<Transition Id="t19" From="RestVolllieferung" To="RechnungAusstellen"/>
<Transition Id="t20" From="RechnungAusstellen" To="ZahlungVerbuchen"/>
<Transition Id="t21" From="ZahlungVerbuchen" To="BestellungAbschliessen"/>
</Transitions>
</WorkflowProcess>
</WorkflowProcesses>
</Package>
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 33
Beispielprozess - FlowWorkJ
4
Verzeichnisse
4.1
Abbildungsverzeichnis
Kapitel: 4 Verzeichnisse
Abbildung 1: Verteilungsdiagramm Prolux und Prolux Lager ................................................................. 4
Abbildung 2: IBConsole – Create Database ........................................................................................... 5
Abbildung 3: IBConsole........................................................................................................................... 6
Abbildung 4: prolux.properties................................................................................................................. 7
Abbildung 5: Prozess ProluxLager .......................................................................................................... 9
Abbildung 6: Datenmodell ProluxLager................................................................................................. 10
Abbildung 7: Beispielprozess ................................................................................................................ 11
Abbildung 8: Datenmodell Prolux .......................................................................................................... 12
Abbildung 9: Interaktionen «Bestellung entgegennehmen» ................................................................. 16
Abbildung 10: Prolux Kundenverwaltung .............................................................................................. 16
Abbildung 11: Prolux Auftragsbearbeitung – Bestellung eingeben....................................................... 17
Abbildung 12: Prolux Geräte Artikelliste................................................................................................ 18
Abbildung 13: Prolux Bonität Ablehnung prüfen ................................................................................... 19
Abbildung 14: Prolux Teillieferung prüfen ............................................................................................. 20
Abbildung 15: Prolux Produktionsplan upload ...................................................................................... 21
Abbildung 16: Prolux Auftragsbearbeitung – Zahlung verbuchen......................................................... 22
4.2
Tabellenverzeichnis
Tabelle 1: Entität Kunde ........................................................................................................................ 13
Tabelle 2: Entität Lieferant .................................................................................................................... 13
Tabelle 3: Entität Lieferant .................................................................................................................... 13
Tabelle 4: Entität Bauteil ....................................................................................................................... 14
Tabelle 5: Entität Gerät ......................................................................................................................... 14
Tabelle 6: Entität Verwendet ................................................................................................................. 14
Tabelle 7: Entität Bestell_kopf............................................................................................................... 15
Tabelle 8: Entität Bestell_pos................................................................................................................ 15
Tabelle 9: Entität Sequenznumber ........................................................................................................ 15
4.2.1
Literaturverzeichnis
[SOP]
http://www.wfmc.org/standards/docs/TC-1016X_Process_Definition_Interchange_QnA_IF1.PDF (Seite 29)
Beispielprozess.doc 23.12.2002 – Version: 1.1
Seite 34
Herunterladen