Aller au contenu principal

WorkflowAgent in Modul

Commentaires

7 commentaires

  • Zendesk API User
    Author: MarsDD - 12/17/2014 11:14

    Hallo Ralph,

    durch die Connection zum FS-Server kannst du einen Context holen (ProjectScriptContextImpl) bzw. aus dem Project den UserService. Daraus kannst du dann folgendes machen

    TemplateStoreRoot tsr = userService.getTemplateStore();

    // alternativ

    TemplateStoreRoot tsr = (TemplateStoreRoot) userService.getStore(Store.TEMPLATESTORE, false);

    Workflow workflow = tsr.getWorkflowByName("workflowName");

    WorkflowAgent workflowAgent = (WorkflowAgent) context.requireSpecialist(WorkflowAgent.TYPE, false);

    workflowAgent.WorkflowProcessContext workflowProcessContext = workflowAgent.startWorkflow(workflow, <Object aus Basis IDProvider>);

    workflowProcessContext.showActionDialog();

    Nicht getestet - jedoch so in der Art und Weise sollte es funktionieren

    Viele Grüße

    Marcel

    0
  • Zendesk API User
    Author: rkurz - 12/17/2014 15:36

    Hallo Marcel,

    danke für die Infos.

    Bzgl. des ProjectScriptContextImpl: Kann ich da was casten oder baue ich mir den selbst zusammen?

    Selbst mit

    workflowAgent = (WorkflowAgent) this.serverEnvironment.getBroker().requireSpecialist(WorkflowAgent.TYPE);

    aus einem Service heraus erhalte ich

    java.lang.IllegalStateException: No specialist found for 'de.espirit.firstspirit.workflow.WorkflowAgent$1@c3b4cc34'!

              at de.espirit.firstspirit.agency.AbstractSpecialistsBroker.requireSpecialist(AbstractSpecialistsBroker.java:14)

    Gibt es andere Voraussetzungen dafür, dass dieser Agent exisitiert?

    FirstSpirit Version 5.0.606, Java 1.7.0_71, keine Freigabe aktiviert.

    Danke und Gruß

    Ralph

    0
  • Zendesk API User
    Author: MarsDD - 12/17/2014 15:41

    Hallo Ralph,

    bzgl. deiner ProjectScriptContextImpl-Frage:

    ScriptContext scriptContext = new ProjectScriptContextImpl(connection, userService, new Hashtable<String, Object>());

    BaseContext baseContext = (BaseContext) scriptContext;

    Viele Grüße

    Marcel

    0
  • Zendesk API User
    Author: rkurz - 12/18/2014 15:12

    Hallo Marcel,

    danke für Deine Hilfe!

    Eine schöne Weihnachtszeit wünsche ich Dir!

    Gruß

    Ralph

    0
  • Zendesk API User
    Author: witt - 12/18/2014 15:29

    Hallo zusammen,

    bitte keine *Impl Klassen verwenden und schon gar nicht Objekte aus diesen heraus erzeugen. Ihr bewegt euch hier im absoluten nicht öffentlichen API Bereich! Wenn sich hier etwas ändert besteht kein Anspruch auf Wartung oder Support.

    Wenn ihr z.B. einen ProjectAgent benötigt, könnt ihr euch den über den Broker holen und nutzen.

    Falls deine Anfrage noch nicht möglich ist, habe ich noch nicht prüfen können, würde ich dich ggf. bitten dafür einen Feature-Request zu stellen bzw. zu dem Thema ein Helpdesk-Ticket zu öffnen.

    Viele Grüße,

    Daniel

    0
  • Zendesk API User
    Author: mbergmann - 12/20/2014 11:48

    Hallo Ralph,

    so wie ich Deinen Code verstehe ist die Ursache, dass Du versuchst den WorkflowAgent aus dem aus dem Broker eines ServerEnvironments bzw. einer Connection zu holen.

    Diese Broker haben keine Projektbindung, bei der Connection steht es auch explizit in der API:

    "Returns broker without project binding".

    Beim ServerEnvironment im Rahmen eines Services ergibt sich das daraus, dass eben der Service (bzw. das ServerEnvironment selbst) nicht an ein spezielles Projekt gebunden sind, d.h. letztlich fehlt dadurch auch dem Broker aus dem ServerEnvironment hier die Verbindung zu einem Projekt, die aber für das Holen des WorkflowAgent benötigt wird, siehe API zum WorkflowAgent (oben):

    "Agent providing means to start new workflows or process steps in existing ones.

    This agent is related to the project specified by the surrounding context."

    Die Lösung sollte hier sein, sich über den projektungebundenen Broker wieder einen BrokerAgent zu besorgen und sich von diesem einen Broker mit Projektbindung zu holen:

    Connection connection=...

    String projectName=...

    BrokerAgent brokerAgent = connection.getBroker().requireSpecialist(BrokerAgent.TYPE);

    SpecialistsBroker projectSpecificBroker = brokerAgent.getBrokerByProjectName(projectName);

    WorkflowAgent wfla = projectSpecificBroker.requireSpecialist(WorkflowAgent.TYPE);

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: rkurz - 1/16/2015 14:50

    Hallo Herr Bergmann, Hallo Her Witt,

    vielen Dank für Ihre Antworten!

    0

Vous devez vous connecter pour laisser un commentaire.