[jBPM][3.1.1][GPD] Exception when re-opening a process file
ephemeris-lappis Jun 15, 2006 9:41 AMHello.
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>