一、前言
Activiti 5对表单的支持目前还是比较弱的,表现在对表单的开发还需要写Freemark模板,并且它的模板还需要跟class文件一起打包发布。这使得流程的表单设计必须由开发人员来开发处理。因而,开发一套易用性强的流程表单功能就显得很有必要。
二、需求
用户一般都希望能有如Microsoft的Office套件中的InfoPath那样,可以自己进行设计,并且能与工作流程绑在一起进行流转处理。如下所示:
表单中每个字段有固定的数据类型,并由不同的数据控件展示,如日期、数字、单选或多选、下拉、多行文本甚至富文本编辑器。在实现更强的功能上,我们还允许控件能实现脚本交互。
三、设计实现思路
在表单与流程的整合中,我们一般不建议把表单的所有数据都存储在流程中,仅需要把参与流程跳转的数据才存到流程变量中去。如请假出差的流程,如下所示:
如申请出差金额则需要参与流程的处理中去,因而在进入这个判断节点之前,流程变量中需要存在这个变量,并且通过判断这个变量值来让流程自动跳转。
1. 流程实例与业务表单关联
基于以上设计的原则,流程中则不存储业务表单的数据,那么流程与业务表单又如何关联?在Activiti 5 则比Jbpm4考虑了这块,他在流程实例表及任务实例表相关运行表中增加了一个字段(BusinessKey),用来关联业务表单的数据,我们一般把这个字段称为业务主键。其关联关系如下所示:
Activiti 5对表单的支持目前还是比较弱的,表现在对表单的开发还需要写Freemark模板,并且它的模板还需要跟class文件一起打包发布。这使得流程的表单设计必须由开发人员来开发处理。因而,开发一套易用性强的流程表单功能就显得很有必要。
二、需求
用户一般都希望能有如Microsoft的Office套件中的InfoPath那样,可以自己进行设计,并且能与工作流程绑在一起进行流转处理。如下所示:
![](http://dl.iteye.com/upload/attachment/0076/4942/067aa200-3f69-3941-a410-89d4e9ddbdbe.jpg)
表单中每个字段有固定的数据类型,并由不同的数据控件展示,如日期、数字、单选或多选、下拉、多行文本甚至富文本编辑器。在实现更强的功能上,我们还允许控件能实现脚本交互。
三、设计实现思路
在表单与流程的整合中,我们一般不建议把表单的所有数据都存储在流程中,仅需要把参与流程跳转的数据才存到流程变量中去。如请假出差的流程,如下所示:
![](http://dl.iteye.com/upload/attachment/0076/4944/c7bca676-321b-3831-ac8d-2c74e57eb74a.jpg)
如申请出差金额则需要参与流程的处理中去,因而在进入这个判断节点之前,流程变量中需要存在这个变量,并且通过判断这个变量值来让流程自动跳转。
1. 流程实例与业务表单关联
基于以上设计的原则,流程中则不存储业务表单的数据,那么流程与业务表单又如何关联?在Activiti 5 则比Jbpm4考虑了这块,他在流程实例表及任务实例表相关运行表中增加了一个字段(BusinessKey),用来关联业务表单的数据,我们一般把这个字段称为业务主键。其关联关系如下所示: