一、前言
Activiti 5对表单的支持目前还是比较弱的,表现在对表单的开发还需要写Freemark模板,并且它的模板还需要跟class文件一起打包发布。这使得流程的表单设计必须由开发人员来开发处理。因而,开发一套易用性强的流程表单功能就显得很有必要。
二、需求
用户一般都希望能有如Microsoft的Office套件中的InfoPath那样,可以自己进行设计,并且能与工作流程绑在一起进行流转处理。如下所示:
表单中每个字段有固定的数据类型,并由不同的数据控件展示,如日期、数字、单选或多选、下拉、多行文本甚至富文本编辑器。在实现更强的功能上,我们还允许控件能实现脚本交互。
三、设计实现思路
在表单与流程的整合中,我们一般不建议把表单的所有数据都存储在流程中,仅需要把参与流程跳转的数据才存到流程变量中去。如请假出差的流程,如下所示:
如申请出差金额则需要参与流程的处理中去,因而在进入这个判断节点之前,流程变量中需要存在这个变量,并且通过判断这个变量值来让流程自动跳转。
1. 流程实例与业务表单关联
基于以上设计的原则,流程中则不存储业务表单的数据,那么流程与业务表单又如何关联?在Activiti 5 则比Jbpm4考虑了这块,他在流程实例表及任务实例表相关运行表中增加了一个字段(BusinessKey),用来关联业务表单的数据,我们一般把这个字段称为业务主键。其关联关系如下所示:
那么流程表单的数据如何存储及如何展示,从上图可以看到,我们对自定义的表单提供了生成物理表的方式,那么表单的存储则通过在线生成的页面获取物理表必需要的数据,然后保存至物理表中。这需要我们在设计表单时,生成一套表单数据规范,在审批时,能够进行页面表单的数据验证及存储。另外,还需要对在执行过程中的表单进行权限控制,如同一节点上审批相同的表单,不同角色的人员对表单的字段的读写权限是不一样的。
2. 在线表单设计功能要求
我们把以上的需求进行了用例描述,则得到如下示例
3. 在线流程表单设计逻辑结构分析
生成流程表单的流程如下所示:
说明:
表单设计可以先设计物理表再根据模板生成在线表单
也可以先设计表单的样式再生成物理表
以上两种方式最终的目标均需要生成物理表,物理表的结构及数据展示控件等我们则需要用表来记录。因此,以下为他们大体上的数据结构模型:
表单生成物理表后,表单页面需要跟物理表单的数据对应起来,在提交页面表单时,我们采用了Json的数据结构来提交,在后台获取可以有效转存为物理表的数据。如下格式:
表单数据分为3部分:
1. 主表数据。
2. 子表数据
3. 意见数据
数据格式如:
{"main":{"tableId":"tableId","fields":{"itemSubject":"出差深圳两天","total":"230","creatorID":"1340762352749","creator":"张小军","descp":"出差深圳两天"}},"sub":[],"opinion":[]}
在线表单的控件展示,需要按字段及结构来解析最终显示及数据验证。
流程启动后,需要把业务主键传至流程实例中去,幸好,activiti已经提供了比较完整的API接口,如下:
Java代码 [url=][/url]
以上方法会把业务表单中需要参与流程运行的字段放到variables作为流程变量。
4. 流程定义与业务表单绑定
流程定义允许绑定多种业务表单,目前我们可以简单分为三种模式,在线表单、同系统的定制业务表单、第三方业务表单。
在线表单可以用全局表单,则整个流程用同一个表单,如果每个流程节点的表单不一样,则可以通过设计表单。 表单数据结构如下所示:
所以在启动流程时及在任务进行跳转时,均可以获取流程节点的表单设置,从而在启动流程或执行任务处理时能进行正确的表单展示。
流程在完成整个审批后,还可以通过流程运行历史,能通过该以下该表可以查询当时每个节点审批时的表单情况。
Activiti 5对表单的支持目前还是比较弱的,表现在对表单的开发还需要写Freemark模板,并且它的模板还需要跟class文件一起打包发布。这使得流程的表单设计必须由开发人员来开发处理。因而,开发一套易用性强的流程表单功能就显得很有必要。
二、需求
用户一般都希望能有如Microsoft的Office套件中的InfoPath那样,可以自己进行设计,并且能与工作流程绑在一起进行流转处理。如下所示:
表单中每个字段有固定的数据类型,并由不同的数据控件展示,如日期、数字、单选或多选、下拉、多行文本甚至富文本编辑器。在实现更强的功能上,我们还允许控件能实现脚本交互。
三、设计实现思路
在表单与流程的整合中,我们一般不建议把表单的所有数据都存储在流程中,仅需要把参与流程跳转的数据才存到流程变量中去。如请假出差的流程,如下所示:
如申请出差金额则需要参与流程的处理中去,因而在进入这个判断节点之前,流程变量中需要存在这个变量,并且通过判断这个变量值来让流程自动跳转。
1. 流程实例与业务表单关联
基于以上设计的原则,流程中则不存储业务表单的数据,那么流程与业务表单又如何关联?在Activiti 5 则比Jbpm4考虑了这块,他在流程实例表及任务实例表相关运行表中增加了一个字段(BusinessKey),用来关联业务表单的数据,我们一般把这个字段称为业务主键。其关联关系如下所示:
那么流程表单的数据如何存储及如何展示,从上图可以看到,我们对自定义的表单提供了生成物理表的方式,那么表单的存储则通过在线生成的页面获取物理表必需要的数据,然后保存至物理表中。这需要我们在设计表单时,生成一套表单数据规范,在审批时,能够进行页面表单的数据验证及存储。另外,还需要对在执行过程中的表单进行权限控制,如同一节点上审批相同的表单,不同角色的人员对表单的字段的读写权限是不一样的。
2. 在线表单设计功能要求
我们把以上的需求进行了用例描述,则得到如下示例
<IGNORE_JS_OP style="WORD-WRAP: break-word">
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接口,如下:
Java代码 [url=][/url]
- ProcessInstance processInstance=runtimeService.startProcessInstanceById(porcessDefId, businessKey, variables);
以上方法会把业务表单中需要参与流程运行的字段放到variables作为流程变量。
4. 流程定义与业务表单绑定
流程定义允许绑定多种业务表单,目前我们可以简单分为三种模式,在线表单、同系统的定制业务表单、第三方业务表单。
在线表单可以用全局表单,则整个流程用同一个表单,如果每个流程节点的表单不一样,则可以通过设计表单。 表单数据结构如下所示:
所以在启动流程时及在任务进行跳转时,均可以获取流程节点的表单设置,从而在启动流程或执行任务处理时能进行正确的表单展示。
流程在完成整个审批后,还可以通过流程运行历史,能通过该以下该表可以查询当时每个节点审批时的表单情况。
测试地址:::
电信:http://office.jee-soft.cn:10080/bpm3/login.jsp
网通:http://oa.jee-soft.cn:10080/bpm3/login.jsp
账号:admin
密码:1
电信:http://office.jee-soft.cn:10080/bpm3/login.jsp
网通:http://oa.jee-soft.cn:10080/bpm3/login.jsp
账号:admin
密码:1
相关推荐
activiti三种表单的demo实现 运行方式: 1,修改连接的数据库 2,sql文件在resources\sql下 3,访问地址http://localhost:8080/activiti-demo/main/index
实现了动态表单,各种流程审批等oa功能,springmvc+hibernate+springmvc+h2+activiti
工作流模型设计器,可以集成到项目中直接设计和修改,也可以直接部署,里面内涵代码和文档,包括jar包,一应俱全!
本代码,技术为springboot activiti 工作流引擎技术,人员可以动态设置自定义流程,后台生成流程图并且部署流程,
虽然国产的工作流较多,但开源一直为activiti和JBPM所垄断,相对来说acticiti更为灵活,但目前国内关于activiti的资料还是比较少,或几乎没有,而本书无疑是activiti工作流的新手入门答疑书籍,本书籍包括activiti...
简单activiti工作流demo 简单activiti工作流demo 简单activiti工作流demo
1、使用若依框架作为权限管理系统,集成activiti框架完成工作流引擎开发,打造集流程设计、流程部署、流程执行、任务办理、流程监控于一体的强大工作流平台。 11、对于表单的处理,一律使用外置表单,将业务表单数据...
《疯狂Workflow讲义:基于Activiti的工作流应用开发》内容概括: 本书是一本介绍Java工作流领域的书,以Activiti为核心,内容囊括了多个流行的企业级Java EE框架,全书主要可分为以下几个部分。 第1部分:对...
Activiti工作流样例-流程执行-动态表单时序图
maven 实例源码-demo。里面包含activiti基本操作以及数据库脚本
Activiti工作流样例-流程执行-外部表单时序图
集成activiti的springboot程序,带有自定义表单设计,低代码开发平台。
本项目旨在让Activiti初学者可以快速入门,使用工作流里面的请假流程作为Activiti企业实战的Hello World。 简单通过这个实例说明如何结合流程与业务,表单、业务、流程之前如何衔接…… 发起这个项目也是目前没有...
针对煤矿机械制造企业,实现对产品生产全面管理为目的,设计使用Activiti工作流结合外置表单技术,通过在管理系统中部署测试,得出该方法可有效监控生产进度,保证信息及时而通畅传递。构建的过程模型,具有高兼容、...
1、关键业务流程:订单、报价处理、合同审核、客户电话处理、供应链管理等 2、行政管理类:出差申请、加班申请、请假申请、...公司货物跟踪处理等各种通过表单逐步手工流转完成的任务均可应用工作流软件自动规范地实施。
实际应用中,工作流的常用流程清单 1) 流程管理 a) 包括流程定义的增删改查操作 2) 流程处理 a) 流程发起,流程处理,流程驳回,流程转审,流程的自动审核 b) 流程的拆分,就是一个流程可能同时需要多个人审核,并行...
这个是Activiti6汉化版eclipse项目的源码(包括前后台的源码),其中有很多个人改动的地方,大部分改动的地方都有标注update by Asy及蹩脚的释义。 数据库配置文件是:workflow-designer\src\META-INF\activiti-app\...
基础组件包括: Spring基础组件库,报表引擎,数据库访问模块,短信模块,后台定时任务调用组件,短信访问组件,搜索引擎组件,JMS消息组件,Activiti工作流组件,Cas统一用户认证组件,Spring安全认证组件。...
activiti-formdesigner工作中用于Activiti工作流的表单设计器该表单设计器基于开发其中富文本编辑器使用的是时间控件的展示依赖实现
基于activiti5+mybatis+springboot+springcloud开发的工作流核心代码,扩展自定义流程,消息通知,静态表单等功能