在做流程的时候,不能不用到表单。流程+表单才能组成一个完整的系统。既然要做成流程,就不想把代码写的太死。幸好JBPM给我们提供了一套它的表单机制,你可以在Task节点上配置你地表单。这样在任务到达这个节点的时候,使用JBPM内部的方法,拿到表单对应的路径,这样就能取出表单。
下面是我在项目中使用的一个实例:
1:在JPDL中配置表单。
<task assignee="kezhang001"form="/service/plan/start/getTask" g="238,221,92,52"name="科长审批">
<assignment-handlerclass="com.zhjy.bpm.Listener.TaskListener">
<fieldname="msg">
<!--这个变量标志该流程是计划审批流程,相对于的是项目PROJECT,在流程变量中获取就行-->
<stringvalue="PLAN"/>
</field>
</assignment-handler>
<transition g="-67,-14"name="提交给主任" to="主任审批"/>
</task>
在Task中 使用form属性配置表单的请求链接。这个链接通常是一个Action请求。从后台得到数据然后返回到jsp页面。
2:获取表单
public StringgetProcessDefinitionForm(String taskId) {
Task task = taskService.getTask(taskId);
return task.getFormResourceName();
}
首先根据任务Id获取任务对象,然后使用getFormResourceName()方法直接取出当前任务节点的form。
这样在url中就可以使用这个表单。
最后说明一点,很多网上的例子都是显示一个jsp页面。比如在form属性配置
Form="a.jsp"。其实这个只能做一个演示,而且还很容易误导别人。光显示一个空的jsp页面是没有意义的。所以这个属性通常配置一个action请求。比如a.do的请求。取出以后还有在属性结尾使用拼接字符串的方式传递查询参数。这样得到的才是一个合理的数据显示页面。