`

Activiti 工作流表单设计及开发

阅读更多

一、前言

 

 

Activiti 5对表单的支持目前还是比较弱的,表现在对表单的开发还需要写Freemark模板,并且它的模板还需要跟class文件一起打包发布。这使得流程的表单设计必须由开发人员来开发处理。因而,开发一套易用性强的流程表单功能就显得很有必要。

 

 

 

二、需求

 

 

用户一般都希望能有如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接口,如下:

 

 

Java代码 复制代码 收藏代码Activiti <wbr>工作流表单设计及开发
  1. ProcessInstance processInstance=runtimeService.startProcessInstanceById(porcessDefId, businessKey, variables);  
ProcessInstance processInstance=runtimeService.startProcessInstanceById(porcessDefId, businessKey, variables);
 

 

以上方法会把业务表单中需要参与流程运行的字段放到variables作为流程变量。

 

4. 流程定义与业务表单绑定

 

流程定义允许绑定多种业务表单,目前我们可以简单分为三种模式,在线表单、同系统的定制业务表单、第三方业务表单。

 

在线表单可以用全局表单,则整个流程用同一个表单,如果每个流程节点的表单不一样,则可以通过设计表单。表单数据结构如下所示:

 

所以在启动流程时及在任务进行跳转时,均可以获取流程节点的表单设置,从而在启动流程或执行任务处理时能进行正确的表单展示。

 

流程在完成整个审批后,还可以通过流程运行历史,能通过该以下该表可以查询当时每个节点审批时的表单情况。

 

 

关于我

         电话:13672461598

            qq:1848175569

分享到:
评论

相关推荐

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

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

    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是一款强大的、开源的企业级工作流引擎,广泛应用于业务流程自动化和管理工作流。在...

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

    拖拽式表单设计器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提供了完整的代码示例,帮助开发者理解并应用到实际项目中。以下是相关知识点的...

    疯狂activiti工作流讲义

    这个"疯狂activiti工作流讲义"很可能是针对学习和掌握Activiti工作流框架的一份详细教程,旨在帮助开发者深入理解并有效地利用这一工具进行开发。 1. **工作流基础**:工作流是描述业务流程的模型,它定义了任务...

    Activiti工作流数据库表结构

    ### Activiti工作流数据库表结构详解 #### 一、概述 Activiti是一个开源的工作流引擎,基于Java语言实现,能够支持BPMN 2.0标准。它提供了一套完整的解决方案来管理和执行业务流程,包括流程建模、执行、监控等...

Global site tag (gtag.js) - Google Analytics