实现表单引擎设计常用的两种设计方案优劣势比较
什么是表单引擎
表单引擎是为快速实施项目研发的轻量级表单设计工具。采用表单引擎工具可在不开发和新增加代码的情况下设计出新表单样式,同比程序开发可省掉程序员差不多70%的开发工作量,并且后期维护相对简单,管理方便,管理层也不会再因为项目组成员离职而头大后续的程序移交问题。[引用百度百科<表单引擎>]
当前阶段表单引擎设计的两种设计思想
在表单引擎设计领域主要有两种设计思想:第一种是基于文件设计的,第二种是积极与关系数据库设计。
基于文件设计的:
基于文件设计的思想是,创建表单的时候,首先创建一个文件比如:xxxx.jsp,xxx.aspx,xxx.php 文件。在这个文件上拖放相关的控件,或者加载相关的通用js代码,或者在对字段Input元素做特殊的标记,让表单引擎解析执行。
表单运行时,运行的界面载体是一个Url文件地址,这个地址引用到相关的菜单上去。
基于关系数据库设计:
基于关系数据库设计的组成部分是表单设计器、表单解析执行器、表单模板三部分组成。
表单设计器,把表单元素都按照关系表存储到数据库里面,每个表单有一个ID,这个表单ID,挂接到表单的解析执行器上,就可以工作。
表单模板将从表单设计器上设计组件关系存储到数据库中,由各个组件表组成的数据间的关系拼接成表单模板。
表单解析执行器是将表单模板数据进行解析,将解析后的数据形态以网页的形式展现。
基于文件设计思想的实现过程
基于文件设计思想
基于文件设计思想的表单引擎系统,需要由软件开发工作者首先设计好项目需要的网页内容,进行封装和部署后,生成使用者可以编辑的表单结构。因为是定制化开发可满足不同的表单样式、表单模板等的设计,能最大程度的符合企业管理者的需求。
弊端一、文件表单布局排版是固定化的,需要改动就需要联系研发人员进行重新设计页面布局,耗时长。
弊端二、该设计模式不能适用于多种行业的表单需求。如现有的系列OA请假报销等表单文件是不能使用项目管理、公文审批等表单引擎需要的。只能是需要开发者根据后者的表单要求重新研发网页功能,从而导致现有表单系统的不可复用性,以及开发多套表单引擎系统投入的大量的人力研发。
基于关系数据库设计思想实现过程
基于关系数据库设计思想
基于关系数据库的设计模式将表单引擎系统封装为一个设计工具,任何需要的表单只需要在该工具上进行拖拽设计即可,拖拽生成表单数据以数据流的形式存放在数据库中,由系统内置的表单解析器解析和展示填写的内容。该过程无须研发人员改动,表单设计人员可随意使用表单设计工具实现目标表单。
弊端是表单展示为统一风格,较为单调。
优缺点对比
设计思想 |
优点 |
缺点 |
基于文件设计 |
灵活、可扩展性高、自由,可以添加样式, 可以添加javascript满足各种各样应用环境需要。 |
只能由软件开发人员制作、定制化开发。 |
基于关系数据库设计 |
面向人群广、 随意修改表单设计、 满足不同行业需求 使用人员不需要编程能力 |
同一套展示风格 |
如果您想使用基于关系数据库模式的设计,请参考驰骋表单引擎,该表单引擎集成在驰骋工作流程引擎里面,可以单独运行。
源代码:http://ccflow.org/down.htm
驰骋表单引擎系统介绍
基于关系数据库设计的表单引擎厂家国内较为著名有驰骋工作流引擎,该流程引擎代码完全开发,可在国际开源网站GitHub上下载。驰骋工作流引擎又称CCBPM,不仅有.NET平台下的CCFLOW还有Java平台下的JFLOW,另有单独的移动端系统可以和微信、钉钉进行集成,实现了移动办公。
驰骋工作流引擎的表单设计引擎有两种设计风格,第一种为系统内置的固定格式的傻瓜表单设计器,第二种为用户自定义展示的自由表单设计器。展示风格如下:
傻瓜表单设计器
自由表单设计器
两种设计器均采用同一套表单设计组件,组件中设计了基础组件、流程组件、移动端组件三种。根据需要实现的流程功能和表单功能以及表单展示的载体的不同,自定义拖拽使用即可。设计过程完全脱离软件开发人员,只要具备操作电脑的基础知识的人员都可以进行设计和使用。
驰骋表单引擎相关的表结构
流程数据表,以WF_开头。
系统数据表,以SYS_开头。
组织结构表,以PORT_开头。
权限管理表,以GPM_开头。
流程节点相关表,以ND开头。
重点表结构有:
WF_WorkFlowDeleteLog
WF_TransferCustom
WF_Track
WF_Task
WF_SQLTemplate
WF_ShiftWork
WF_SelectAccper
WF_ReturnWork
WF_RememberMe
WF_PushMsg
WF_NodeToolbar
WF_NodeSubFlow
WF_NodeStation
WF_NodeReturn
WF_NodeEmp
WF_NodeDept
WF_NodeCancel
WF_Node
WF_LabNote
WF_HungUp
WF_GenerWorkFlow
WF_GenerWorkerlist
WF_FrmNode
WF_FlowSort
WF_FlowNode
WF_FlowFormTree
WF_Flow
WF_FindWorkerRole
WF_Emp
WF_DirectionStation
WF_Direction
WF_DeptFlowSearch
WF_Cond
WF_CHEval
WF_CH
WF_CCStation
WF_CCList
WF_CCEmp
WF_CCDept
WF_BillType
WF_BillTemplate
WF_Bill
WF_AccepterRole
Sys_WFSealData
Sys_UserVar
Sys_UserRegedit
Sys_UserLogT
Sys_SMS
Sys_SFTable
Sys_SFDBSrc
Sys_Serial
Sys_RptTemplate
Sys_RptStation
Sys_RptEmp
Sys_RptDept
Sys_MapFrame
Sys_MapExt
Sys_MapDtl
Sys_MapData
Sys_MapAttr
Sys_GroupField
Sys_GroupEnsTemplate
Sys_GloVar
Sys_FrmSln
Sys_FrmRpt
Sys_FrmRePortField
Sys_FrmRB
Sys_FrmLink
Sys_FrmLine
Sys_FrmLab
Sys_FrmImgAthDB
Sys_FrmImgAth
Sys_FrmImg
Sys_FrmEvent
Sys_FrmEleDB
Sys_FrmEle
Sys_FrmBtn
Sys_FrmAttachmentDB
Sys_FrmAttachment
Sys_FormTree
Sys_FileManager
Sys_ExcelTable
Sys_ExcelSheet
Sys_ExcelFile
Sys_ExcelField
Sys_EnVerDtl
Sys_EnVer
Sys_EnumMain
Sys_Enum
Sys_EnCfg
Sys_DocFile
Port_StationType
Port_Station
Port_EmpStation
Port_Emp
Port_DeptStation
Port_DeptEmpStation
Port_DeptEmp
Port_Dept
GPM_UserMenu
GPM_StationMenu
GPM_PerSetting
GPM_Menu
GPM_GroupStation
GPM_GroupMenu
GPM_GroupEmp
GPM_Group
GPM_EmpApp
GPM_AppSort
GPM_App
==== 如果该文件对您有帮助,请下载开源的驰骋表单引擎设计器,流程引擎设计器.