转:传智播客—jbpm与OA项目(7)
来到北京,今天的天气似乎是最好的,希望不要再有降温天气了。今日继续我们的审批流程,今天的内容似乎有点多,同学们需要努力学习哦!
我个人认为今天的内容多,是为因今天加入了测试部分。使用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… } |