`
马背上的大彬
  • 浏览: 33657 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Activiti 工作流表单设计及开发

阅读更多
一、前言


        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
 

 

0
0
分享到:
评论
3 楼 teal2014 2017-08-31  
  大哥,留个qq联系一下啊,我看看你和业务表关联设计是怎么的呢
2 楼 马背上的大彬 2014-06-23  
bewithme 写道
想得太简单了,永远不要把你的客户想得这么聪明会自己设计流程,流程设计只是面向开发人员的,而不是最终用户

很多终端用户都不会去自己设计流程,只会把思路提交给开发人员完成。一个能实现在线设计流程,在线设计表单的工具,的确能提高开发人员的工作效率。
1 楼 bewithme 2014-06-20  
想得太简单了,永远不要把你的客户想得这么聪明会自己设计流程,流程设计只是面向开发人员的,而不是最终用户

相关推荐

    activiti工作流动态表单,外置表单,普通表单demo

    activiti三种表单的demo实现 运行方式: 1,修改连接的数据库 2,sql文件在resources\sql下 3,访问地址http://localhost:8080/activiti-demo/main/index

    Activiti工作流数据库表结构.pdf

    文档《Activiti工作流数据库表结构.pdf》详细描述了Activiti工作流引擎在数据库中使用的一系列表以及这些表的作用和结构。 下面详细说明在Activiti引擎中常见的数据库表及其功能: 1. ACT_GE_* 表:这类表用于存储...

    Activiti工作流示例Activiti Demo(带完整源码)非常实用

    这个"Activiti工作流示例Activiti Demo"提供了完整的源代码,帮助开发者深入理解并实际操作Activiti,从而更好地在自己的项目中应用。 在描述中提到的"Canvas动画"是指Activiti提供的可视化建模工具,它允许开发者...

    Activiti工作流使用手册操作文档

    Activiti工作流是一款开源的工作流程管理系统,主要用于企业的业务流程自动化。它基于模型驱动的设计理念,提供了丰富的API和图形化设计工具,使得开发者可以方便地创建、部署和管理工作流程。本操作手册旨在帮助...

    activiti工作流项目

    【标题】"activiti工作流项目"是一个基于Java技术栈实现的工作流管理系统示例,它集成了SpringMVC、Hibernate和Activiti等关键组件。这个项目旨在演示如何在实际应用中利用Activiti来构建动态表单和处理各种流程审批...

    activiti工作流案例

    通过这个"activiti工作流案例",你可以动手操作,实践每个环节,从流程设计、部署到执行,从而更好地理解和掌握Activiti工作流引擎的使用。同时,这也有助于你深入理解BPMN 2.0标准和业务流程自动化的核心概念。在...

    activiti-modeler工作流网页版设计器

    它基于流行的Activiti工作流引擎,提供了一个直观、易用的界面,使得开发者和业务分析师无需深入代码就能设计、修改和部署工作流模型。这款工具的集成项目包括了所有必要的代码和文档,确保用户能够快速、无缝地将其...

    activiti工作流PPT

    Activiti作为一个工作流引擎,允许开发者通过编程或使用图形化工具定义、执行和管理这些流程。 在Activiti中,流程定义是用BPMN 2.0(Business Process Model and Notation)语言编写的,这是一种国际标准,用于...

    easyui实现的Activiti工作流引擎web版流程设计器

    标题中的“easyui实现的Activiti工作流引擎web版流程设计器”揭示了本文将要讨论的重点,即如何利用EasyUI框架来构建一个基于Web的流程设计工具,该工具是基于Activiti工作流引擎的。EasyUI是一个轻量级的JavaScript...

    疯狂Workflow讲义 基于Activiti的工作流应用开发 配套源码

    《疯狂Workflow讲义》是一本深入探讨基于Activiti工作流应用开发的专业书籍,其配套源码为学习者提供了丰富的实践素材。Activiti是一款强大的、开源的企业级工作流引擎,广泛应用于业务流程自动化和管理工作流。在...

    《疯狂Workflow讲义:基于Activiti的工作流应用开发》

    《疯狂Workflow讲义:基于Activiti的工作流应用开发》内容概括: 本书是一本介绍Java工作流领域的书,以Activiti为核心,内容囊括了多个流行的企业级Java EE框架,全书主要可分为以下几个部分。 第1部分:对...

    自定义工作流+可视化表单设计器

    拖拽式表单设计器java版,排版可随意定制,提供丰富的表单控件,根据Ueditor改造,表单设计完成之后,可直接进行工作流的扭转,工作流纯源码,可以随意定制二次改造,微信搜索 开源码农 ,更多资源免费下载

    疯狂Workflow讲义 基于Activiti的工作流应用开发

    《疯狂Workflow讲义:基于Activiti的工作流应用开发》是一份深入探讨工作流技术与实践的教程,专注于使用Activiti这一流行的开源工作流引擎。该讲义覆盖了从基础概念到高级应用的全面内容,旨在帮助读者理解并掌握在...

    activiti工作流引擎

    总结,Activiti工作流引擎提供了全面的流程管理功能,开发者可以在IDEA这样的集成开发环境中轻松地进行开发和调试。结合MySQL数据库,可以实现流程数据的稳定存储和高效访问。在实际应用中,根据业务需求,可以扩展 ...

    Activiti6.0工作流引擎springboot项目代码

    通过以上分析,我们可以看出这个项目旨在教授如何利用Activiti 6.0工作流引擎和Spring Boot进行业务流程自动化开发,同时可能涵盖了SpringCloud的使用,为开发者提供了丰富的实践素材。对于希望在企业级应用中引入...

    Activiti的工作流应用开发PDF

    这个“Activiti的工作流应用开发PDF”文档详细介绍了如何将Activiti集成到Java EE Web项目中,实现高效的工作流应用开发。 1. **Activiti简介**:Activiti 是由Alfresco公司开发的,基于BPMN 2.0标准的轻量级工作流...

    activiti工作流实例

    Activiti 是一个开源的工作流引擎,它被设计用于在企业应用程序中实现业务流程自动化。这个工作流实例提供了关于如何在实际项目中应用 Activiti 的详细示例。由于网上关于 Activiti 的实例相对较少,这个实例对于...

    Activiti工作流示例源码

    Activiti工作流示例源码提供了深入理解Activiti工作流引擎使用的一个绝佳平台。Activiti是一个开源的业务流程管理系统(BPMN 2.0)和工作流引擎,旨在简化业务流程自动化。在这个示例中,名为"ActivitiDemo"的应用...

    activiti入门教程-基于Activiti5工作流实战企业协同OA办公系统.pdf

    教程可能会涉及一些实际的代码示例、配置文件、流程图和步骤说明等,让读者能够通过实例加深对Activiti工作流引擎的理解和应用。 此外,链接指向了一个商品页面,说明这份教程可能是作为商品销售的。然而,由于链接...

    activiti自定义表单demo.rar

    在本项目"activiti自定义表单demo"中,我们主要关注的是如何使用SpringBoot集成Activiti工作流引擎,实现自定义表单和流程。这个Demo提供了完整的代码示例,帮助开发者理解并应用到实际项目中。以下是相关知识点的...

Global site tag (gtag.js) - Google Analytics