BPMS表单版本控制设计

因表单设计器满足运行过程中的表单修改(增删改字段),所以表单版本控制不需要特别修改。如仍希望进行控制,也应是通过不同表单版本对应不同html,而后台数据库表名不变的形式进行。如每发布一次表单版本对应一张新表,版本控制也失去了原有意义。

建议表单版本控制仍按现有方案,不做变动。

一、表单版本控制

1.1没有表单版本管理所产生的问题

以最近一次离职单更新为例,新版本离职单增加了部门会签功能,将原本在线下走的行政、IT、财务、学院的审批放在线上进行。新版本不仅流程重新规划,表单变化也很大,比如新增了是否签订以及是否需要履行竞业协议、部门会签意见填写等等。在流程版本管理的有效控制下,新老版本流程均能运转正常,但是表单就存在冲突。为保证新老版本之间的协调,临时的解决方案是:保留新老版本所有流程实例对修改前后字段的可见性。这样最大的缺陷就是新老版本的样式及字段纠结在一起,凌乱无序,用户体验极差。

2.2.表单版本管理的解决方案

所谓版本管理,就是对版本标识的管理,让不同版本之间的表单相互运行,互不干涉或者具有一定规律的相互兼容。OA表单版本的管理就是要做到相互独立,各不干扰。

方案如下:为表单建立版本表,以存放历史版本信息(包括最新版本信息);最新版本信息存放在表单定义表中。在流程的发起以及审批时将表单版本信息带出,凡有取fromDefineId的均应替换为对应的verId。为兼容无版本管理之前的流程:如版本id为空,则取formDefine表中最新的formDefineId所对应的html、template。同时表单权限的设置需以verId为标识,而不是formDefineId为标识。

表单管理方案的缺陷:表单的更新较版本的更新更加频繁,这样会大大加重开发和运维人员维护表单权限表的任务量。

缺陷的解决方法:表单版本的更新不应像流程版本更新一样,每次发布必然产生一个新的版本。点击表单保存后,应当弹出选择框,由开发或运维人员决定是发布一个新的表单版本还是不发布新的表单版本。如果发布新版本,则需要维护表单权限;如果只是js或增加隐藏字段、修改样式,则可以选择不发布新版本,保存的动作不更新版本号。

2.3.1建立表单历史版本表t_bpm_form_version


字段名称


字段类型


约束


备注


id


varchar


版本标识


formDefineId


varchar


表单标识


html


template


talbeDefineId


实体表id

2.3.2 t_bpm_form_define增加一列version(目前已存在)

2.3.3t_bpm_process_execution增加version字段,以此作为标识加载表单

2.3.4目前已知的多数打开流程的action都是doJob,以doJob作为入口,并且将所有的queryByFormDefineId以及FormDefineEntity.getHtml等处,均可能需要替换。

风险:改动涉及面较大,改动处较多,需全面测试。

最终方案采用本文档中所述表单版本管理方案。

时间: 2024-12-24 20:14:55

BPMS表单版本控制设计的相关文章

动态表单数据库设计

需求: 能够根据数据库在界面动态显示表单,包括表单类型.名称等,并且必须提供 添加新表单,修改表单等功能. 为了满足客户不断的需求变化,有时候需要为某商品增加.修改.删除.属性,这样的话以往的数据库表就很难实现, 因为表的字段是定死了 如果你需要增加一个属性的时候 ,就必须修改表,听说这是不允许的~~. 所以我们要设计一个灵活的数据库 下面以电脑设备为例: pc 现有属性 name cpu ram disk 现在我们要为pc添加一个 mainboard 属性. 既然必须提供增加表单,那么我们创建

[Axure RP] – 鼠标滑入按钮时自动下拉表单的设计示例

转:http://blog.qdac.cc/?p=2197 Axure RP 是个好东东呀,大大方便了程序员与客户之间的前期调研时的交流.不过有一些控制并没有鼠标移入和移出的操作,比如 HTML 按钮,为了模拟鼠标移入或移出时动态显示下拉列表啥的效果,我们使用了动态面板来做处理.当然了,条条大路通罗马,这条大路也许不是最佳的,仅供参考. 1.拖一个动态面板到编辑区: 2.双击添加一个状态,我们命名为“正常”,以代表鼠标没有滑过时的状态: 3.双击“正常”状态,进入正常状态编辑页面: 4.在动态面

兄弟连学python (01) ----表单的设计

简单的表单编辑:<!DOCTYPE HTML> <html lang='en'> <head> <meta chaset='utf-8'/> <title>from练习</title> </head> <body> <from> <table width='500px' height='700px' border='2' align='center'> <tr> <td

Ext开场表单布局设计

var form = new Ext.form.FormPanel({ labelAlign: 'right', labelWidth: 60, buttonAlign: 'center', title: 'form', frame:true, width: 450, url: '04_01_01.jsp', items: [{ bodyStyle: 'background:transparent;border:0px;', layout:'column', items: [{ bodyStyl

基于Extjs的web表单设计器 第七节——取数公式设计之取数公式的使用

基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extjs的web表单设计器 第四节——控件拖放 基于Extjs的web表单设计器 第五节——数据库设计 基于Extjs的web表单设计器 第六节——界面框架设计 基于Extjs的web表单设计器 第七节——取数公式设计之取数公式定义 基于Extjs的web表单设计器 第七节——取数公式设计之取数公式的使用

asp.net 微信企业号办公系统-表单设计-新建表单(属性设置)

点击表单设计工具栏上的 新建表单 按钮会弹出新表单属性设置框: 表单名称:新表单表名称. 数据连接:表单对应的数据库连接(此连接在 系统管理-->数据库连接 中维护). 数据表:表单对应的数据库表. 主键:数据库表的主键(主键只能是自增的int型,或uniqueidentifier(guid)类型). 标题字段:业务表中的哪个字段数据来作为待办任务的标题. 程序库分类:表单的分类,此分类在 数据字典 中维护. 任务标题:是否自动生成标题,如果是自动生成则会以 流程名称(发起者姓名) 的形式自动生

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单

系列目录 设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四步. 开始之前先说说表的结构. 其实表Flow_Form与Flow_FormContent设计是有一个缺陷的.我总共是设置最高26个字段从A~Z如果超过26个字段的表单是属于硬编码的.但是我认为26个字段已经足够 因为这里我是单表模式比起表关联无限字段理论上性能会更加快,特别是当数据库申请带到千万级数据的时候(你自己可以设计更加灵活的表单管理) Flow_Form的A~Z对应的是Flow_FlowAttr表中的数据, F

基于Extjs的web表单设计器 第五节——数据库设计

这里列出表单设计器系列的内容,6.7.8节的内容应该在春节后才有时间出了.因为这周末就请假回老家了,准备我的结婚大事.在此提前祝大家春节快乐! 基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extjs的web表单设计器 第四节——控件拖放 基于Extjs的web表单设计器 第五节——数据库设计 基于Extjs的web表单设计器 第六节——界面框架设计

基于Extjs的web表单设计器 第六节——界面框架设计

基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extjs的web表单设计器 第四节——控件拖放 基于Extjs的web表单设计器 第五节——数据库设计 基于Extjs的web表单设计器 第六节——界面框架设计 基于Extjs的web表单设计器 第七节——取数公式设计 基于Extjs的web表单设计器 第八节——表单引擎设计 这一节我给大家介绍一下表单设