表单自定义设计器功能设计--2012毕业论文
表单引擎技术方案

表单引擎技术方案一、背景介绍表单是企业信息化建设中常用的一种工具,用于管理和收集各类数据。
随着企业信息化程度的不断提高,表单的使用也越来越广泛。
传统的手工填写表单方式已经无法满足企业需求,而表单引擎技术应运而生。
二、表单引擎技术概述表单引擎技术是指通过软件实现自定义表单设计、数据收集与管理、流程审批等功能的一种技术。
它可以大大提高企业信息化建设效率和数据处理准确性,具有以下特点:1. 自定义性强:可以根据企业需求自由设计表单;2. 数据收集方便:可以通过电子化方式快速收集数据;3. 流程审批简便:可以通过流程配置实现自动审批;4. 数据分析方便:可以通过数据分析工具快速生成报表。
三、选择合适的表单引擎技术在选择合适的表单引擎技术时,需要考虑以下因素:1. 功能需求:根据企业需求确定所需要的功能;2. 用户体验:考虑用户易用性和界面美观度;3. 技术支持:考虑厂商提供的技术支持和售后服务;4. 成本效益:考虑成本与收益的平衡。
四、表单引擎技术方案设计在设计表单引擎技术方案时,需要考虑以下几个方面:1. 数据库设计:需要根据表单数据结构设计数据库表结构;2. 表单设计器:需要提供易用的表单设计器,以便用户自定义表单;3. 数据收集与管理:需要提供数据收集和管理功能,包括数据存储、查询、修改等;4. 流程审批:需要提供流程配置和审批功能;5. 报表分析:需要提供报表分析工具,以便用户生成各类报表。
五、具体实现方案1. 数据库设计采用关系型数据库MySQL进行数据存储,根据不同业务需求建立不同的数据库。
每个数据库包含多张数据表,每张数据表对应一个业务模块。
2. 表单设计器采用Web前端技术实现表单设计器。
用户可以通过拖拽控件、设置属性等方式自由设计所需的表单。
同时支持多种控件类型,如文本框、下拉框、日期选择器等。
3. 数据收集与管理采用Java语言开发后端接口实现数据收集和管理功能。
前端通过Ajax 请求后端接口进行数据存储、查询、修改等操作。
表单设计器简明教程

表单设计器简明教程
一、如何访问
推荐使用浏览器:
Firefox
Chrome
可从FTP下载
/06 常用工具/03 网络/
访问地址http://192.168.1.87/shixun/建议修改分辨率,比如1280*1024
二、使用表单设计器
1、常用元素
标签:label
文本框:textfield
数字框:numberfield
横线:linex
竖线:liney
2、对齐
左对齐、右对齐、上对齐、下对齐,以最后选择的元素作为对齐对象。
3、批量创建
在要插入位置先点击左键定位,而后点击右键,选择批量创建,根据提示选择好后,点击确定进行创建。
4、下复制黏贴於右复制黏贴
将多组元素进行复制、黏贴
注意:此功能存在bug,使用此功能后,批量创建功能受到影响。
欢迎在使用过程中提交bug。
5、修改标签值
修改完成后,单击“组件属性表”的空白处进行保存。
(或切换窗口)
点击主界面可能无法进行成功保存。
三、临时保存与提交
点击另存本地,将文本复制到本地txt文件进行保存。
打开本地,将本地文本打开,进行编辑。
自定义表单设计思路

自定义表单设计思路为了满足和现有工作流系统的耦合,在适当改动现有工作流的基础上,对自定义表单系统(包括与工作流相关)的设计做出如下的规划:1.基础功能模块:部门、角色、人员信息、班组、岗位(这些都可能是潜在的流程参与者)在现有基础上适当扩展;2.权限管理:需要在操作权限的基础上增加字段权限和记录权限,也就是要实现表单权限、记录权限、字段权限;3.表单基本信息:表单对应的表实体的定义、实体属性定义等等;4.可视化的表单定制工具:实现基于web的图形化表单设计器,争取做到可拖拽控件,无需安装任何客户端控件;——难点为数据绑定,也就是页面元素与数据表字段的映射,另外动态数据存储结构问题、表间数据校验和计算、建立主从表的问题是难点;因此要建立相对应的样式库、脚本库、函数库、模板库等等。
5.除了可视化表单定制工具外应有:表单加载、表单解析、表单数据处理和表单存储功能;6.设计出发点:争取为今后我们做系统实现以面向服务或面向流程的方式构建系统做准备(即系统的运行已流程驱动或服务驱动),做到随需而变,使得将来的系统的维护不要停留在代码级的维护层面上;7.设计目标:我们开发出的自定义表单系统做到工作流和自定义表单松耦合实现为好,用户自定义表单并能与工作流有效结合的工作流过程定义方法及工作流系统结构;8.整个表单系统的设计采用分层建模方法进行设计与开发,可以分为:数据层建模、业务层建模以及表现层建模9.采用基于描述的方法来提高表单的可维护性、可扩展性以及灵活性,是否通过采用XML来描述表单数据模型、业务模型和表示模型需要讨论后确定(设计完成的表单以XML 形式保存到数据库指定表中);10.初步设想我们开发的自定义表单系统是基于XForms标准而非基于传统的HTML表单标准,分类表单数据,行为与表示也需要在设计器中体现出来——表单模板+数据,本质上是以XML为核心并且实现表单数据模型与表现层(表单格式)分离。
大致的建立表单步骤如下:第一步:定义表单基本信息;第二步:表单设计器数学模型的建立,表单设计器引擎是整个表单设计的核心;第三步:通过表单设计器定义表单样式和所有字段详细信息;第四步:定义对表单的各类基本操作(仅仅针对的是增、删、改、查的基本操作)。
java自定义表单动态表单表单设计器工作流引擎flowable项目源码

java⾃定义表单动态表单表单设计器⼯作流引擎flowable项⽬源码特别注意:本代码为 Springboot ⼯作流前后分离 + 跨域版本(权限控制到菜单和按钮)后台框架:springboot2.3.0+ Flowable6.5.0+ mybaits+maven+接⼝前端页⾯:html +vue.js 形式 jquery ajax 异步跨域 json 格式数据交互前后分离,前后台分开部署(特别注意,前端⽤的vue.js, 就是html页⾯引⼊vue.js形式,⽤tomcat部署运⾏,更适合后台开发者1.代码⽣成器: [正反双向](单表、主表、明细表、树形表,快速开发利器)freemaker模版技术 ,0个代码不⽤写,⽣成完整的⼀个模块,带页⾯、建表sql脚本、处理类、service等完整模块2.多数据源:(⽀持同时连接⽆数个数据库,可以不同的模块连接不同数的据库)⽀持N个数据源3.阿⾥数据库连接池druid,安全权限框架 shiro(菜单权限和按钮权限), 缓存框架 ehcache4.代码编辑器,在线模版编辑,仿开发⼯具编辑器5.调⽤摄像头拍照⾃定义裁剪编辑头像,头像图⽚⾊度调节6.websocket 及时站内信并声⾳提醒、实时在线管理、websocket及时刷新页⾯(完胜ajax技术)7.Flowable⼯作流⽬前公认⽐较好⽤的⼯作流引擎,集成web流程设计器⼯作流模块-------------------------------1.模型管理:web在线流程设计器、导⼊导出xml、复制流程、部署流程2.流程管理:导⼊导出流程资源⽂件、查看流程图、根据流程实例反射出流程模型、激活挂起3.运⾏中流程:查看流程信息、当前任务节点、当前流程图、作废暂停流程、指派待办⼈、⾃由跳转4.历史的流程:查看流程信息、流程⽤时、流程状态、查看任务发起⼈信息5.待办任务:查看本⼈个⼈任务以及本⾓⾊下的任务、办理、驳回、作废、指派⼀下代理⼈6.已办任务:查看⾃⼰办理过的任务以及流程信息、流程图、流程状态(作废驳回正常完成)办理任务时候可以选择⽤户进⾏抄送,就是给被抄送⼈发送站内信通知当前审批意见以及备注信息注:当办理完当前任务时,下⼀任务待办⼈会即时通讯收到新任务消息提醒,当作废和完结任务时,任务发起⼈会收到站内信消息通知------------------------------------------- 系统模块1. 权限管理:点开⼆级菜单进⼊三级菜单显⽰⾓⾊(基础权限)和按钮权限⾓⾊(基础权限): 分⾓⾊组和⾓⾊,独⽴分配菜单权限和增删改查权限。
ecology关于流程表单设计器自定义开发及常见场景方案分享

关于流程表单设计器自定义开发及常见场景方案分享一、表单设计器模板如何自定义开发表单设计器可设置自定义属性以及插入代码块,二者相辅结合、灵活运用,可实现多样化客户需求自定义属性分为:行自定义属性(绑定在table布局tr行标签上)、单元格自定义属性(绑定在table布局td标签子元素div上)、列自定义属性(绑定在明细table此列所有td标签上);代码块可填写Script代码块、Style样式块及直接对JS/CSS文件的引用;二、常用开发场景实现场景1:控制日期字段选择范围,比如费用产生日期只能选择当前日期往前十天至今天,否则不允许流程提交实现方式: 代码块插入<script type="text/javascript">function checkCustomize(){//流程提交校验方法var isconform = cus_judgeDateRange("field11", -10, 0);//封装校验日期范围方法if(!isconform){window.top.Dialog.alert("费用产生日期超出范围");return false;}return true;}</script>封装方法:cus_judgeDateRange(fieldid, floorday, upperday)* @param {fieldid} 日期字段ID* @param {floorday} 下限天数(与当前日期比较),空值代表不限制* @param {upperday} 上限天数(与当前日期比较),空值代表不限制* @return 返回true表示在范围内,false表示超出限定范围或日期置为空场景2:实时计算两个日期时间字段组合相差小时数,并赋值给另一字段实现方式:代码块插入jQuery(document).ready(function(){var bindFun = function(){var diffhours = cus_CalTimeDiff("field31,field32", "field35,field36", 2);jQuery("[name=field39]").val(diffhours);}jQuery("#field31,#field32,#field35,#field36").bindPropertyChange(bindFun);bindFun();});封装方法:cus_CalTimeDiff(begfields, endfields, unit, digit)* @param {begfields} 开始时间* @param {endfields} 结束时间* @param {unit} 计量结果单位1(天)、2(小时)、3(分钟)、4(秒),默认为天* @param {digit} 计算结果保留小数位数,默认2位小数* @return 以endfields字段值减去beginfields字段值得到时间差值场景3:提交流程时校验结束时间必须大于开始时间,否则不允许流程提交实现方式:代码块插入function checkCustomize(){var state= cus_CompareTime("field31", "field32");if(!state){window.top.Dialog.alert("结束时间必须大于开始时间");return false;}return true;}封装方法:cus_CompareTime(timefield1, timefield2)* @param {timefield1} 字段1(开始时间)* @param {timefield2} 字段2(结束时间)* @return 返回true表示timefield2较大,false表示timefield1较大或相等* 注:timefield1/timefield2结构,可为单独日期字段、单独时间字段、日期+时间组合字段(以英文逗号隔开);日期字段空值默认取今天,时间字段空值默认为00:00场景4:E8表单字段中没有单选框(Radio样式),如何实现单选框?将选择框字段转换成单选框显示/编辑实现方式:代码块插入jQuery(document).ready(function(){cus_ConvertSelectToRadio("field41");});封装方法:cus_ConvertSelectToRadio(fieldids)* @param {fields}字段id集合,以逗号隔开* 注:转换后可能不支持联动功能,只是转换样式显示/编辑场景5:根据选择框值不同控制明细区域的显示及隐藏实现方式:步骤一:设计器明细所在单元格/行设置自定义属性name:_detailarea步骤二:代码块插入jQuery(document).ready(function(){var selectObj = jQuery("#field51");var controlDetailFun = function(vthis){if(jQuery(vthis).val() == "1")cus_HideAreaByName("_detailarea"); //封装的根据name属性隐藏区域方法elsecus_ShowAreaByName("_detailarea"); //封装的根据name属性显示区域方法}selectObj.bindPropertyChange(controlDetailFun);controlDetailFun(selectObj[0]);});场景6:根据选择框值不同控制明细列的隐藏/显示实现方式:步骤一:需要隐藏的列设置列自定义属性class:_detailcolumn步骤二:代码块插入jQuery(document).ready(function(){var trifieldid = "field10793"; //触发选择框字段IDvar dynEvent = function(){var fieldval = cus_getFieldValue(trifieldid);if(fieldval === "2")cus_ControlDetailColumnByClass("_detailcolumn", 1);elsecus_ControlDetailColumnByClass("_detailcolumn", 2);}jQuery("#"+trifieldid).bindPropertyChange(dynEvent);jQuery("input[name=indexnum0]").bindPropertyChange(dynEvent);//添加明细行时联动,0代表明细表1 dynEvent();//页面加载联动});封装接口:cus_ControlDetailColumnByClass(cusclassname, status)* @param {cusclassname} 列自定义class属性* @param {status} 1为显示,2为隐藏场景7:当满足某条件时,提交流程验证指定字段必填实现方式:代码块插入function checkCustomize(){if(jQuery("#field10793").val() == "1"){var state = cus_verifyExistNullField("field13031,field13032", "字段未填写"); //封装的校验是否存在空值字段方法 if(state) return false;}return true;}场景8:根据字段ID,直接获取字段对应值封装接口:cus_getFieldValue(fieldid)* @param {fieldid} 字段ID* @return 字段对应值* 注:支持文本、多行文本框、浏览框(ID值)、选择框、check框(选中为1未选中为0)场景9:给文本类型字段赋值封装接口:cus_setInputFieldValue(fieldid, fieldvalue)* 给文本字段赋值,支持只读/编辑/必填情况* @param {fieldid} 字段ID* @param {fieldvalue}字段应赋的值以上场景参考使用方法:一、下载附件文件customPublicFun_wev8.js文件放入应用服务器ecology/workflow/exceldesign/js目录下;二、模板代码块中增加引用<script type="text/javascript"src="/workflow/exceldesign/js/customPublicFun_wev8.js"></script>;三、参考样例,按照业务需要调整字段ID等参数;注:从E8+KB81001611版本后可免去步骤1及步骤2,标准产品涵盖引用;样例中所有以cus_开头的方法都封装在附件文件中,内含参数详细说明;后续我们会不断完善接口方法;三、CSS块分享场景1:主表占比为百分比时,默认为屏幕总宽95%,如何调整总占比宽度(模板根据屏幕自适应同时控制总宽度)代码块插入CSS样式<style>.excelMainTable{width:80% !important}</style>场景2:主表浏览按钮字段默认为210px,如何自定义控制浏览按钮宽度步骤一、在需要调整的浏览按钮字段所在单元格增加自定义属性class: cusbrowwidth步骤二、代码块style标签内增加CSS内容.cusbrowwidth .e8_os{min-width:130px !important;}场景3:明细按钮固定为单元格右侧显示,如何居左显示代码块style标签内增加CSS内容.detailButtonDiv{float:left !important; text-align:left !important;}场景4:单个模板上传Logo后到服务器成为独立图片,如何设置统一图片便于后续快速替换Logo 步骤一、在需要插入Logo的单元格增加自定义属性class:logocell步骤二、代码块style标签内增加CSS内容.logocell{background-image:url(/logoimage/logo.png) !important;background-repeat:no-repeat;height:100%;}根据上述图片路径,将图片拷贝至应用服务器目录中;后续切换Logo替换此图片即可四、联系方式您在使用表单设计器对表单进行二次开发遇到困难时可以直接联系我们;也欢迎大家能够将您在项目上遇到的场景反馈给我们,以便于我们完善接口方法库。
自定义表单的实现方法浅谈

⾃定义表单的实现⽅法浅谈⾃定义表单的实现⽅法浅谈2008年05⽉29⽇星期四 11:32⾃定义表单的⽤途⽐较⼴泛,在OA的⾃定义⼯作流程中、CMS功能扩展、⾃定义调查中都将涉及到。
为什么要使⽤⾃定义表单呢?试想⼀下,如果某个系统中没有⾃定义表单功能,⽽要实现增加功能或系统扩展,会怎么样?这时只能依靠界⾯设计师与程序员配合再做⼀个表单及编写代码来处理表单,处理表单的代码是枯燥⽽机械重复的,因为这样的代码⽆⾮是⼀些增、删、改、插,对⼀般的程序员来说,似乎太简单了;对⼀个项⽬来讲,如果客户需要的表单很多,可想⽽知,这样的代码将会有多少重复的,虽然⽣成代码的⼯具不少,可以减少⼀些⼯作量,但也会让整个系统变的更庞⼤,维护也不是那么⽅便,假如客户要加个数据项或改个什么的,整个项⽬⼜得重新编译。
诚然,开发⼀套⾃定义表单系统是需要耗费不稍精⼒,占⽤⼀些项⽬时间,但有了这个平台之后,对以后的其他项⽬开发或者系统本⾝的功能扩展还是有很⼤帮助的。
上⾯列举了⼀些⾃定义表单的种种好处,我们应该怎么实现它呢。
⾃定义表单就是将上⾯的情况进⾏抽象,通过表单的定义⾃动创建/修改⾃定义数据表、动态⽣成数据表操作的SQL语句并执⾏。
当然⾸先要知道⼀般的⾃定义表单系统包含哪些功能。
我想的话,可分为这样⼏部分:表单定义管理部分、表单呈现/提交部分、表单数据查看/管理部分。
表单定义管理:表单基本信息管理(表单名称、描述)、表单存储表字段管理、表单布局设计、表单数据验证定义、表单字段关联/⼦表单管理、表单字段编辑框⾏为管理。
表单基本信息定义⽐较简单就不说了。
表单存储表字段定义:定义表单中⽤到的数据项,包括字段名、字段类型、长度、默认值、编辑框类型、是否允许为空、是否⾃增长字段、分组名称、是否在列表中显⽰等信息。
编辑框类型⼀般有:⽂本框、⽂本域、复选框、单选框、列表框、时间⽇期选择、⽂件上传框等;这⾥定义的是表单主表字段,注意每张表单仅针对⼀张表,否则操作多张表的SQL不容易处理,涉及到主从表的情况可⽤⼦表单来处理。
vue2表单设计器开发思路

vue2表单设计器开发思路在Vue 2中开发表单设计器,可以遵循以下思路:1.确定需求:首先明确表单设计器的功能需求,例如支持哪些表单元素(如文本框、下拉框、单选框等)、是否支持表单验证、是否支持动态添加和删除表单元素等。
2.设计组件结构:将表单设计器拆分为多个Vue组件,每个组件负责不同的功能。
例如,可以创建一个FormDesigner组件作为表单设计器的入口组件,然后创建FormElement组件用于渲染单个表单元素,还可以创建FormValidator组件用于表单验证等。
3.实现表单元素渲染:在FormElement组件中,根据传入的表单元素数据动态渲染对应的表单元素。
可以使用Vue的v-if或v-show指令来根据元素类型渲染不同的表单元素组件。
4.实现表单验证:如果需要支持表单验证,可以在FormValidator组件中实现验证逻辑。
可以通过监听表单元素的change或input事件来触发表单验证,并根据验证结果更新表单元素的状态(如添加错误提示等)。
5.实现动态添加和删除表单元素:如果需要支持动态添加和删除表单元素,可以在FormDesigner组件中实现相关功能。
可以使用Vue的v-for指令来循环渲染已添加的表单元素,并提供按钮或菜单等控件供用户添加或删除表单元素。
6.实现表单数据绑定:为了实现表单元素与表单数据之间的双向绑定,可以使用Vue的v-model指令将表单元素的值与表单数据对象中的属性进行绑定。
这样,当用户修改表单元素的值时,表单数据对象中的相应属性也会自动更新。
7.提供配置和定制化选项:为了满足不同用户的需求,可以在表单设计器中提供配置和定制化选项。
例如,可以允许用户自定义表单元素的样式、验证规则等。
以上是在Vue 2中开发表单设计器的基本思路。
当然,具体的实现方式可能会因项目需求和团队习惯而有所不同。
在开发过程中,可以参考Vue的官方文档和社区资源,结合项目实际情况进行灵活调整和优化。
流程审批系统功能介绍

流程审批系统功能介绍流程审批系统作为一种高效的工作协同工具,广泛应用于各个行业和组织中。
它能够极大提升工作效率,简化审批流程,并且方便管理者进行监控和统计。
本文将介绍流程审批系统的核心功能及其优势。
一、表单设计器流程审批系统提供了丰富的表单设计器,用户可以根据自身需求自定义表单内容。
设计人员可以通过拖拽方式添加各种表单字段,如文本框、下拉框、单选框等。
通过表单设计器,用户可以设计出适应不同审批流程的表单,提高工作效率,减少错误和遗漏。
二、自定义审批流程流程审批系统允许用户自主设计和配置审批流程。
通过简单的设置,用户可以定义审核人员、审批条件、流程逻辑等。
系统还支持并行审批和串行审批两种模式,让用户能够根据具体业务需求灵活配置审批过程。
同时,系统会对每个审批节点进行状态追踪,确保审批过程的透明和可控。
三、权限管理流程审批系统提供了全面的权限管理功能。
管理员可以对系统中的用户和角色进行灵活配置,设置不同用户对数据和功能的操作权限。
这样,不同岗位的员工能够根据自身权限进行审批操作,保证了数据的安全性和隐私性。
四、消息提醒流程审批系统支持多种消息提醒方式,如短信、邮件、内部消息等。
在流程进行中,系统会根据配置的规则自动向相关人员发送消息提醒,防止审批任务被忽略或延误。
同时,用户也可以根据自己需求主动查询待办事项,保证任务的及时完成。
五、统计分析流程审批系统能够自动生成各类报表和统计图表,为管理人员提供决策支持。
管理员可以通过系统的统计分析功能,了解审批过程中的瓶颈和问题,优化工作流程。
此外,系统还支持导出数据,方便进一步的数据分析和处理。
六、数据可视化流程审批系统通过直观的数据可视化展示,将复杂的审批流程变得简单易懂。
用户可以通过图表或仪表盘等形式,直观地了解审批流程的状态、进度和效率等关键指标。
这种可视化方式不仅提高了审批的透明度,还能够帮助用户更好地把握工作进展和优化流程。
结语流程审批系统作为一种方便高效的工作协同工具,为各个行业和组织带来了极大的便利和效益。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表单自定义设计器功能设计1设计思路1.1表单自定义功能的误区1、关于成本:表单自定义一般容易实现的仅布局、字段的增减、简单的脚本控制等,但有很多诸如复杂脚本控制、自动计算、特殊逻辑验证、主从关系,复杂基础数据选择(过滤、合并)、与其它功能模块的交互等等需求,自定义工具都不能很轻易地解决,最终可能带来的代价是重做,甚至推翻整个系统架构重新实现,付出成本是预计成本的2-4倍以上均有可能。
建议采用对此类复杂需求通过关联创建人定义的SQL语句来实现。
2、表单自定义功能实现的方式一般是数据库表中预制了很多字段或者是一个表中的记录存储为ID、字段名、值、字段类型,而且值的类型往往是字符型,这些做法给数据的查询统计及SQL优化带来的是非常大的性能损失和阻力,业务系统数据量不大的时候看不出,一旦数据业务表大到一定程度的时候,性能瓶颈就会出现。
我们知道需要工作流的业务系统都是大量用户和大规模业务数据的。
对于表单自定义做法,性能瓶颈是一定要考虑的;3、表单自定义往往实现的是一个数据实体的增、删、改,但对于一个系统来讲一个表单仅仅是一个功能点而已,这个功能点对于整个系统来讲远不是那么单纯的,有可能一个数据实体的资料分别在多个表单里进行更新和维护,自定义逻辑往往是处理不了它们之间的冲突,还有查询和统计分析,这些是需要关联很多基础数据、关联其它业务数据。
自定义表单功能本身也只是从功能特性的角度去出发,对于系统复杂的实体关系、业务模式、设计模式的支持几乎为零,一个高质量系统需要的因素基本实现不了;4、企业使用表单自定义工具的时候往往已经有了很多的系统,比如HR、CRM甚至ERP系统,很多关联数据会是来自于这些系统的数据。
表单自定义工具往往无法提供高可靠性的集成方案,即使能集成也是勉强的,后续会付出很多手工同步、统计口径不一致等代价,为企业整体的信息化效果大打折扣;5、另外从实际的使用情况而言,实现一个表单自定义功能的目标往往是为了方便用户实现自己的业务逻辑,但实际上很少客户会自己去自定义这些表单。
而开发人员都会热忠于实现一个表单自定义工具,但不会愿意长期去做表单的定制工作。
对于团队的管理者来说用程序员的工资去做表单配置工作也是不划算的;6、假如我们一定要去实现一个好的表单自定义工具,一定是有很多事件接口的、一定是要能支持调试的、布局一定要能有足够的细致、自定义过程中要有提供给业务人员的自动向导(比开发人员需要的向导更加傻瓜化)、一定能做到足够的优化或支持优化的实现、能支持缓存、调用程序集、从WebService获取信息、能对页面交互过程进行优化。
这些都实现后,会发现做的表单定义工具其实就是大软件公司研发的IDE开发环境,如:visual studio 开发环境。
鉴于此,我认为公司在此问题上应该保证有足够的人员投入以及开发周期,否则肯定会欲速则不达。
1.2系统设计思路设计的系统初步适用于网上OA系统的自定义表单模块的快速开发,需要结合工作流系统功能,并实现数据导入、导出以及打印功能;同时可以用于公司在软件投标过程中实现快速原型。
成熟后可以用于信息管理系统方面的软件开发项目等。
通过表单的定义自动创建/修改自定义数据表,复杂数据字段的执行通过设计器的有关表单控件提供用户定义的相关SQL语句来实现。
包括几部分:表单定义管理部分、表单呈现/提交部分、表单数据查看/管理部分。
表单定义管理:表单基本信息管理(表单名称、描述)、表单存储表字段管理、表单布局设计、表单数据验证定义、表单字段关联/子表单管理、表单字段编辑框行为管理。
表单存储表字段定义:定义表单中用到的数据项,包括字段名、字段类型、长度、默认值、编辑框类型、是否允许为空、是否自增长字段、分组名称、是否在列表中显示等信息。
编辑框类型一般有:文本框、文本域、复选框、单选框、列表框、时间日期选择、文件上传框等;这里定义的是表单主表字段,注意每张表单仅针对一张表,否则操作多张表的SQL不容易处理,涉及到主从表的情况可用子表单来处理。
对字段的相关要求还包括:1.涉及到字段的权限级别控制2.涉及到字段的自定义下拉列表控制3.涉及到字段的默认值控制4.涉及到字段的多层关联的数据引用控制,初步实现单层关联应用5.需要考虑自定义字段的值参与系统原来的业务逻辑运算如何设置的问题6.初步达到代码级的字段业务逻辑控制7.虚拟字段的存在,就是表单中并不存在,而只需要从其它地方引用显示的字段表单布局设计:这一步很关键也是较难实现,简单的做法是做一个表单模板,那么表单中的数据项说明、编辑框、数据验证就都可以用内部变量来代替,系统可提供自动生成表单的功能,用户也可以自己手工修改,当然需要提供一个表单设计器,这样使用起来就更方便了。
表单数据验证定义:定义需要验证字段的规则,验证规则,可用正则表达式的方式来定义,系统内部可自带一些常用的验证规则,复杂的情况可能会出现各字段之间的值进行比较的情况。
表单字段关联/子表单管理:定义表/表单之间的关联信息,即主键外键信息。
表单字段编辑框行为定义:主要负责处理字段值发生变化时引发的其他编辑框事件,比如连动下拉框、从选择值中返回值并赋予其他字段编辑框、其他编辑框的隐藏等。
表单运行时呈现及提交:根据表单定义的布局及其他设置呈现表单,并一起生成验证、行为用到的JS代码。
如果填写表单时,先填主表信息,然后填写从表信息,保存的临时表单值可采用SESSION进行传递,最后一起提交,提交时先写入主表信息,并返回主键值(如果存在主从表的话),然后写从表数据。
表单数据管理:可根据字段配置信息显示表单的数据列表,并进行管理。
实现新建表单与流程的结合:1.设计表单属性,提供了多种参数,用户可以直接选择。
2.表单中添加控件,在添加用于控制数据输入或用户选择的控件(如文本框,单选框,下拉菜单等)后表单才有完整的功能。
3.验证数据的绑定,鼠标位于控件上时显示的图表和说明文字将表明数据的帮定情况,也可从右侧的数据源中查看。
4.设置错误的验证,用户设置设计表单并使其具有自动检验一些错误的功能(如必须输入),在输入出现错误自动弹出提示。
5.表单模板的上传,在流程管理中的表单模板定义中可以将之前定义好的表单模板上传,并使之与流程绑定,也可以自由的选择要显示的字段,及调整显示的顺序。
6.在流程的定义中选择执行人是否可以修改表单业务数据的有关字段值,这样就可以实现人员之间的协同操作。
7.流程管理中的自定表单可以看到表单的数据的一览情况。
8.如果与流程绑定,在新增时需要选择绑定的流程。
9.如果使用中的表单进行了修改,必须可以自动保存表单的历史版本,并要实现与已经完成的业务单据数据的自动的对应关联,防止业务数据的显示异常,杜绝张冠李戴现象发生。
10.填写过表单后可以选择提交申请或保存退出,提交申请数据提交,保存退出后数据还可以再继续编辑。
11.可以对表单数据进行灵活的查询及统计分析。
2设计器功能要点2.1 表单设计器管理主界面用户权限用户对定义的表单进行管理,相关操作包括:启用、停用、增加、修改、删除、关闭。
查询条件:表单名称:用户创建的表单的名称。
表单ID:表单模板在数据库中的记录ID。
表单类别:用于用户从定义的系统参数码表中选择表单的类别,便于有些企业在表单很多的情况下进行分类管理。
表单状态:未启用(草稿)、启用、停用。
引用标志:引用、未引用。
默认为未引用。
启用的表单在业务办理过程中被使用,存在有对应的业务数据时,由系统自动检验该字段,把未引用改写为引用。
表单使用位置:表单在业务树结构下的位置,由管理员进行配置,此处只显示配置好的结果。
2.2 表单—增加提供权限用户在图形界面下,增加并维护表单内容,新增自定义表单模板,完成后进行保存。
需要定义表单的属性,使用相关控件进行表单内容设置,还能定义表单的处理事件。
2.2.1表单—增加—表单属性提供用户在图形界面内创建表单的有关属性,保存到表单属性表中。
图中,“源文件”选中按钮说明:点击选择后,显示设计的表单页面的解析文件。
表单属性有关字段说明:表单显示名称:显示用户新增录入的或者已经录入的单据名称,可以修改。
数据库表名称:显示用户新增录入的或者已经录入的单据名称,保存后不可修改,需要进行唯一性检验。
当前表单对应的数据库表名。
新增表单时根据输入的表名判断当前数据库是否存在此表,若存在则让用户选择用现有表还是重命名,使用现有表新增的控件默认为不保存,从现有表选择字段则默认为保存。
表单类别:用于用户从定义的系统参数码表中选择表单的类别,分为普通表单和其它表单(具体根据不同项目来定)便于在有些企业表单很多的情况下进行分类管理。
上传附件:设置定义的表单是否需要上传附件。
如果选择上传附件,调用附件处理模块,选是则在表单末端会显示附件列表,否则不显示。
工作流:选择当前表单是否走工作流程,选择是则则可以在工作流管理中进行流程设置,在业务流程定义中可查询出此表单,并选择未启用、自由流程、预定义流程三种流程类型。
选否则在表单提交后直接变为可执行状态。
表单宽度:设置表单在运行时的窗体大小(不包括工作流程步骤的高度),指表单的宽度。
表单高度:设置表单在运行时的窗体大小(不包括工作流程步骤的高度),指表单的显示高度。
鼠标右键:光标在表单设计器的编辑框内时,点击鼠标右键,出现下述操作列表,供用户选择:右键列表中相关功能的操作与用法类似word中的具体用法。
数据表:COM_BILLDSIBILLDSIID BILLDSINAME BILLDSI_STATES OPERATIONCODE DATATABLENAME DESIGN DESCRIPTION CREATEBY CREATEDATE LASTUPDATEBY LASTUPDATEDATE NODEPOSITIONDTLDTL_TABLENAME ACCESSORYUSE_OLDTABLEDTL_USE_OLDTABLE DTL_DISPLAY_NAME DTL_FOREIGNKEY FORMTYPE EXPLAIN_CONTENT WIDTHHEIGHT NUMBERVARCHAR2(100) VARCHAR2(6) VARCHAR2(10) VARCHAR2(30)CLOBVARCHAR2(255) VARCHAR2(20)DATEVARCHAR2(20)DATEVARCHAR2(200) CLOBVARCHAR2(50) NUMBERNUMBERNUMBERVARCHAR2(30) VARCHAR2(30) NUMBERCLOBNUMBERNUMBER<pk>2.2.2表单—增加—表单控件本处提供各种表单控件给用户,采用对常见的功能和控件内置的方法,使得开发一些常见的功能(如数据库的增、删、改、查,树控件,表格控件)非常容易方便,几乎不用写一行代码,直接通过控件的拖拉,然后再设置属性和事件即可完成。