ceggert
I'm new here

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

Hallo Sahin,

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

viele Grüße,

Christopher

0 Kudos
th_biedermann
Occasional Collector

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

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 Kudos
jammin
Occasional Observer

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

Hi @th_biedermann ,

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 Kudos
th_biedermann
Occasional Collector

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

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 Kudos
jammin
Occasional Observer

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

@th_biedermann 

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

th_biedermann
Occasional Collector

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

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