
Web Application with Workflow(jBPM 3)
Posted by roxy1987 in Shobhit Tyagi's Blog on Jun 22, 2011 5:38:40 AMI created this web application for using workflow to demonstrate approval process. Following is some part of the code that might help in integrating jBPM 3 with a web app.
Some of the methods are :
1)- Deploy :
public String reDeployProcess(String processName)
{
jbpmConfiguration = JbpmConfiguration.parseResource("jbpm.cfg.xml");
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
System.out.println("1");
ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource(processName);
System.out.println("2");
System.out.println(processDefinition);
jbpmContext.deployProcessDefinition(processDefinition);
System.out.println("3");
System.out.println("prcoess getting deployed is :"+processDefinition.getName());
jbpmContext.close();
System.out.println(processDefinition.getName());
return processDefinition.getName();
}
2)- Starting Process Instance :
public String startNewProcessInstance(String processDefinitionName)
{
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
GraphSession graphSession = jbpmContext.getGraphSession();
ProcessDefinition definition = graphSession.findLatestProcessDefinition(processDefinitionName);
System.out.println("definition is "+definition);
ProcessInstance instance = definition.createProcessInstance();
long id = instance.getId();
instance.signal();
jbpmContext.save(instance);
jbpmContext.close();
return ""+id;
}
3)- Task List
public List<?> listAllTasks(String User)
{
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
jbpmContext.setActorId(User);
System.out.println(jbpmContext.getActorId());
List<?> list = jbpmContext.getTaskList(User);
System.out.println(list.size());
return list;
}
4)- Signalling a Process.
public String signalProcess(String processDefinitionName, String id) {
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
long processId = Long.parseLong(id);
ProcessInstance instance = jbpmContext.loadProcessInstance(processId);
instance.signal();
jbpmContext.save(instance);
jbpmContext.close();
return "process signalled" ;
}
5)- Completing task
public String completeProcess(String processDefinitionName, String id, String User) {
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
long processId = Long.parseLong(id);
ProcessInstance instance = jbpmContext.loadProcessInstance(processId);
TaskInstance taskInstance = (TaskInstance)
instance.getTaskMgmtInstance().getTaskInstances().iterator().next();
System.out.println(taskInstance);
System.out.println(taskInstance.getActorId());
taskInstance.end();
jbpmContext.save(instance);
jbpmContext.close();
return "process signalled" ;
}
note : Task can also be completed using a transition. Something like this : taskInstance.end(transition);
The return values are being saved in the session here.
These methods can be called from the servlet by matching the front-end parameter values.
Regds
-
MainServlet.java.zip 1.9 KB
-
AllMethods.java.zip 1.1 KB
Comments