I 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