Voraussetzungen:
- EEC als Job Server mit Worker-Installation der Version 2.5.1 oder höher.
Mit der vierten Jobdefinition konnte erfolgreich eine Konfiguration erzeugt werden.
Der Job wurde durch einen webserviceTrigger ausgelöst, d.h. es wurde im Browser eine URL mit POST-Parameter eingegeben, die den Job ausgelöst und gleichzeitig ein Argument für eine Aktion übergeben hat.
In diesem Abschnitt wird gezeigt, wie mehrere Argumente übergeben werden, damit Schlüssel-Wert-Paare in einem Parameter des Typs Map gespeichert werden. Dazu soll als Basismodell die EOX-Datei Feeder.eox verwendet werden, die mit Test 4 erzeugt worden ist.
Kopieren Sie das Basismodell:
- Öffnen Sie im Job Server die Seite Jobs.
- Klicken Sie in der Zeile des vorangegangenen Jobs (Job4_<Job-ID>)auf das Symbol um den Dialog Dateidownload zu öffnen.
- Geben sie als Download-Ziel das Verzeichnis <Job Server installation path>\resources\JobServer\EOX an.
Erstellen Sie eine Aktion:
- Starten Sie EEC.
- Wählen Sie als Datenbasis die Datei <Job Server installation path>\resources\JobServer\EOX\Feeder.eox.
- Entfernen Sie die Markierung der Option Nur-lesend öffnen.
- Bestätigen Sie mit [OK].
- Navigieren Sie im Bibliotheks-Katalog zu T_Mechatronic_ModularSystem.
- Erstellen Sie eine Unit mit dem Namen Actions.
- Navigieren Sie zur Unit Actions.
- Wählen Sie aus dem Kontextmenü Neu > Objekt....
- Wählen Sie im Assistenten für ein neues Objekt Action.
- Schließen Sie den Assistenten mit [Fertigstellen].
- Geben Sie im Feld Name den Namen setFeederParameterMapAction ein.
- Öffnen Sie den Editor Methoden.
- Geben Sie im Feld Name den Namen run ein.
- Wählen Sie aus der Dropdown-Listbox Sprache die Sprache Java.
- Klicken Sie auf (Argument hinzufügen).
- Ersetzen Sie in der Spalte Name den Namen New Argument durch params.
- Ersetzen Sie in der Spalte Typ den Typ Engineering.Object durch Engineering.Map.
- Geben Sie im Feld Code den folgenden Java-Code ein:
import com.mind8.mechatronic.skill.api.LiteralFormulaBuilder;
import com.mind8.mechatronic.skill.AbsoluteNameUtil;
// get Feeder from UnitOfWork
feederEO = AbsoluteNameUtil.getObjectByAbsolutePath("Feeder.Mechatronic.Feeder",self.getUnitOfWork());
// get parameter ParameterMap
parameter = feederEO.getParameter("ParameterMap");
// set ParameterMap with key-value-pairs
parameter.setPrettyValue(LiteralFormulaBuilder.buildLiteralFormula(params));
// save changes
self.getUnitOfWork().saveChanges();
- Speichern Sie die Action.
Die Action sollte dieses Aussehen haben:
Ändern Sie die bestehende Jobdefinition:
- Erstellen Sie eine Kopie der bestehenden JMX-Datei jobdef4.jmx mit dem Namen jobdef5.jmx.
- Öffnen Sie die JMX-Datei jobdef5.jmx mit einem beliebigen Editor, beispielsweise Notepad++.
- Ändern Sie den Namen der Jobdefinition von <jobdefinition name="Job4" zu <jobdefinition name="Job5".
- Ändern Sie die Angabe des Modells zu eox\Feeder.eox (Dateipfad anpassen).
- Tauschen Sie die Zeile <action name="Engineering.ImportIMXCommand" arguments="List{trigger.params.pathToIMX}" /> gegen die folgende Zeile aus:
<action name="T_Mechatronic_ModularSystem.Actions.setFeederParameterMapAction" arguments="List{trigger.params}"/>
- Speichern Sie die JMX-Datei.
Die komplette JMX-Datei sollte das folgende Aussehen haben:
<?xml version="1.0"?>
<jobdefinition name="Job5"
model="EOX\Feeder.eox"
xmlns:xi="http://www.w3.org/2001/XInclude">
<webserviceTrigger>
<outputFolder value="output" />
<failedFolder value="error" />
</webserviceTrigger>
<actions>
<action name="T_Mechatronic_ModularSystem.Actions.setFeederParameterMapAction" arguments="List{trigger.params}"/>
<action name="Engineering.ExportEOXCommand" arguments="List{trigger.additionalResultsDir + 'Feeder.eox',List{'Feeder'}}" />
<action name="JobServer.MarkFileForDownloadCommand" arguments="=List{trigger.outputFolder + 'results\\Feeder.eox'}" />
</actions>
</jobdefinition>
Beschreibung der JMX-Datei:
Nach den obligatorischen Kopfdaten in Zeile 1 wird in Zeile 2 mit dem Attribut name des Tags <jobdefinition> der Name der neuen Jobdefinition angegeben.
Das Attribut model="EOX\Feeder.eox" ist so geändert, dass auf der Basis des mit jobdef5.jmx erzeugten Modells die Erzeugung der Jobdaten anzuwenden ist.
Im Block <webserviceTrigger> werden unverändert die Verzeichnisse angegeben, in denen im Erfolgs- und Fehlerfall Daten abgelegt werden.
Mit der Aktion <action name="T_Mechatronic_ModularSystem.Actions.setFeederParameterMapAction" arguments="List{trigger.params}"/> wird die zuvor erstellte Action setFeederParameterMapAction aufgerufen. Die Action erwartet als Argument Schlüssel-Wert-Paare. Diese werden beim Aufruf als URL-Parameter übergeben.
Die Aktion <action name="Engineering.ExportEOXCommand" arguments="List{trigger.additionalResultsDir + 'Feeder.eox',List{'Feeder'}}" /> ruft das Command ExportEOXCommand auf. Dadurch wird die erzeugte Konfiguration als EOX-Datei exportiert. Das Command erwartet als erstes Argument den Namen der EOX-Datei. Mit trigger.additionalResultsDir + 'Feeder.eox' wird ein Pfad angegeben, der auf der Angabe des Tags <outputFolder> basiert, daran ein Verzeichnis mit dem Namen \results\ hängt und den Dateinamen mit Feeder.eox angibt. Das Ergebnis muss <Job Server installation path>\resources\JobServer\output\results\Feeder.eox ergeben. Als zweites Argument wird dem Command der Projektname für die Konfiguration übergeben.
Die Aktion <action name="JobServer.MarkFileForDownloadCommand" arguments="=List{trigger.outputFolder + 'results\\Feeder.eox'}" /> ruft das Command MarkFileForDownloadCommand auf. Dadurch wird für die erzeugte Datei ein Link in der Jobstatus-Ansicht erzeugt, um diese heruntergeladen zu können.
- Verschieben Sie die Jobdefinition jobdef4.jmx in das Verzeichnis <Job Server installation path>\resources\JobServer\JMX.
- Fahren Sie mit Abschnitt Test 5 - Per webserviceTrigger Schlüssel-Wert-Paare in Map-Parameter schreiben fort.