Hier ein Beispiel eines Blog Eintrages:
Die Grammatik zum Einbetten von Web Service Invocations als Mircoformat erkennt folgende Attribut Werte:
- “entry” sagt aus, dass man die Invocation Instance von der Toolbar aus aufrufen kann.
- “input” kennzeichnet, dass jetzt die unterschiedlichen Eingabevarianten kommen:
– “static”: Werte stehen im HTML File
– “user”: User kann Wert mittels Popup eingeben
– “ws: Invocation Instance erhält Wert vom Ergebnis der davor aufgerufenen Instance (sollte also keine entry Instance sein).
Dabei müssen die Parameter-Namen (PARAMETER_NAME) im HTML-File entsprechend der Parameter-Namen des aufzurufenden Web Services heißen, um die Zuordnung zu gewährleisten.
Nach der Input Spezifikation kommt entweder direkt die Ausgabe (entweder mittels Popup oder Weiterleitung des Ergebnisses an eine Invocation Instance mittels Kennzeichnung “ws” für Web Service und dem Hook Namen) oder ein if-then-else, wo man eine simple Bedingung formulieren kann und in den 2 Zweigen wieder die Ausgabe gestalten kann.
Das Workflow-Schema eher simpel gehalten, sodass die Grammatik, so wie sie derzeit aussieht, folgende Restrictions hat:
- in der Condition des if-then-else kann man sich nur auf den Return-Wert der Invocation Instance beziehen, nicht auf Input-Parameter
- Schleifen sind möglich durch erneuten Aufrufs einer Instance, die Schleife lässt sich dann aber quasi nur “kontextabhängig” steuern, also man könnte solange eine gewisse Berechnung durchführen bis das Ergebnis einen gewünschten Wert hat. Aber jetzt nicht z.B eine Berechnung genau 5 Mal durchführen, unabhängig vom Ergebnis. Die Frage ist auch wie sinnvoll das überhaupt ist, bei einer ansonsten ja eher statischen Seite. Aber ich habs mal angeführt…
- Im Output kann nur das Resultat des Aufrufs an die nächste Invocation Instance weitergegeben werden (ohne Modifikation oder Initialisierung mehrere Parameter der Folge-Instance. Das wäre eigentlich ganz praktisch.
- Eine Instance kann demnach auch nur von 1 Vorgänger einen Input erhalten.
- keine Verschachtelung von if-then-else
- kein komplexen Rückgabewerte (nur String, int, …)
- keine komplexeren Bedingungen mittels Klammerung und logischen Operatoren
GRAMMATIK
--------------------
{'invocationinstance'}
HOOK_NAME
['entry']
['input']
['static']
{PARAMETER_NAME}
['user']
{PARAMETER_NAME}
['ws']
PARAMETER_NAME
[IF-THEN-ELSE | OUTPUT]
IF-THEN-ELSE:
['if-then-else']
CONDITION
OUTPUT
['else']
OUTPUT
OUTPUT:
['popup']
['ws']
HOOK_NAME
HOOK_NAME: IDENTIFIER
PARAMETER_NAME: IDENTIFIER
CONDITION: ('==' | '!=' | '>' | '>=' | '<' | '<=') VALUE
IDENTIFIER: (A-Za-z)(A-Za-z0-9)*
VALUE: (0-9)+ | (A-Za-z)+
- Thomas Prevedel