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等處,均可能需要替換。
風險:改動涉及面較大,改動處較多,需全面測試。
????最終方案采用本文檔中所述表單版本管理方案。
? ? ?本文轉自 gaochaojs 51CTO博客,原文鏈接:http://blog.51cto.com/jncumter/1746247,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的BPMS表单版本控制设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软企业级加解密解决方案MBAM架构
- 下一篇: 什么是CPAN(安装NAGIOS使用到)