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