来到北京,今天的天气似乎是最好的,希望不要再有降温天气了。今日继续我们的审批流程,今天的内容似乎有点多,同学们需要努力学习哦!
我个人认为今天的内容多,是为因今天加入了测试部分。使用 JBPM 开发 OA 系统,说简单些就是将自定义表单数据放到 JBPM 工作流中流转。我们所需要实现的功能就是,使用户可以向系统中部署自定义工作流,用户可以自己添加自定义表单。我们通过编写通用表单实体,让任何自定义表单在工作流中流转即可。
我来总结一下今天的各部分重点内容。
一、表单定义
我们可以使用 FCKEDIT 这个免费的工具来设计自定义表单,但我们并未使用外部工具。而是自己编写了一个简单的表单设计工具,在下面我会一一介绍。
与其他模块一样,我们需要为表单定义( 表单模板管理 )编写自己的 DispathcAction ,根据下面的表单模板管理流程,编写 DispatchAction 。
在实现 DispatchAction 有必须先定义 struts 的 ActionForm 和表单定义的实体 (FormDefinition) ,因为我们的 OA 系统可以添加任意自定义的表单,所以我们需要编写一个通用的 ActionForm 和 FormDefinition 。实体中具有哪些属性字段,是这里的难点。汤老师,在 OA 项目的第一就领着大家把事个系统简单分析了一下,之后的每次讲课都从大模块框架开始。因为只有讲了整个相关功能的大模块应用,才能更好的理解这些小模块需要什么,比如下面定义的实体是因为在生成表单实例时、提交申请和工作流流转时使用。我们先来看一下实体的全景图:
(新增加: FormDefinition 、 FormInstance 、 ApproveInfo ,今日我们只学习 FormDefinition )
FormDefinitionActionForm :
public class FormDefinitionActionForm extends ActionForm {
private static final long serialVersionUID = 1L;
private Long id ; private String name ; // 自定义表单名称 private String templatePath ; // 自定义表单存放路径 (html) private String processName ; // 自定义表单使用的流程名称 private String[] propertyNameList ; // 存放表单字段名称的数组与 propertyValueTypeList 对应 private Class[] propertyValueTypeList ; // 存放表单字段类型的数组与 propertyNameList 对应 // setters and getters… } |
FormDefinition :
public class FormDefinition { private Long id ; private String name ; // 自定义表单名称 private String templatePath ; // 自定义表单存放路径 (html) private String processName ; // 自定义表单使用的流程名称 // 存放表单字段名称与字段类型的 MAP private Map<String,Class> fieldDefinitionList = new HashMap<String, Class>(); // setters and getters… } |