MarcusDau
Occasional Collector

Rekursiver Freigabe-Workflow

Hallo!

Aktuell stoße ich auf das Problem / den Wunsch, dass der bisherige Freigabe-Workflow (Modell einfaches 4-Augen-Prinzip) deutlich erweitert werden muss. Eine Herausforderung dabei ist, dass es möglich sein muss, Ordner komplett rekursiv freizugeben. Sprich im Medien-Bereich ganze Verzeichnisse mit Grafiken zum Beispiel, oder wenn man im Inhalt 20 Seiten unterhalb eines Menüpunktes geändert hat, dass man dann alle diese Seiten mit einem Arbeitsschritt freigeben kann.

Bei der Suche hier in der Community bin ich auf einen Verweis auf folgende Seite gestoßen:
https://github.com/e-Spirit/basicworkflows

Der Freigabeworkflow dort klingt schon sehr sehr gut, aber ich glaube nicht, dass er mein Problem zur Gänze löst. Das ist natürlich noch umfangreich zu testen.

Hat jemand so einen Freigabe-Workflow wie von mir beschrieben schon mal umgesetzt? Vielleicht ist jemand auch bereit, mir diesen zur Verfügung zu stellen.

Danke für Eure Mithilfe im Voraus!

Grüße

Marcus

0 Kudos
5 Replies
der_sk
I'm new here

Hallo Marcus,

ein kleiner (aber hoffentlich hilfreicher) Werbeeinwurf: Wir bieten für genau solche Szenarien eine Projektlösung an:

http://www.e-spirit.com/marketplace/de/workflow-framework

Viele Grüße

Sascha

0 Kudos
MarcusDau
Occasional Collector

Habe mal den in meiner Mail beschriebenen Freigabeworkflow getestet. Der scheitert jedoch sofort bei Ausführung:

Client Version: 5.1.410.67084

Java Version: 1.7.0_03 Oracle Corporation

FSVersion=5.1.410.67084#3298;JDK=1.7.0_03 32bit Oracle Corporation;OS=Windows 7 6.1 x86;Date=12.06.2015 09:48:16

de.espirit.firstspirit.access.script.SyntaxError: java.lang.ClassNotFoundException: com.espirit.moddev.basicworkflows.release.WfFindRelatedObjectsExecutable

    at de.espirit.firstspirit.server.script.ClassCallerEngine.getExecutable(ClassCallerEngine.java:46)

    at de.espirit.firstspirit.common.ScriptUtil.getExecutable(ScriptUtil.java:86)

    at de.espirit.firstspirit.store.access.templatestore.ScriptImpl.getExecutable(ScriptImpl.java:275)

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

    at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doAutomaticActivities(TaskImpl.java:1524)

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

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

    at de.espirit.firstspirit.client.action.WorkflowAction.startWorkflow(WorkflowAction.java:475)

    at de.espirit.firstspirit.client.action.WorkflowAction.startWorkflow(WorkflowAction.java:89)

    at de.espirit.firstspirit.client.action.WorkflowAction.startWorkflow(WorkflowAction.java:98)

    at de.espirit.firstspirit.client.action.WorkflowUtil.startWorkflow(WorkflowUtil.java:65)

    at de.espirit.firstspirit.client.action.WorkflowMenuAction$WFStartAction.actionPerformed(WorkflowMenuAction.java:269)

    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)

    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

    at javax.swing.AbstractButton.doClick(AbstractButton.java:376)

    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)

    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)

    at java.awt.Component.processMouseEvent(Component.java:6505)

    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

    at java.awt.Component.processEvent(Component.java:6270)

    at java.awt.Container.processEvent(Container.java:2229)

    at java.awt.Component.dispatchEventImpl(Component.java:4861)

    at java.awt.Container.dispatchEventImpl(Container.java:2287)

    at java.awt.Component.dispatchEvent(Component.java:4687)

    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

    at java.awt.Container.dispatchEventImpl(Container.java:2273)

    at java.awt.Component.dispatchEvent(Component.java:4687)

    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)

    at java.awt.EventQueue.access$000(EventQueue.java:101)

    at java.awt.EventQueue$3.run(EventQueue.java:666)

    at java.awt.EventQueue$3.run(EventQueue.java:664)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

    at java.awt.EventQueue$4.run(EventQueue.java:680)

    at java.awt.EventQueue$4.run(EventQueue.java:678)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

    at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)

    at de.espirit.firstspirit.client.AWTDispatchingEventQueue.defaultDispatchEvent(AWTDispatchingEventQueue.java:161)

    at de.espirit.firstspirit.client.AWTDispatchingEventQueue._dispatchEvent(AWTDispatchingEventQueue.java:138)

    at de.espirit.firstspirit.client.AWTDispatchingEventQueue.dispatchEvent(AWTDispatchingEventQueue.java:131)

    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)

    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Caused by: java.lang.ClassNotFoundException: com.espirit.moddev.basicworkflows.release.WfFindRelatedObjectsExecutable

    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

    at de.espirit.firstspirit.server.module.ExtendedUrlClassLoader.findClass(ExtendedUrlClassLoader.java:92)

    at de.espirit.firstspirit.server.module.ModuleClassesLoader.findClass(ModuleClassesLoader.java:135)

    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)

    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)

    at de.espirit.firstspirit.server.module.MutableClassLoader.loadClass(MutableClassLoader.java:121)

    at de.espirit.firstspirit.server.script.ClassCallerEngine.getExecutable(ClassCallerEngine.java:42)

    ... 51 more

0 Kudos
MarcusDau
Occasional Collector

Wo muss ich die mitgelieferten java-Klassen (als jar dann natürlich) auf den FS-Server packen? In server\lib oder shared\lib?

0 Kudos
MarcusDau
Occasional Collector

So, habe das nun als Modul gebaut. Damit zieht er alle Klassen an.

thmarx
I'm new here

Der Basicworkflow ist wie der Name schon sagt ein basic Workflow. D.h. wenn er für deinen Anwendungsfall ausreichend ist, dann ist das super. Hast du aber in deinem Projekt spezielle Anforderungen an die Freigabe, muss er dementsprechend angepasst werden.

Viele Güße

Thorsten

0 Kudos