jbpm3.1 websale实例学习(一)启动工作流

1、初始化:
websale中jbpmContext的创建是在filter中完成的,其类为org.jbpm.webapp.filter.JbpmContextFilter。该filter在init方法中初始化jbpmConfigurationResource及jbpmContextName两个string。每个http request,均由filter创建jbpmContext,代码为:
JbpmConfiguration jbpmConfiguration=getJbpmConfiguration();
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(jbpmContextName);

bean中通过JbpmContext.getCurrentJbpmContext()获取当前的JbpmContext实例。比如HomeBean初始化代码:
...
public HomeBean() {
    this.jbpmContext = JbpmContext.getCurrentJbpmContext();
    this.graphSession = jbpmContext.getGraphSession();
    this.taskMgmtSession = jbpmContext.getTaskMgmtSession();
}
...

2、启动流程
启动流程执行HomeBean的startProcessInstance方法:
  public String startProcessInstance() {
    // 从http request获取processDefinitionId参数,装载流程定义(jsfHelper是一个工具类,集合了一些jsf常用的功能)
    long processDefinitionId = JsfHelper.getId("processDefinitionId");
    ProcessDefinition processDefinition = graphSession.loadProcessDefinition(processDefinitionId);

    // 创建新的流程实例
    ProcessInstance processInstance = new ProcessInstance(processDefinition);

    // 创建任务实例
    TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createStartTaskInstance();

    // 保存流程实例和任务实例
    jbpmContext.save(processInstance);
   
    // 设置taskBean
    taskBean.initialize(taskInstance);
   
    //跳转到task.jsp
    return "task";
  }

其中taskBean.initialize(taskInstance)做了如下工作:
a、初始化taskBean,并生成TaskFormParameter对象,设置TaskFormParameter对象属性并将该对象添加入taskFormParameters的LIST对象中。而taskFormParameters对象则设置到session中。
b、获取jbpm转换,如果有转换,设置相应的数据。
 

你可能感兴趣的:(JBPM)