1 Reply Latest reply on Jun 16, 2006 2:48 AM by ephemeris-lappis

    [jBPM][3.1.1][GPD] Exception when re-opening a process file

    ephemeris-lappis

      Hello.

      I was trying to use the GPD eclipse plugin to design a test process definition. In fact, i have first open an existent process file i've previously hand-written. After moving the nodes on the diagram, i've just saved the changes, and close the file. At this time, le GDP has generated two new files : ".gpd.BP3.xml" and "BP3.jpg", using the origin file name "BP3.xml" of the process definition. The last one seems to be a static image of my process diagram as saved. The first seems to be the graphics layout of the same diagram...

      When i try to open again the process defintiion, an exception is thrown. I've tried to close the project, exit from eclipse and run it all again, but the exception persists !

      The only way to get back to a working position, is deleting the ".gpd.BP3.xml", obviously losing the diagram, and doing it all again !

      I copy the statck trace and the files content at the end of the message...

      Any idea ? Does somebody has the same problem ?
      The GPD plugin is the version that comes with the starters kit 3.1.1...

      Thanks for any help !

      The stack trace :

      java.lang.NullPointerException
       at org.jbpm.ui.model.ProcessDefinition.getNodeByName(Unknown Source)
       at org.jbpm.ui.editor.DesignerContentProvider.addGraphicalInfo(Unknown Source)
       at org.jbpm.ui.editor.DesignerContentProvider.addGraphicalInfo(Unknown Source)
       at org.jbpm.ui.editor.DesignerContentProvider.addGraphicalInfo(Unknown Source)
       at org.jbpm.ui.editor.DesignerGraphicalEditorPage.initInput(Unknown Source)
       at org.jbpm.ui.editor.DesignerGraphicalEditorPage.init(Unknown Source)
       at org.eclipse.ui.part.MultiPageEditorPart.addPage(MultiPageEditorPart.java:152)
       at org.jbpm.ui.editor.DesignerEditor.addGraphPage(Unknown Source)
       at org.jbpm.ui.editor.DesignerEditor.createPages(Unknown Source)
       at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:241)
       at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:609)
       at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:384)
       at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:552)
       at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:283)
       at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:126)
       at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:268)
       at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
       at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:391)
       at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1102)
       at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1051)
       at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1256)
       at org.eclipse.ui.internal.PartStack.add(PartStack.java:442)
       at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:109)
       at org.eclipse.ui.internal.EditorSashContainer.addEditor(EditorSashContainer.java:60)
       at org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorAreaHelper.java:212)
       at org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAreaHelper.java:202)
       at org.eclipse.ui.internal.EditorManager.createEditorTab(EditorManager.java:758)
       at org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager.java:665)
       at org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:628)
       at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2360)
       at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2295)
       at org.eclipse.ui.internal.WorkbenchPage.access$9(WorkbenchPage.java:2287)
       at org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.java:2273)
       at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
       at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2268)
       at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2249)
       at org.eclipse.ui.ide.IDE.openEditor(IDE.java:371)
       at org.eclipse.ui.ide.IDE.openEditor(IDE.java:334)
       at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:251)
       at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:131)
       at org.eclipse.jdt.internal.ui.actions.OpenActionUtil.open(OpenActionUtil.java:49)
       at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:169)
       at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:153)
       at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:222)
       at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:198)
       at org.eclipse.jdt.internal.ui.packageview.PackageExplorerActionGroup.handleOpen(PackageExplorerActionGroup.java:296)
       at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$4.open(PackageExplorerPart.java:869)
       at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:741)
       at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044)
       at org.eclipse.core.runtime.Platform.run(Platform.java:783)
       at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:44)
       at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:148)
       at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:739)
       at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:968)
       at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1067)
       at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:243)
       at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:238)
       at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:277)
       at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
       at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:843)
       at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3080)
       at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2713)
       at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1699)
       at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1663)
       at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:367)
       at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
       at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103)
       at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226)
       at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376)
       at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
       at java.lang.reflect.Method.invoke(Unknown Source)
       at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)
       at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
       at org.eclipse.core.launcher.Main.run(Main.java:973)
       at org.eclipse.core.launcher.Main.main(Main.java:948)
      


      The process definition file :
      <?xml version="1.0"?>
      
      <process-definition
       xmlns="urn:jbpm.org:jpdl-3.1"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="urn:jbpm.org:jpdl-3.1 http://jbpm.org/jpdl-3.1.xsd"
       name="MY-PROCESS-NUMBER-THREE">
      
       <swimlane name="Buyer">
       <!-- L'application designe le client acheteur au runtime -->
       </swimlane>
      
       <swimlane name="Seller">
       <!-- Assignation d'un vendeur -->
       <assignment class="my.wf.three.SellerAssignmentHandler" />
       </swimlane>
      
       <swimlane name="Controler">
       <!-- Assignation constante du role de controleur -->
       <assignment actor-id="CONTROLER" />
       </swimlane>
      
       <start-state>
       <transition to="place-order" />
       </start-state>
      
       <task-node name="place-order">
       <task
       name="task_place-order"
       description="The customer place a new order"
       swimlane="Buyer" />
       <transition to="check-order" />
       </task-node>
      
       <decision name="check-order">
       <transition
       name="check-order_to_deliver-product"
       to="deliver-product" />
       <transition
       name="check-order_to_verify-order"
       to="verify-order">
       <condition
       expression="#{contextInstance.variables['ORDER-AMOUNT'] gt 1000.00}" />
       </transition>
       </decision>
      
       <task-node name="verify-order">
       <task
       name="task_verify-order"
       description="Depending on conditions, the controller verify the order to accept or refuse it"
       swimlane="Controler" />
       <event type="node-enter">
       <script>
       <expression>
       <![CDATA[
       System.out.println("!!! VERIFY ORDER = " + executionContext.getVariable("ORDER-AMOUNT"));
       ]]>
       </expression>
       </script>
       </event>
       <transition to="on-verify" />
       </task-node>
      
       <decision name="on-verify">
       <transition
       name="on-verify_to_reject-order"
       to="reject-order" />
       <transition
       name="on-verify_to_deliver-product"
       to="deliver-product">
       <condition
       expression="#{contextInstance.variables['ORDER-VERIFY-ACCEPT']}" />
       </transition>
       </decision>
      
       <task-node name="reject-order">
       <task
       name="task_reject-order"
       description="The seller rejects an order the controler has refused"
       swimlane="Seller" />
       <event type="node-enter">
       <script>
       <expression>
       <![CDATA[
       System.out.println("!!! ORDER IS REJECTED = " + executionContext.getVariable("ORDER-VERIFY-COMMENT"));
       ]]>
       </expression>
       </script>
       </event>
       <transition to="close-order" />
       </task-node>
      
       <task-node name="deliver-product">
       <task
       name="task_deliver-product"
       description="The seller deliver the ordered product"
       swimlane="Seller" />
       <event type="node-enter">
       <script>
       <expression>
       <![CDATA[
       System.out.println("!!! DELIVER PRODUCT = " + executionContext.getVariable("ORDER-VERIFY-COMMENT"));
       ]]>
       </expression>
       </script>
       </event>
       <transition to="pay-invoice" />
       </task-node>
      
       <task-node name="pay-invoice">
       <task
       name="task_pay-invoice"
       description="The customer pays the price for the ordered product"
       swimlane="Buyer" />
       <transition to="close-order" />
       </task-node>
      
       <task-node name="close-order">
       <task
       name="task_close-order"
       description="When the product is delivered, and the price is paid, the order is closed"
       swimlane="Seller" />
       <transition to="end-of-order" />
       </task-node>
      
       <end-state name="end-of-order" />
      
      </process-definition>
      


      The .gpd.BP3.xml :
      <?xml version="1.0" encoding="UTF-8"?>
      
      <process-diagram name="MY-PROCESS-NUMBER-THREE" width="991" height="648">
       <node x="12" y="12" width="140" height="40">
       <transition>
       <label x="5" y="-10"/>
       </transition>
       </node>
       <node name="place-order" x="12" y="84" width="140" height="40">
       <transition>
       <label x="5" y="-10"/>
       </transition>
       </node>
       <node name="check-order" x="288" y="156" width="140" height="40">
       <transition name="check-order_to_deliver-product">
       <label x="-71" y="-12"/>
       </transition>
       <transition name="check-order_to_verify-order">
       <label x="-68" y="-9"/>
       </transition>
       </node>
       <node name="verify-order" x="624" y="228" width="140" height="40">
       <transition>
       <label x="5" y="-10"/>
       </transition>
       </node>
       <node name="on-verify" x="624" y="300" width="140" height="40">
       <transition name="on-verify_to_reject-order">
       <label x="5" y="-10"/>
       </transition>
       <transition name="on-verify_to_deliver-product">
       <label x="-56" y="-7"/>
       </transition>
       </node>
       <node name="reject-order" x="624" y="384" width="140" height="40">
       <transition>
       <label x="5" y="-10"/>
       </transition>
       </node>
       <node name="deliver-product" x="288" y="384" width="140" height="40">
       <transition>
       <label x="5" y="-10"/>
       </transition>
       </node>
       <node name="pay-invoice" x="12" y="456" width="140" height="40">
       <transition>
       <label x="5" y="-10"/>
       </transition>
       </node>
       <node name="close-order" x="288" y="528" width="140" height="40">
       <transition>
       <label x="5" y="-10"/>
       </transition>
       </node>
       <node name="end-of-order" x="288" y="600" width="140" height="40"/>
      </process-diagram>