Aller au contenu principal

Projekt Settings (z.B. Auflösungen) übertragen?

Commentaires

15 commentaires

  • Zendesk API User
    Author: witt - 3/27/2015 14:46

    Hallo Lars,

    die Funktion wird mit der FirstSpirit Version 5.2 zur Verfügung gestellt werden, allerdings nicht über das Modul CorporateContent oder ContentTransport, sondern über die Entwicklerfunktion "ExternalSync".

    Viele Grüße,

    Daniel

    0
  • Zendesk API User
    Author: lbernau - 3/27/2015 15:03

    Hallo Daniel,

    das ist leider nicht ganz die Antwort die wir uns erhofft haben, bis zum Release von 5.2. haben wir vermutlich die Auflösungen per Hand in die Projekte eingepflegt. ;-)

    Trotzdem Danke für die Info.

    Grüße,

    Lars

    0
  • Zendesk API User
    Author: sguener - 3/27/2015 16:38

    Hallo Lars,

    wenn die Access-API lizensiert wurde, kannst du die Auflösungen per API auslesen und setzen. Bei unseren Kunden machen wir das auch so. Falls du Fragen zur Umsetzung hast, kann ich dir gerne weiterhelfen.

    Schöne Grüße

    Sahin

    0
  • Zendesk API User
    Author: ceggert - 4/9/2015 8:38

    Hallo Sahin,

    ich wäre an einem Lösungsansatz interessiert.

    Wo führt Ihr dieses Script aus über die Admininistrationskonsole als Auftrag in dem Projekt von dem ihr die Auflösungen rausholen wollt?

    vielen Dank und viele Grüße,

    Christopher Eggert

    0
  • Zendesk API User
    Author: sguener - 4/14/2015 13:57

    Hallo Christopher,

    ich kann leider erst jetzt antworten. Wir haben eine eigene Applikation dafür geschrieben, die eine Verbindung zum Server aufbaut und mittels Access-API die notwendigen/gewünschten Operationen ausführt.

    Wenn du weißt, wie eine externe Serververbindung zum FS-Server aufgebaut wird, dann ist das schon die halbe Miete. Du musst dir dann über diese Connection beide Projekte holen und die gewünschen Setter und Getter aufrufen.

    Ich kann dir die Applikation leider nicht zur Verfügung stellen. Falls du nicht mehr weiter weißt, helfe ich gerne (sofern es die Zeit zulässt).

    Schöne Grüße

    Sahin

    0
  • Zendesk API User
    Author: ceggert - 4/14/2015 14:53

    Hallo Sahin,

    schon mal danke für deine Antwort. Ja etwas hab ich schon. Ich hole mir auf dem Server das Projekt in dem alle Auflösungen definiert sind und das Projekt in welche ich diese importieren möchte ich habe auch eine Methode in der API gefunden setResolutions(). Ich bekomme hier auch kein Fehler vom Server leider legt mir dieser aber auch die Auflösungen nicht automatisch an :smileysad:

    Ich hatte zuerst den Verdacht, dass es an der Auflösung ORIGINAL liegt das er diese nicht importieren kann weil die ja schon zu jedem Projekt sowieso gehört. Daraufhin habe ich diese Auflösung aus der Liste entfernt aber jedoch auch ohne Erfolg. Leider keine Fehlermeldung ich habe einen eigenen Server auftrag dafür gemacht mit einem kleinen Beanshell-Script. Ergebnis auftrag läuft fehlerfrei durch aber keine Auflösungen.

    Das Scrit ist bisher noch etwas unsauber war bisher nur ein Testing auf dem Server aber ich dachte so in der Art müsste es funktionieren:

    //!Beanshell

    import de.espirit.firstspirit.access.project.Resolution;

    import java.util.List;

    connection = context.getConnection();

    masterProject = "Content Master";

    List<Resolution> resolutions = null;

    ArrayList<Resolution> resolutionList = null;

    // get resolutions

    project = connection.getProjectByName("Content Master");

    if(project != null) {

              resolutions = project.getResolutions();

    }

    for(resolution : resolutions) {

              context.logInfo("DEBUG Resolutions " + resolution.getUid());

              if("ORIGINAL".equals(resolution.getUid())) {

                        context.logInfo("DEBUG resolution to remove: " +resolution.getUid());

                        resolutions = new ArrayList(resolutions);

                        resolutions.remove(resolution);

              }

    }

    // set resolutions

    projects = connection.getProjects();

    context.logInfo("DEBUG Class Info1: " + resolutions.getClass());

    Resolution[] resArray = resolutions.toArray(new Resolution[resolutions.size()]);

    for(project : projects) {

              context.logInfo("DEBUG Array Groesse : " + resArray.length);

              if(!masterProject.equals(project.getName())) {

                        project.setResolutions(resArray);

                        context.logInfo("DEBUG " + project.getName() + resArray);

              }

    }

    context.logInfo("Script End");

    habe ich hier evtl. noch einen Schritt vergessen?

    viele Grüße und vielen Dank,

    Christopher

    0
  • Zendesk API User
    Author: sguener - 4/14/2015 15:07

    Hallo Christopher,

    also auf den ersten Blick fällt mir auf, dass du das Projekt nicht lockst. Du müsstest vor project.setResolutions(resArray); das Projekt locken.

    Also quasi (abgekürzt ohne Exception handling etc.):

    project.lock();

    project.setResolutions(resArray);

    project.save();

    project.unlock();

    Ich hoffe, dass funktioniert dann auch schon. :smileyhappy:

    Viele Grüße

    Sahin

    0
  • Zendesk API User
    Author: TWidmayer - 4/20/2015 8:54

    Hallo zusammen,

    hat das so wie du in deinem Code beschrieben hast funktioniert?

    Ich hab auch so ein Skript geschrieben, jedoch hat das mit setResolutions bei mir nicht wirklich funktioniert...

    Ich musste da mit createResolution.

    viele Grüße

    Tobias

    0
  • Zendesk API User
    Author: ceggert - 4/20/2015 9:06

    Hallo Tobias,

    ich werde das mal testen, in der Tat hat setResolution() bisher leider noch nicht funktioniert.

    Ich muss das nochmal ausprobieren.

    vielen Dank für die Hilfe.

    Christopher    

    0
  • Zendesk API User
    Author: ceggert - 4/20/2015 9:13

    Hallo Sahin,

    super vielen Dank das war schon des Rätsels lösung :smileygrin:

    viele Grüße,

    Christopher

    0
  • Zendesk API User
    Author: th_biedermann - 8/19/2022 12:48

    Hallo

    Hat jemand diesen Script zum laufen gebracht? Ich habe das selbe Problem, dass die Resolutions nicht im Zielprojekt gespeichert werden. project.lock(); etc. wird bei mir einen Fehler.

     

    //!Beanshell import de.espirit.firstspirit.access.project.Resolution; import java.util.*; connection = context.getConnection(); masterProject = context.getProperty("masterProject"); List<Resolution> resolutions = null; ArrayList<Resolution> resolutionList = null; context.logInfo("DEBUG-masterProject: " + masterProject); // get resolutions project = connection.getProjectByName(masterProject); if(project != null) { resolutions = project.getResolutions(); } for(resolution : resolutions) { context.logInfo("DEBUG Resolutions " + resolution.getUid()); if("ORIGINAL".equals(resolution.getUid())) { context.logInfo("DEBUG resolution to remove: " +resolution.getUid()); resolutions = new ArrayList(resolutions); resolutions.remove(resolution); } } // set resolutions context.logInfo("DEBUG Class Info1: " + resolutions.getClass()); Resolution[] resArray = resolutions.toArray(new Resolution[resolutions.size()]); targetProject = context.getProject(); targetProject.setResolutions(resArray); context.logInfo("DEBUG-Projectname: " + context.getProject().getName()); context.logInfo("Script End");

     

    0
  • Zendesk API User
    Author: jammin - 12/14/2022 13:04

    Hi ,

    bei mir hat es mit einigen Anpassungen am Script geklappt:

    import de.espirit.firstspirit.access.project.Resolution; import java.util.*; context.logInfo("Resolution Copy Script Start"); connection = context.getConnection(); sourceProjectName = "Source Project Name"; sourceProject = connection.getProjectByName(sourceProjectName); List<Resolution> resolutions = null; context.logInfo("DEBUG sourceProject: " + sourceProject); if(project != null) { resolutions = sourceProject.getResolutions(); } for(Resolution resolution : resolutions) { context.logInfo("DEBUG Resolutions " + resolution.getUid()); //exclude ORIGINAL resolution from resolution set if("ORIGINAL".equals(resolution.getUid())) { context.logInfo("DEBUG resolution to remove: " +resolution.getUid()); resolutions = new ArrayList(resolutions); resolutions.remove(resolution); } } // resolution list to array Resolution[] resArray = resolutions.toArray(new Resolution[resolutions.size()]); targetProject = context.getProject(); context.logInfo("DEBUG target Projectname (current project): " + context.getProject().getName()); targetProject.lock(); // set resolutions targetProject.setResolutions(resArray); targetProject.save(); targetProject.unlock(); context.logInfo("Resolution Copy Script End");

     

    Gruß,

    Annika

    0
  • Zendesk API User
    Author: th_biedermann - 12/14/2022 15:07

    Hallo Annika

    Vielen lieben DANK für den angepassten Script.

    Ich habe ich noch folgenden Fehler:

    ERROR 14.12.2022 16:06:17.151{dNR=} (de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): error during script execution : de.espirit.firstspirit.access.script.ExecutionException: Method Invocation targetProject.lock : at Line: 34 : in file: inline evaluation of: ``__execute() { import de.espirit.firstspirit.access.project.Resolution; import ja . . . '' : targetProject .lock ( ) Called from method: __execute Target exception: java.lang.SecurityException: changes not allowed for current connection at line 34 de.espirit.firstspirit.access.script.ExecutionException: Method Invocation targetProject.lock : at Line: 34 : in file: inline evaluation of: ``__execute() { import de.espirit.firstspirit.access.project.Resolution; import ja . . . '' : targetProject .lock ( ) Called from method: __execute Target exception: java.lang.SecurityException: changes not allowed for current connection at line 34 at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:109) at de.espirit.firstspirit.server.script.PermissionsScriptEngine$PermissionsExecutable.lambda$execute$1(PermissionsScriptEngine.java:83) at java.base/java.security.AccessController.doPrivileged(Native Method) at de.espirit.firstspirit.server.script.PermissionsScriptEngine$PermissionsExecutable.execute(PermissionsScriptEngine.java:88) at de.espirit.firstspirit.server.script.PermissionsScriptEngine$PermissionsExecutable.execute(PermissionsScriptEngine.java:83) at de.espirit.firstspirit.common.ScriptUtil.execute(ScriptUtil.java:109) at de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor.run(ScriptTaskExecutor.java:162) at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2709) at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2692) at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.call(ScheduleManagerImpl.java:2621) at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:629) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:491) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:58) Caused by: java.lang.SecurityException: changes not allowed for current connection at de.espirit.firstspirit.server.scheduler.RestrictedTaskSecurityManager.checkAction(RestrictedTaskSecurityManager.java:47) at de.espirit.firstspirit.client.io.PublicAccess.checkAccess(PublicAccess.java:199) at de.espirit.firstspirit.server.projectmanagement.ProjectImpl.checkAccess(ProjectImpl.java:3434) at de.espirit.firstspirit.server.projectmanagement.ProjectImpl.lock(ProjectImpl.java:230) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at bsh.Reflect.invokeMethod(Reflect.java:185) at bsh.Reflect.invokeObjectMethod(Reflect.java:118) at bsh.Name.invokeMethod(Name.java:858) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHBlock.evalBlock(BSHBlock.java:130) at bsh.BSHBlock.eval(BSHBlock.java:80) at bsh.BshMethod.invokeImpl(BshMethod.java:371) at bsh.BshMethod.invoke(BshMethod.java:267) at bsh.BshMethod.invoke(BshMethod.java:170) at bsh.PreparsedScript.invoke(PreparsedScript.java:66) at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:100) ... 18 more INFO 14.12.2022 16:06:17.151 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): finished task 'script' - schedule entry 'Auflösungen übertragen' (id=644835)

     

    Hast du mir hier noch einen Tipp?

    Grüsse. Thomas

    0
  • Zendesk API User
    Author: jammin - 12/15/2022 5:38

     

    Wie ist das Setting bei dir? Sieht aus wie ein Script Step in einem Arbeitsablauf oder so? Von wo aus wird es ausgeführt?

    Bei uns wurde nur das Script aus dem Menü heraus in dem Projekt (SiteArchitect) ausgeführt, welches das Ziel Projekt war.

    Gruß,

    Annika

    0
  • Zendesk API User
    Author: th_biedermann - 12/15/2022 5:59

    Hoi Annika

    Ich hatte das Script nicht im Projekt ausgeführt. Ich hatte es zu den Aktionsvorlagen ausgelagert.

    Jetzt wo ich den Script im Projekt ausführe, klappt bei mir auch!

    Vielen lieben DANK für die Hilfe

    Grüsse. Thomas

    0

Vous devez vous connecter pour laisser un commentaire.