How to get ProcessDefinition using jpdl for JBPM 4.4?

In my project, there is an existing definition of old.jpdl.xml. It is working fine. Now I want to run another definition of new.jpdl.xml. After deploying the ear file, I tried to read new.jpdl.xml using the new ProcessDefinitionId using the code below.

I believe that I am missing the deployment steps. Can someone help me how to deploy or read new.jpdl.xml?

public String getProcessInstanceID(ProcessEngine processEngine, FlowControl flowcontrol, String processDefinitionID) { String processInstanceID = null; log.debug("Entering method - getProcessInstanceID"); ProcessDefinitionQuery pdq = processEngine.getRepositoryService() .createProcessDefinitionQuery(); pdq.deploymentId(processDefinitionID); ProcessDefinition procDef = pdq.uniqueResult(); if (null == procDef) { log.error("Process Definition could not be found for the deployment ID: " + processDefinitionID); } Map<String, Object> variables = new HashMap<String, Object>(); variables.put("flowcontrol", flowcontrol); ProcessInstance processInstance = processEngine.getExecutionService() .startProcessInstanceByKey(procDef.getKey(), variables); log.debug("Process Instance ID:" + processInstance.getId()); processInstanceID = processInstance.getId(); log.debug("Exiting method - getProcessInstanceID"); return processInstanceID; } 
+5
source share
1 answer

I created a batch job to deploy a jpdl file. The JBPM api internally inserts values โ€‹โ€‹into the JBPM4_XXX tables after a successful deployment. Below the class I used to deploy a new jpdl file. To pass the jpdl name and key values, I used the spring dependency. Finally, these steps worked successfully.

  public class JBPMDeploymentService extends BatchService { /** * Logger for Batch service */ protected static final Logger log = Logger.getLogger(NAPSJBPMDeploymentService.class); private Map<String, String> jpdlMap = new HashMap<String, String>(); private Map<String, String> procInstMap = new HashMap<String, String> (); public void doService() throws NAPSBatchException { log.info("Entering into doService Method of JBPMDeploymentService ..."); String approvalFlow = getJpdlFileType(); String jpdlXML = getJPDLxml(approvalFlow); String procInst = getProcessInstanceKey(approvalFlow); // constructs the ProcessEngine ProcessEngine processEngine = new Configuration().setResource("naps.jbpm.cfg.xml").buildProcessEngine(); // retrieve the needed services RepositoryService repositoryService = processEngine.getRepositoryService(); ExecutionService executionService = processEngine.getExecutionService(); repositoryService.createDeployment() .addResourceFromClasspath(jpdlXML) .deploy(); //executionService.startProcessInstanceByKey(procInst); } /** * @return the jpdlMap */ public Map<String, String> getJpdlMap() { return jpdlMap; } /** * @param jpdlMap the jpdlMap to set */ public void setJpdlMap(Map<String, String> jpdlMap) { this.jpdlMap = jpdlMap; } /** * @param jpdlKey * @return jpdl xml name */ private String getJPDLxml(String jpdlKey) { return jpdlMap.get(jpdlKey); } /** * @return the procInstMap */ public Map<String, String> getProcInstMap() { return procInstMap; } /** * @param procInstMap the procInstMap to set */ public void setProcInstMap(Map<String, String> procInstMap) { this.procInstMap = procInstMap; } /** * @param procInstKey * @return process Instance key */ private String getProcessInstanceKey(String procInstKey){ return this.procInstMap.get(procInstKey); } } 
+3
source

All Articles