Search the FirstSpirit Knowledge Base
Hallo,
kann es sein, dass der ValidationAgent in der Einblendelogik von Arbeitsabläufen generell nicht zur Verfügung steht?
Ich hatte ein zunächst ein Script angelegt, dass in etwa wie folgt anfing:
import de.espirit.firstspirit.access.store.Store;
import de.espirit.firstspirit.agency;
import de.espirit.firstspirit.agency.*;
import de.espirit.firstspirit.agency.ValidationAgent;
import de.espirit.firstspirit.agency.ValidationAgent.*;
import de.espirit.firstspirit.ui.operations.*;
storeElement = context.getStoreElement();
if (storeElement != null) {
storeType = storeElement.getStore().getType();
validationAgent = context.requireSpecialist(de.espirit.firstspirit.agency.ValidationAgent.TYPE);
....
Als Kontektmenü-Skript funktioniert dies auch einwandfrei.
In der Eingabelogik eines Arbeitsablaufes wiederrum erzeugt die fett-markierte Zeile einen Fehler:
Target exception: java.lang.IllegalStateException: No specialist found for 'de.espirit.firstspirit.agency.ValidationAgent$1@87a036bc'!
Hab ich etwas übersehen, oder steht er in der Einblendelogik wirklich nicht zur Verfügung?
Gruß,
Micha
Bin nun den Weg über Broker + BrokerAgent gegangen. So funktionierts nun komischerweise auch in der Einblendelogik:
SpecialistsBroker broker = context.getConnection().getBroker();
BrokerAgent brokerAgent = broker.requireSpecialist(BrokerAgent.TYPE);
broker = brokerAgent.getBrokerByProjectName("PROJEKTNAME");
ValidationAgent validationAgent = broker.requireSpecialist(ValidationAgent.TYPE);
Bin nun den Weg über Broker + BrokerAgent gegangen. So funktionierts nun komischerweise auch in der Einblendelogik:
SpecialistsBroker broker = context.getConnection().getBroker();
BrokerAgent brokerAgent = broker.requireSpecialist(BrokerAgent.TYPE);
broker = brokerAgent.getBrokerByProjectName("PROJEKTNAME");
ValidationAgent validationAgent = broker.requireSpecialist(ValidationAgent.TYPE);
Hallo Micha,
das klingt zunächst mal nach einem Fehler. Ich konnte aber keine Stelle sehen, an der der Agent nicht zur Verfügung gestellt wird. Kannst du bitte noch die FirstSpirit-Version und den Typ des StoreElements nennen, auf dem der Workflow gestartet werden soll? In welchem Kontext soll der Arbeitsablauf gestartet werden (anscheinend ja nicht in der UI direkt auf einem ausgewählten Element)? Gibt es evtl. Log-Ausgaben, die mehr als nur "nicht gefunden" sagen?
Dank und Gruß
Stefan
Hallo Stefan,
das Storeelement ist vom Typ Page und die FS Version ist: 5.0.424.59809.
Weitere Hinweise liefern die Logs leider nicht.
Der Kontext ist mir auch noch ein kleines Rätsel - letztendlich läuft das ja in der Einblendelogik des Workflow (siehe Screen), als Kontext wird mir "GuiWorkflowScriptContextImpl" zurückgeliefert, den ich aber nirgends in der API finden konnte.
Gruß
Hi,
Implementierungsklassen stehen nur äußerst selten in der API
Das passende Interface ist ClientScriptContext.
Tatsächlich scheint es so, dass in der genannten Version überhaupt keine Agents aus dem ScriptContext heraus zur Verfügung stehen und dies erst ab dem Release von 5.0.5 behoben sein wird.
Grüße
Stefan
Ok, dann stellt sich mir aber die Frage, warum der identische Code in einem Kontextmenu-Skript funktioniert hatte - dieser läuft doch auch über den ScriptContext, oder nicht?
Über das Kontextmenü bekommt das Skript einen anderen Kontext, keinen Workflow-bezogenen.