Moderne Workflow-Programmierung mit ABAP Objects

Ähnliche Dokumente
10.8 Dynamische Blöcke

Die drei Engel der Weihnacht

Datenbank-Programmierung mit Visual C# 2012 (Buch + E-Book)

Agile Softwareentwicklung

ARCHICAD 10. Praktisches Handbuch für Entwurf, Planung und Realisierung. von Martin Schnitzer, Markus Denzlinger. 1. Auflage. Hanser München 2006

BIT601. SAP Workflow - Definition und Einsatz kundenspezifischer Workflows GLIEDERUNG DES KURSES. Version der Schulung: 16 Dauer der Schulung:

JavaScript objektorientiert

C++ Einführung und professionelle Programmierung. von Ulrich Breymann. 8., erweiterte Auflage. Hanser München 2005

Datenbankprogrammierung mit MySQL 5 und PHP 5 Spona

10.6 Programmier-Exits für Workitems

Linux-Treiber entwickeln

Plandatenerfassung im Workflow (CO-PA)

Wissenschaftliche Arbeiten mit OpenOffice

UNIX Shell-Programmierung

Multicopter selber bauen

Objektrelationale Datenbanken

Überprüfung des Qualitätssicherungsentwurfs

Benutzerdefinierte Housekeepinglisten in SAP BW //

Mathematik für Naturwissenschaftler

Homöopathische Konstitutionsmittel für Pferde

Microsoft Office Excel 2010

VBA mit Microsoft Excel für Kids

Mathematik für Wirtschaftsingenieure

ipad Air und ipad mini Retina

Richtig einsteigen: Access 2010 VBA-Programmierung

BDSG. Bundesdatenschutzgesetz

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Programmieren lernen in ASP.NET mit C#

Mathematische Formeln für das Studium an Fachhochschulen

BIT601 SAP Workflow Definition und Einsatz kundenspezifischer Workflows

Der Unterrichtseinstieg

Mathematik für Wirtschaftswissenschaftler

Integrierte Prozessmodellierung mit ARIS

Microsoft Office Word 2007

Einstieg in die Informatik mit Java

Statistische Grafiken mit Excel

3D-Konstruktion mit Mechanical Desktop 6

Beck-Texte im dtv Grundgesetz: GG. Textausgabe

Einstieg in die Informatik mit Java

1. Im Hauptmenü wechseln Sie in den Punkt Liste. 2. Im Seitenbaum klicken Sie in den Menüpunkt, wo das Formular eingefügt werden soll.

6. Zeiger Allgemeines Definition eines Zeigers

Das lineare Komplementaritätsproblem

Einstieg in die Informatik mit Java

Einführung: Verteilte Systeme - Remote Method Invocation -

Zulassungsverordnung für Vertragsärzte, Vertragszahnärzte, Medizinische Versorgungszentren, Psychotherapeuten

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

Konflikte in frühen Mutter-Kind Interaktionen

Die neue Honorarordnung für Architekten- und Ingenieurleistungen

Verwaltungsgerichtsordnung, Verwaltungsverfahrensgesetz: VwGO

Formularsammlung für Rechtspflege und Verwaltung

Vorkurs Mathematik. Ein Übungsbuch für Fachhochschulen. Bearbeitet von Michael Knorrenschild

Microsoft Excel Das offizielle Trainingsbuch Frye

Collegium Logicum - Logische Grundlagen der Philosophie und der Wissenschaften Link

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

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Einführung in LabVIEW

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

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

Datenbank-Programmierung mit Visual Basic 2012 (Buch + E-Book)

Wuppertaler Schriftsteller des 19. Jahrhunderts zwischen Revolution und Anpassung Clauder

Programmierkurs I. Gliederung: Deklarationsteil als BNF 2. Blöcke in Ada95 (Lebenszeit, Sichtbarkeit von Variablen)

Mathepirat 3. Klasse - Buch mit Lösungsheft

Solid Edge V18. Bauteile, Baugruppen, Zeichnungen. von Hans-Joachim Engelke. 1. Auflage. Hanser München 2006

Programmieren in Java

Grundgesetz für die Bundesrepublik Deutschland

Prüfe dein Wissen: PdW 5. Familienrecht. von Prof. Dr. Dr. h.c. Dieter Schwab, Günther Beitzke. 12. Auflage

Langlebige Software-Architekturen

Microsoft PowerPoint Die offizielle Schulungsunterlage (77-883)

Internationales Marketing

Handbuch zur Umsatzsteuer 2016: USt 2016

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

Mindmapping mit Mindjet MindManager 9

EuGH VerfO - Satzung und Verfahrensordnungen des EuGH / EuG

Adobe Premiere Elements 9

Analyse und Entwurf von Softwaresystemen mit der UML

Java Referenzdatentypen genauer betrachtet

Workflow und ArchiveLink mit SAP Mende

Herzschrittmacher- und ICD-Kontrolle

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Systematisches Requirements Engineering

Künstliche Intelligenz

Visual C#.NET. Bearbeitet von Patrick A. Lorenz

Transkript:

Moderne Workflow-Programmierung mit ABAP Objects Handbuch für Entwickler von Ulrich Mende 1. Auflage Moderne Workflow-Programmierung mit ABAP Objects Mende schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG Thematische Gliederung: SAP dpunkt.verlag 2012 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 86490 013 6 Inhaltsverzeichnis: Moderne Workflow-Programmierung mit ABAP Objects Mende

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. 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.

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

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).

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.