10.8 Dynamische Blöcke

Ähnliche Dokumente
10.6 Programmier-Exits für Workitems

Überprüfung des Qualitätssicherungsentwurfs

6. Zeiger Allgemeines Definition eines Zeigers

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Einstieg in die Informatik mit Java

Umleiten von Eigenen Dateien per GPO

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Einstieg in die Informatik mit Java

Geschäftsprozesse Folge 12 Workflowmanagement Praxis II

Bedienung von BlueJ. Klassenanzeige

Moderne Workflow- Programmierung mit ABAP Objects

5 Die neue Welt: ABAP Objects im Workflow

JAVA KURS COLLECTION

Erzeugen benutzerdefinierter Buchstabenlisten in EXCEL

Funktionen in JavaScript

QM - Qualitätsmanagement: Workflow-Szenarios

7 SharePoint Online und Office Web Apps verwenden

Beispiele zu den Verknüpfungs-Technologien-5.3.0

1 Bearbeitung alter Reports für SCHULKARTEI 4

Dynamic Art. Benutzerhandbuch

Geschachtelte Klassen

eadmin Manual Universitätsstraße Koblenz Deutschland

Softwaretechnik WS 16/17. Übungsblatt 01

Vgl. Oestereich Kap 2.7 Seiten

6.4 Performance von internen Tabellen Prüfungen des Code Inspector (SCI)

Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache:

Die OSGi Service Plattform

SOA verspielt - rekursive BPEL Prozesse

KompetenzManager Manual für die Benutzung der Website

Innovator 11 classix. Erweiterter XMI-Export aus Innovator Business und Object classix. HowTo.

185.A Software-Entwurfsmuster 1 OOP. Software-Entwurfsmuster

Einführung in Imperia für Systembetreuer

Inhalt. Dokumentation VIAS_W. V32w6900 Workflow-Assistent

Einleitung. Wer hat das Buch geschrieben? Dank

Kapitel 2 SAP Easy Access

PM/CS - Instandhaltung und Kundenservice: Workflow-Szenarios

Einführung in die Programmierung für NF. Übung

Willkommen zur Imperia Administratorschulung

Jahresupdate Version 8.0. Anwendungsbeschreibung. Stapelverarbeitung

Assoziative Container in C++ Christian Poulter

Institut für Programmierung und Reaktive Systeme. Java 3. Markus Reschke

Redaktionssystem E-MODE. Handbuch für RedakteurInnen. Inhalt. Informationen über E-MODE, Standards & Regeln:

3 Objektorientierte Konzepte in Java

1 Abstrakte Klassen, finale Klassen und Interfaces

White Paper. Eskalationen im Workflow Winter Release

Aufbau von Klassen. class punkt {...

How to install freesshd

Probeklausur: Programmierung WS04/05

OpenCms jbpm Workflow Engine. OpenCms und jbpm Workflow Engine

UML - Tutorial. Hubert Baumgartner.

In diesem Beitrag sollen die einzelnen Möglichkeiten detaillierter erläutert und bei Notwendigkeit mit einem Beispiel hinterlegt werden.

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Webdesign mit Dreamweaver. PCC-Seminar Einheit 4 Do.,

Prozeduren und Funktionen

Massengenehmigung mit der UWL(Universal- Worklist) 18 December B. Sc. Alexander Graf

How-to: HTTP Proxy mit Radius Authentifizierung an einem Windows 2003 Server. Securepoint Security System Version 2007nx

6. Verkettete Strukturen: Listen

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Microsoft 2010 Express/Beispiel für Grafische Oberflächen

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008

Workflow Monitoring basierend auf den SemTalk Services. Semtation GmbH

Kurzanleitung Projektverwaltung

Leitfaden Workflow Bauen & Wohnen in ResPublica Intranet (RPi)

Newssystem für den eigenen Lehrstuhl einrichten

Repetitorium Informatik (Java)

Multimediale Web-Anwendungen. JavaScript. Einführung. MWA JavaScript-Einführung Dr. E. Schön Sommersemester 2015 Folie 1.

Enumerations und innere Klassen

Das Compare-, Merge- und Versionierungstool für Microsoft Dynamics NAV. NAVObjectEditor RECY CLE

Design Patterns. 3. Juni 2015

Arbeiten mit dem Blattschutz ab EXCEL XP

Translation Tool für PBS archive add on - Entwicklerhandbuch -

Einführung in Mathematica

Max arbeitet mit Objekten, die Ein- und Ausgänge (manche auch nur eines von beiden) haben und über virtuelle Kabel miteinander verbunden werden.

Vom Testkonzept zu JUnit

Programmieren I + II Regeln der Code-Formatierung

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Im Kurs wird in der Editoransicht der Kursbaustein Aufgabe ausgewählt und an der gewünschten Stelle in der Navigation eingeordnet.

Wertebereich und Genauigkeit der Zahlendarstellung

PROGRAMMIERUNG IN JAVA

Auktion name adresse pseudonym adresse /bewertungszahl. Gebot. höhe zeitpunkt bieter. initiiert

Microsoft Access 2010 Bilder

Java lernen mit BlueJ

2 Anlegen und Konfigurieren von Datenbanken 35

Das Studiengangsinformationssystem (SGIS)

Verknüpfen & Einbetten von Daten

Trainingsmanagement Gutschein Management. Beschreibung

Grundlagen der Informatik

CdsComXL. Excel add-in für Bearbeitung und Auswertung der CDS-daten. ComXL-020/D, Spur Spur Spur Spur

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

Verbinden von IBM Informix mit Openoffice mittels JDBC

32.4 Anpassen von Menüs und Symbolleisten 795i

Customizing Datensicht erstellen. Erweiterung der Baumstruktur um eigene Sichten

MVB3. Einrichtungsvarianten und Update auf v3.5. Admin-Dokumentation. Inhalt V

Transkript:

D3kjd3Di38lk323nnm 288 10 Klassenbasierte Techniken im Workflow Workflows selbst weiterläuft sowie dass der lokale Workflow keine Daten an den auslösenden Workflow zurückgeben kann. N-faches Auslösen eines Startereignisses für einen lokalen Subworkflow löst diesen auch N mal aus! Im Workflow-Protokoll findet man in diesem Fall N Instanzen zu diesem lokalen Workflow. 10.8 Dynamische Blöcke Ein dynamischer Block bearbeitet eine Liste mit gleichartigen Elementen (Objektreferenzen), deren Elementanzahl zur Definitionszeit nicht bekannt ist. In früheren Releases gab es dafür die dynamische Parallelverarbeitung. Dieses Verfahren ist in [2] ausführlich beschrieben. Wollte man mehrere Schritte dynamisch parallel verarbeiten, so musste man ein eigenes Workflow-Muster anlegen, das dann dynamisch parallel aufgerufen wurde. Die dynamischen Blöcke lösen das Problem viel eleganter. Zwischen den Blockbegrenzern (Pfeil nach oben, Pfeil nach unten) können beliebig viele Workflow-Schritte eingefügt werden. Diese bilden dann quasi einen eigenen, eingebetteten Workflow mit eigenem und Datenfluss zum umgebenden Workflow. Es sind zwei Arten von Blöcken möglich: Dynamisch sequenzieller Block Das ist letztlich ein Iterator auf Workflow-Ebene. Dynamisch paralleler Block Das ist eine dynamische Parallelverarbeitung. Blöcke werden durch X-Workitems repräsentiert. Bei sequenziellen Blöcken existiert genau ein Block-Workitem mit genau einem Blockcontainer. Dieser wird nacheinander von den Workitems des Blockes benutzt. Bei dynamisch-parallelen Blöcken existieren so viele Block-Workitems mit je einem Blockcontainer wie es Einträge in der Objektliste gibt. Die Workitem-Hierarchie in der Kopftabelle SWWWIHEAD wird ergänzt: SWWWIHEAD-WI_CHCKWI Workitem des umgebenden Flows SWWWIHEAD-PARENT_WI Block-Workitem des umgebenden Blockes Bei Block-Workitems sind PARENT_WI und WI_CHCKWI gleich. Ulrich Mende, Moderne Workflow-Programmierung mit ABAP Objects, dpunkt.verlag, ISBN 978-3-86490-013-6

10.8 Dynamische Blöcke 289 10.8.1 Dynamisch sequenzieller Block = Workflow-Iterator Der sequenzielle dynamische Block entspricht genau einem Iterator im Workflow-Kontext. n := 1 Abb. 10 26 Dynamisch sequenzieller Block als eingebetteter Subworkflow Dynamisch sequenzieller Block = Liste[n] Blockcontainer Blockschritte Subworkflow- n := n + 1 n > N? 10.8.2 Dynamisch paralleler Block Der dynamisch parallele Block bearbeitet die N Objekte in einem parallelen Abschnitt, dessen Zweiganzahl erst zur Laufzeit bekannt ist. Parallel N / N (dynamisch) Abb. 10 27 Dynamisch paralleler Block als eingebetteter Subworkflow Dynamisch paralleler Block = Liste[1] = Liste[2] = Liste[N] Blockcontainer Blockschritte Subworkflowflow- Subworkflow- Subflow- Parallel N / N (dynamisch)

290 10 Klassenbasierte Techniken im Workflow 10.8.3 Beispiel: Bewertungs-Workflow für Vertrag Im folgenden Beispiel wird ein Vertrag dynamisch parallel durch N Mitarbeiter bewertet. Jeder Mitarbeiter kann über eine Sachbearbeiterentscheidung (SBE) von minimal 0 bis maximal 3 Punkte vergeben. Die Parallelverarbeitung soll abgebrochen werden, wenn insgesamt bereits N*2 Punkte erreicht wurden. Variablen im Workflow-: Vertrag Ref To ZCL_VERTRAG UserListe Ref To ZCL_USER, mehrzeilig UserCount Type I, Anzahl der User in der Liste (=N) PunkteGesamt Type I, Anzahl der vergebenen Gesamtpunkte PunkteLimit Type I, notwendige Punkteanzahl für Abbruch 2*N Der erste Block demonstriert die dynamisch-sequenzielle Verarbeitung. Als Blockschritt wurde irgendein Schritt gewählt. Abb. 10 28 Dynamisch-sequenzielle Bearbeitung der UserListe Der Datenfluss Workflow Blockcontainer sieht folgendermaßen aus: In &_WF_PARFOREACH_INDEX& steht der aktuelle Index der UserListe. Das Element mit diesem Index wird übergeben und könnte bearbeitet werden. Hier wird als Rückgabewert einfach eine 1 auf den UserCount im Workflow- addiert. Zum Schluss hat man also die Anzahl der Einträge in der dynamischen Liste ermittelt. (Natürlich würde man dazu nicht extra einen Block anlegen, sondern eher eine Utility-Methode; hier geht es nur um die Demonstration Ulrich Mende, Moderne Workflow-Programmierung mit ABAP Objects, dpunkt.verlag, ISBN 978-3-86490-013-6

10.8 Dynamische Blöcke 291 einer speziellen Variante des Datenflusses). Das PunkteLimit wird mit PunkteLimit = 2 * UserCount festgelegt. Abb. 10 29 Datenfluss zum dynamisch-sequenziellen Block Der dynamisch-parallele Block erzeugt je User in der UserListe eine SBE mit den vier Bewertungsergebnissen. Als Bearbeiter wird ein Ausdruck der Form &_USERLISTE_LINE.GET_PDUSER()& benutzt. Die Returningmethode setzt einfach ein»us«vor den Usernamen der Instanz. Vertragsbewertung parallel Bewerten Sie Vertrag mit 0 3 Punkten Abb. 10 30 Dynamisch-paralleler Block zur Vertragsbewertung Punkte: = 2 Punkte: = 0 Punkte: = 1 Punkte: = 3 ok ok ok ok Vertragsbewertung parallel

292 10 Klassenbasierte Techniken im Workflow Dem Blockcontainer wird wieder das n-te Element der UserListe übergeben, zusätzlich der zu bewertende Vertrag. Das Ergebnis einer Bewertung ist die vom jeweiligen User vergebene Punkteanzzahl, sie wird im Datenfluss vom Blockcontainer zum Workflow auf die PunkteGesamt aufaddiert. Abb. 10 31 Datenfluss zwischen Workflow- und Blockcontainer Abb. 10 32 Abbruchbedingung für dynamisch-parallelen Block Die dynamische Parallelverarbeitung wird abgebrochen, wenn das PunkteLimit erreicht wurde, bevor alle Bewertungen vorliegen. Das Workflow-Protokoll zeigt den Stand nach Abarbeitung des sequenziellen Blocks (ohne Dialogschritte) und nach Erzeugung aller drei Dialogschritte im parallelen Block. Es ist zu sehen, dass der sequenzielle Block für die drei Durchläufe nur ein Block-Workitem hat (9147). Demgegenüber hat der parallele Block drei Block-Workitems (9151,9152, 9153). Ulrich Mende, Moderne Workflow-Programmierung mit ABAP Objects, dpunkt.verlag, ISBN 978-3-86490-013-6

10.8 Dynamische Blöcke 293 Abb. 10 34 Protokoll eines Workflows mit Blöcken In der SBE werden von jedem User die Punkte vergeben. In einem Link soll das zu bewertende Objekt, hier also der Vertrag, anzeigbar sein. Abb. 10 33 SBE zur Vertragsbewertung mit Link zum Vertrag Leider funktionieren die im vordefinierten _ADHOCOB- JECTS nicht für Referenzen von Klassen. Man muss also für jeden Klassenlink eine eigene Variable im anlegen. Aber das ist kein großer Aufwand, zumal man den Datenfluss ohnehin angeben muss.