Activiti 工作流表单设计及开发
一、前言
Activiti 5对表单的支持目前还是比较弱的,表现在对表单的开发还需要写Freemark模板,并且它的模板还需要跟class文件一起打包发布。这使得流程的表单设计必须由开发人员来开发处理。因而,开发一套易用性强的流程表单功能就显得很有必要。
想部署及学习了解,可参考本人新的博客获得下载源代码。
http://redxun.iteye.com/blog/2406509
二、需求
用户一般都希望能有如Microsoft的Office套件中的InfoPath那样,可以自己进行设计,并且能与工作流程绑在一起进行流转处理。如下所示:
表单中每个字段有固定的数据类型,并由不同的数据控件展示,如日期、数字、单选或多选、下拉、多行文本甚至富文本编辑器。在实现更强的功能上,我们还允许控件能实现脚本交互。
三、设计实现思路
在表单与流程的整合中,我们一般不建议把表单的所有数据都存储在流程中,仅需要把参与流程跳转的数据才存到流程变量中去。如请假出差的流程,如下所示:
如申请出差金额则需要参与流程的处理中去,因而在进入这个判断节点之前,流程变量中需要存在这个变量,并且通过判断这个变量值来让流程自动跳转。
1.流程实例与业务表单关联
基于以上设计的原则,流程中则不存储业务表单的数据,那么流程与业务表单又如何关联?在Activiti 5 则比Jbpm4考虑了这块,他在流程实例表及任务实例表相关运行表中增加了一个字段(BusinessKey),用来关联业务表单的数据,我们一般把这个字段称为业务主键。其关联关系如下所示:
那么流程表单的数据如何存储及如何展示,从上图可以看到,我们对自定义的表单提供了生成物理表的方式,那么表单的存储则通过在线生成的页面获取物理表必需要的数据,然后保存至物理表中。这需要我们在设计表单时,生成一套表单数据规范,在审批时,能够进行页面表单的数据验证及存储。另外,还需要对在执行过程中的表单进行权限控制,如同一节点上审批相同的表单,不同角色的人员对表单的字段的读写权限是不一样的。
2.在线表单设计功能要求
我们把以上的需求进行了用例描述,则得到如下示例
1.设计表单模板
允许用户预先设置好一些带有漂亮格式的表单,如包括表头、表脚及样式。方便用户调整表单。
2.设计表单布局
允许用户在线进行在线布局,目前一般来说都是基于表格的布局方式。
3.设计表单字段控件、数据类型、数据验证
设计表单字段的输入控件类型及数据类型,用于保证用户输入的数据的正确性
4.设置表单字段权限
用于控制表单的字段的读写权限,结合工作流的审批,可以更有效显示数据。
5.支持表单动态脚本
允许对表单控件加上交互脚本,以实现如一些级联更新等的数据交互等。
6.表单预览
可以在线实时显示表单的显示效果
7.预设流程变量
把参与流程运算的表单字段标识为流程变量。
3.在线流程表单设计逻辑结构分析
生成流程表单的流程如下所示:
说明:
表单设计可以先设计物理表再根据模板生成在线表单
也可以先设计表单的样式再生成物理表
以上两种方式最终的目标均需要生成物理表,物理表的结构及数据展示控件等我们则需要用表来记录。因此,以下为他们大体上的数据结构模型:
表单生成物理表后,表单页面需要跟物理表单的数据对应起来,在提交页面表单时,我们采用了Json的数据结构来提交,在后台获取可以有效转存为物理表的数据。如下格式:
表单数据分为3部分:
1.主表数据。
2.子表数据
3.意见数据
数据格式如:
{"main":{"tableId":"tableId","fields":{"itemSubject":"出差深圳两天","total":"230","creatorID":"1340762352749","creator":"张小军","descp":"出差深圳两天"}},"sub":[],"opinion":[]}
在线表单的控件展示,需要按字段及结构来解析最终显示及数据验证。
流程启动后,需要把业务主键传至流程实例中去,幸好,activiti已经提供了比较完整的API接口,如下:
ProcessInstance processInstance=runtimeService.startProcessInstanceById(porcessDefId, businessKey, variables);
以上方法会把业务表单中需要参与流程运行的字段放到variables作为流程变量。
4.流程定义与业务表单绑定
流程定义允许绑定多种业务表单,目前我们可以简单分为三种模式,在线表单、同系统的定制业务表单、第三方业务表单。
在线表单可以用全局表单,则整个流程用同一个表单,如果每个流程节点的表单不一样,则可以通过设计表单。 表单数据结构如下所示:
所以在启动流程时及在任务进行跳转时,均可以获取流程节点的表单设置,从而在启动流程或执行任务处理时能进行正确的表单展示。
流程在完成整个审批后,还可以通过流程运行历史,能通过该以下该表可以查询当时每个节点审批时的表单情况。
更多资讯请加QQ了解3102760881
Activiti 工作流表单设计及开发相关推荐
- 定义html表格的大小和位置,点晴OA工作流表单设计:表格table及宏控件的HTML、CSS、字体参数教程详解...
点晴OA工作流表单设计:表格table及宏控件的HTML.CSS.字体参数教程详解 说明:虽然点晴OA内置了强大的富文本编辑器,但是很多时候还是难以实现理想的精确显示效果,为了实现满意的显示效果,网 ...
- oa导入表格html,点晴OA工作流表单模板创建注意事项(Word、Excel复制粘贴变形如何解决)...
点晴OA工作流表单模板创建注意事项(Word.Excel复制粘贴变形如何解决) 很多用户反映点晴OA系统中工作流表单创建时对于表格的控制十分的麻烦,希望能够做出漂亮的效果,但往往事违人愿.下面将工作 ...
- 驰骋工作流引擎表单设计控件-字段类控件(2)
2019独角兽企业重金招聘Python工程师标准>>> Technorati Tags: 开源工作流引擎, 驰骋.net工作流引擎, 开源表单引擎, ccform, ccflow, ...
- Activiti,自定义表单,外置表单,工作流,微服务,子系统
百度,csdn找了半个月,没有一篇文章将 Activiti 外置表单 讲透彻的,无奈,自己亲手写了一套, 祭出这套大杀器,开放给广大网友. 点击极速体验 账号密码:admin admin123 系统功 ...
- 品高工作流 - 基于InfoPath的自定义表单设计教程
一. 摘要 InfoPath是企业级搜集信息和制作表单的工具,将很多的界面控件集成在该工具中,为企业开发表单提供了极大的方便.InfoPath文件的后缀名是.XML,可见InfoPath ...
- 工作流表单自定义功能的误区
表单自定义功能看似非常方便,可以不用写代码即可完成表单的开发设计,表面上看的确是减少不少开发成本,但深入研究,发现是有不少误区的. 1. 对于整体成本来讲,当表单自定义功能能 ...
- 表单设计工具和报表工具
收集了一些资料: 1 .IBM发布开源HTML 5可视化设计工具Maqetta 4月12日,来自 IBM Impact 2011 的消息,IBM发布 Maqetta,一个创建桌面和移动用户界面的HT ...
- 碎片数据收集利器-结构化动态表单设计思路
本文基于面向基本公共卫生的业务系统设计经验,抽象出一套适合大型ERP系统的表单业务数据模型,目标是最大限度保留系统弹性的同时,尽可能降低系统复杂度和开发成本.enjoy~ 背景 填写表单应该是所有业务 ...
- 驰骋工作流-表单引擎- ccform
2.2: 驰骋工作流表单引擎 ccform Ccform与ccflow珠联璧合,ccflow是解决流程运转问题,ccform是解决了组装货物的问题.Ccflow是汽车的控制系统,ccform就是 ...
- 怎么选工作流表单设计器?
随着业务量的扩大,很多企业都想选择一款优良的工作流表单设计器来提升工作效率和质量.在大数据时代,操作简单.维护便利的工作流表单设计器确实能为企业的发展带来更大的帮助,也是企业实现数字化转型的得力帮手. ...
最新文章
- 应用TP3.2.3的一些小问题(一)
- 数据库外键的使用原则
- 计算机数学专业是应用数学专业吗,大学数学系的数学与应用数学专业学什么课程内容?...
- 读研,竞赛,与实习--公子龙的成长经历
- python标准库math用来计算平方根的函数_《Python程序设计方案》题库
- [css] 你了解css3的currentColor吗?举例说明它的作用是什么?
- 致我的2018 你好2019
- HDU 2859 Phalanx(二维DP)
- 安卓9.0添加服务修改SELinux
- java执行程序默认多线程吗_Java多线程 执行程序(1)
- 拓端tecdat|R语言画ROC曲线总结
- Android使用拖拽控件来布局界面并展示
- 黄金价格查询易语言代码
- “三只松鼠”为何一天能卖一亿元
- CC2430DMA学习
- VMware虚拟机使用记录
- python制作白底界面_python 多张图片黑底白字转白底黑字
- U盘文件、文件夹不显示却能搜索到 显示U盘文件的解决办法
- 论文详解EnlightenGAN: Deep Light Enhancement Without Paired Supervision
- 30天突破英语口语!(MP3版)