MarsDD
Occasional Observer

UrlCreator im Workflow

Jump to solution

Hallo zusammen,

ich stoße gerade an ein Problem, bei dem ich nicht mehr weiter komme.

Folgende Situation:

Ich führe in einem Workflow eine Executable aus, welche wiederum einen Generierungsauftrag startet - soweit so gut. Nachdem dieser durch ist, benötige ich den URL Creator um URLs von gewisse Elemente (z.B. von Bilder) der deployten Seite (anhand der PageRef) zu erhalten.

Den UrlCreator hole ich mir wie folgt:

UrlCreatorSpecification urlSpecification = generateTask.getUrlCreatorSpecification();

urlCreator = urlSpecification.createUrlCreator();

Sobald ich jedoch meinen Workflow laufen lasse erhalte ich eine NPE mit folgendem StackTrace:

at de.espirit.firstspirit.generate.PluggableUrlCreator.getAbsolutePath(PluggableUrlCreator.java:280)

          at de.espirit.firstspirit.generate.PluggableUrlCreator.getFilename(PluggableUrlCreator.java:259)

          at de.materna.firstspirit.XXX.analysePageRef(XXX.java:231)

          at de.materna.firstspirit.XXX.<init>(XXX.java:73)

          at de.materna.firstspirit.XXX.XXX(XXX.java:39)

          at de.materna.firstspirit.XXX.execute(XXX.java:19)

          at de.espirit.firstspirit.client.gui.applications.ApplicationTabRegistry$IdentifiableExecutable.execute(ApplicationTabRegistry.java:104)

          at sun.reflect.GeneratedMethodAccessor72.invoke(Unknown Source)

          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

          at java.lang.reflect.Method.invoke(Method.java:497)

          at bsh.Reflect.invokeMethod(Reflect.java:166)

          at bsh.Reflect.invokeObjectMethod(Reflect.java:99)

          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)

          at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:84)

          at de.espirit.firstspirit.client.gui.applications.ApplicationTabRegistry$IdentifiableExecutable.execute(ApplicationTabRegistry.java:104)

          at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doTransition(TaskImpl.java:1147)

          at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doTransition(TaskImpl.java:1084)

          at de.espirit.firstspirit.workflow.WorkflowAgentImpl$TransitionRunnable.run(WorkflowAgentImpl.java:688)

          at de.espirit.firstspirit.client.gui.util.GuiUtil$RunnableWrapper.run(GuiUtil.java:1959)

          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

          at java.lang.Thread.run(Thread.java:745)

Ich hoffe ich konnte mein Problem verständlich klar darstellen.

FS-Version: 5.2.212

Viele Grüße aus Dresden

Marcel

0 Kudos
1 Solution

Accepted Solutions
MarsDD
Occasional Observer

Problem gefunden - lag an einem internen Konfikt.

View solution in original post

0 Kudos
6 Replies
switt
I'm new here

Hallo Marcel,

ich vermute es liegt daran, dass der URLCreator kein TemplateSet und keine Sprache hat (es sei denn es fehlt ein bischen Code in deinem Beispiel).

Den URLCreator würde ich aus dem GenerateTask über den ScheduleContext holen:

urlCreator = context.getProperty("#urlCreator");

Gruß,

Sebastian

0 Kudos
MarsDD
Occasional Observer

Hi Sebastian,

hierbei komm ich ja genau nicht weiter. Da die Executable in einem Workflow getriggert wird, habe ich ja "nur" den WorkflowScriptContext.

Anhand des GenerateTask habe ich keine Möglichkeit bis jetzt gefunden, den UrlCreator daraus zu extrahieren.

Viele Grüße

Marcel

0 Kudos

Hallo Marcel,

Ich hatte das mit dem Workflow nicht gelesen, sorry. Mein Test im Workflow verlief aber positiv mit folgendem Code.

// Assume your GenerateTask comes from a ScheduleEntry

generateTask = context.getUserService().getConnection().getAdminService().getScheduleStorage().getScheduleEntries(context.getProject()).get(0).getTasks().get(0);

// Get URLCreator

urlSpecification = generateTask.getUrlCreatorSpecification();

urlCreator = urlSpecification.createUrlCreator();

// Obtain necessary values

ss=context.getUserService().getStore(Type.SITESTORE, true); // true should be necessary at this point

page=ss.getChildren(PageRef.class, true).getFirst(); // Any Ref

p=context.getProject();

l=p.getMasterLanguage();

ts=p.getTemplateSets().get(0);// 0 is HTML in my case

// Get URL       

url = urlCreator.getUrl(page,l, ts, PageParams.SINGLE_PAGE_PARAMS,de.espirit.firstspirit.generate.UrlCreator.ABSOLUTE_URL);

context.logError(url);

0 Kudos
MarsDD
Occasional Observer

Hallo Sebastian,

führst du dies als FS-Skript aus? Wenn ja,dann funktioniert dies. Lagere dies, wie oben beschrieben, mal in ein Modul aus - dann sollte die NPE kommen.

VG Marcel

0 Kudos

Hallo Marcel,

ich habs in der Tat als Beanshell Script getestet, aber es funktioniert auch im Modul (grade nochmal probiert) Smiley Wink.

Evtl. ist deine Modul config falsch. Hier mal die aus meinem Test:

<?xml version="1.0" encoding="UTF-8"?>

<module>

    <name>XYZ</name>

    <displayname>XYZ</displayname>

    <version>0.9.1</version>

    <description>A Test</description>

    <vendor>Fancy Name</vendor>

    <scope>public</scope>

    <components>

       <library>

            <name>Utility Core</name>

            <description>Module Core Classes</description>

            <resources>

                <resource>lib/test-jar-with-dependencies.jar</resource>

            </resources>

        </library>

    </components>

</module>

0 Kudos
MarsDD
Occasional Observer

Problem gefunden - lag an einem internen Konfikt.

0 Kudos