[jboss-user] [JBoss jBPM] - error deploying by code
simonbaker
do-not-reply at jboss.com
Fri May 11 14:15:24 EDT 2007
I'm trying to deploy our ProcessDefinition by code rather than manually. We're getting an error but I don't know what it might mean:
anonymous wrote :
| 09:36:53,968 [Start EFile Destruct Workflow-admin] INFO JBPMAccessor : [JBPMAccessor.startEfileDestructionProcess] Did not find latest Process Definition of JBPMEfileProcess...
| 09:36:53,968 [Start EFile Destruct Workflow-admin] INFO JBPMAccessor : [JBPMAccessor.startEfileDestructionProcess] This was the error: org.jbpm.JbpmException: couldn't find process definition 'JBPMEfileProcess'
| 09:36:53,968 [Start EFile Destruct Workflow-admin] INFO JBPMAccessor : [JBPMAccessor.startEfileDestructionProcess] Attempting to deploy Process Definition of JBPMEfileProcess...
| 09:36:53,968 [Start EFile Destruct Workflow-admin] INFO JBPMAccessor : Entering deployNewProcessDefinition
| 09:36:53,968 [Start EFile Destruct Workflow-admin] DEBUG JbpmContextInfo : creating jbpm context with service factories '[message, tx, scheduler, authentication, persistence, logging]'
| 09:36:53,968 [Start EFile Destruct Workflow-admin] DEBUG JbpmContext : creating org.jbpm.JbpmContext at 16f4ce0
| 09:36:53,968 [Start EFile Destruct Workflow-admin] INFO JBPMAccessor : Retrieved jbpmContext.
| 09:36:54,031 [Start EFile Destruct Workflow-admin] WARN JpdlParser : couldn't set xml parser property property 'http://java.sun.com/xml/jaxp/properties/schemaLanguage' to 'http://www.w3.org/2001/XMLSchema'
| org.xml.sax.SAXNotRecognizedException: Property: http://java.sun.com/xml/jaxp/properties/schemaLanguage
| at org.apache.crimson.parser.XMLReaderImpl.setProperty(XMLReaderImpl.java:257)
| at org.apache.crimson.jaxp.SAXParserImpl.setProperty(SAXParserImpl.java:177)
| at org.jbpm.jpdl.xml.JpdlParser.createXmlReader(JpdlParser.java:77)
| at org.jbpm.jpdl.xml.JpdlParser.createSaxReader(JpdlParser.java:62)
| at org.jbpm.jpdl.xml.JpdlParser.parse(JpdlParser.java:56)
| at org.jbpm.jpdl.xml.JpdlXmlReader.readProcessDefinition(JpdlXmlReader.java:142)
| at org.jbpm.graph.def.ProcessDefinition.parseXmlReader(ProcessDefinition.java:181)
| at com.rco.bpm.util.JBPMAccessor.deployNewProcessDefinition(JBPMAccessor.java:327)
| at com.rco.bpm.util.JBPMAccessor.startEfileDestructionProcess(JBPMAccessor.java:71)
| at com.rco.jsp.CJobs2$CStartElectronicFileDestructionWorkflowJob.runJob(CJobs2.java:197)
| at com.rco.jsp.CJobControl$CJobThread.run(CJobControl.java:2246)
|
The ap runs under Tomcat. We have another installation where we deployed the process definition manually and we do not have any problem with the jBPM engine. I'm wondering if I have some wrong or missing jar on my system. In case it helps, the code that creates this error is below:
| /**
| * Method to create a new JBPM process
| *
| * @param orgNumber The organization number for the new process
| * @param suborgNumber The suborg number for the new process
| * @return processID The unique ID of this newly created destruction task
| */
| public static long startEfileDestructionProcess(String orgNumber, String suborgNumber) throws RMSException{
| long processID = -1;
| log.info("Entering startEfileDestructionProcess");
|
| //Check if the jbpmConfiguration has been setup
| if( jbpmConfiguration == null ){
| //retrieve it
| log.info("JBPMConfiguration was null, creating instance.");
| jbpmConfiguration = JbpmConfiguration.getInstance();
| }
|
| //Doing a try and catch for all so the RMSException can contain the relevant info
| // Lookup the pojo persistence context-builder that is configured above
| JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
| log.info("Retrieved jbpmContext.");
|
|
| try {
|
| // Make sure we're deployed.
| String strFilePath = "C:\\Documents and Settings\\All Users\\Documents\\RoyImage2000\\application\\webapps\\Image2000\\WEB-INF\\classes\\processdefinition.xml";
|
| try
| {
| log.info("[JBPMAccessor.startEfileDestructionProcess] Finding latest Process Definition of JBPMEfileProcess "
| + " in file: " + strFilePath);
| jbpmContext.getGraphSession().findLatestProcessDefinition("JBPMEfileProcess");
| log.info("[JBPMAccessor.startEfileDestructionProcess] Found latest Process Definition of JBPMEfileProcess");
| }
| catch (JbpmException je)
| {
| // Procession definition probably not deployed. Deploy it.
| log.info("[JBPMAccessor.startEfileDestructionProcess] Did not find latest Process Definition of JBPMEfileProcess...");
| log.info("[JBPMAccessor.startEfileDestructionProcess] This was the error: " + je.toString());
| log.info("[JBPMAccessor.startEfileDestructionProcess] Attempting to deploy Process Definition of JBPMEfileProcess...");
| deployNewProcessDefinition(strFilePath);
| log.info("[JBPMAccessor.startEfileDestructionProcess] After attempting to deploy Process Definition of JBPMEfileProcess...");
| }
|
| log.info("Creating process");
|
| //Create a new Process Instance of JBPMEfileProcess
| ProcessInstance processInstance = jbpmContext.newProcessInstance("JBPMEfileProcess");
| log.info("Created process");
| processID = processInstance.getId();
| log.info("ProcessID is ["+processID+"]");
|
| //Set the key variables
| processInstance.getContextInstance().createVariable("OrgNumber",orgNumber);
|
| log.info("Set Org Number");
| processInstance.getContextInstance().createVariable("SubOrgNumber",suborgNumber);
| log.info("Set SubOrg Number");
|
| // Now the processInstance is saved in the database. So the
| // current state of the execution of the process is stored in the
| // database.
| processInstance.signal();
| jbpmContext.save(processInstance);
| log.info("Saved New Process");
| }catch(Exception e){
| String message = "Error creating new RMS process["+e.getMessage()+"]";
| e.printStackTrace();
| throw new RMSException(1,message);
| }
| finally {
| // Tear down the pojo persistence context.
| jbpmContext.close();
| }
|
| log.info("Exiting startEfileDestructionProcess, created processID["+processID+"]");
| return processID;
| }
|
| /**
| * Method to deploy a new Process Definition, this method most likely will be removed
| * or otherwise protected
| * @param arg The full filepath of the new process definition to deploy
| */
| public static void deployNewProcessDefinition(String arg){
| log.info("Entering deployNewProcessDefinition");
|
| //Check if the jbpmConfiguration has been setup
| if( jbpmConfiguration == null ){
| //retrieve it
| log.info("JBPMConfiguration was null, creating instance.");
| jbpmConfiguration = JbpmConfiguration.getInstance();
| }
|
| //Doing a try and catch for all so the RMSException can contain the relevant info
| // Lookup the pojo persistence context-builder that is configured above
| JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
| log.info("Retrieved jbpmContext.");
|
| if( arg == null || arg.length() == 0 ){
| log.error("File name must be specified, cannot deploy new process.");
| }
| else{
| try {
| FileReader fr = new FileReader(arg);
| ProcessDefinition newProcessDefinition = ProcessDefinition.parseXmlReader(fr);
| log.info("Deploying process");
|
| jbpmContext.deployProcessDefinition(newProcessDefinition);
|
| log.info("Deployed New ProcessDefinition");
| }catch(Exception e){
| e.printStackTrace();
| }
| finally {
| // Tear down the pojo persistence context.
| jbpmContext.close();
| }
| }
| log.info("Exiting deployNewProcessDefinition");
|
| }
|
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4045095#4045095
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4045095
More information about the jboss-user
mailing list