Sie können dieses Tutorial auch auf Englisch und Französisch aufrufen.

 

In diesem Video sprechen wir über das Definieren eigener Datentypen in YAWL. Diese werden mittels XML Schema Definition (XSD) definiert. Wir demonstrieren auch, wie Sie mit XQUERY auf Teile komplexer Typen zugreifen. Die ZIP-Datei unten enthält eine anfängliche und eine endgültige YAWL-Spezifikation und eine XSD-Datei.

Das Begleitmaterial finden Sie hier.

Willkommen zurück zu einem weiteren YAWL-Tutorial! Heute werden wir über Daten und Datentypen sprechen. Daten sind eines der komplexesten Themen in Geschäftsprozessmanagementsystemen.  Wenn es um Datentypen geht, verfolgen verschiedene Systeme unterschiedliche Ansätze: Einige Geschäftsprozessmanagementsysteme funktionieren nur ohne Typen. Sie können also alles in die Felder eingeben. Mit anderen Geschäftsprozessmanagementsystemen können Sie einen kleinen Satz sehr einfacher Typen definieren, die proprietär sind und speziell für den Zweck des Geschäftsprozessmanagements erstellt wurden.  YAWL verfolgt hier einen anderen Ansatz. YAWL verwendet XML, XML- Schemadefinition sowie Xpath und Xquery. Ein Vorteil ist, dass Sie im Internet viele Informationen über XML und alle umliegenden Technologien finden. Ein weiterer Vorteil ist, dass es viele APIs und Softwarebibliotheken gibt, die beispielsweise XML-Elemente in Java-Objekte und dann Java-Objekte in relationale Datenbanktabellen übersetzen können. Wir gehen von einer XML-Schemadefinition aus und zeigen dann, wie diese XML-Schemadefinition in den vom YAWL-System generierten Formularen wirksam wird.  Also lasst uns darin graben! Das heutige Tutorial befasst sich mit Typen. In XML werden Typen als Schema bezeichnet, und die XML-Schemadefinition - abgekürzt XSD - ist etwas, mit dem wir beginnen werden.  Wenn Sie sich also die Datei hier ansehen - diese finden Sie im ergänzenden Material - , können Sie feststellen, dass eine Reihe komplexer und einfacher Typen definiert sind.  Wenn Sie, wie bereits gesagt, mehr über die Details erfahren möchten, gibt es im Internet viele Tutorials dazu, zum Beispiel von den w3c-Schulen und vielen anderen. Hier sehen Sie also einen komplexen Typ, der als Kundenlistentyp bezeichnet wird, und dies ist im Wesentlichen eine Liste von Kundentypelementen.  Kundentyp ist ein Typ, der aus einer Kunden-ID besteht, die eine positive Ganzzahl, eine Kundenkategorie, einen Kundennamen und eine E-Mail ist.  Die ersten drei Typen sind Standard-XML-Schematypen, wie Sie aus dem Präfix xs ersehen können.  Und der letzte ist ein Typ, den wir hier definieren. Der E-Mail-Adresstyp wird hier definiert.  Dies ist eine Einschränkung des XSD-Standardtyp-Tokens, bei dem es sich um eine Teilmenge der Zeichenfolge handelt.  Hier sehen Sie einen regulären Ausdruck. Wenn Sie also wissen möchten, was dieser reguläre Ausdruck bedeutet, können Sie im Internet nach regulären Ausdrücken in der XML-Schemadefinition suchen und nur eines beachten: Hier wird beispielsweise das Vorzeichen der E-Mail-Adresse angezeigt.  Der andere Typ, den wir haben, ist ein Kategorietyp abc. Dadurch wird eine Dropdown-Liste erstellt. Und dann haben wir auch noch einen E-Mail-Adresslistentyp. Nehmen wir nun diese Typdefinition und kopieren sie in eine neue YAWL-Spezifikation.  Also wählen wir alles aus, kopieren das, gehen zum Yard-Editor und starten eine neue YAWL-Spezifikation. Und wir gehen hier zu Datendefinitionen und fügen diese hier ein. Wenn dort ok steht, ist die Syntax korrekt. Jetzt beginnen wir mit der Bearbeitung unseres Workflows. Wir fügen also zwei Aufgaben ein: Die erste heißt "Kundenliste bearbeiten” und die zweite heißt "E-Mail- Adressen prüfen ".  Nun definieren wir unsere Nettovariable. Gehen Sie zu Datenvariablen und nennen Sie diese "Kundenliste".  Und dies ist vom Typ Kundenlistentyp und wir können diesem einen Anfangswert geben. Wenn wir also hier auf die drei Punkte klicken und diesen Doppelkreis hier drücken, generiert das System ein XML-Element, das für diesen Typ korrekt ist.  Sie sehen, es gibt einen Kunden mit einer Kunden-ID, einer Kundenkategorie, einem Namen und einer E-Mail-Adresse, die unserem regulären Ausdruck entspricht. Und ich werde das durch zwei Kunden mit E-Mail-Adressen ersetzen und alles richtig machen. Jetzt haben wir hier eine Liste von zwei Kunden, und dies ist die Variable, die zu Beginn initialisiert wird.  Wenn wir zur Kundenlistenaufgabe gehen, ziehen wir diese Variable einfach hierher. So können wir es später bearbeiten. Nichts muss geändert werden.  Und jetzt möchte ich Ihnen nur zeigen, wie Sie auf Teile der komplexen Typen zugreifen können, und wir werden ein komplizierteres Beispiel mit einer Xquery erstellen.  Die Xquery ist da.  Wir möchten also in die Kundenliste schauen, den Inhalt dieser Kundenliste / * übernehmen und dann für jedes Element in der Kundenliste ein E-Mail-Element zurückgeben, in dem sich der Inhalt des E-Mail-Elements befindet die E-Mail-Adresse,  der Text davon, dies ist die E-Mail-Adresse selbst, des Kundenlistenelements.  Kopieren Sie das und jetzt gehen wir zu "E-Mail-Adresse prüfen” und erstellen hier eine neue Variable:  E-Mail- Adressen und dies ist vom Typ E-Mail-Adressliste.  Und wir machen das zu einer Eingabevariablen. Und jetzt müssen wir das Mapping definieren, da der Editor es nicht automatisch finden kann und wir diese Xquery hier einfügen.  Also gehen wir zum Kontrollzentrum und sehen uns die Administrationswarteschlangen an und sehen, dass “Kundenliste bearbeiten" nicht angeboten wird. Also weisen wir es demselben Benutzer zu.  Und wir können sehen, dass die Kundenliste hier angezeigt wird. Und wir können andere Kunden hinzufügen oder die Felder jedes Kunden bearbeiten, damit wir das Vervollständigen.  Und dann überprüfen Sie die E-Mail-Adressen.  Und Sie können sehen, dass die E-Mail-Adressen angezeigt werden und sich im schreibgeschützten Modus befinden.  Die Xquery war ein wenig komplex, nicht wahr?  Aber keine Sorge, technischer geht es in YAWL nicht.  Wenn Sie Software entwickeln möchten und eine Verbindung zu anderen Systemen herstellen müssen, wird dies von Softwareentwicklern durchgeführt. In YAWL gibt es Codelets für diesen Zweck.  Codelets werden in Zukunft das Thema eines weiteren Tutorials sein. Danke fürs Zuschauen!