Search the FirstSpirit Knowledge Base
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
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
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
Wo muss ich die mitgelieferten java-Klassen (als jar dann natürlich) auf den FS-Server packen? In server\lib oder shared\lib?
So, habe das nun als Modul gebaut. Damit zieht er alle Klassen an.
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