Grid Workflow Execution Service

Submitted by Andreas Hoheisel on sze, 24/05/2006 - 18:04.

Hallo,

auf der Distributions-Seite von K-Wf Grid habe ich eine aktuelle war-Datei des Grid Workflow Execution Service zur ersten Integration in Instant-Grid abgelegt. Die Datei gwes.properties muss nach dem Auspacken der war-Datei unter tomcat noch angepasst werden.

Ein konkreter Beispielworkflow für Instant-Grid (Pfade und Dateien müssen angepasst werden) liegt in der war-Datei unter WEB-INF/classes/examples/programexecution/concatenateIt_30.xml .

Damit die Ausführung von Jobs per WS-GRAM funktioniert, muss zunächst als der Nutzer, unter dem tomcat läuft, ein grid-proxy-init aufgerufen werden. Später soll dies durch ein Credentialmanagement a la myProxy abgelöst werden.

Die Doku zum Grid Workflow Execution Service gibts hier. Insbesondere empfehle ich die Lektüre des GWES User Manual (pdf 1.9MB)

Wie Programme (also keine Web Services) zur Ausführung mit dem Grid Workflow Execution Service gekapselt werden müssen steht in diesem technischen Report. Den Teil mit der Ressourcenbeschreibung bitte ignorieren, da er derzeit überarbeitet wird.

( categories: )

GWES, eXist und Linuxtoolbox

Hallo,

welche Basis benutzt ihr, um GWES zu entwickeln/testen? Wir haben schon eine Knoppix5-basierte Instant-Grid Test-Version, aber die Java/Tomcat-Umgebung wurde nicht geaendert. (Die Versionsnummern wurden nicht geaendert, aber andere Webapplikationen wurden installiert). Wenn ihr etwas testen moechtet, koennten wir gern eine neue Test-Version zur Verfuegung stellen.

GWES, eXist und Linuxtoolbox wurden wie eigene Debian-Pakete installiert. Ein Skript holt die War-Dateien aus dem SVN-Repository, dann extrahiert und konfiguriert es die Pakete. Theoretisch findet man schon alle Aenderungen in unserer Nigthly-Built-Version.
Es waere ganz gut, wenn ihr noch 2 Dateien ins SVN hochladen koenntet:

A: ein File mit Versionsinformationen (eins pro War-Archiv):
z.B. version[.txt] mit Inhalt
1.0.3e

B: ein Lizenz-File, wenn FIRST eine eigene Lizenz benutzen wollte
z.B. licence[.txt] (kann in War-Archiv sein)

Wie koennten wir unsere GWES-Installation am einfachsten testen?

Viele Grüße,
Tibor

GWES Entwicklung/Test

Ich teste den GWES mit der aktuellen Instant-Grid-Version, das ist laut Web-Seite Version 0.4. Mit der "test-version" (nighly build) möchte ich ungern hantieren, aber ich kann es ja mal probieren. Bitte ab und zu in die entsprechende INSTALL_GWES_x_IG-*.txt schauen, dort beschreibe ich, wie ich den GWES + Tools auf Instant-Grid installiere. Ggf. musst Du deine Installationsskripts dahingehend anpassen.

Die versions-files lade ich ins svn hoch. DasLicense-File sollte bereits im war-Archiv vorhanden sein.

Am besten kann man die GWES-Installation mit einem Servlet testen, welches unter:

http://server:8080/gwes/servlet/GWESConfigurationServlet
verfügbar sein sollte. Desweiteren kann der Komandozeilenclient für einen Test verwendet werden:
chmod +x ~tomcat5/webapps/gwes/bin/*.sh
export GWES_HOME=~tomcat5/webapps/gwes
export PATH=$PATH:~tomcat5/webapps/gwes/bin

GWESClient.sh -gwes http://server:8080/gwes -initiateStart ~tomcat5/webapps/gwes/examples/controlflow/gworkflowdl_test.xml -monitor

Aktuelles zum GWES

Die Tests und das Debugging des Grid Workflow Execution Services (GWES) is derzeit in Arbeit und ich wollte kurz über den aktuellen Status berichten:

  • Als Stand-Alone-Applikation funktioniert der Aufruf von WS-GRAM und RFT aus dem GWES heraus, unter tomcat gibts aber noch Probleme, die mit GT4 zusammenhängen. Der Aufruf von WS-GRAM funktioniert derzeit nur, wenn tomcat (und damit auch der GWES) aus dem Verzeichnis $GLOBUS_LOCATION aus gestarted wird!
  • Die Kapselung von Kommandozeilenprogramme erfolgt über Shellscripts; hier ein Beispiel für das Programm "cat" welches dann im Grid mit cat.sh -input1 [URL1] -input2 [URL2]

    aufgerufen wird.

GWES 1.0.2d

Das aktuelle gwes.war Version 1.0.2d liegt zum download bereit. Das Installieren unter tomcat ist nun einfacher geworden:

  • Erstens: gwes.war mittels tomcat manager hochladen (deploy)
  • Zweitens: Mit Browser auf das gwes home gehen (z.B. http://server:8080/gwes) und Konfigurationsanleitung befolgen.

Ich habe es noch nicht unter Instant-Grid probiert, sollte aber kein Problem sein. Im SVN habe ich noch einige Demo- und Hilfsdienste eingecheckt, die auch installiert werden sollten (linuxtoolbox.war). WS-GRAM funktioniert, mit RFT gibts noch Probleme aus tomcat heraus.

GWES 1.0.4

Die aktuelle Version GWES 1.0.4 wurde unter Instant-Grid 0.4 getestet. Folgendes funktioniert:

  • Konkrete Workflows mit Web-Service-Operationen
  • Konkrete Workflows mit WS-GRAM-Aufrufen (inklusive FileStageIn)
  • Kommandozeilen-Client (GWESClient.sh)
  • Speichern von Workflows in der XML-Datenbank
  • Servlet zur Übersichtsanzeige aktueller Worklfows

Näheres siehe unter der Installationsanleitung im SVN.

GWES 1.0.4e

Im neuen GWES 1.0.4e kann das lokale Arbeitsverzeichnis für Grid-Jobs in der gwes.properties eingestellt werden. Standardwert ist:
###############################
# GWES GRAMActivity: local working directory home
###############################
gwes.gram.home.directory=.gwes
Hier können auch absolute Pfade angegeben werden, zum Beispiel /tmp/.gwes

GWES 1.0.4g: GWES User Manual

Das GWES User Manual (pdf 1.9MB) wurde grundlegend überarbeitet und bietet jetzt eine umfassende Installations- und Bedienungsanleitung für den Grid Workflow Execution Service.

Beispielworkflow

Hallo,
das Deployment von GWES in Tomcat5 funktioniert. Wir erhalten eine Webpage unter http://server:8080/gwes/ deren Links funktionieren.
Wir haben versucht die Funktionalität mit Hilfe des GWESClient zu überprüfen:
java net.kwfgrid.gwes.client.GWESClient -gworkflowdl /home/knoppix/x/WEB-INF/classes/examples/programexecution/concatenateIt_30.xml -gwes.service.url http ://server:8080/gwes/
Leider erhalten wir nur eine Fehlermeldung, die unter angehängt ist. Die XML-Datei "concatenateIt_30.xml" wurde von uns an das Instant-Grid angepasst, dabei haben wir auch den Link (resource.repository.url) http://fhrg.first.fraunhofer.de/grdl geändert in http://fhrg.first.fraunhofer.de/fhrg/grdl.
Was machen wir falsch und wie können wir GWES testen?

Fehlermeldung:

[main] FATAL client.GWESClient - exception:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXException: Bad envelope tag: html
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Bad envelope tag: html
at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:70)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:645)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2727)
at org.apache.axis.client.Call.invoke(Call.java:2710)
at org.apache.axis.client.Call.invoke(Call.java:2386)
at org.apache.axis.client.Call.invoke(Call.java:2309)
at org.apache.axis.client.Call.invoke(Call.java:1766)
at net.kwfgrid.gwes.client.GWESSoapBindingStub.initiate(GWESSoapBindingStub.java:774)
at net.kwfgrid.gwes.client.GWESClient.main(GWESClient.java:111)
{http://xml.apache.org/axis/}hostname:server
org.xml.sax.SAXException: Bad envelope tag: html
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:650)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2727)
at org.apache.axis.client.Call.invoke(Call.java:2710)
at org.apache.axis.client.Call.invoke(Call.java:2386)
at org.apache.axis.client.Call.invoke(Call.java:2309)
at org.apache.axis.client.Call.invoke(Call.java:1766)
at net.kwfgrid.gwes.client.GWESSoapBindingStub.initiate(GWESSoapBindingStub.java:774)
at net.kwfgrid.gwes.client.GWESClient.main(GWESClient.java:111)
Caused by: org.xml.sax.SAXException: Bad envelope tag: html
at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:70)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:645)
... 10 more

XSD -> Instant-Grid

Die Ursache des Fehlers ist wohl, dass die Workflows ein XML-Schema benutzen, welches aus Instant-Grid nicht erreichbar ist, wenn keine Verbindung zum Internet besteht. Ich ändere das in der nächsten Version (ab GWES 1.0.2e).

GWESClient

siehe Kommentar oben (oder kann ich diesen Kommentar irgendwie löschen?)