1 Reply Latest reply on Nov 9, 2009 3:30 AM by rasun

    jBPM & BeanShell: fail with osgi classpaths

    rasun

      Good day,

      Currently I'm working on a RCP project with jBPM 3. At this very moment I'm stuck while trying to execute a process. The processDefinition.xml starts executing and at a certain moment, when it reaches a part where a Script object is started, a DelegationException is thrown.
      Prior to this exception, I noticed that BeanShell did not seem to be able to resolve the OSGi classpath I use where certain source/config files are located.

      Debugging the code learns that the cause is located somewhere in the integrated BeanShell code (can't tell where exactly, as I don't have the source code available); it seems that BeanShell does not use proper classpaths (confirming OSGi standards), while my RCP based project does.
      As far as I know, BeanShell does 'something' with the classpaths/classloaders which seemingly affects the process in a negative way.

      Can anyone suggest a way to make jBPM/BeanShell understand how to use the proper classpaths or other, if the probable cause does not concern the classpaths/OSGi aspects, possibility?


      Thanks for the effort! Hope that I provided enough info about the problem here, if not then just yell ;).



      === Environment ==============================
      - jBPM Version: 3
      - JDK: 1.6.0_17
      - Configuration : Use the default jbpm.cfg.xml with jbpm.jar lib, no custom config file used.
      - Libraries : using all default libraries from jBPM, no custom or changes made.

      === Stacktrace ==============================

      action threw exception: script evaluation exception
      org.jbpm.graph.def.DelegationException: script evaluation exception
       at org.jbpm.graph.action.Script.eval(Script.java:139)
       at org.jbpm.graph.action.Script.eval(Script.java:73)
       at org.jbpm.graph.action.Script.execute(Script.java:62)
       at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:264)
       at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:220)
       at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:190)
       at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:203)
       at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:174)
       at org.jbpm.graph.def.Node.leave(Node.java:382)
       at org.jbpm.graph.node.StartState.leave(StartState.java:70)
       at org.jbpm.graph.exe.Token.signal(Token.java:195)
       at org.jbpm.graph.exe.Token.signal(Token.java:140)
       at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:271)
       at nl.mindef.c2sc.titaan.uni.UNI.run(Unknown Source)
       at uni.gui.app.main.main.UniRunner.start(UniRunner.java:209)
       at uni.gui.app.main.data.rbb.RbbDevice.start(RbbDevice.java:113)
       at uni.gui.app.main.handlers.dashboard.StartProcessHandler.execute(StartProcessHandler.java:46)
       at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:281)
       at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
       at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:178)
       at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:253)
       at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:253)
       at uni.gui.app.main.views.DashboardView$1.widgetSelected(DashboardView.java:99)
       at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
       at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
       at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
       at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
       at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
       at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2384)
       at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
       at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200)
       at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
       at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
       at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490)
       at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
       at uni.gui.app.base.Application.start(Application.java:27)
       at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
       at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
       at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
       at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
       at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:597)
       at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
       at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
       at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
       at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
      Caused by: java.lang.NullPointerException: Null Pointer in Method Invocation
       at bsh.Name.invokeMethod(Unknown Source)
       at bsh.BSHMethodInvocation.eval(Unknown Source)
       at bsh.BSHPrimaryExpression.eval(Unknown Source)
       at bsh.BSHPrimaryExpression.eval(Unknown Source)
       at bsh.Interpreter.eval(Unknown Source)
       at bsh.Interpreter.eval(Unknown Source)
       at bsh.Interpreter.eval(Unknown Source)
       at org.jbpm.graph.action.Script.eval(Script.java:130)
      


        • 1. Re: jBPM & BeanShell: fail with osgi classpaths
          rasun

          It seems that BeanShell is not accessible in any way. Replacing it with the newest version is no solution, either.

          As far as I can see, BeanShell alters something 'behind-the-scene' with the classpaths, but the reason why escapes me.
          I noticed that the BeanShell version used is 1.3.0. There is no documentation about it whether it supports OSGi or not.

          Still trying to figure it out, so if anyone has got suggestions...