Couldn't parse process definition...
fidalma Apr 6, 2006 9:00 AMHi all,
I am always in trouble... sigh... This is the situation:
-------------------------------------- PROCESS DEFINITION -------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="Initiator"> <swimlane name="initiator" /> <start-state name="start new process"> <task swimlane="process initiator" /> <transition name="tr1" to="decision"> <action name="action" class="com.sample.action.SampleActionHandler"> </action> </transition> </start-state> <decision name="decision"> <handler class="com.sample.decision.SampleDecisionHandler"></handler> <transition name="tr2" to="action"></transition> <transition name="tr3" to="end1"></transition> </decision> <state name="action"> <transition name="tr4" to="end1"></transition> </state> <end-state name="end1"></end-state> </process-definition> ---------------------------------------- MY ACTION HANDLER -------------------------------------- package com.sample.action; import org.jbpm.graph.def.ActionHandler; import org.jbpm.graph.exe.ExecutionContext; public class SampleActionHandler implements ActionHandler { private static final long serialVersionUID = 1L; public void execute(ExecutionContext context) throws Exception { Runtime rt = null; Process process = null; context.getContextInstance().createVariable("greeting", "Greeting from SampleActionHandler"); try { rt = Runtime.getRuntime(); process = rt.exec("C:\\Applications~1\\ECLIPSE~1\\Start.bat"); context.getContextInstance().createVariable("status", new Integer(process.waitFor())); } catch (Exception e) { System.out.println(e); context.getContextInstance().createVariable("budget", new Integer(1)); } } } ------------------------------------- MY DECISION HANDLER -------------------------------------- package com.sample.decision; import org.jbpm.graph.exe.ExecutionContext; import org.jbpm.graph.node.DecisionHandler; public class SampleDecisionHandler implements DecisionHandler { private static final long serialVersionUID = 1L; public String decide(ExecutionContext context) throws Exception { int budget = ((Number)context.getContextInstance().getVariable("status")).intValue(); if (budget == 0) return "tr2"; else if (budget == 1) return "tr3"; else return "tr3"; } } ---------------------------------------- MY NEW CLASS ---------------------------------------- package com.sample.util; import org.jbpm.graph.def.ProcessDefinition; import org.jbpm.graph.exe.ProcessInstance; public class StartProcess { private String path = ""; /** Creates a new instance of StartProcess */ private StartProcess() { path = "C:\\Applications and Projects\\ECLIPSE Workspace\\Process Initiator\\src\\" + "process\\Initiator.par\\processdefinition.xml"; } public void init() { try { ProcessDefinition def = ProcessDefinition.parseXmlResource(path); System.out.println("STEP 1 - Istanziata la classe ProcessDefinition"); ProcessInstance instance = new ProcessInstance(def); System.out.println("STEP 2 - Istanziata la classe ProcessInstance"); instance.signal(); System.out.println("STEP 3 - Effettuato il primo signal"); } catch(Exception e) { System.err.println(e.getMessage()); //e.printStackTrace(); } } public static void main(String[] args) { try { StartProcess sp = new StartProcess(); System.out.println("STEP 0 - Istanziata la classe StartProcess"); System.out.println(sp.path); sp.init(); } catch(Exception exc) { System.err.println(exc.getMessage()); exc.printStackTrace(); } } }
When I try to execute my class "StartProcess" then I have the error "Couldn't parse process definition...". This is the output:
[java] STEP 0 - Istanziata la classe StartProcess
[java] C:\Applications and Projects\ECLIPSE Workspace\Process Initiator\src\process\Initiator.par\processdefinition.xml
[java] 11:46:44,190 [main] INFO JbpmConfiguration : using jbpm configuration resource 'jbpm.cfg.xml'
[java] 11:46:44,737 [main] DEBUG JbpmConfiguration : creating jbpm configuration from input stream
[java] 11:46:44,831 [main] ERROR JpdlXmlReader : couldn't parse process definition
[java] org.dom4j.DocumentException: null Nested exception: null
[java] at org.dom4j.io.SAXReader.read(SAXReader.java:484)
[java] at org.jbpm.jpdl.xml.JpdlParser.parse(JpdlParser.java:57)
[java] at org.jbpm.jpdl.xml.JpdlXmlReader.readProcessDefinition(JpdlXmlReader.java:138)
[java] at org.jbpm.graph.def.ProcessDefinition.parseXmlInputStream(ProcessDefinition.java:172)
[java] at org.jbpm.graph.def.ProcessDefinition.parseXmlResource(ProcessDefinition.java:153)
[java] at com.sample.util.StartProcess.init(StartProcess.java:22)
[java] at com.sample.util.StartProcess.main(StartProcess.java:47)
[java] Nested exception:
[java] [[ERROR] couldn't parse process definition]
[java] java.net.MalformedURLException
[java] at java.net.URL.(URL.java:571)
[java] at java.net.URL.(URL.java:434)
[java] at java.net.URL.(URL.java:383)
[java] at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
[java] at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
[java] at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
[java] at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
[java] at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
[java] at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
[java] at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
[java] at org.dom4j.io.SAXReader.read(SAXReader.java:465)
[java] at org.jbpm.jpdl.xml.JpdlParser.parse(JpdlParser.java:57)
[java] at org.jbpm.jpdl.xml.JpdlXmlReader.readProcessDefinition(JpdlXmlReader.java:138)
[java] at org.jbpm.graph.def.ProcessDefinition.parseXmlInputStream(ProcessDefinition.java:172)
[java] at org.jbpm.graph.def.ProcessDefinition.parseXmlResource(ProcessDefinition.java:153)
[java] at com.sample.util.StartProcess.init(StartProcess.java:22)
[java] at com.sample.util.StartProcess.main(StartProcess.java:47)
Could someone explain to me why I'm having this error and what do I have to do to solve it ?
Thank you very much in advance !!
Regards,
Fidalma
Italy