Aller au contenu principal

Variabeln im GenerateTask setzen und persistieren

Commentaires

6 commentaires

  • Zendesk API User
    Author: felix_reinhold - 2/12/2018 6:42

    Hallo René,

    habe mal schnell einen Auftrag mit einem Generierungstask angelegt und folgendes eben schnell in die bsh gehauen und bei mir wurden die Variablen angezeigt:

    as = context.requestSpecialist(de.espirit.firstspirit.access.ServicesBroker.TYPE).getService(de.espirit.firstspirit.access.AdminService.class);

    prj = e.getProject();

    se = as.getScheduleStorage().getScheduleEntry(prj, "debug");

    gt = se.getTasks().get(0);

    se.lock();

    gt.setVariable("testVariable","testValue");

    se.save();

    se.unlock();

    Sieht dein Code auch in etwa so aus?

    Gruß

    Felix

    0
  • Zendesk API User
    Author: seegers - 2/13/2018 10:21

    Hier ist mein Code zum Vergleich, ich lasse es als Skript laufen

    AdminService as = context.getConnection().getService(AdminService.class);

    ScheduleStorage sst = as.getScheduleStorage();

    for(Long pid:project_ids){

        Project p = as.getProject(pid);

        for(ScheduleEntry se:sst.getScheduleEntries(p)){

          for(ScheduleTask t:se.getTasks()){

            if(t instanceof GenerateTask && "generate".equals(t.getName())){

              for(v:t.getVariables()){  //log var status to console 'before'

                context.logInfo(" - " + v.getKey() + " : " + v.getValue());

              }

              se.lock();

              t.setVariable("dv_tracking","false");

              se.save();

              se.unlock();

              for(v:t.getVariables()){  //log var status to console 'after', neue Var 'dv_tracking' wird in der Konsole angezeigt, aber nicht in der Ansicht des Server Manager

                context.logInfo(" - " + v.getKey() + " : " + v.getValue());

              }

            }

          }

        }

    }

    0
  • Zendesk API User
    Author: felix_reinhold - 2/13/2018 11:03

    Hallo René,

    dein Code funktioniert bei mir. Könnte also ein Bug in deiner FS-Version sein.

    Am besten mal ein Ticket beim Helpdesk aufmachen.

    Gruß

    Felix

    0
  • Zendesk API User
    Author: hbarthel - 2/13/2018 11:17

    Ich sperre und speichere immer noch das Projekt, wenn "se.isProjectSchedule()" true liefert. Ich weiß nicht, ob ich das schonmal ohne probiert hatte, jedenfalls funktioniert es so:

    if (entry.isProjectSchedule()) {

    entry.getProject().lock();

    }

    entry.lock();

    .....

    entry.save();

    entry.unlock();

    if (entry.isProjectSchedule()) {

      entry.getProject().save();

      entry.getProject().unlock();

    }

    Gruß, Heiko

    0
  • Zendesk API User
    Author: seegers - 2/13/2018 13:54

    felix.reinhold​: Dein Skript läuft auch bei mir in der BSH, und da unsere Ansätze ja im Prinzip gleich sind, vermute ich nicht einen Bug in der Version

    hbarthel​: Danke für die Idee, macht jedoch keinen Unterschied bei meinem Problem

    0
  • Zendesk API User
    Author: seegers - 2/13/2018 15:19

    Ich habe die Lösung nun gefunden. Die Methoden auf dem ScheduleEntry-Objekt müssen außerhalb der For-Schleife mit ScheduleTasks aufgerufen werden. Ich vermute, dass hier irgendwie ein unterschiedlicher Scope vorliegt.

    se.lock();

    for(ScheduleTask t:se.getTasks()){

         ...

    }

    se.save();

    se.unlock();



    0

Vous devez vous connecter pour laisser un commentaire.