agorum core Workflow Development Guide Version 6.4.9

Transcrição

agorum core Workflow Development Guide Version 6.4.9
agorum core Workflow Development
Guide
Version 6.4.9
Copyright 2010, agorum Software GmbH
10.03.2011, Dokumentenversion 1.0.8
Inhaltsverzeichnis
1. Einleitung
1.1. Was bietet die Workflowkomponente . . . . . . . . . . . . . . . . .
1.2. Für wen ist dieses Handbuch . . . . . . . . . . . . . . . . . . . . . .
1.3. Wie ist dieses Handbuch zu lesen . . . . . . . . . . . . . . . . . . .
5
5
5
6
2. Installation der Entwicklungsumgebung
2.1. Vorbereitung . . . . . . . . . . . . . .
2.2. Eclipse + jBPM . . . . . . . . . . . . .
2.2.1. Eclipse manuell installieren . .
2.2.2. Vordefinierte Eclipse Umgebung
.
.
.
.
7
7
7
7
8
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
9
9
12
14
15
18
18
20
23
27
28
29
29
35
37
38
39
. . . . . .
. . . . . .
. . . . . .
verwenden
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3. Tutorial
3.1. Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Anlegen des Workflow-Projektes mit dem agorum Eclipse-Plugin .
3.2.1. Anlegen der Projektstruktur . . . . . . . . . . . . . . . . .
3.2.2. Einfügen der benötigten Workflow-Libraries in das Projekt
3.2.3. Hinzufügen von weiteren Libraries zum Projekt . . . . . .
3.2.4. Anlegen der Process Definition . . . . . . . . . . . . . . .
3.3. Definieren des Test-Workflows . . . . . . . . . . . . . . . . . . . .
3.3.1. Definieren von Start und Ende . . . . . . . . . . . . . . . .
3.3.2. Erzeugen einer Maske . . . . . . . . . . . . . . . . . . . . .
3.3.3. Erstellen eines Action-Handlers . . . . . . . . . . . . . . .
3.3.4. Verbinden der Workflow-Knoten . . . . . . . . . . . . . . .
3.3.5. Deployment des Workflows . . . . . . . . . . . . . . . . . .
3.4. Definieren der Masken . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1. Anlegen einer Maske . . . . . . . . . . . . . . . . . . . . .
3.4.2. Installieren der Masken . . . . . . . . . . . . . . . . . . . .
3.4.3. Test des Workflows . . . . . . . . . . . . . . . . . . . . . .
3.4.4. Anzeige der Log-Informationen . . . . . . . . . . . . . . .
3.5. Tutorial-Ende . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4. Erweiterte Themen
40
4.1. Weitere Funktionen des agorum Workflow Eclipse-Plugins . . . . . . 40
4.1.1. Erzeugen eines Installationspakets und dessen Installation
auf dem Server . . . . . . . . . . . . . . . . . . . . . . . . . 40
2
Inhaltsverzeichnis
4.2.
4.3.
4.4.
4.5.
4.6.
4.1.2. Erzeugen eines Timephased Action Scripts . . . . . . . . . .
4.1.3. Projekt umbenennen . . . . . . . . . . . . . . . . . . . . . .
4.1.4. EA-Designer-Maske importieren . . . . . . . . . . . . . . . .
4.1.5. Konvertieren einer *.def-Datei in eine *.xml-Datei . . . . . .
Mehrsprachigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1. Übersetzungsschlüssel in den Masken und Workflows . . . .
4.2.2. Übersetzung von Variablenamen und Werten . . . . . . . . .
4.2.3. Zum Schluss . . . . . . . . . . . . . . . . . . . . . . . . . . .
Möglichkeiten der Maskengestaltung . . . . . . . . . . . . . . . . .
4.3.1. Text-Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2. Eingabe-Feld, Einzeilig . . . . . . . . . . . . . . . . . . . . .
4.3.3. Eingabe-Feld, Mehrzeilig . . . . . . . . . . . . . . . . . . . .
4.3.4. Datum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.5. Drop-Down-Box . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.6. Checkbox . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.7. EADesigner . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.8. Abstand . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.9. Horizontale Linie . . . . . . . . . . . . . . . . . . . . . . . .
4.3.10. Knöpfe für Transitions . . . . . . . . . . . . . . . . . . . . .
4.3.11. Benutzersuche . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.12. Spezial-Ordner-Suche . . . . . . . . . . . . . . . . . . . . . .
4.3.13. Liste der Aktivitäten anzeigen . . . . . . . . . . . . . . . . .
4.3.14. Nach oben springen . . . . . . . . . . . . . . . . . . . . . . .
4.3.15. Zu Aktivitäten springen . . . . . . . . . . . . . . . . . . . .
4.3.16. Zu Anhängen springen . . . . . . . . . . . . . . . . . . . . .
4.3.17. Zu Anhänge-Liste springen . . . . . . . . . . . . . . . . . . .
4.3.18. Anhangs-Liste darstellen . . . . . . . . . . . . . . . . . . . .
4.3.19. Anhang-Schnellansicht (Einzelelement) . . . . . . . . . . . .
4.3.20. Anhang-Schnellansicht (Alle) . . . . . . . . . . . . . . . . .
4.3.21. Untere Buttonleiste ändern . . . . . . . . . . . . . . . . . .
Erstellen eines Parameters zur direkten Ansteuerung von Workflows
Was Sie sonst noch wissen sollten . . . . . . . . . . . . . . . . . . .
4.5.1. Die ParameterController.xml und EditMaskController.xml .
4.5.2. Vordefinierte Variablen . . . . . . . . . . . . . . . . . . . . .
4.5.3. Hidden-Variablen . . . . . . . . . . . . . . . . . . . . . . . .
4.5.4. Löschen einer Variable . . . . . . . . . . . . . . . . . . . . .
4.5.5. Suche nach Variablen . . . . . . . . . . . . . . . . . . . . . .
4.5.6. Timer-Nutzung für Zeitbasierte Workflows . . . . . . . . . .
4.5.7. Weitere Beispiel-Workflows . . . . . . . . . . . . . . . . . . .
Workflow-Versionen . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.1. Automatische Workflow-Versionierung . . . . . . . . . . . .
4.6.2. Manuelle Workflow-Versionierung . . . . . . . . . . . . . . .
4.6.3. Ändern der Workflow-Version . . . . . . . . . . . . . . . . .
43
44
45
46
47
47
49
51
51
51
51
52
52
53
53
54
54
54
54
55
55
56
56
56
56
57
57
57
58
58
58
60
60
64
65
65
66
66
68
68
68
68
68
3
Inhaltsverzeichnis
5. Schlusswort
70
Abbildungsverzeichnis
71
A. Anhang
73
A.1. Versions-Historie dieses Dokumentes . . . . . . . . . . . . . . . . . 73
A.2. Sonstiges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4
Kapitel 1.
Einleitung
1.1. Was bietet die Workflowkomponente
Die Workflowkomponente von agorum core basiert auf jBPM von JBoss. Damit
steht eine leistungsstarke Workflow-Basis zur Verfügung. jBPM ist dabei perfekt
und nahtlos in die agorum core Komponenten integriert: agorum desk 4web,
Windows Client Explorer-Integration, Suche, Mitteilungssystem, DMS-Laufwerk,
etc...
Dieses Dokument setzt voraus, dass Sie vertraut sind mit der Arbeitsweise und
Integration der Workflowkomponente in agorum core. Wenn nicht, sollten Sie
zuerst das Benutzer und Administrationshandbuch zum agorum core Workflow
lesen.
1.2. Für wen ist dieses Handbuch
Wenn Sie gerne eigene Workflows für agorum core entwickeln möchten und bereits ein wenig Programmiererfahrung mitbringen, dann sind Sie hier genau richtig.
Dieses Dokument zeigt Ihnen, wie Sie...
• ...die Notwendige Entwicklungsumgebung aufsetzen
• ...einen Basis-Workflow definieren
• ...Masken für diesen Workflow definieren
• ...den Workflow in agorum core installieren (Deployment)
5
Kapitel 1. Einleitung
• ...Wissenswertes rund um die Workflow-Komponente
1.3. Wie ist dieses Handbuch zu lesen
Die Kapitel dieses Dokumentes bauen aufeinander auf. Die einzelnen Schritte von
der Installation bis hin zum fertig verwendbaren Beispiel-Workflow sind als Tutorial aufgebaut. In den einzelnen Schritten wird alles Wissenswerte zu den jeweiligen
Themen erklärt. Für ein komplettes Verständnis sollten Sie daher das Dokument
komplett durcharbeiten.
6
Kapitel 2.
Installation der
Entwicklungsumgebung
2.1. Vorbereitung
Um einen entwickelten Workflow auch testen zu können, benötigen Sie ein funktionierendes agorum core System mit installierter Workflow-Komponente.
2.2. Eclipse + jBPM
2.2.1. Eclipse manuell installieren
Wenn Sie selber eine Eclipse Umgebung aufsetzen möchten oder gerne Ihre eigene
verwenden möchten, dann wird hier beschrieben, was für Einzel-Komponenten
Sie benötigen, bzw. nachinstallieren müssen. Sie können allerdings auch unser
PreBuild-Eclipse-Bundle herunterladen, das bereits alles vorkonfiguriert enthält.
(Siehe Kapitel 2.2.2).
Sie benötigen folgende Komponenenten um einen agorum core Workflow entwickeln zu können:
• Eclipse IDE for Java Developers, ab Version 3.5 (http://www.eclipse.org/
downloads)
• jBPM Process Designer ab Version 3.1.7 (http://www.jboss.org/jbossjbpm/
jbpm_downloads, oder direkt: http://sourceforge.net/project/showfiles.
7
Kapitel 2. Installation der Entwicklungsumgebung
php?group_id=70542)
• Das agorum Workflow Eclipse-Plugin
• Ein Java Runtime Environment oder ein Java SE Development Kit
mindestens in der Version 1.5(http://www.oracle.com/technetwork/
java/javase/downloads/index.html.
Wie Sie die jeweiligen Komponenten installieren, erfahren Sie auf den Webseiten
der jeweiligen Hersteller.
2.2.2. Vordefinierte Eclipse Umgebung verwenden
Als Alternative zur manuellen Installation bieten wir Ihnen ein komplett vorkonfiguriertes Eclipse-Paket für Windows an, das alles beinhaltet, was Sie zum Loslegen
benötigen. Um das Paket zu erhalten, fragen Sie bei uns nach. Das Paket hat den
Namen: agorum-workflow-devbundle.zip
Entpacken Sie dieses Paket an einen beliebigen Ort und starten Sie Eclipse mit
eclipse.bat aus dem eclipse Verzeichnis.
8
Kapitel 3.
Tutorial
3.1. Einleitung
Dieses Tutorial zeigt Ihnen Schritt für Schritt, wie Sie einen ersten einfachen Workflow selbst gestalten und verwenden können. Es vermittelt dabei alles Wissenswerte
rund um die Workflow-Komponente von agorum core.
3.2. Anlegen des Workflow-Projektes mit dem
agorum Eclipse-Plugin
3.2.1. Anlegen der Projektstruktur
Öffnen Sie Ihre Eclipse-Entwicklungsumgebung.
Wählen Sie im Eclipse Menü File → New → Other... → agorum Workflow →
agorum Workflow Project (Abb. 3.1). Alternativ dazu klicken Sie mit der rechten
Maustaste im Package Explorer von Eclipse in einen leeren Bereich und wählen
im Kontextmenü agorum workflow → New agorum Workflow Project. Es erscheint
der Wizard aus Abb. 3.2. Geben Sie einen Namen im Feld Project Name ein: TestWorkflow. Wählen Sie im nächsten Feld Base path of project das Verzeichnis aus,
in dem das neue Workflowprojekt angelegt werden soll. Im Feld Module name wird
Ihnen für den Modulnamen ein Vorschlag gemacht, den sie in aller Regel so belassen sollten, der aber von Ihnen beliebig abgeändert werden kann. Haben Sie
alle Eingaben getätigt klicken Sie auf Finish. Es wird nun das Projekt TestWorkflow mit der kompletten Projektstruktur, wie sie für agorum Workflow-Projekte
benötigt wird, im Eclipse Package Explorer angelegt (siehe Abb. 3.3).
9
Kapitel 3. Tutorial
Abbildung 3.1.: Anlegen eines neuen Workflow-Projektes in Eclipse
Abbildung 3.2.: Der Wizard zum Anlegen eines Workflow-Projektes in Eclipse
10
Kapitel 3. Tutorial
Abbildung 3.3.: Projektstruktur des neuangelegten Workflow-Projektes in Eclipse
Besonders wichtig ist, dass Sie für Java 1.4 kompatibel entwickeln. Prüfen Sie
das, indem Sie im Package Explorer mit einem Rechtsklick der Maus auf das
Projekt das Kontextmenü öffnen und dort den Menüeintrag Properties auswählen.
Dort klicken Sie links auf Java Compiler. Rechts erscheint dann eine neue Ansicht.
Bei Compiler compliance level muss 1.4 stehen. Falls nicht, haken Sie Enable project
specific settings an und wählen Sie 1.4 aus (Abbildung 3.4). Klicken Sie dann auf
OK
11
Kapitel 3. Tutorial
Abbildung 3.4.: Einstellung des Java-Compilers in Eclipse
3.2.2. Einfügen der benötigten Workflow-Libraries in das
Projekt
Um die benötigten Libraries für die Workflow-Entwicklung hinzuzufügen, wählen
Sie das gerade erzeugte Projekt im Package Explorer aus und zeigen durch Klick
mit der rechten Maustaste auf dieses Projekt das Kontextmenü an. Im Kontextmenü wählen Sie agorum workflow → Add agorum workflow standard libs to project
(Abb. 3.5).
12
Kapitel 3. Tutorial
Abbildung 3.5.: Menü zum hinzufügen der agorum Standard Workflow Libraries
Im nun erscheinenden Wizard (Abb. 3.6) belassen Sie die beiden Einträge in den
Feldern Workflow project base path und Workflow name so wie sie sind und navigieren durch Klick auf die Browse...-Schaltfläche hinter dem Feld Installation
directory of agorum core in das Verzeichnis in dem sich die Basis-Installation von
agorum core befindet (z.B. C:\Programme\agorum) (siehe Abbildungen 3.5 und 3.6).
Beenden Sie den Wizard mit Klick auf die Schaltfläche Finish.
Die benötigten Libraries werden in das Unterverzeichnis ../libs des Projektes kopiert und die Klassenpfadeinträge werden automatisch angelegt. Wählen Sie mit
der Maus den Projektordner aus und drücken Sie die F5 -Taste. Nach dem Refresh des Projektes sehen Sie den zusätzlichen Eintrag Referenced Libraries, der
die Klassenpfad-Referenzen auf die gerade hinzugefügten Libraries enthält (siehe
Abbildung 3.7).
13
Kapitel 3. Tutorial
Abbildung 3.6.: Wizard zum Hinzufügen der Standard-Libraries zum Projekt
Abbildung 3.7.: Hinzugefügte Libraries
3.2.3. Hinzufügen von weiteren Libraries zum Projekt
Hierzu wählen Sie durch Rechtsklick mit der Maus auf das Projekt im Kontextmenü den Menüpunkt agorum workflow → Add libs to project aus. Im nun erscheinenden Wizard (Abb. 3.8) belassen Sie die Einträge in den Feldern Workflow project base path und Workflow name so wie sie sind. Mit der Schaltfläche
Browse... hinter dem Feld agorum workflow libs öffnen Sie einen Datei-Dialog mit
dem sie die entsprechenden Libraries auswählen können (Sie können auch mehrere Library-Dateien auswählen). Die Pfade der ausgewählten Dateien werden im
14
Kapitel 3. Tutorial
Feld agorum Workflow libs angezeigt. Klicken Sie auf Finish. Wie schon beim
Hinzufügen der agorum Standard-Libraries werden die *.jar-Dateien ins ../libs Verzeichnis kopiert und die Klassenpfadeinträge entsprechend angepasst. Durch
Drücken der F5 -Taste auf das augewählte Projekt wird dies dann sichtbar.
Abbildung 3.8.: Wizard zum Hinzufügen der Standard-Libraries zum Projekt
3.2.4. Anlegen der Process Definition
Klicken Sie nun auf den Ordner src jpdl und wählen Sie im Menü File → New
→ Other. Es erscheint ein neues Fenster. Wählen Sie dort JBoss jBPM/Process
Definition und klicken Sie auf den Knopf Next. Im darauffolgenden Fenster geben
Sie bei Process Name TestWorkflow ein. Der Process Name sollte immer dem
Projektnamen entsprechen. Bei Source Folder sollte TestWorkflow/src jpdl bereits
ausgefüllt stehen. (siehe Abbildung 3.9)
15
Kapitel 3. Tutorial
Abbildung 3.9.: Erstellen einer Workflow-Definition
Klicken Sie nun auf den Knopf Finish. Es sollte nun eine Prozessdefintion mit dem
Namen processdefinition.xml im Package Explorer vorhanden sein. Wenn Sie diese
doppelklicken dann öffnet sich der jBPM Designer auf der rechten Seite. Achten
Sie darauf, dass im unteren Bereich die Ansicht Properties vorhanden ist. Falls
nicht, machen Sie folgendes: Gehen Sie im Menü auf Windows/Show View/Other
und wählen Sie dort General/Properties aus (siehe Abbildung 3.10). Wenn alles
korrekt eingestellt ist, dann sollte Eclipse in etwa so aussehen, wie in Abbildung
3.11 gezeigt.
16
Kapitel 3. Tutorial
Abbildung 3.10.: Anzeigen des Reiters properties
17
Kapitel 3. Tutorial
Abbildung 3.11.: Fertige Ansicht mit geöffnetem Workflow-Designer
3.3. Definieren des Test-Workflows
3.3.1. Definieren von Start und Ende
Als erstes wird dem Workflow selbst ein Name und eine Beschreibung vergeben.
Klicken Sie dazu auf eine freie Fläche im Workflow-Designer. Im unteren Bereich
sollte dann im Reiter Properties die Process Definition erscheinen. Bei Name sollte
bereits das zuvor eingegebene TestWorkflow stehen (die korrekte Schreibweise ist
hier sehr wichtig, weil später in den Maskendefinitionen darauf verwiesen wird). Bei
Description tragen Sie bitte eine Beschreibung für diesen Workflow ein. Diese kann
entweder Klartext sein, zum Beispiel Testworkflow oder auch ein Textschlüssel, der
in einer der Message-Dateien definiert wird, damit die Beschreibung Mehrsprachig
sein kann (dazu jedoch später mehr). Diese Beschreibung wird dann später im
Webportal angezeigt. Tragen Sie nun eine Beschreibung in dieses Feld ein. (siehe
Abbildung 3.12)
18
Kapitel 3. Tutorial
Abbildung 3.12.: Eintragen der Workflow-Beschreibung
Erzeugen Sie nun einen Start-Knoten, indem Sie auf Start klicken im linken
Menü des Workflow-Designers. Platzieren Sie diesen Knoten mit einem Klick auf
die freie Fläche rechts neben dem Menü. Benennen Sie diesen Knoten um in start
und vergeben Sie eine Beschreibung. Diese ist nur für interne Zwecke und dient
lediglich Ihrer Übersicht. (siehe Abbildung 3.13)
Abbildung 3.13.: Erzeugen des Start-Knotens
19
Kapitel 3. Tutorial
Auf die gleiche Art und Weise erzeugen Sie einen End-Knoten und Vergeben auch
hier den Namen end und eine Beschreibung. Die Namen start und end sind dabei unwichtig, die Knoten können auch anders benannt werden. (siehe Abbildung
3.14)
Abbildung 3.14.: Erzeugen des Endknotens
3.3.2. Erzeugen einer Maske
In diesem Beispiel soll eine Eingabe-Maske definiert werden, bei der ein Benutzer
einen Wert eingeben kann. Erzeugen Sie dazu einen Task Node und platzieren
Sie diesen zwischen dem Start und dem End-Knoten. Vergeben Sie nun einen
Namen für diesen Knoten. Der Name ist sehr wichtig für die Masken, die später
definiert werden, merken Sie sich also diesen Namen. In unserem Beispiel nennen
Sie diese Maske nun MyFirstTask. Die Schreibweise des Namens (Groß-Klein!) ist
auch hier sehr wichtig, weil im späteren Verlauf wieder darauf verwiesen wird. Und
als Beschreibung geben Sie zum Beispiel Meine erste Maske ein. (siehe Abbildung
3.15)
20
Kapitel 3. Tutorial
Abbildung 3.15.: Definieren des Masken-Knotens
Bis jetzt wurde nur der Knoten für die Maske erzeugt, für die eigentliche Maskendefinition klicken Sie nun im Properties-Bereich (während Sie den Task-Knoten
noch ausgewählt haben) auf den Bereich Tasks. Klicken Sie dann dort in dem
leeren Kasten mit der Rechten Maustaste und wählen Sie New Task. Es erscheinen weitere Eingabe-Möglichkeiten. Bei Name tragen Sie EXAKT dasselbe ein,
wie auch schon beim Knoten, also MyFirstTask. Im Feld Beschreibung tragen Sie
zum Beispiel Meine erste Maske ein. Die Beschreibung kann hier auch wieder
ein Textschlüssel für die Übersetzung sein. Diese Beschreibung wird später in der
Weboberfläche für die jeweilige Maske angezeigt. (siehe Abbildung 3.16)
21
Kapitel 3. Tutorial
Abbildung 3.16.: Definieren der eigentlichen Maske
Nun muss noch definiert werden, wer diese Maske eigentlich angezeigt bekommen
soll, dazu klicken Sie auf den Reiter Assignment. Das kann zum Beispiel direkt
ein Benutzername sein, eine Gruppe, eine Swimlane oder ein Platzhalter. Folgend
eine Aufzählung möglicher Werte:
Swimlane Wenn Sie als Assignment swimlane wählen, dann können Sie eine zuvor
definierte Swimlane dort eintragen (dies können Sie bei den Eigenschaften
des Workflows definieren, wenn Sie auf eine freie Fläche im Editor klicken).
Swimlanes sind im Prinzip Gruppen zugeordnet. Sobald ein Benutzer dieser
Gruppe die Maske angenommen hat, werden alle weiteren Masken, die dieser
Swimlane zugeteilt sind, direkt diesem Benutzer zugeteilt im Laufe eines
Prozesses.
Actor Wählen Sie Actor aus, dann können Sie direkt einen Benutzernamen aus
agorum core eintragen. Sie können auch einen Platzhalter verwenden,
ein gängiges Beispiel ist: #{ac initialPerformer}. Diese Variable ist standardmäßig definiert und entspricht der Person, die den Workflow gestartet
hat. Das ist zum Beispiel dann sinnvoll, wenn direkt Eingaben nach dem
Start getätigt werden sollen, also eine Maske direkt dem Starter gegeben
werden soll.
Handler Wenn Sie hier den Handler agorum. workflow. ejb. jbpm. handler.
AgorumPooledActorAssignmentHandler bei Class name eintragen, dann
können Sie in der Config Info einen groupName aus agorum core ver-
22
Kapitel 3. Tutorial
geben. Dies bedeutet, dass diese Maske immer dieser Gruppe zugeteilt wird
und dann eine Person dieser Gruppe diese Maske annehmen kann.
In diesem Beispiel werden wir die Maske der Gruppe GRP Demo zuteilen. Bitte
achten Sie darauf, dass diese Gruppe in agorum core vorhanden ist! Wählen
Sie dazu Handler aus der Drop-Down-Box aus und geben Sie als Class name
agorum. workflow. ejb. jbpm. handler. AgorumPooledActorAssignmentHandler ein
(Sie können auch dannach suchen). Haken Sie dann groupName an und geben Sie
als Wert GRP Demo ein. (siehe Abbildung 3.17)
Abbildung 3.17.: Auswahl der Personen, die die Maske erhalten sollen
3.3.3. Erstellen eines Action-Handlers
Um ein möglichst umfangreiches Beispiel zu erstellen, wird nun noch folgendes
gemacht. Wir möchten, bevor die Maske geöffnet wird, eine Variable, die später
in der Maske angezeigt wird, mit einem Wert belegen. Klicken Sie dazu (immer
noch der Task-Knoten ausgewählt) auf Events. Im freien Feld danneben, klicken
Sie mit der rechten Maustaste und wählen Sie New Event. Bei Event Type wählen
Sie node-enter (bedeutet, sobald dieser Knoten betreten wird). Klicken Sie nun
mit der rechten Maustaste auf node-enter im linken Feld und wählen Sie New
Action. Wählen Sie die Aktion action aus. Vergeben Sie einen Namen, zum Beispiel TestAction und klicken Sie auf den Reiter Details in der Auswahlbox wählen
Sie Handler. Jetzt muss bei Class name die Klasse eingetragen werden, die die
gewünschte Operation durchführt, das werden wir gleich tun. Diese Klasse muss
23
Kapitel 3. Tutorial
aber erst definiert werden. Tragen Sie vorab folgendes ein agorum.test.TestAction1
(siehe Abbildung 3.18)
Abbildung 3.18.: Erstellen einer Aktion, die ausgeführt wird, bevor die Maske geladen
wird
Nun muss erstmal der Handler erzeugt werden, der ausgeführt werden sollen, wenn
der Knoten betreten wird. Klicken Sie dazu im Package Explorer auf den Ordner
src java mit der rechten Maustaste und wählen Sie New/Class. Bei Source Folder sollte bereits TestWorkflow/src java eingetragen sein. Geben Sie bei Package
agorum.test ein und bei Name TestAction1, genau so, wie im Abschnitt vorher definiert. Bei Superclass tragen Sie agorum. workflow. ejb. jbpm. handler. AgorumBaseActionHandler ein. Klicken Sie auf Finish. (siehe Abbildung 3.19)
24
Kapitel 3. Tutorial
Abbildung 3.19.: Definieren eines Test-Aktions-Handlers
Es wurde nun eine Java-Klasse als Hülle angelegt, in der Sie nun die gewünschte
Aktion integrieren können. Wir möchten nun folgendes machen: setzen eines Wertes für die Variable testVariable1 (diese wird dann später in der Maske dargestellt).
Dazu tragen Sie folgenden Code in der Funktion executeInternal ein:
1
2
3
4
5
6
...
public void executeInternal ( ExecutionContext arg0 ) throws
Exception {
arg0 . setVariable ( " testVariable1 " , " Ein Test Wert " ) ;
log ( " Testausgabe , es wurde die Variable testVariable1
belegt " ) ;
}
...
In Zeile 3 wird die Variable testVariable1 mit dem Wert Ein Test Wert belegt.
In der Zeile 4 wird ein log-Eintrag gemacht (dieser erscheint dann nachher in
25
Kapitel 3. Tutorial
der Ansichts-Maske des Workflows und kann zur Fehlersuche oder Protokollierung
verwendet werden.) Eventuell müssen Sie noch ein @override löschen (das macht
Eclipse automatisch hin, um darauf hinzuweisen, dass Sie die Funktion implementieren müssen).
Der komplette Code sieht dann so aus:
1
2
3
4
5
6
7
8
9
package agorum . test ;
import org . jbpm . graph . exe . ExecutionContext ;
import agorum . workflow . ejb . jbpm . handler .
A go r u m B a s e A c t i o n H a n d l e r ;
public class TestAction1 extends A g o r u m B a s e A c t i o n H a n d l e r {
private static final long serialVersionUID = 1 L ;
10
11
12
13
14 }
public void executeInternal ( ExecutionContext arg0 )
throws Exception {
arg0 . setVariable ( " testVariable1 " , " Ein Test Wert " ) ;
log ( " Testausgabe , es wurde die Variable testVariable1
belegt " ) ;
}
Der Code, den Sie hier definieren wird später mit dem Workflow im Deployment
Prozess automatisch in agorum core installiert. Hier sehen Sie das ganze nochmal als Abbildung 3.20. Für tiefergehende Beispiele schauen Sie sich bitte die
Dokumentation von jBPM an.
26
Kapitel 3. Tutorial
Abbildung 3.20.: Erstellen der Test-Klasse TestAction1
3.3.4. Verbinden der Workflow-Knoten
Wechseln Sie wieder zurück zum Workflow-Designer (Doppelklick auf processdefinition.xml links im Package Explorer. Wählen Sie im Workflow-Designer-Menü Transition aus und Klicken Sie auf den Start-Knoten und ziehen Sie einen Pfeil
auf den Task-Knoten. Dasselbe wiederholen Sie vom Task-Knoten auf den EndKnoten. Vergeben Sie für die Knoten Namen (das ist nachher wichtig für die
Administrations-Maske, dort werden die Namen dargestellt). Der erste Übergang
(Transition) wurde toMyFirstTask und der zweite toEnd benannt. (siehe Abbildung 3.21)
27
Kapitel 3. Tutorial
Abbildung 3.21.: Erzeugen der Verbindungen zwischen den Knoten
Die einzelnen Übergänge definieren die Möglichkeiten, wie von einer Aktion zur
nächsten gelangt werden kann. Falls es mehrere Übergänge von einer Maske zu
mehreren anderen gibt, dann können die jeweiligen Namen der Übergänge dazu genutzt werden, das zu steuern. Die Namen werden dann den Knöpfen, die
in einer Workflow-Maske definiert sind angegeben. Je nachdem, welchen Knopf
der Benutzer drückt, geht der Workflow einen anderen Weg. (in den StandardBeispielworkflows sind dies zum Beispiel beim Freigabeworkflow die Übergänge:
Freigeben, Überarbeiten und Ablehnen).
3.3.5. Deployment des Workflows
Damit wäre die Definition des Workflows für dieses Beispiel abgeschlossen und Sie
können Ihn nun in agorum core installieren. Dazu klicken Sie am unteren Bereich
des Workflow-Designers auf Deployment. Es erscheint eine neue Ansicht. Achten
Sie darauf, dass rechts oben bei Java Classes and Resources src java angehakt
ist (nur das ist nötig, die anderen Elemente nicht). Tragen Sie bei Deployment
Server Settings die Daten für Ihre agorum core Installation ein. Sobald Sie auf
Deploy klicken fragt Sie das Programm nach Zugangsdaten, geben Sie hier die
Zugangsdaten für Ihren roi Benutzer ein. (wie in Abbildung 3.22)
Erklärung der Werte für Deployment:
28
Kapitel 3. Tutorial
Server Name: tragen Sie hier die IP oder Adresse des agorum core Servers ein,
auf den der Workflow installiert werden soll, zum Beispiel localhost.
Server Port: tragen Sie hier den Port der http-Verbindung Ihres agorum core
Servers ein. Sie erfahren diesen Wert aus Ihrem Datenblatt. Im Standard ist
dies 8080.
Server Deployer: tragen Sie hier /roiwebui/ProcessUpload ein.
Abbildung 3.22.: Deployment des Workflows
3.4. Definieren der Masken
Der Ablauf des Workflows wurde nun definiert und installiert. Was jetzt noch fehlt
sind die Masken-Komponenten für agorum desk 4web.
3.4.1. Anlegen einer Maske
Für das Anlegen einer Maske gehen Sie wie folgt vor:
Es wird davon ausgegangen, dass Sie die Prozess-Definition processdefinition.xml
nach obiger Beschreibung angelegt und den dort beschriebenen Task MyFirstTask
29
Kapitel 3. Tutorial
erzeugt haben. Um eine Maske über das agorum Workflow Plugin zu erstellen,
gehen Sie wie folgt vor:
Öffnen Sie mit einem Rechtsklick mit der Maus auf den Projektordner TestWorkflow im Package Explorer das Kontextmenü und wählen agorum Workflow →
Base jsp for task aus (siehe Abb. 3.23).
Abbildung 3.23.: Aufruf zum Hinzufügen einer Maske zum Workflow
Es wird nun der Wizard für die Maske angezeigt (Abb. 3.24). Belassen Sie die
Einträge im Feld Project base directory und im Feld Project name so wie er ist.
Tragen Sie in das Feld Task name den Namen MyFirstTask ein. Im Feld JSP name
wird Ihnen der Vorschlag TileMyFirstTaskMainTab.jsp gemacht, belassen Sie diesen ebenfalls so. Im Feld EA-Designer mask name können Maskendefinitionen, die
Sie im EA-Designer erstellt haben (siehe Administrationshandbuch EADesigner
- Masken für Erweiterte Attribute , durch Angabe des Definitionsnamens, in die
Maske mit eingebunden werden. In diesem Beispiel lassen Sie dieses Feld frei. Im
Feld Title text key kann eine Beschreibung als Überschrift in der Maske angegeben
werden. Lassen Sie dieses Feld ebenfalls frei, da es in diesem Beispiel von Hand
eingefügt wird. Klicken Sie nun auf Next.
30
Kapitel 3. Tutorial
Abbildung 3.24.: Einträge für die Maske
In diesem Wizard werden die Eintragungen für die Konfigurationsdateien ParameterController.xml und EditMaskController.xml vorgenommen (Abb. 3.25). Belassen Sie den Pfadeintrag im Feld Path to controller xml files wie er ist. Im Feld Text
key of tab tile (EditMaskController.xml) geben Sie Task Nummer 1 ein. Dies ist
der Text der nachher im Reiter der Maske angezeigt wird Setzen Sie im Feld Add
attachment tab (EditMaskController.xml das Häkchen. Dies bewirkt, dass eventuelle Anhänge an den Workflow, wie Dateien oder Mails in zusätzlichen Reitern
angezeigt werden. Geben Sie ins Feld Window description text key (ParameterController.xml) den Text Mein erster Task ein. Dieser Text wird in dem Fenster, in
dem sich unsere Maske befindet als Überschrift angezeigt. Ins Feld Tab description
text key (ParameterController.xml) geben Sie den Text Task 1 ein. Dieser Text
wird im Hauptreiter in der Weboberfläche angezeigt.
Abbildung 3.25.: Einträge für die Konfigurationsdateien ParameterController.xml und
EditMaskController.xml
31
Kapitel 3. Tutorial
Klicken Sie nun auf Finish. Es wird eine Vorlage für die Maske erzeugt, und automatisch die betreffenden Konfigurationen in die ParameterController.xml und
EditMaskController.xml eingetragen.
Nun
müssen
noch
Ergänzungen
in
der
Datei
..web/testworkflow module/editmasks/testworkflow/TileMyFirstTaskMainTab.jsp vorgenommen
werden. Abb. 3.26 zeigt dies beispielhaft:
Abbildung 3.26.: Zusätzliche Eintragungen in TileMyFirstTaskMainTab.jsp
Fügen Sie also den Code der beiden oberen, rot umrandeten Bereiche in die JSP
ein. Ersetzen Sie {ButtonTextKey} durch Weiter und {transitionName} durch
toEnd.
Der Code der Seite müsste dann wie folgt aussehen (ohne die Workflow-StandardButtons, die am Ende noch eingefügt werden):
1
2
3
4
5
6
<% @
<% @
<% @
<% @
<% @
taglib
taglib
taglib
taglib
taglib
uri = " / WEB - INF / struts - bean . tld " prefix = " bean " % >
uri = " / WEB - INF / struts - html . tld " prefix = " html " % >
uri = " / WEB - INF / struts - logic . tld " prefix = " logic " % >
uri = " / WEB - INF / struts - tiles . tld " prefix = " tiles " % >
uri = " / WEB - INF / agorum . tld " prefix = " agorum " % >
32
Kapitel 3. Tutorial
7 < ti les : i m p o r t A t t r i b u t e / >
8 < tiles:insert page = " / workflow_module / editmasks / common /
T i l e W o r k f l o w M a i n S t a r t T a b . jsp " / >
9
10 <% -- Definieren eines Textes als Beschreibung --% >
11 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileText . jsp " >
12
< tiles:put name = " Description " > Erklärung: </ tiles:put >
13
< tiles:put name = " Text " > Dies ist eine Testmaske , dieser
Text kann zum Beispiel die Aktion innerhalb einer Maske
beschreiben ... </ tiles:put >
14 </ tiles:insert >
15
16 <% -- Abstand --% >
17 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileSpacer . jsp " / >
18
19 <% -- die Variable test testVariable1 zur Eingabe , als String
--% >
20 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileInputField . jsp " >
21
< tiles:put name = " Description " > Variable 1 </ tiles:put >
22
< tiles:put name = " Attribute " > attribute ( wf_testVariable1 ) </
tiles:put >
23
< tiles:put name = " Value " beanName = "
G e n e r i c E d i t M a s k A c t i o n F o r m " beanProperty = " attribute (
wf_testVariable1 ) " / >
24
< tiles:put name = " Required " > true </ tiles:put >
25 </ tiles:insert >
26
27 <% -- die Variable test testVariable2 zur Eingabe , nur Zahlen
zulassen und als Long speichern --% >
28 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileInputField . jsp " >
29
< tiles:put name = " Description " > Variable 2 </ tiles:put >
30
< tiles:put name = " Attribute " > attribute ( wf_testVariable2 ) </
tiles:put >
31
< tiles:put name = " Value " beanName = "
G e n e r i c E d i t M a s k A c t i o n F o r m " beanProperty = " attribute (
wf_testVariable2 ) " / >
32
< tiles:put name = " Required " > true </ tiles:put >
33
< tiles:put name = " ValidateRegExp " > /^\ d *$/ </ tiles:put >
34
< tiles:put name = " DataType " > Long </ tiles:put >
35 </ tiles:insert >
36
37 <% -- Abstand --% >
33
Kapitel 3. Tutorial
38 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileSpacer . jsp " / >
39 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileSpacer . jsp " / >
40
41 <% -- die Knoepfe --% >
42 < tiles:insert page = " / workflow_module / editmasks / tiles /
T i l e S t a r t W o r k f l o w B u t t o n s . jsp " / >
43
< tiles:insert page = " / workflow_module / buttons /
T i l e W o r k f l o w B u t t o n L e f t . jsp " >
44
< tiles:put name = " ButtonTextKey " > Weiter </ tiles:put >
45
< tiles:put name = " TransitionName " value = " toEnd " / >
46
< tiles:put name = " Validate " > true </ tiles:put >
47
</ tiles:insert >
48
49 < tiles:insert page = " / workflow_module / editmasks / tiles /
Ti l e E n d W o r k f l o w B u t t o n s . jsp " / >
50
51 < tiles:insert page = " / workflow_module / editmasks / common /
Ti l e W o r k f l o w M a i n E n d T a b . jsp " / >
In dieser Maske wird ein Textfeld definiert, welches eine kleine Beschreibung
enthält [Zeile 10-14]. Dann ein Eingabe-Feld für die Variable testVariable1 (das
ist die Variable, die zuvor per Aktion gesetzt werden soll). [Zeile 18-25]. Zusätzlich wird noch eine zweite Variable definiert testVariable2. Diese soll vom Datentyp Long sein und nur die Eingabe von Zahlen zulassen (gesteuert über die
Regular-Expression). [Zeile 27-35]. Zum Schluss wird noch ein Knopf definiert für
die Steuerung des Workflows (Weiter -Knopf) [Zeile 42-49]. Hier können mehrere
Knöpfe definiert werden, jeder für eine andere im Workflow definierte Transition.
Der Name der zu verwendenden Transition ist hier toEnd.
34
Kapitel 3. Tutorial
3.4.2. Installieren der Masken
Mit dem agorum Workflow Eclipse-Plugin können Sie das Überspielen dieser Dateien auf den Server einfach über die Web-Deploy-Funktionalität durchführen:
Hinweis: Die Funktion des direkten Überspielens der Dateien in die entsprechenden Verzeichnisse des Application-Servers ist nur verfügbar, wenn der JBoss-Server
in Betrieb ist.
Für die Installation der erzeugten Masken, sowie der Konfigurationsdateien ParameterController.xml und EditMaskController.xml und den Messages xx.properties-Dateien klicken Sie mit der rechten Maustaste auf den Projektordner und wählen im Kontextmenü den Eintrag agorum workflow → Deploy web
part.
Im nun erscheinenden Wizard (Abb. 3.27) belassen Sie die Felder Workflow project
base dir, Available projects und Workflow name so wie sie sind. Im Verzeichnisbaum im Feld Select files to deploy können Sie auswählen, welche Teile auf dem
Server installiert werden sollen. Wenn Sie den gesamten Webteil mit allen Masken,
Konfigurationsdateien und Messages xx.properties Dateien installieren wollen, belassen sie die Haken an dem Verzeichnisbaum, wie vorgegeben.
• Im Feld Server Name geben Sie den Namen oder die IP-Adresse des JBossServers an (in diesem Beispiel localhost).
• Im Feld Server Port geben Sie den Web-Port an (in diesem Beispiel
8080). Wird diese Angabe weggelassen versucht die Installer-Funktion eine Verbindung mit http://<IHR-SERVERNAME>/roiwebui/WebmaskUpload herzustellen, im anderen Fall mit http://<IHR-SERVERNAME>:<PORT>/roiwebui/
WebmaskUpload.
• Die Angabe im Feld Server Deployer sollte verändert werden.
Führen Sie eine Installation zum ersten mal aus, erscheint nach Klick auf die
Schaltfläche Finish eine Eingabeaufforderung (siehe Abb. 3.28), in der Sie sich als
roi-Benutzer anmelden müssen. Dies dient zur Feststellung, ob Sie berechtigt sind,
Dateien in die JBoss-Server-Verzeichnisse zu laden. Nach der Authentifizierung
in dieser Eingabeaufforderung sollten Sie die Meldung The web files were deployed successfully erhalten. Bei allen weiteren Installationsvorgängen während dieser
Server-Session erscheint diese Eingabeaufforderung nicht mehr.
35
Kapitel 3. Tutorial
Abbildung 3.27.: Installieren des web-Teils des Projekts auf dem Server
Abbildung 3.28.: Installieren des web-Teils, Login
Wenn Sie das Ganze von Hand durchführen wollen, kopieren Sie die beiden Verzeichnisse unterhalb von web (also WEB-INF und testworkflow module) nach
INSTALLATIONS- VERZEICHNIS- AGORUM- CORE/ jboss/ server/ default/
deploy/ roi.ear/ roiwebui.war (Zur Orientierung: dort gibt es bereits ein WEB-INF
Verzeichnis, einfach darüberkopieren).
36
Kapitel 3. Tutorial
3.4.3. Test des Workflows
Wenn Sie nun in agorum desk 4web die Workflows anzeigen, dann sehen Sie jetzt
Ihren Workflow: Testworkflow (TestWorkflow). (siehe Abbildung 3.29) Wenn Sie
als Administrator-User zum Beispiel roi angemeldet sind, dann können Sie hier
auch den diversen Workflows Rechte vergeben. So können Sie steuern, wer welchen
Workflow überhaupt sieht und starten kann.
Abbildung 3.29.: Ihr Test Workflow
Starten Sie diesen Workflow mit einem Klick auf den grünen Pfeil. Geben Sie eine
Beschreibung ein, zum Beispiel Der erste Testlauf und drücken Sie auf Speichern.
Daraufhin sollte in den ToDo’s oder in den Mitteilungen Ihre Maske erscheinen.
Öffnen Sie sie (falls nichts passiert, schauen Sie in Ihr Server-Log-File. Vermutlich
stimmt dann etwas nicht von den Namen her überein, also Definition des Workflows und der Einstellungen in den XML-Dateien). Wenn mehrere Personen in der
Gruppe GRP Demo definiert sind, dann müssen Sie die Maske noch annehmen.
Klicken Sie auf Annehmen. Wenn nur eine Person in GRP Demo eingetragen ist
(in der Standard-Installation ist dies so), dann wird die Maske direkt angenommen
und öffnet sich sofort. Sie sehen jetzt die von Ihnen gestaltete Maske, diese sollte
ungefähr so wie in Abbildung 3.30 aussehen
37
Kapitel 3. Tutorial
Abbildung 3.30.: Ansicht der definierten Maske
Sie sehen, dass bei Variable 1 bereits der Wert aus der Aktion eingetragen ist. Bei
Variable 2 sind nur Zahleneingaben möglich, tragen Sie irgendeine Zahl ein, zum
Beispiel 1234 und klicken Sie auf Weiter.
Da Ihr Prozess nur eine Maske definiert hatte, ist er nun bereits zu Ende.
3.4.4. Anzeige der Log-Informationen
Melden Sie sich als Benutzer roi an. Wählen Sie in der Schnellsuche Workflow aus
und suchen Sie nach TestWorkflow. Es sollte Ihr gerade fertig gestellter WorkfowProzess erscheinen. Klicken Sie ihn an. Es gibt nun den Reiter Protokoll. Zeigen
Sie diesen an. Das Protokoll zeigt Ihnen genau, was wann passiert ist. Und wie Sie
sehen können gibt es dort auch die Ausgabe aus Ihrer Test-Action: Testausgabe,
es wurde die Variable testVariable1 belegt, (siehe Abbildung 3.31)
38
Kapitel 3. Tutorial
Abbildung 3.31.: Protokoll des Workflows
Dieses Protokoll ist besonders hilfreich, wenn Sie auf der Suche nach Fehlern sind,
so können Sie ganz leicht Ausgaben in Ihre Workflow-Aktion integrieren.
3.5. Tutorial-Ende
Das wars nun mit dem Tutorial, Sie können nun anfangen, das Beispiel zu erweitern. Im folgenden Abschnitt werden nun noch einige weitergehenden Themen
angesprochen, wie zum Beispiel die Mehrsprachigkeit.
Für Informationen zum Definieren von Workflows und zur Verwendung der diversen jBPM Elemente, schauen Sie bitte auf der jBPM Webseite von JBoss vorbei:
http://www.jboss.org/jbossjbpm/docs/index.html
39
Kapitel 4.
Erweiterte Themen
4.1. Weitere Funktionen des agorum Workflow
Eclipse-Plugins
4.1.1. Erzeugen eines Installationspakets und dessen
Installation auf dem Server
Mit dem agorum Workflow Eclipse-Plugin haben Sie die Möglichkeit, für Ihren
Workflow ein Installationspaket als zip-File zu erstellen, mit dem Sie durch Entpacken ins JBoss-Verzeichnis den Workflow und alle seine Komponenten komfortabel installieren können.
Wichtig: Wollen Sie das erzeugte Zip-Archiv direkt auf dem Server installieren, muss der JBoss-Server in Betrieb sein!
Wollen Sie den Workflow, den sie erzeugt haben (d.h. die Prozessdefinition und die
erzeugten Java-Klassen) mitinstallieren, dann müssen Sie vorher eine *.jar-Datei
des zu installierenden Workflows erzeugen. Gehen Sie dabei wie folgt vor:
Öffnen Sie die Datei processdefintion.xml im Verzeichnis .../src jpdl mit dem
jBPM-Prozessdesigner. Im Tab Deployment gehen Sie nun genau so vor wie oben
beim Deployment des Workflows beschrieben, allerdings müssen Sie die Eintragungen unter Deployment Server Settings nicht machen, da das Deployment nur lokal
in eine *.jar-Datei erfolgt. Haken Sie deshalb unter Java Classes and Resources
nur den Ordner src java an. Unter Files and Folders haken Sie die 3 Einträge an.
In der Rubrik Local Save Settings setzen Sie den Haken bei Save Process Archive Locally. Im Feld Location navigieren Sie ins Projektverzeichnis ins Verzeichnis
deployment und geben hier den Namen der Archivdatei ein: Im obigen Beispiel
40
Kapitel 4. Erweiterte Themen
z.B. testworkflow.jar. Klicken Sie auf die Schaltfläche Save without deploying....
Die Archivdatei befindet sich jetzt im Unterverzeichnis deployment des Projektes
(vgl. Abb. 4.1).
Abbildung 4.1.: Lokale Installation des Prozessarchivs
Für die Installation wählen Sie dann das Projekt in Eclipse im Package Explorer
aus, für das Sie das Installationspaket erstellen wollen. Mit einem Rechtsklick
öffnen Sie das Kontextmenü zum Projekt und wählen dann agorum workflow →
Install workflow (Abb 4.2).
Im nun erscheinenden Wizard belassen Sie das Feld Project base directory und das
Feld Workflow name. Im Feld Version können Sie die Version des Installationspakets angeben. Wenn Sie dieses Feld leer lassen, wird die Version 1.0.0 verwendet.
Setzen Sie das Häkchen bei Install Update, wenn Sie in Ihrem Projekt eine Klasse fürs Autoupdate haben, die z.B die automatische Installation des Workflows
durchführt und/oder Resourcen in das System lädt.
Möchten Sie das Installationspaket nur lokal in einem Verzeichnis ablegen, dann
setzen Sie das Häkchen bei Save zip file only locally (no deploy on server). Hierbei wird das Zip-Installationspaket erzeugt und in einem Verzeichnis ihrer Wahl
(Auswahl im Feld Location) abgelegt, die Installation auf dem Server wird dabei
automatisch gesperrt.
Soll das Installationspaket direkt auf dem Server installiert werden, müssen die
drei folgenden Felder unbedingt ausgefüllt sein:
Im Feld Server Name geben Sie den Namen oder die IP-Adresse des JBoss-Servers
an. Im Feld Server Port geben Sie den Port des Servers an (Per default 8080), was
41
Kapitel 4. Erweiterte Themen
sich aber von Ihrer Server-Installation unterscheiden kann. Ist keine Portangabe
nötig, lassen Sie dieses Feld einfach leer. Im Feld Server Deployer lassen Sie die
Angabe so stehen, dies ist der Pfad zum Upload-Servlet. Klicken Sie auf die Schaltfläche Finish. Wenn Sie auf dem System noch nicht angemeldet waren, erscheint
eine Eingabeaufforderung, in der Sie sich als Benutzer roi und dem entsprechenden
Passwort anmelden müssen. Ist die Anmeldung korrekt, erhalten Sie bei erfolgreichem Installationsvorgang die Meldung The workflow was deployed successfully.
Abbildung 4.2.: Menü zum Installieren des Gesamtworkflows
Abbildung 4.3.: Wizard zum Installieren des Gesamtworkflows
42
Kapitel 4. Erweiterte Themen
Abbildung 4.4.: Installierter Workflow, Meldung
4.1.2. Erzeugen eines Timephased Action Scripts
Mit Timephased Actions können in desk4Web automatische Aktionen gestarted
werden, wenn ein bestimmtes Ereignis eintritt, wie zum Beispiel der Eingang eines Dokluments in einen bestimmten Ordner. Ist die Timephased Action für einen
bestimmten Workflow definiert und auf einen bestimmten Ordner gesetzt worden
(geht nur als roi - Benutzer), dann wird der entsprechende Workflow, der in dieser Timephased Action definiert wurde automatisch gestartet sobald ein Objekt
der in der Timphased Action definierten Objekt-Typen in den Ordner eingeht.
Dabei wird das Objekt(z.B. ein Dokument) an den Workflow als Attachment angehängt.
Um eine solche Timephased-Action erstellen zu können, verfügt das agorum core
Eclipse-Plugin über die Funktion Create timephased action script. Diese Funktion erreichen Sie im Package Explorer über das Kontextmenü des ausgewählten
Projektes über agorum workflow → Create Timephased Action Script for Workflow. Im nun erscheinenden Wizard sind die wichtigsten Felder schon vorausgefüllt
(Abb. 4.5). Sie können diese Felder natürlich nach Ihrem eigenen Namensschema
benennen.
Im Feld Specify filename for script steht schon ein Dateinamen als Vorschlag für
die zu erzeugende xml-Datei. Sie können dort natürlich auch einen eigenen Namen
vergeben, achten Sie aber darauf, dass die Dateiendung *.xml ist. Geben Sie im
Feld Start action Text key den Textkey aus einer Messages xx.properties oder
Klartext ein. Dies ist ein Text für den internen Gebrauch. Geben Sie im Feld
Set action Text key den Textkey aus einer Messages xx.properties oder Klartext
ein. Dies ist der Text der z.B. beim Setzen der Action auf den betreffenden Ordner
43
Kapitel 4. Erweiterte Themen
angewendet wird. D.h. wollen Sie eine Timphased Action setzen, wählen Sie bei der
Bearbeitung des Ordners diesen Eintrag in der Combobox im Reiter Zeitgesteuerte
Aktionen aus. Geben Sie im Feld Description of action eine Beschreibung ein,
die der Workflow erhält, wenn er gestartet wird. (Enspricht der Beschreibung,
die Sie eingeben, wenn der Workflow manuell aus der Workflow-Liste gestartet
wird). Das Feld Class names (Comma-separated) ist schon vorausgefüllt mit den
beiden am Häufigsten benutzten Klassen für Timephased Actions, FileObject und
MailObject, für die der Workflow gestarted werden soll. Hier können Sie entweder
andere Klassennamen eintragen oder weitere hinzufügen.
Nach Klick auf die Schaltfläche Finish wird die XML-Datei erzeugt, die alle Angaben für die Timephased Action enthält. Diese Datei könen Sie nun über XMLUpload in agorum core parsen lassen, oder Sie kopieren diese Datei einfach in ein
FTP-Laufwerk, das mit agorum core verbunden ist.
Abbildung 4.5.: Wizard zum Anlegen eines Timephased Action Scripts
4.1.3. Projekt umbenennen
Um ein Projekt umzubenennen, wählen Sie das Projekt aus und öffnen mit einem
Rechtsklick mit der Maus im Package Explorer das Kontextmenü und wählen die
Menüeinträge agorum Workflow → Rename project. Im folgenden Wizard (Abb.
4.6) werden die Felder Base directory of workflow und Old project name schon
vorausgefüllt, diese Felder sollten Sie so belassen, wie sie sind. Tragen Sie im Feld
New project name den von Ihnen gewünschten neuen Namen und im Feld New
module name den neuen Modulnamen (der Namen mit denen die Verzeichnisse
der Masken, der Konfigurationsdateien und der Messages xx.properties-Dateien
44
Kapitel 4. Erweiterte Themen
benannt werden) des Workflows ein. Nachdem Sie mit Finish bestätigt haben,
wird das Projekt, die entsprechenden Modulverzeichnisse, das Package in dem
die processdefintion.xml liegt, sowie der Prozessname in der processdefinition.xml
umbennannt.
Abbildung 4.6.: Wizard zum Umbenennen eines Workflow-Projektes
Warnung: Wenn Sie das Projekt umbenennen wollen, müssen Sie sicherstellen, dass das Projekt und seine Dateien und Verzeichnisse in keinem
anderen Programm mehr geöffnet sind, andernfalls kann es zu irreparablen Datenverlusten oder zum Verlust des gesamten Projektinhaltes
kommen!
4.1.4. EA-Designer-Maske importieren
Hinweis:Zum EA-Designer und die Erstellung von Masken mit dem EA-Designer
siehe auch im Administrationshandbuch das Kapitel EADesigner - Masken für
Erweiterte Attribute.
Um eine Maske zu importieren, die im EA-Designer erstellt wurde, gehen Sie auf
das Projekt im Package Explorer, in das die Datei für den EA-Designer-Import
eingefügt werden soll. Öffnen Sie mit einem Rechtsklick der Maus auf das Projekt
das Kontextmenü und wählen Sie den Menüpunkt agorum Workflow → Import
EA-Designer definition. In diesem Wizard (abb. 4.7) müssen Sie im Feld Host name
or address den Namen oder die IP-Adresse, gegebenenfalls mit Angabe des Ports,
des Servers auf dem agorum core läuft eintragen. In die Felder Username und
Password geben Sie Ihren Benutzernamen und Ihr Passwort, mit denen Sie sich
bei agorum desk4web anmelden, ein. Klicken Sie nun auf die Schaltfläche Connect.
45
Kapitel 4. Erweiterte Themen
Im Listenfeld EA-Designer masks werden Ihnen alle EA-Designer-Masken angezeigt die auf dem System definiert wurden. Wählen Sie die Maskendefinition aus,
die Sie in Ihr Projekt importieren möchten. Geben Sie Im Feld Filename of created def-file einen Dateinamen mit vollständigem Pfad an oder Klicken Sie auf die
Schaltfläche Browse.... Der Dateiauswahl-Dialog öffnet sich automatisch im resources-Verzeichnis des entsprechenden Projektes. Geben Sie nun einen beliebigen
Dateinamen mit der Endung *.def ein und klicken auf die Schaltfläche Open. Der
komplette Pfad der Datei wird nun in das Feld Filename of created def-file eingetragen. Beenden Sie den Dialog mit Finish. Im von Ihnen gewählten Verzeichnis wird
nun eine *.def und *.xml-Datei mit dem von Ihnen angegebenen Namen angelegt.
Mit der xml-Datei können Sie durch parsen im FTP-Laufwerk oder Einzelupload
die gewünschte Maske auf ihrem System erzeugen und in Ihre Masken einbinden.
Abbildung 4.7.: Wizard zum Import einer EA-Designer-Maske
4.1.5. Konvertieren einer *.def-Datei in eine *.xml-Datei
Der umgekehrte Weg wie oben beschrieben, ist der, eine *.def Datei von Hand
zu erstellen und diese dann in eine von agorum core parsbare *.xml-Datei umzuwandeln. Öffnen Sie hierzu mit einem Rechtsklick mit der Maus auf die markierte
*.def-Datei in Ihrem Projekt das Kontextmenü des Package Explorers und wählen
dann agorum Workflow → Convert metadb def-file (Abb. 4.8). Im sich öffnenden
Wizard sind die Felder Path of *.def-File und Path of *.xml File schon vorausgefüllt. Für die erzeugte *.xml-Datei können Sie selbstverständlich einen anderen
Pfad und einen anderen Namen vergeben (Abb. 4.9). Klicken Sie nun auf Finish, wird die *.def-Datei in eine *.xml-Datei konvertiert und im Dateisystem im
gewählten Verzeichnis abgelegt.
46
Kapitel 4. Erweiterte Themen
Abbildung 4.8.: Menü zum Konvertieren einer *.def-Datei
Abbildung 4.9.: Wizard zum Konvertieren einer *.def-Datei
4.2. Mehrsprachigkeit
Die Mehrsprachigkeit dient dazu, Workflows, Masken und auch Variablen in die
jeweilige Sprache, in der agorum desk 4web für den jeweils angemeldeten Benutzer
läuft, zu übersetzen.
4.2.1. Übersetzungsschlüssel in den Masken und Workflows
Wie bereits im Tutorial erwähnt können anstelle von Texten auch Textschlüssel
verwendet werden. Tragen Sie zum Beispiel in der Beschreibung des Workflows
47
Kapitel 4. Erweiterte Themen
folgenden Textschlüssel ein: agorum.workflow.testworkflow.Description(siehe Abbildung 4.10)
Abbildung 4.10.: Beschreibung des Workflows als Textschlüssel eintragen
Installieren (Deployment) Sie diesen geänderten Workflow wieder in agorum core.
Erstellen Sie zwei Dateien unterhalb Ihres Projektes: unter ../ testworkflow/
web/ WEB-INF/ config/ messages/ testworkflow module eine Datei Messages de.properties und eine Datei Messages en.properties. Die eine für Deutsch, die
andere für Englisch. Achten Sie auf Groß-/Kleinschreibung.
Tragen Sie in der Messages de.properties folgendes ein:
1
agorum . workflow . testworkflow . Description = Übersetzt : der
Testworkflow
und in Messages en.properties
1
agorum . workflow . testworkflow . Description = Translated : the
Testworkflow
Kopieren Sie die gesamte Struktur mit diesen Dateien wieder in das Verzeichnis
INSTALLATIONS- VERZEICHNIS- AGORUM- CORE/ jboss/ server/ default/
deploy/ roi.ear/ roiwebui.war und starten Sie agorum core neu.
48
Kapitel 4. Erweiterte Themen
Wenn Sie jetzt die Workflow-Liste wieder aufrufen, dann sehen Sie je nach eingestellter Sprache die jeweilige Übersetzung.
Der verwendete Textschlüssel ist hier nur ein Vorschlag. Es ist jedoch empfehlenswert, um hier nicht in Konflikt mit anderen Workflows zu geraten, den Namen des
Workflows immer mit in den Schlüssel einfließen zu lassen. Das Ergebnis sollte so
aussehen, wie in Abbildung 4.11:
Abbildung 4.11.: Die übersetzte Workflow-Beschreibung
4.2.2. Übersetzung von Variablenamen und Werten
Es ist auch möglich, die Variablennamen zu übersetzen. Das ist gerade dann sinnvoll, weil die Namen selbst eher zu technisch klingen, als dass sie für den Benutzer
verständlich wären. In unserem Beispiel möchten wir die beiden Variablen aus
dem Tutorial testVariable1 und testVariable2 gerne übersetzen in Variable 1 und
Variable 2
Tragen Sie dazu in der Datei Messages de.properties folgendes ein:
1
2
agorum . workflow . attributes . testworkflow . testVariable1 =
Variable 1
agorum . workflow . attributes . testworkflow . testVariable2 =
Variable 2
und in die Englische Messages en.properties:
1
2
agorum . workflow . attributes . testworkflow . testVariable1 =
Variable 1
agorum . workflow . attributes . testworkflow . testVariable2 =
Variable 2
49
Kapitel 4. Erweiterte Themen
Sie müssen dabei unbedingt die Namens-Konvention einhalten, also:
1
agorum . workflow . attributes . Ihr Workflowname ( alles klein ) .
Variablenname
Starten Sie agorum core nun neu und melden Sie sich als roi an. Suchen Sie
einen Ihrer beendeten Workflows und zeigen Sie die Maske an. Im Reiter Metadaten
können Sie nun schön sehen, wie die Variablen übersetzt wurden. (siehe Abbildung
4.12)
Abbildung 4.12.: Übersetzte Variablen
Es lassen sich sogar auch Werte übersetzen, zum Beispiel, wenn Sie irgendwelche
Status-Informationen setzen. Beim Freigabe-Workflow ist das zum Beispiel so, da
gibt es die Variable workflowApprovalState. Diese kann entweder den Wert approved oder rejected besitzen. Damit dieser Wert sprachabhängig übersetzt wird,
wurde folgendes in die Messages de/en.properties eingetragen:
1
2
3
agorum . workflow . attributes . approvalworkflow . approvalstate .
IsTranslated = true
agorum . workflow . attributes . approvalworkflow . approvalstate .
approved = Freigegeben
agorum . workflow . attributes . approvalworkflow . approvalstate .
rejected = Abgelehnt
Also erstmal, dass die Variable überhaupt übersetzt werden soll (IsTranslated=true) und dann die jeweiligen Übersetzungen für die jeweiligen Werte. Der
Aufbau ist dabei fest vorgegeben:
50
Kapitel 4. Erweiterte Themen
1
2
3
agorum . workflow . attributes . Ihr Workflowname ( alles klein ) .
Variablenname ( alles klein ) . IsTranslated = true
agorum . workflow . attributes . Ihr Workflowname ( alles klein ) .
Variablenname ( alles klein ) . Wert1 = Übersetzung 1
agorum . workflow . attributes . Ihr Workflowname ( alles klein ) .
Variablenname ( alles klein ) . Wert2 = Übersetzung 2
4.2.3. Zum Schluss
Bei allen Elementen, bei denen es möglich ist, eine Übersetzung zu definieren,
wurde dies im Tutorial erwähnt.
4.3. Möglichkeiten der Maskengestaltung
Es gibt einige Elemente, mit denen Sie Ihre Masken gestalten können, diese werden
nun folgend hier kurz gezeigt. Im Beispiel haben Sie ja bereits Buttons, Text und
Eingabefeld kennengelernt. Im mitgelieferten Test-Workflow finden Sie im Unterverzeichnis docs eine Datei maskelements.jsp, dort sind alle Maskenelemente als
listing vorhanden und Sie können Sie einfach übernehmen.
4.3.1. Text-Ausgabe
1 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileText . jsp " >
2
< tiles:put name = " Description " > Beschreibung: </ tiles:put >
3
< tiles:put name = " Text " > Der Text , der ausgegeben werden
soll , oder ein Wert einer Variable: < agorum:writeBR
name = " G e n e r i c E d i t M a s k A c t i o n F o r m " property = " attribute (
wf_testVariable1 ) " / > , oder ein Text aus der
Übersetzung: < bean:message key = " agorum . workflow .
attributes . testworkflow . testVariable1 " / > </ tiles:put >
4 </ tiles:insert >
4.3.2. Eingabe-Feld, Einzeilig
51
Kapitel 4. Erweiterte Themen
1 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileInputField . jsp " >
2
< tiles:put name = " Description " > Variable 1 </ tiles:put >
3
< tiles:put name = " Attribute " > attribute ( wf_testVariable1 ) </
tiles:put >
4
< tiles:put name = " Value " beanName = "
G e n e r i c E d i t M a s k A c t i o n F o r m " beanProperty = " attribute (
wf_testVariable1 ) " / >
5
< tiles:put name = " Required " > true </ tiles:put >
6
< tiles:put name = " ValidateRegExp " > /^\ d *$/ </ tiles:put >
7
< tiles:put name = " DataType " > Long </ tiles:put >
8 </ tiles:insert >
4.3.3. Eingabe-Feld, Mehrzeilig
1 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileTextArea . jsp " >
2
< tiles:put name = " Description " > Variable 1 </ tiles:put >
3
< tiles:put name = " Attribute " > attribute ( wf_testVariable1 ) </
tiles:put >
4
< tiles:put name = " Value " beanName = "
G e n e r i c E d i t M a s k A c t i o n F o r m " beanProperty = " attribute (
wf_testVariable1 ) " / >
5
< tiles:put name = " Required " > true </ tiles:put >
6 </ tiles:insert >
4.3.4. Datum
1 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileDate . jsp " >
2
< tiles:put name = " Description " > Datumstest: </ tiles:put >
3
< tiles:put name = " Attribute " > attribute ( wf_dateTest ) </
tiles:put >
4
< tiles:put name = " Value " beanName = "
G e n e r i c E d i t M a s k A c t i o n F o r m " beanProperty = " attribute (
wf_dateTest ) " / >
5
< tiles:put name = " Required " > true </ tiles:put >
6 </ tiles:insert >
52
Kapitel 4. Erweiterte Themen
4.3.5. Drop-Down-Box
Werte direkt vorgeben:
1 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileDropDown . jsp " >
2
< tiles:put name = " Description " > Drop - Downtest: </ tiles:put >
3
< tiles:put name = " Attribute " > attribute ( wf_dropDownTest ) </
tiles:put >
4
< tiles:put name = " Value " beanName = "
G e n e r i c E d i t M a s k A c t i o n F o r m " beanProperty = " attribute (
wf_dropDownTest ) " / >
5
< tiles:putList name = " listValues " >
6
< tiles:add value = " 111 " / >
7
< tiles:add value = " 222 " / >
8
< tiles:add value = " 333 " / >
9
</ tiles:putList >
10
< tiles:putList name = " listTexts " >
11
< tiles:add value = " Text1 " / >
12
< tiles:add value = " Text2 " / >
13
< tiles:add value = " Text3 " / >
14
</ tiles:putList >
15 </ tiles:insert >
Werte aus der MetaDB laden:
1 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileDropDown . jsp " >
2
< tiles:put name = " Description " > Drop - Downtest: </ tiles:put >
3
< tiles:put name = " Attribute " > attribute ( wf_dropDownTest ) </
tiles:put >
4
< tiles:put name = " Value " beanName = "
G e n e r i c E d i t M a s k A c t i o n F o r m " beanProperty = " attribute (
wf_dropDownTest ) " / >
5
< tiles:put name = " MetaDbKey " > M A I N _ M O D U L E _ M A N A G E M E N T /
desk4web / address / control / C o u nt r i es O p ti o n Li s t </ tiles:put
>
6 </ tiles:insert >
4.3.6. Checkbox
1 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileCheckBox . jsp " >
53
Kapitel 4. Erweiterte Themen
2
< tiles:put name = " Description " > Checkbox & nbsp ; Test </
tiles:put >
3
< tiles:put name = " Attribute " > attribute ( wf_checkboxTest ) </
tiles:put >
4
< tiles:put name = " Value " beanName = "
G e n e r i c E d i t M a s k A c t i o n F o r m " beanProperty = " attribute (
wf_checkboxTest ) " / >
5 </ tiles:insert >
4.3.7. EADesigner
Eine mit dem EADesigner entworfene Maske kann in eine Workflowmaske integriert
werden:
1 < tiles:insert page = " / ea design er_mod ule / editmasks / tiles /
Ti l e D e s i g n e d A t t r i b u t e s . jsp " >
2
< tiles:put name = " E A D e s i g n e r C o n f i g u r a t i o n N a m e " >
EADe signer _Sampl e </ tiles:put >
3 </ tiles:insert >
4.3.8. Abstand
1 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileSpacer . jsp " / >
4.3.9. Horizontale Linie
1 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileRuler . jsp " / >
4.3.10. Knöpfe für Transitions
1 < tiles:insert page = " / workflow_module / editmasks / tiles /
T i l e S t a r t W o r k f l o w B u t t o n s . jsp " / >
2
< tiles:insert page = " / workflow_module / buttons /
T i l e W o r k f l o w B u t t o n L e f t . jsp " >
54
Kapitel 4. Erweiterte Themen
3
4
5
6
7
8
9
10
11
12
13
< tiles:put name = " ButtonTextKey " > Step1 </ tiles:put >
< tiles:put name = " TransitionName " value = " Step1 " / >
< tiles:put name = " Validate " > true </ tiles:put >
</ tiles:insert >
< tiles:insert page = " / workflow_module / buttons /
T i l e W o r k f l o w B u t t o n L e f t . jsp " >
< tiles:put name = " ButtonTextKey " > Step2 </ tiles:put >
< tiles:put name = " TransitionName " value = " Step2 " / >
< tiles:put name = " Validate " > true </ tiles:put >
</ tiles:insert >
< tiles:insert page = " / workflow_module / editmasks / tiles /
Ti l e E n d W o r k f l o w B u t t o n s . jsp " / >
4.3.11. Benutzersuche
1 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileUserSearch . jsp " >
2
< tiles:put name = " Description " > Assign & nbsp ; User: </ tiles:put
>
3
< tiles:put name = " Attribute " > attribute (
w f _ h i d d e n _ a s s i g n e d U s e r T e s t ) </ tiles:put >
4
< tiles:put name = " Value " beanName = "
G e n e r i c E d i t M a s k A c t i o n F o r m " beanProperty = " attribute (
wf_hidden_assignedUserTest )"/>
5
< tiles:put name = " Required " > true </ tiles:put >
6 </ tiles:insert >
4.3.12. Spezial-Ordner-Suche
1 < tiles:insert page = " / roiwebui_module / editmasks / tiles /
TileCommonSearch . jsp " >
2
< tiles:put name = " Description " > < bean:message key = " agorum .
workflow . reklaworkflow . a s s ig n t op r o je c t fi l e . SearchFolder
" / > </ tiles:put >
3
< tiles:put name = " Attribute " > attribute (
w f _ h i d d e n _ d e s t i n a t i o n F o l d e r I d ) </ tiles:put >
4
< tiles:put name = " Value " beanName = "
G e n e r i c E d i t M a s k A c t i o n F o r m " beanProperty = " attribute (
wf_hidden_destinationFolderId )"/>
5
< tiles:put name = " SearchQuery " > ((((( a n c e s t o r s : f o l d e r o b j e c t
AND ( description: (( sf8 ) $$ QUERY $$) ) ) ) ) ) ) </ tiles:put >
55
Kapitel 4. Erweiterte Themen
6
< tiles:put name = " Required " > true </ tiles:put >
7 </ tiles:insert >
4.3.13. Liste der Aktivitäten anzeigen
Zeit eine Liste aller Aktivitäten zum gewählten Workflow an (wie bei der InstanzMaske)
1 <% -- Activity - Liste --% >
2 < tiles:insert page = " / workflow_module / editmasks / tiles /
TileActivityList . jsp " >
3
< tiles:put name = " DisplayHeight " > 300 </ tiles:put >
4 </ tiles:insert >
4.3.14. Nach oben springen
Erzeut einen Link, um in der Ansichtsmaske wieder nach oben zu gelangen
1 <% -- Jump - Top --% >
2 < tiles:insert page = " / workflow_module / editmasks / tiles /
TileJumpTop . jsp " / >
4.3.15. Zu Aktivitäten springen
Erzeut einen Link, um zur Aktivitäten Liste zu springen
1 <% -- Jump - Activities --% >
2 < tiles:insert page = " / workflow_module / editmasks / tiles /
Tile Ju mp Ac ti vi ti es . jsp " / >
4.3.16. Zu Anhängen springen
Erzeut einen Link, um zu den Anhang-Ansichten zu gelangen
56
Kapitel 4. Erweiterte Themen
1 <% -- Jump - Attachment - Views --% >
2 < tiles:insert page = " / workflow_module / editmasks / tiles /
T il e J u m p A t t a c h m e n t V i e w s . jsp " / >
4.3.17. Zu Anhänge-Liste springen
Erzeut einen Link, um zur Anhangs-Liste zu gelangen
1 <% -- Jump - Attachment - List --% >
2 < tiles:insert page = " / workflow_module / editmasks / tiles /
T il e J u m p A t t a c h m e n t s L i s t . jsp " / >
4.3.18. Anhangs-Liste darstellen
Zeigt eine Liste von Anhängen zu diesem Workflow an
1 <% -- Attachment - Liste --% >
2 < tiles:insert page = " / workflow_module / editmasks / tiles /
Til e A tt a c hm e n t sL i s t . jsp " >
3
< tiles:put name = " DisplayHeight " > 300 </ tiles:put >
4 </ tiles:insert >
4.3.19. Anhang-Schnellansicht (Einzelelement)
Zeigt den ersten anzeigbaren Anhang als Schnellansicht an (funktioniert bei Mail,
Forum, Wiki und Adresse)
1 <% -- QuickView Element --% >
2 < tiles:insert page = " / workflow_module / editmasks / tiles /
T i l e A t t a c h m e n t s V i e w S i n g l e . jsp " >
3
< tiles:put name = " DisplayHeight " > 300 </ tiles:put >
4
< tiles:put name = " Number " >0 </ tiles:put >
5 </ tiles:insert >
57
Kapitel 4. Erweiterte Themen
4.3.20. Anhang-Schnellansicht (Alle)
Zeigt alle anzeigbaren Anhänge als Schnellansicht an (funktioniert bei Mail, Forum,
Wiki und Adresse)
1 <% -- QuickView Element --% >
2 < tiles:insert page = " / workflow_module / editmasks / tiles /
Ti l e A t t a c h m e n t s V i e w A l l . jsp " >
3
< tiles:put name = " DisplayHeight " > 300 </ tiles:put >
4 </ tiles:insert >
4.3.21. Untere Buttonleiste ändern
In der EditMaskController.xml (siehe Kapitel 4.5.1) können Sie für jede Maske
über das Tag <ButtonTile> die untere Buttonleiste der Maske ändern. Folgende
Tiles stehen zur Verfügung:
• /workflow_module/editmasks/common/TileWorkflowButtons.jsp:
Button-Tile mit den Buttons für Workflow annehmen (links), Workflow abgeben (links), Workflow zwischenspeichern (links) und Abbrechen (rechts)
• /workflow_module/editmasks/common/TileWorkflowButtonsAbort.jsp:
Button-Tile mit dem Button für Abbrechen (rechts)
• /workflow_module/editmasks/common/TileWorkflowButtonsControl.jsp:
Button-Tile mit den Buttons für Workflow annehmen (links), Workflow abgeben (links) und Workflow zwischenspeichern (links)
• /workflow_module/editmasks/common/TileWorkflowButtonsNone.jsp:
Button-Tile mit keinen Buttons
4.4. Erstellen eines Parameters zur direkten
Ansteuerung von Workflows
Über einen ParameterController Eintrag kann ein Workflow direkt aus einem
Menü oder einem Wiki gestartet werden. Dazu muss ein Eintrag in der ParameterController.xml für des Workflows angelegt werden. Folgend ein Beispiel:
58
Kapitel 4. Erweiterte Themen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
< Par a m et e r Co n t ro l l er >
< Identifier > parameter . workflow . St artTes tWorkf low </
Identifier >
< Action > B a c k g r o u n d P r o c e s s A c t i o n </ Action >
< Parameters >
< Parameter >
< Name > FolderAccess </ Name >
< Value > AddItem </ Value >
</ Parameter >
< Parameter >
< Name > WithoutObjectId </ Name >
< Value > true </ Value >
</ Parameter >
< Parameter >
< Name > Mes sageWi ndowT ext </ Name >
< Value > Workflow wird gestartet , moment bitte ... </
Value >
</ Parameter >
< Parameter >
< Name > Action </ Name >
< Value >/ workflow_module / a u t o S t a r t W o r k f l o w A c t i o n . do </
Value >
</ Parameter >
</ Parameters >
< TransParameters >
< Parameter >
< Name > defName </ Name >
< Value > TestWorkflow </ Value >
</ Parameter >
< Parameter >
< Name > description </ Name >
< Value > TestWorkflow gestartet mit Parameter </ Value >
</ Parameter >
</ TransParameters >
</ Par a m et e r Co n t ro l l er >
Der
Eintrag
bedeutet,
dass,
wenn
der
Befehl
parameter.workflow.StartTestWorkflow über zum Beispiel ein Menü (oder auch ein
Wiki) aufgerufen wird, dann wird der Workflow TestWorkflow mit der Beschreibung TestWorkflow gestartet mit Parameter gestartet. Als Ergebnis erhält man,
wenn man den Workflow auf diese Weise startet, die erste Maske des Workflows.
Der Workflow ist dann bereits im gestarteten Zustand. Man überspring somit die
Auswahl des Workflows, sowie die Eingabe der Beschreibung (diese sind durch die
Angaben in der XML vorgegeben).
59
Kapitel 4. Erweiterte Themen
Um jetzt Beispielsweise den oben genannten Workflow direkt aus einem Wiki zu
starten kann folgendes in das Wiki eingetragen werden:
1 < NoWiki >
2
<a href = " Jav aScrip t:pare nt . frames [ ’ controlFrame ’].
executeWithParam ( ’ parameter . workflow . StartTestWorkflow
’ , ’ ’) " > Klick , um TestWorkflow zu starten </ a >
3 </ NoWiki >
Klickt man nun auf den Link im Wiki, wird der angegebene Workflow gestartet
und sofort die erste Maske angezeigt.
4.5. Was Sie sonst noch wissen sollten
4.5.1. Die ParameterController.xml und
EditMaskController.xml
Legen Sie eine neue Maskendefinition an, werden die folgenden Eintragungen in
die ParameterController.xml und EditMaskController.xml vorgenommen.
Die ParameterController.xml
1 <? xml version = " 1.0 " encoding = " UTF -8 " ? >
2
3 < Co n tr o l l e r C o n f i g u r a t i o n >
4
< Man da to rI de nt if ie r > </ Man da to rI de nt if ie r >
5
6
< Par a m et e r Co n t ro l l er >
7
< Identifier > parameter . workflow . mask . TestWorkflow .
MyFirstTask </ Identifier >
8
< Action > OpenTabAction </ Action >
9
< Parameters >
10
< Parameter >
11
< Name > Action </ Name >
12
< Value >/ roiwebui_module / g e n e r i c E d i t M a s k L o a d A c t i o n . do
</ Value >
13
</ Parameter >
14
< Parameter >
15
< Name > ObjectIdRequired </ Name >
16
< Value > false </ Value >
60
Kapitel 4. Erweiterte Themen
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</ Parameter >
< Parameter >
< Name > Win dowDes cript ion </ Name >
< Value > Mein erster Task </ Value >
</ Parameter >
< Parameter >
< Name > TabDescription </ Name >
< Value > Task1 </ Value >
</ Parameter >
< Parameter >
< Name > WindowWidth </ Name >
< Value > 650 </ Value >
</ Parameter >
< Parameter >
< Name > WindowHeight </ Name >
< Value > 480 </ Value >
</ Parameter >
< Parameter >
< Name > OpenNewWindow </ Name >
< Value > true </ Value >
</ Parameter >
</ Parameters >
< TransParameters >
< Parameter >
< Name > editMaskName </ Name >
< Value > agorum . workflow . TestWorkflow . MyFirstTask </
Value >
</ Parameter >
</ TransParameters >
</ Par a m et e r Co n t ro l l er >
45
46
47
48
49 </ Co n t r o l l e r C o n f i g u r a t i o n >
Für jede definierte Maske wird solch ein Eintrag gemacht (also zwischen den
ParameterController -Blöcken). Im Feld Identifier steht der exakte Name Ihres
Workflows (TestWorkflow ) [Zeile 7] und der Namen des Tasks MyFirstTask. Bei
WindowDescription steht der Text für die Fensterbeschreibung [Zeile 18] dieses
Tasks und bei TabDescription [Zeile 22] für den Reiter im agorum desk 4web.
Sie können für diese zwei Werte auch Textkeys eintragen, welche Sie dann in den
message-Dateien für Mehrsprachigkeit übersetzen können. Bei WindowWidth [Zeile 28] und WindowHeight [Zeile 32] können Sie Fenstergrößen für die Clientfenster
vorgeben (falls die Masken ungewöhnlich groß sind zum Beispiel). Wichtig ist noch
61
Kapitel 4. Erweiterte Themen
der Wert editMaskName [Zeile 43], hier wird ebenfalls der Name des Workflows
und der Name des Tasks eingetragen.
Nochmal zusammengefasst: Es wird für jede Maske ein solcher ParamterController -Block angelegt und folgende Werte eingetragen (es stehen dann mehrere solcher
Blöcke in dieser XML-Datei):
Identifier: parameter.workflow.mask.NameDesWorkflows.NameDesTasks
7]
[Zeile
WindowDescription: Beschreibung des Fensters im agorum desk 4web [Zeile 18]
TabDescription: Beschreibung des Reiters im agorum desk 4web [Zeile 22]
editMaskName: agorum.workflow.NameDesWorkflows.NameDesTasks [Zeile 43]
Die EditMaskController.xml
1 <? xml version = " 1.0 " encoding = " UTF -8 " ? >
2
3 < Co n tr o l l e r C o n f i g u r a t i o n >
4
< Man da to rI de nt if ie r > </ Man da to rI de nt if ie r >
5
6
< Edi tM as kC on tr ol le r >
7
< Name > agorum . workflow . TestWorkflow . MyFirstTask </ Name >
8
< MainTile >/ workflow_module / editmasks / common /
T i l e W o r k f l o w D e f a u l t M a i n S t a r t . jsp </ MainTile >
9
< ButtonTile >/ workflow_module / editmasks / common /
T il e W or k f lo w B ut t o ns . jsp </ ButtonTile >
10
< Tabs >
11
< Tab >
12
< TextKey > Task Nummer 1 </ TextKey >
13
< TabLoadAction > agorum . workflow . editmasks . common .
actions . W o r k f l o w D e f a u l t M a i n T a b L o a d A c t i o n </
TabLoadAction >
14
< TabSaveAction > agorum . workflow . editmasks . common .
actions . W o r k f l o w D e f a u l t M a i n T a b S a v e A c t i o n </
TabSaveAction >
15
< TabTile >/ te s t w or k f lo w _ mo d u le / editmasks / testworkflow
/ T i l e M y F i r s t T a s k M a i n T a b . jsp </ TabTile >
16
< TabActive > true </ TabActive >
17
</ Tab >
18
< Tab >
62
Kapitel 4. Erweiterte Themen
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
< TextKey > agorum . workflow . editmask . att ac hm en ts ta be di t
. Attachments </ TextKey >
< TabLoadAction > agorum . workflow . editmasks .
at ta ch me nt st ab ed it . actions .
A t t a c h m e n t s T a b L o a d A c t i o n </ TabLoadAction >
< TabSaveAction > agorum . workflow . editmasks .
at ta ch me nt st ab ed it . actions .
A t t a c h m e n t s T a b S a v e A c t i o n </ TabSaveAction >
< TabTile >/ workflow_module / editmasks /
at ta ch me nt st ab ed it / Ti le At ta ch me nt sT ab . jsp </
TabTile >
< TabActive > false </ TabActive >
</ Tab >
< Tab >
< TextKey > agorum . workflow . editmask . att ac hm en ts ta bv ie w
. Attachments </ TextKey >
< TabLoadAction > agorum . workflow . editmasks .
at ta ch me nt st ab vi ew . actions .
A t t a c h m e n t s T a b L o a d A c t i o n </ TabLoadAction >
< TabSaveAction > agorum . workflow . editmasks .
at ta ch me nt st ab vi ew . actions .
A t t a c h m e n t s T a b S a v e A c t i o n </ TabSaveAction >
< TabTile >/ workflow_module / editmasks /
at ta ch me nt st ab vi ew / Ti le At ta ch me nt sT ab . jsp </
TabTile >
< TabActive > false </ TabActive >
</ Tab >
</ Tabs >
</ Edi tM as kC on tr ol le r >
</ Co n t r o l l e r C o n f i g u r a t i o n >
Auch hier gibt es für jede Maske, die Sie definieren, einen solchen EditMaskController -Eintrag. Wichtig ist hier lediglich der Name [Zeile 7], auch hier wird
wieder der Name des Workflows, sowie der Maskenname angegeben. Darunter
folgen die Tabs. Das sind die Reiter der einzelnen Masken, also die Haupteingabemaske, sowie die zwei Reiter für die Anhänge (zum Anhängen und zum
Anzeigen). Für Sie wichtig ist nun lediglich der erste Tab-Eintrag [Zeile 1117], er definiert die Haupt-Eingabemaske, die Sie gestalten möchten. Bei TextKey [Zeile 12] wird der Text eingetragen, der bei diesem Masken-Reiter erscheinen soll. Sie können hier Freitext oder einen Text-Schlüssel für die Übersetzung eingeben. Bei TabTile [Zeile 15] wird der Pfad zu Ihrer Maske (JSPDatei) eingetragen, die angelegt wurde. In unserem Beispiel ist dies: /testworkflow module/editmasks/testworkflow/TileMyFirstTaskMainTab.jsp
63
Kapitel 4. Erweiterte Themen
Nochmal zusammengefasst: Es wird für jede Maske ein solcher EditMaskController -Block angelegt und folgende Werte eingetragen (es stehen dann mehrere solcher
Blöcke in dieser XML-Datei):
Name: agorum.workflow.NameDesWorkflows.NameDesTasks [Zeile 7]
TextKey: Beschreibung für diesen Reiter in der Maske [Zeile 12]
TabTile: /Ihr-Projekt-Name module/editmasks/Ihr-Projekt-Name/TileIhrMasken-NameMainTab.jsp [Zeile 15]
Die Variablennamen, in denen die Werte gespeichert werden sollen bzw. von denen
die Werte geladen werden sollen, bekommen noch ein wf davor gehängt. Dieser
Prefix wird nur für die Masken verwendet. Innerhalb des Workflows lautet die
Variable testVariable1 bzw. testVariable2 in unserem Beispiel.
Was es noch für Masken-Bausteine gibt, wird weiter oben im Dokument beschrieben (siehe Kapitel 4.3).
4.5.2. Vordefinierte Variablen
Es gibt ein paar Standardvariablen, die beim Starten vom Workflow belegt werden.
ac initialPerformer: hier ist der Benutzer eingetragen, der den Workflow gestartet
hat
ac actualPerformer: hier ist der Benutzer eingetragen, der gerade aktiv ist (also
vom Knoten vorher)
ac sessionController: beinhaltet den SessionController (für die agorum core
API), des Users, der die Aktion gerade ausführt
ac sessionControllerAdmin: beinhaltet den SessionController eines Admin-Users
(i.d.R roi)
ac attachmentIds: enthält eine Komma-Separierte Liste aller angehängten Attachments
ac wfInstance: beinhaltet die Instanz des gerade laufenden Workflow-Objektes
64
Kapitel 4. Erweiterte Themen
ac autoStart: ist true, wenn dieser Workflow über eine Timephased-Action automatisch gestartet wurde
ac appointment: wenn diese Variable gesetzt wird (als Date), dann wird diese als
Termin für das Activity-Objekt gespeichert und somit zum Beispiel in der
Spalte Termin in der ToDo-Liste sichtbar
ac activitySeverity: diese Variable kann gesetzt werden (als String), um die Farblichkeit zu steuern. 0=neutral, 1=grün, 2=gelb, 3=rot. Damit lässt sich in
der ToDo-Liste schnell eine Dringlichkeit darstellen
ac hideWindow: wenn true gesetzt wird, dann wird das nächste anzuzeigende
Fenster nicht automatisch geöffnet (nach dem Abschließen der vorhergehenden Aktion)
ac defaultAccessGroup: Standardmäßig wird ein Workflow mit Privat-ACL gestartet und alle beteiligten Benutzer bekommen während dem Lauf die nötigen Rechte zugeteilt und behalten diese auch. Wenn ein Gruppenname in
ac defaultAccessGroup eingetragen ist, dann werden zusätzlich alle darin enthaltenen Benutzer ebenfalls mit zu dem Workflow berechtigt.
4.5.3. Hidden-Variablen
Normalerweise werden Änderungen an Variablen gespeichert und in der Oberfläche
bei der Ansicht des Workflows dargestellt und auch als Metadaten gespeichert.
Manchmal gibt es allerdings Variablen, die nicht an die Oberfläche gelangen sollen,
sondern lediglich technisch intern im Workflow genutzt werden sollen. Tragen Sie
einfach ein hidden vor den Variablennamen, dann werden diese Variablen nicht
angezeigt, also zum Beispiel: hidden testVariable1
4.5.4. Löschen einer Variable
Um einer Variable aus dem laufenden Workflow zu löschen folgend ein Beispiel:
1 arg0 . g et Co nt ex tI ns ta nc e () . deleteVariable ( " VariableName " ) ;
65
Kapitel 4. Erweiterte Themen
4.5.5. Suche nach Variablen
Sie können geziehlt nach den Variablen suchen, wenn Sie beim Workflow gespeichert wurden, die Suchsyntax ist dann folgende: testvariable1:Wert. Wichtig ist,
dass die Variable kleingeschrieben ist.
4.5.6. Timer-Nutzung für Zeitbasierte Workflows
Innerhalb von Workflows kann auch ein Timer programmiert werden. Timer funktionieren im Standard nicht 100%ig korrekt (vor allem, wenn man gerne mehr als
einen Timer pro Task definieren will), daher wird folgende Vorgehensweise empfohlen:
• Erstellen eines Events im Task: task-start
• In diesem Event: Aufrufen einer selbsterstellten Aktion, die manuell einen/mehrere Timer erstellet (Code-Beispiel siehe unten: SetTimerAction)
• soll ein Task durch ein Timer-Event beendet werden so muss das in den
Action-Handler (hier im Beispiel-Listing CustomTask ) für diesen Timer eingetragen werden.
1 ...
2 public class SetTimerAction extends A g o r u m B a s e A c t i o n H a n d l e r
{
3
...
4
5
public void executeInternal ( ExecutionContext arg0 ) throws
Exception {
6
...
7
A g o r u m S e t T i m e r A c t i o n H a n d l e r handler = new
A g o r u m S e t T i m e r A c t i o n H a n d l e r () ;
8
9
// create a custom action - delegation
10
Delegation delegation = new Delegation () ;
11
delegation . setClassName ( CustomTask . class . getName () ) ;
12
delegation . s e t P r o c e s s D e f i n i t i o n ( arg0 .
g e t P r o c e s s D e f i n i t i o n () ) ;
13
Action timerAction = new Action () ;
14
timerAction . setName ( " CustomTask " ) ;
15
timerAction . se t A ct i o nD e l eg a t io n ( delegation ) ;
16
arg0 . g e t P r o c e s s D e f i n i t i o n () . addAction ( timerAction ) ;
66
Kapitel 4. Erweiterte Themen
17
18
19
20
21
22
23
24
25
26
27
28
29
}
30 }
// create a timer
Timer newT = new Timer ( arg0 . getToken () ) ;
newT . setName ( " MyTimer " ) ;
newT . setGraphElement ( arg0 . getEventSource () ) ;
newT . setTaskInstance ( arg0 . getTaskInstance () ) ;
newT . setAction ( endTaskAction ) ;
// Date , when this timer should be started
Date aDate = new Date () ;
handler . setTimer ( aDate , " MyTimer " , newT , arg0 ) ;
...
Erklärung zum Listing: Erstens ist es wichtig, dass dieses Listing über einen Event
gestartet wird, in dem auch die TaskInstance bekannt ist, zum Beispiel task-start.
Der erste Abschnitt in dieser Aktion definiert die Aktion (CustomTask), die ausgeführt wird, sobald der Timer startet. Der zweite Abschnitt erstellt den Timer
und ordnet die Aktion zu.
Das nächste Listing zeigt die CustomTask -Aktion, in diesem Beispiel wird in dieser
Aktion die aktuelle Task beendet:
1 ...
2 public class CustomTask extends A g o r u m B a s e A c t i o n H a n d l e r {
3
4
public void executeInternal ( ExecutionContext arg0 ) throws
Exception {
5
TaskInstance ti = arg0 . getTaskInstance () ;
6
ti . end ( " taskExpired " ) ;
7
}
8
9 }
10 ...
Es wird lediglich die Task-Instance geholt und der Task über die Transition taskExpired beendet. Natürlich können hier dann beliebige Aktionen durchgeführt
werden für diesen Timer...
67
Kapitel 4. Erweiterte Themen
4.5.7. Weitere Beispiel-Workflows
Die zwei Standard-Workflows (TaskWorkflow und ApprovalWorkflow ) stehen als
Beispiel inklusive Quellcode bereit und decken einige Funktionen der WorkflowKomponente ab:
agorum-core-sample-workflows.zip
4.6. Workflow-Versionen
4.6.1. Automatische Workflow-Versionierung
Innerhalb von jBPM erhält jeder Workflow, den Sie installieren, eine neue VersionsNummer. Sie können diese zum Beispiel in der Liste der Workflows sehen. Dies
bedeutet, dass, wenn Sie eine neue Version eines bereits installierten Workflows
installieren, dann laufen alle bisherigen noch laufenden Workflow-Prozesse mit einer der älteren Versionen ab. So können Sie Workflows ändern, ohne noch laufende
Prozesse zu stören. Neu gestartete Prozesse laufen dann immer mit der aktuellsten
Version.
4.6.2. Manuelle Workflow-Versionierung
Die automatische Versionierung durch jBPM hat jedoch ihre Grenzen: Wurden
für eine neue Workflow-Version Webmasken abgeändert, so werden diese nach der
Installation auch für bereits laufende Workflow-Prozesse verwendet, was zur Folge
hat, dass diese unter Umständen nicht mehr korrekt verwendet werden können.
Um dieses Problem zu lösen, bietet agorum core ab Version 6.4.9 die Möglichkeit, Workflows manuell Versionsnummern zuzuweisen, die auch für die Versionierung der zugehörigen Webmasken verwendet werden.
68
Kapitel 4. Erweiterte Themen
4.6.3. Ändern der Workflow-Version
Zur Festlegung der Versionsnummer eines Workflows muss in dessen Prozessbeschreibung bereits ein Startknoten vorhanden sein. Wählen Sie im Kontextmenü des Workflow-Projektes den Punkt agorum workflow → Change workflow
version (Abb. 4.13).
Abbildung 4.13.: Wizard zum Ändern der Workflow-Version
Dadurch wird am Startknoten eine neue Aktion festgelegt, durch die der WorkflowInstanz bei Ausführung ihre Versionsnummer mitgeteilt wird. Ist schon eine entsprechende Aktion vorhanden, wird nur die vorhandene Version geändert. Zudem
werden die vorhandenen Webmasken und die zugehörigen .xml-Dateien in Unterverzeichnisse mit dem Namen current verschoben, um ein Überschreiben der
aktuell installierten Versionen beim Deployment zu verhindern.
Sollten sie später einmal den Startknoten löschen und neu erstellen,
müssen Sie die Version danach erneut festlegen!
69
Kapitel 5.
Schlusswort
Nun sollten Sie einen Überblick darüber haben, wie die Workflow-Komponente
programmiert werden kann
Bei Fragen, wenden Sie sich bitte an den Support der Firma agorum
http://www.agorum.com.
70
Abbildungsverzeichnis
3.1. Anlegen eines neuen Workflow-Projektes in Eclipse . . . . . . . .
3.2. Der Wizard zum Anlegen eines Workflow-Projektes in Eclipse . .
3.3. Projektstruktur des neuangelegten Workflow-Projektes in Eclipse
3.4. Einstellung des Java-Compilers in Eclipse . . . . . . . . . . . . . .
3.5. Menü zum hinzufügen der agorum Standard Workflow Libraries .
3.6. Wizard zum Hinzufügen der Standard-Libraries zum Projekt . . .
3.7. Hinzugefügte Libraries . . . . . . . . . . . . . . . . . . . . . . . .
3.8. Wizard zum Hinzufügen der Standard-Libraries zum Projekt . . .
3.9. Erstellen einer Workflow-Definition . . . . . . . . . . . . . . . . .
3.10. Anzeigen des Reiters properties . . . . . . . . . . . . . . . . . . .
3.11. Fertige Ansicht mit geöffnetem Workflow-Designer . . . . . . . . .
3.12. Eintragen der Workflow-Beschreibung . . . . . . . . . . . . . . . .
3.13. Erzeugen des Start-Knotens . . . . . . . . . . . . . . . . . . . . .
3.14. Erzeugen des Endknotens . . . . . . . . . . . . . . . . . . . . . .
3.15. Definieren des Masken-Knotens . . . . . . . . . . . . . . . . . . .
3.16. Definieren der eigentlichen Maske . . . . . . . . . . . . . . . . . .
3.17. Auswahl der Personen, die die Maske erhalten sollen . . . . . . . .
3.18. Erstellen einer Aktion, die ausgeführt wird, bevor die Maske geladen
wird . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.19. Definieren eines Test-Aktions-Handlers . . . . . . . . . . . . . . .
3.20. Erstellen der Test-Klasse TestAction1 . . . . . . . . . . . . . . . .
3.21. Erzeugen der Verbindungen zwischen den Knoten . . . . . . . . .
3.22. Deployment des Workflows . . . . . . . . . . . . . . . . . . . . . .
3.23. Aufruf zum Hinzufügen einer Maske zum Workflow . . . . . . . .
3.24. Einträge für die Maske . . . . . . . . . . . . . . . . . . . . . . . .
3.25. Einträge für die Konfigurationsdateien ParameterController.xml
und EditMaskController.xml . . . . . . . . . . . . . . . . . . . . .
3.26. Zusätzliche Eintragungen in TileMyFirstTaskMainTab.jsp . . . .
3.27. Installieren des web-Teils des Projekts auf dem Server . . . . . . .
3.28. Installieren des web-Teils, Login . . . . . . . . . . . . . . . . . . .
3.29. Ihr Test Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.30. Ansicht der definierten Maske . . . . . . . . . . . . . . . . . . . .
3.31. Protokoll des Workflows . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
10
11
12
13
14
14
15
16
17
18
19
19
20
21
22
23
.
.
.
.
.
.
.
24
25
27
28
29
30
31
.
.
.
.
.
.
.
31
32
36
36
37
38
39
4.1. Lokale Installation des Prozessarchivs . . . . . . . . . . . . . . . . . 41
71
Abbildungsverzeichnis
4.2. Menü zum Installieren des Gesamtworkflows . . . . . .
4.3. Wizard zum Installieren des Gesamtworkflows . . . . .
4.4. Installierter Workflow, Meldung . . . . . . . . . . . . .
4.5. Wizard zum Anlegen eines Timephased Action Scripts
4.6. Wizard zum Umbenennen eines Workflow-Projektes . .
4.7. Wizard zum Import einer EA-Designer-Maske . . . . .
4.8. Menü zum Konvertieren einer *.def-Datei . . . . . . . .
4.9. Wizard zum Konvertieren einer *.def-Datei . . . . . . .
4.10. Beschreibung des Workflows als Textschlüssel eintragen
4.11. Die übersetzte Workflow-Beschreibung . . . . . . . . .
4.12. Übersetzte Variablen . . . . . . . . . . . . . . . . . . .
4.13. Wizard zum Ändern der Workflow-Version . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
42
42
43
44
45
46
47
47
48
49
50
69
72
Anhang A.
Anhang
A.1. Versions-Historie dieses Dokumentes
Version 1.0.0: Erstellung der ersten Dokumenten-Version
Version 1.0.1: Erweiterung der Timer-Beschreibung
Version 1.0.2: Beschreibung der neuen Standard-Variablen
Version 1.0.3: Erweiterung um die Funktionalitäten in Version 6.2.2
Version 1.0.4: Beschreibung für das Aufrufen eines Workflows über einen Parameter erstellt
Version 1.0.5: Versionsnummer geändert, Download entfernt
Version 1.0.6: Maskengestaltung um Tiles für untere Buttonleise und EADesigner ergänzt
Version 1.0.7: Umstellung des Tutorials auf agorum Workflow Eclipse-Plugin,
zusätzliche Funktionen des agorum Workflow Eclipse-Plugins ergänzt
Version 1.0.8: Beschreibung der Workflow-Versionierung ab Version 6.4.9
73
Anhang A. Anhang
A.2. Sonstiges
Soweit in dieser Dokumentation Marken- oder Produktbezeichungen verwendet
werden, unterliegen diese ausschließlich den Schutzrechten des Inhabers, auch wenn
dies nicht explizit kenntlich gemacht wird.
74

Documentos relacionados