表单设计器功能设计
表单自动生成课程设计

表单自动生成课程设计一、课程目标知识目标:1. 学生能理解表单自动生成的概念及其在信息技术中的应用。
2. 学生能够掌握利用公式和函数进行表单数据自动计算的方法。
3. 学生能够描述至少三种不同的表单自动生成工具或软件,并了解它们的基本功能。
技能目标:1. 学生能够运用所学知识,设计并实现一个简单的表单自动生成系统。
2. 学生能够使用相关工具或软件,完成表单数据的自动填充和计算。
3. 学生通过实践操作,提高问题解决能力和团队协作能力。
情感态度价值观目标:1. 学生培养对信息技术的兴趣,激发创新意识和探索精神。
2. 学生在学习过程中,树立正确的信息伦理观念,尊重和保护个人隐私。
3. 学生通过课程学习,认识到信息技术在现实生活中的重要作用,增强社会责任感。
课程性质:本课程为信息技术课程,以实践操作为主,结合理论讲解。
学生特点:学生为初中生,具备一定的信息技术基础,对新鲜事物充满好奇,喜欢动手实践。
教学要求:教师应注重理论与实践相结合,关注个体差异,激发学生的学习兴趣,培养学生的实际操作能力和创新思维。
教学过程中,注重引导学生将所学知识应用于实际生活,提高课程学习的实用价值。
通过课程目标的分解,使学生在学习过程中取得具体的学习成果,为后续教学设计和评估提供依据。
二、教学内容本课程教学内容主要包括以下三个方面:1. 表单自动生成基础知识:- 表单自动生成的概念及其应用场景- 常见表单元素及其功能- 表单数据收集与处理的基本方法2. 表单自动生成工具与软件:- 介绍至少三种表单自动生成工具或软件(如:问卷星、金数据等)- 分析这些工具或软件的特点、功能和使用方法- 比较不同工具或软件的优缺点,为实际应用选择合适的工具3. 表单自动生成实践操作:- 设计一个简单的表单自动生成系统,涵盖数据收集、处理和输出等环节- 应用公式和函数进行表单数据自动计算- 团队合作,完成一个具有实际应用价值的表单自动生成项目教学大纲安排:1. 知识准备:1课时,讲解表单自动生成基础知识,引导学生了解课程背景和目标。
VFP笔记(四)

第八章表单设计与应用大纲要求使用表单设计器:(1)在表单中加入和修改控件对象。
(2)设定数据环境。
知识要点1.表单表单(Form)就是一个输入或显示某种信息的界面(窗口),是Visual FoxPro提供的用于建立应用程序界面的工具之一。
被大量应用于人机交互界面的设计当中。
应用表单设计功能,可以设计出具有Windows风格的各种程序界面。
由于表单使用非常频繁,所以在VFP 中,专门提供了一个表单设计器来设计表单程序。
表单是一个容器,除含有窗口的标准控件标题栏、控制按钮外,可以向表单中添加各种对象,如按钮、文本框、表格、图片等。
在表单设计器环境下可以进行添加、删除及布局控件的操作。
2. 对象对象(Object)是反映客观事物属性及行为特征的描述。
客观世界里的任何实体都可以被看作是对象。
对象可以是具体的物,也可以指某些概念。
从编程的角度来看,对象是一种将数据和操作过程结合在一起的数据结构,或者是一种具有属性(数据)和方法(过程和函数)的集合体。
事实上程序中的对象就是对客观世界中对象的一种抽象描述。
每个对象都具有描述其特征的属性,及附属于它的行为。
对象把事物的属性和行为封装在一起,是一个动态的概念。
对象是面向对象编程的基本元素,是“类”的具体实例。
(1)对象属性:属性用来表示对象的状态。
(2)对象方法:对象方法是描述对象行为的过程。
对象的属性特征标识了对象的物理性质,对象的行为特征描述了对象可执行的行为动作;对象的每一种属性,都是与其他对象加以区别的特性,都具有一定的含义,并赋予一定的值;对象大多数是可见的,也有一些特殊的对象是不可见的。
3.类v 类是对一类相似对象的性质描述,这些对象具有相同种类的属性以及方法就好比是一个摸板。
对象是类的一个实例。
v 类的类型子类和父类v 类的四大特征§继承性——说明了子类延用父类特征的能力;§多态性——指一些关联的类包含同名的方法程序,但方法程序的内容可以不同,具体调用在运行时根据对象的类确定;§封装性——说明包含和隐藏对象信息,如内部数据结构和代码的能力;§抽象性——指提取一个类或对象与众不同的特征,而不对该类的所有信息进行处理;4.子类与继承在面向对象的方法里,继承是指在基于现有的类创建新类时,新类继承了现有类里的方法和属性。
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替换此图片即可四、联系方式您在使用表单设计器对表单进行二次开发遇到困难时可以直接联系我们;也欢迎大家能够将您在项目上遇到的场景反馈给我们,以便于我们完善接口方法库。
E-cology8.0新表单设计器操作指南设计

表单设计器1.概述表单设计器是系统提供的一种基于Html语言的表单设计模块,除了可以满足用户对表单样式的需求之外,还弥补了图形化表单中无法支持多浏览器、加载速度慢等问题。
在表单设计器中可以实现以下的功能∙用户可以象在Excel中一样自由绘制表格,这些绘制的表格可以在各个节点甚至不同的系统之间调用,而且可以为手机版设计独有的显示样式;∙可以在表格中插入图片、链接甚至是一段代码程序,以满足用户对表单功能的特殊要求;∙与其它表格模式不同除了设置字段的编辑属性之外,还可以给每个字段都添加属性,可以是一个简单的计算公式,也可以是复杂的逻辑运算,甚至可以与SAP等外部系统相结合;∙而且在绘制明细表的时候,不用象模板模式一样考虑明细表由多少列,主表有多少列,在表单设计器中主表的设计和明细表的设计是分开的,只是显示的时候才会放在一起显示,列数行数互不影响。
2.H tml模板设计2.1.表单格式我们选择创建Html模板之后显示如图1所示图1∙在模板编辑页面我们看到了Excel编辑器一样的设计页面,我们可以在上面直接绘制表格,注意表格中需要为字段的显示名和字段本身分别留出对应的单元格;∙在表格设计器中有按钮,点击后可以编辑单元格的属性,先选中单元格,在点击后显示如图2所示,我们可以和Excel表格一样设定单元格的属性,包括了单元格内容的显示方式、对齐方式、边框和底色等;图2∙在表格设计器中还有按钮,点击后可以选择让单元格内容是否折行显示;∙其它的一些功能都是画表格的功能,当鼠标移动到快捷按钮上的时候会显示按钮的名称。
2.2.添加主字段在表格的右侧显示了主字段的显示名和字段,∙先在绘制好的表格中选中某一个单元格,然后将右侧对应的显示名或字段双击后可以添加到指定的单元格中,如图3所示;∙已经添加过的显示名或字段会变为灰色;∙如果需要删除已经添加的字段,同样还是先选中单元格,再点击顶部的快捷按钮,就可以把这个字段清除了;∙添加了字段我们可以在快捷菜单中选择需要的字体样式,包括了字体、颜色、加粗等,如果需要重新设计字体样式只要点击按钮,就可以把我们设计的显示样式给清除了;∙点击按钮,除了会删除字段外,还会将单元格的设置属性,包括字体、颜色、加粗、表格线框、背景色等全部清除。
表单页面功能元素设计攻略:字段种类及属性说明

表单页面功能元素设计攻略:字段种类及属性说明本文参考了一些表单编辑平台的字段功能,基本上涵盖了平时常用的所有表单字段。
字段种类文本:单行文字、多行文字、描述号码数值:数字(小数点后保留)金额计算公式选项:单级下拉框、多级下拉框(级联)下拉菜单:单项选择、多项选择矩阵单选矩阵填空工作区成员日期和时间图片:图片单选、图片多选附件:上传文件分页:向下展开、设置单页数据数量、显示全部、滚动加载网址评分关联:表单关联、字段关联、综合计算公式的关联实例字段:联系信息姓名昵称性别身份证号手机座机邮箱微信QQ地址/地理位置备注表单字段公共属性说明基础字段标题:此属性用于告诉填写者应该在该字段中输入什么样的内容。
通常是一两个简短的词语,也可以是一个问题。
(页面初始化)默认值:设置后,此值将作为默认值显示在该字段的输入框中。
如果不需要设置默认值,请将此处留空。
字段提示:此属性用于指定对该字段进行一些附加说明,一般用来指导填写者输入。
数据类型:字母(分大小写和不分大小写)、阿拉伯数字、中文(一个汉字=两个字符)、限定种类的混合字符数据(字母开头、只限字母和数字、只限字母、只限数字、字母数字英文“_”中文“-”)标识布局设置排列方式:纵向、横向宽度占整行的百分比:占总宽度的百分比。
设置表单宽度值和高度值校验必填校验:勾选后,该字段将不允许为空,在字段名称后会有红色的星号标出。
如果填写者在提交表单时必填字段没有输入,系统将会给出相关错误提示,表单将无法提交。
该属性常用于需要强制填写者必须输入的字段。
(单选)设置“其他”必填:勾选后,当填写者选中“其他”时,需要同时填写“其他”后面的文本框;如果填写者在提交表单时,该文本框没有输入内容,系统将会给出相关错误提示,表单将无法提交。
唯一校验:勾选后,该字段将将不允许重复,在字段名称后会有红色的星号标出。
如果填写者在提交表单时字段不唯一,系统将会给出相关错误提示,表单将无法提交。
表单设计器功能设计

表单自定义设计器1设计思路1.1表单自定义功能(de)误区1、关于成本:表单自定义一般容易实现(de)仅布局、字段(de)增减、简单(de)脚本控制等,但有很多诸如复杂脚本控制、自动计算、特殊逻辑验证、主从关系,复杂基础数据选择(过滤、合并)、与其它功能模块(de)交互等等需求,自定义工具都不能很轻易地解决,最终可能带来(de)代价是重做,甚至推翻整个系统架构重新实现,付出成本是预计成本(de)2-4倍以上均有可能.建议采用对此类复杂需求通过关联创建人定义(de)SQL语句来实现.2、表单自定义功能实现(de)方式一般是数据库表中预制了很多字段或者是一个表中(de)记录存储为ID、字段名、值、字段类型,而且值(de)类型往往是字符型,这些做法给数据(de)查询统计及SQL优化带来(de)是非常大(de)性能损失和阻力,业务系统数据量不大(de)时候看不出,一旦数据业务表大到一定程度(de)时候,性能瓶颈就会出现.我们知道需要工作流(de)业务系统都是大量用户和大规模业务数据(de).对于表单自定义做法,性能瓶颈是一定要考虑(de);3、表单自定义往往实现(de)是一个数据实体(de)增、删、改,但对于一个系统来讲一个表单仅仅是一个功能点而已,这个功能点对于整个系统来讲远不是那么单纯(de),有可能一个数据实体(de)资料分别在多个表单里进行更新和维护,自定义逻辑往往是处理不了它们之间(de)冲突,还有查询和统计分析,这些是需要关联很多基础数据、关联其它业务数据.自定义表单功能本身也只是从功能特性(de)角度去出发,对于系统复杂(de)实体关系、业务模式、设计模式(de)支持几乎为零,一个高质量系统需要(de)因素基本实现不了;4、企业使用表单自定义工具(de)时候往往已经有了很多(de)系统,比如HR、CRM甚至ERP系统,很多关联数据会是来自于这些系统(de)数据.表单自定义工具往往无法提供高可靠性(de)集成方案,即使能集成也是勉强(de),后续会付出很多手工同步、统计口径不一致等代价,为企业整体(de)信息化效果大打折扣;5、另外从实际(de)使用情况而言,实现一个表单自定义功能(de)目标往往是为了方便用户实现自己(de)业务逻辑,但实际上很少客户会自己去自定义这些表单.而开发人员都会热忠于实现一个表单自定义工具,但不会愿意长期去做表单(de)定制工作.对于团队(de)管理者来说用程序员(de)工资去做表单配置工作也是不划算(de);6、假如我们一定要去实现一个好(de)表单自定义工具,一定是有很多事件接口(de)、一定是要能支持调试(de)、布局一定要能有足够(de)细致、自定义过程中要有提供给业务人员(de)自动向导(比开发人员需要(de)向导更加傻瓜化)、一定能做到足够(de)优化或支持优化(de)实现、能支持缓存、调用程序集、从WebService获取信息、能对页面交互过程进行优化......这些都实现后,会发现做(de)表单定义工具其实就是大软件公司研发(de)IDE开发环境,如:visualstudio开发环境.鉴于此,我认为公司在此问题上应该保证有足够(de)人员投入以及开发周期,否则肯定会欲速则不达.1.2系统设计思路设计(de)系统初步适用于网上OA系统(de)自定义表单模块(de)快速开发,需要结合工作流系统功能,并实现数据导入、导出以及打印功能;同时可以用于公司在软件投标过程中实现快速原型.成熟后可以用于信息管理系统方面(de)软件开发项目等.通过表单(de)定义自动创建/修改自定义数据表,复杂数据字段(de)执行通过设计器(de)有关表单控件提供用户定义(de)相关SQL语句来实现.包括几部分:表单定义管理部分、表单呈现/提交部分、表单数据查看/管理部分.表单定义管理:表单基本信息管理(表单名称、描述)、表单存储表字段管理、表单布局设计、表单数据验证定义、表单字段关联/子表单管理、表单字段编辑框行为管理.表单存储表字段定义:定义表单中用到(de)数据项,包括字段名、字段类型、长度、默认值、编辑框类型、是否允许为空、是否自增长字段、分组名称、是否在列表中显示等信息.编辑框类型一般有:文本框、文本域、复选框、单选框、列表框、时间日期选择、文件上传框等;这里定义(de)是表单主表字段,注意每张表单仅针对一张表,否则操作多张表(de)SQL不容易处理,涉及到主从表(de)情况可用子表单来处理.对字段(de)相关要求还包括:1.涉及到字段(de)权限级别控制2.涉及到字段(de)自定义下拉列表控制3.涉及到字段(de)默认值控制4.涉及到字段(de)多层关联(de)数据引用控制,初步实现单层关联应用5.需要考虑自定义字段(de)值参与系统原来(de)业务逻辑运算如何设置(de)问题6.初步达到代码级(de)字段业务逻辑控制7.虚拟字段(de)存在,就是表单中并不存在,而只需要从其它地方引用显示(de)字段表单布局设计:这一步很关键也是较难实现,简单(de)做法是做一个表单模板,那么表单中(de)数据项说明、编辑框、数据验证就都可以用内部变量来代替,系统可提供自动生成表单(de)功能,用户也可以自己手工修改,当然需要提供一个表单设计器,这样使用起来就更方便了.表单数据验证定义:定义需要验证字段(de)规则,验证规则,可用正则表达式(de)方式来定义,系统内部可自带一些常用(de)验证规则,复杂(de)情况可能会出现各字段之间(de)值进行比较(de)情况.表单字段关联/子表单管理:定义表/表单之间(de)关联信息,即主键外键信息.表单字段编辑框行为定义:主要负责处理字段值发生变化时引发(de)其他编辑框事件,比如连动下拉框、从选择值中返回值并赋予其他字段编辑框、其他编辑框(de)隐藏等.表单运行时呈现及提交:根据表单定义(de)布局及其他设置呈现表单,并一起生成验证、行为用到(de)JS代码.如果填写表单时,先填主表信息,然后填写从表信息,保存(de)临时表单值可采用SESSION进行传递,最后一起提交,提交时先写入主表信息,并返回主键值(如果存在主从表(de)话),然后写从表数据.表单数据管理:可根据字段配置信息显示表单(de)数据列表,并进行管理.实现新建表单与流程(de)结合:1.设计表单属性,提供了多种参数,用户可以直接选择.2.表单中添加控件,在添加用于控制数据输入或用户选择(de)控件(如文本框,单选框,下拉菜单等)后表单才有完整(de)功能.3.验证数据(de)绑定,鼠标位于控件上时显示(de)图表和说明文字将表明数据(de)帮定情况,也可从右侧(de)数据源中查看.4.设置错误(de)验证,用户设置设计表单并使其具有自动检验一些错误(de)功能(如必须输入),在输入出现错误自动弹出提示.5.表单模板(de)上传,在流程管理中(de)表单模板定义中可以将之前定义好(de)表单模板上传,并使之与流程绑定,也可以自由(de)选择要显示(de)字段,及调整显示(de)顺序.6.在流程(de)定义中选择执行人是否可以修改表单业务数据(de)有关字段值,这样就可以实现人员之间(de)协同操作.7.流程管理中(de)自定表单可以看到表单(de)数据(de)一览情况.8.如果与流程绑定,在新增时需要选择绑定(de)流程.9.如果使用中(de)表单进行了修改,必须可以自动保存表单(de)历史版本,并要实现与已经完成(de)业务单据数据(de)自动(de)对应关联,防止业务数据(de)显示异常,杜绝张冠李戴现象发生.10.填写过表单后可以选择提交申请或保存退出,提交申请数据提交,保存退出后数据还可以再继续编辑.11.可以对表单数据进行灵活(de)查询及统计分析.2设计器功能要点2.1表单设计器管理主界面用户权限用户对定义(de)表单进行管理,相关操作包括:启用、停用、增加、修改、删除、关闭.查询条件:表单名称:用户创建(de)表单(de)名称.表单ID:表单模板在数据库中(de)记录ID.表单类别:用于用户从定义(de)系统参数码表中选择表单(de)类别,便于有些企业在表单很多(de)情况下进行分类管理.表单状态:未启用(草稿)、启用、停用.引用标志:引用、未引用.默认为未引用.启用(de)表单在业务办理过程中被使用,存在有对应(de)业务数据时,由系统自动检验该字段,把未引用改写为引用.表单使用位置:表单在业务树结构下(de)位置,由管理员进行配置,此处只显示配置好(de)结果.2.2表单—增加提供权限用户在图形界面下,增加并维护表单内容,新增自定义表单模板,完成后进行保存.需要定义表单(de)属性,使用相关控件进行表单内容设置,还能定义表单(de)处理事件.2.2.1表单—增加—表单属性提供用户在图形界面内创建表单(de)有关属性,保存到表单属性表中.图中,“源文件”选中按钮说明:点击选择后,显示设计(de)表单页面(de)解析文件.表单属性有关字段说明:表单显示名称:显示用户新增录入(de)或者已经录入(de)单据名称,可以修改.数据库表名称:显示用户新增录入(de)或者已经录入(de)单据名称,保存后不可修改,需要进行唯一性检验.当前表单对应(de)数据库表名.新增表单时根据输入(de)表名判断当前数据库是否存在此表,若存在则让用户选择用现有表还是重命名,使用现有表新增(de)控件默认为不保存,从现有表选择字段则默认为保存.表单类别:用于用户从定义(de)系统参数码表中选择表单(de)类别,分为普通表单和其它表单(具体根据不同项目来定)便于在有些企业表单很多(de)情况下进行分类管理.上传附件:设置定义(de)表单是否需要上传附件.如果选择上传附件,调用附件处理模块,选是则在表单末端会显示附件列表,否则不显示.工作流:选择当前表单是否走工作流程,选择是则则可以在工作流管理中进行流程设置,在业务流程定义中可查询出此表单,并选择未启用、自由流程、预定义流程三种流程类型.选否则在表单提交后直接变为可执行状态.表单宽度:设置表单在运行时(de)窗体大小(不包括工作流程步骤(de)高度),指表单(de)宽度.表单高度:设置表单在运行时(de)窗体大小(不包括工作流程步骤(de)高度),指表单(de)显示高度.鼠标右键:光标在表单设计器(de)编辑框内时,点击鼠标右键,出现下述操作列表,供用户选择:右键列表中相关功能(de)操作与用法类似word中(de)具体用法.数据表:2.2.2表单—增加—表单控件本处提供各种表单控件给用户,采用对常见(de)功能和控件内置(de)方法,使得开发一些常见(de)功能(如数据库(de)增、删、改、查,树控件,表格控件)非常容易方便,几乎不用写一行代码,直接通过控件(de)拖拉,然后再设置属性和事件即可完成.在此编辑框内,用户可以在光标位置处增加文字和有关表单内容,也可以对当前选择(de)控件内容进行修改、删除(按.Del键).调整以后(de)表格内容应该保存到相关表中.控件按钮说明:所有表单控件,都包括以下公用属性:字段名:当前字段(de)英文名称标题:当前字段(de)中文名称Css名:当前控件应用(de)样式表名称对齐方式:当前控件内容(de)对齐方式必须项:判断当前控件在表单保存时是否是必须(de)边框:当前控件是否有边框保存:当前控件是否对应数据表中(de)字段只读:当前控件是否可获得焦点颜色:控件(de)背景色数据表:表单设计控件类型配置表自定义查询字段属性表表单设计数据字典表2.2.2.1单行输入框提供用户在编辑框中(de)光标位置添置单行输入框,需要保存相关(de)设置参数.处理界面:字段说明:默认值:表单初始化时(de)初始值最大字节数:当前控件能允许输入内容长度正则表达式:当前控件(de)输入特殊校验2.2.2.2多行输入框提供用户在编辑框中(de)光标位置添置多行输入框,需要保存相关(de)设置参数.处理界面:字段说明:默认值:表单初始化时(de)初始值审核输入:表单如果选工作流,在相关人员审核此表单时此控件成编辑状态(在其它界面(新增/编辑/查看)时是只读(de) 2.2.2.3下拉列表提供用户在编辑框中(de)光标位置添置下拉列表,需要保存相关(de)设置参数.处理界面:字段说明:保存值:当前控件(de)value值显示值:当前控件(de)显示值2.2.2.4复选框提供用户在编辑框中(de)光标位置添置复选框,需要保存相关(de)设置参数.处理界面:字段说明:默认值:1选中值:当前控件选中时(de)保存值(当前控件为保存)2不选中值:当前控件未选中时(de)保存值(当前控件为保存)3是否选中:表单初始化时当前控件(de)状态2.2.2.5单选框提供用户在编辑框中(de)光标位置添置单选框,需要保存相关(de)设置参数.处理界面:字段说明:默认值:当前控件选中时(de)保存值及表单初始化时当前控件(de)状态2.2.2.6隐藏标签提供用户在编辑框中(de)光标位置添置隐藏标签,需要保存相关(de)设置参数.处理界面:字段说明:默认值:表单初始化时(de)值数据类型:当前字段(de)数据类型号2.2.2.7日历控件提供用户在编辑框中(de)光标位置添置日历控件,需要保存相关(de)设置参数.处理界面:字段说明:类型:当前控件(de)时间控件类型当前日期:表单初始化时是否显示当前日期2.2.2.8数字控件提供用户在编辑框中(de)光标位置添置数字控件,需要保存相关(de)设置参数.处理界面:字段说明:数据精度:1整数当前控件录入时(de)最大整数位数2小数当前控件录入时(de)最大小数位数货币:当前控件在运行时做查询结果时,其列表中是否以货币形式显示2.2.2.9负数控件提供用户在编辑框中(de)光标位置添置负数控件,需要保存相关(de)设置参数.处理界面:字段说明:数据精度:1整数当前控件录入时(de)最大整数位数2小数当前控件录入时(de)最大小数位数货币:当前控件在运行时做查询结果时,其列表中是否以货币形式显示2.2.2.10单选选择对话框提供用户在编辑框中(de)光标位置添置单选选择对话框,需要保存相关(de)设置参数.处理界面:字段说明:数据源:当前控件对应(de)SQL语句,此语句有子查询时,其主查询(de)关键字from,where改为_from,_where,语句(de)条件中其条件字段为表达式或子查询时其and改为_and,条件中子查询带参数部分应将参数部分写在子查询之外,默认(de)参数为:curUserId:当前用户ID,:curOrgId:当前组织ID显示字段:此控件在通用快捷条件查询控件界面(de)列表中要显示(de)字段名,以分号间隔与主表关联字段:选择此通用快捷条件查询控件列表中能与当前表单建立唯一关系(de)字段参数:点击参数信息(de)“+”则在参数列表中添加一新行,参数名对应SQL语句中(de)参数(两冒号之间(de)变量,全字匹配);参数控件对应当前表单中(de)保存控件及主键;参数类型则选择参数(de)数据类型;默认值对当前参数赋默认值.返回字段:点击查询结果返回字段后面(de)“+”则在返回字段中添加一新行,返回字段对应SQL语句中(de)查询字段,返回控件则从当前表单中选择已有控件(注:SQL语句中(de)查询字段名与返回字段名及返回控件名必须保存一致).2.2.2.11多选选择对话框提供用户在编辑框中(de)光标位置添置多选选择对话框,需要保存相关(de)设置参数.处理界面:字段说明:数据源:当前控件对应(de)SQL语句,此语句有子查询时,其主查询(de)关键字from,where改为_from,_where,语句(de)条件中其条件字段为表达式或子查询时其and改为_and,条件中子查询带参数部分应将参数部分写在子查询之外,默认(de)参数为:curUserId:当前用户ID,:curOrgId:当前组织ID,与单选对话框不同(de)是此语句(de)查询字段为两个,第一个为ID之类(de)字段,第二个为显示出来(de)字段,其通用快捷条件查询控件显示列表中为第二个字段参数:点击参数信息(de)“+”则在参数列表中添加一新行,参数名对应SQL语句中(de)参数(两冒号之间(de)变量,全字匹配);参数控件对应当前表单中(de)保存控件;参数类型则选择参数(de)数据类型.返回字段:点击查询结果返回字段后面(de)“+”则在返回字段中添加一新行,返回字段对应SQL语句中(de)查询字段,返回控件则从当前表单中选择已有控件.2.2.2.12在线编辑器提供用户在编辑框中(de)光标位置添置在线编辑器,需要保存相关(de)设置参数.处理界面:说明:此控件可让用户输入带格式(de)各种文本内容,目前是用于非保存字段,在设计界面是一个图片,这个图片(de)大小决定其在运行时(de)编辑器大小.2.2.2.13标签页提供用户在编辑框中(de)光标位置添置标签页,此控件不对应数据表中(de)任何字段,用于页面展示处理界面:字段说明:页头名称:用于显示(de)页头(de)名称页头高度:控件页头(de)高度页头百分比:用于控件页头显示(de)页面比例页体高度:用于控件页体(de)显示高度2.2.2.14明细表提供用户在编辑框中(de)光标位置添置明细表,需要保存相关(de)设置参数.可以添置多个明细表.处理界面:字段说明:显示名:明细表(de)中文名使用名:明细表(de)数据库表名1、选择已有表做为明细表外键字段:与主表关联(de)字段(从数据表(de)number字段中选择)添加按钮:直接添加新字段(此字段是不能选择保存(de))其它:从现在表中选择字段做为明细表字段字段名:不能编辑,为选择字段(de)名称2、新建数据表外键字段:默认为xr_child_parentId添加按钮:直接添加新字段,可选择是否保存其它:暂为空字段名:当前字段(de)使用名,不能重复字段类型:当前字段(de)数据类型(修改里不可编辑)审核修改:当前字段在审核时可修改其值表达式:或对日期或数字型(de)字段进行计算,其来源字段只能是保存字段,表达式对应(de)字段将不可保存求和:对数字类型(de)字段是否求和(即显示小计,合计项)参数做为条件:如果当前字段是有数据源(de),在运行界面(de)查询结果不根据此选项是否把数据源参数做为主查询(de)条件焦点去向字段:当按enter键时(de)焦点控件字段(默认依顺序)表达式内容:当前字段(de)运算公式编辑控件:当前字段在录入数据里(de)状态数据源:当前字段在可编辑时(de)数据来源是否分页:在运行时(de)查询或编辑时是否显示分页信息,不分页则显示全部是否显示数据列:基本数据列在运行时是否可见明细表行数:默认(de)明细表表格行数2.2.2.15快捷控件提供用户在编辑框中(de)光标位置添置快捷控件,需要保存相关(de)设置参数.快捷控件提供(de)类型有:当前用户,当前部门,单据编号,单据日期,快捷控件在运行里将自动(de)为其赋值处理界面:字段说明:主键控件:当类型为当前用户或当前部门时选择存其ID(de)字段控件(大多数情况下数据表中存(de)是ID,并非其名称).2.2.2.16可编辑块提供用户在编辑框中(de)光标位置添置可编辑块,需要保存相关(de)设置参数.此控件不对应数据表中(de)任何字段,在运行时其外观是不可见(de),但当焦点获得时可录入文本处理界面:2.2.2.17树结构提供用户在编辑框中(de)光标位置添置树结构,需要保存相关(de)设置参数.处理界面:字段说明:查询名称:树界面(de)显示名称树结构表名:用于查询(de)数据表名或视图(只用于单表,多表需够成视图)主键名:当前表或视图(de)主键或类似主键(de)字段父ID名:当前表或视图中与所写主键名有父子关系(de)字段查询条件:查询里(de)过滤条件排序条件:与主表关联字段:能与当前表单建立唯一关系(de)字段选末节:在树界面是否点击末级才选中内容树表头信息:当点击“+”号将添加一行表头字段录入行,此行中字段名为树结构表名中(de)相关字段;字段显示名为此字段在树运行界面(de)显示名称;字段类型为此字段(de)数据类型;树结构为当前字段将以树(de)形式显示;隐藏将在树运行界面隐藏该字段返回字段:点击查询结果返回字段后面(de)“+”则在返回字段中添加一新行.返回字段列针对主键字段或表头字段,返回控件则是当前字段对应(de)表单控件.2.2.3表单—增加—表单事件提供用户增加、维护表单(de)事件,完成后将表单属性及当前设计区域(de)内容(包括明细表)保存进数据库到表单事件表中.“源文件”选中按钮:点击选择后,显示设计(de)表单页面(de)解析文件.表单事件按钮说明:按钮说明如下:2.2.3.1保存表单用户将表单属性及当前设计区域(de)内容(包括明细表)保存进数据库,只有保存后才能进行后续(de)操作(添加说明、设置字段属性、设置表单按钮、添加查询条件、自定义查询、预览等).否则进行后续操作时进行提示:如果表单是已经保存过(de),进行版本更新,显示如下:空表单(表单页面编辑框中没有任何内容)不能保存,提示如下:表单状态:0未提交,1000可执行,2000已完成,3000已停用,-1000已作废数据表:表单设计定义主表表单设计定义明细表表单设计数据字典表2.2.3.2添加说明提供用户在文本编辑框中录入当前表单(de)说明内容.可以任意增加内容,完成后点击按钮“确定”由系统以大对象保存起来.数据表:表单设计定义主表2.2.3.3设置字段属性将先对表单内容进行保存,其后将弹出表单中(de)保存控件或与通用快捷条件查询控件/树级联相关(de)控件进行字段属性(de)设置界面:字段说明:1、字段名称:对应表单控件中标题2、条件查询编号维护:在维护运行界面(de)查询条件顺序号审核:已取消查询:在查询运行界面(de)查询条件顺序号数据源:在查询界面(de)查询条件中对通用快捷条件查询控件或树(de)数据来源(可与编辑界面不一致),其中单据状态是自定义其键值(可取系统参数表中定义(de)部分)3、查询结果编号维护:在维护运行界面(de)查询结果顺序号审核:已取消查询:在查询运行界面(de)查询结果顺序号隐藏:在查询界面(de)查询列表中是否做隐藏字段4、流程分支条件标识表单走工作流程时,在预定义流程时是否可用此字段做为分支条件5、审核中可修改标识表单走工作流程时,此字段是否可在审核时做为编辑字段6、是否求和在查询主界面(de)列表中是否显示此字段(de)小计/合计选项7、是否刷新在查看或编辑表单里当前字段(de)值是否从数据库中取最新(de)数据表:自定义查询表自定义查询字段属性表表单设计数据字典表。
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代表明细表1dynEvent();//页面加载联动});封装接口: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替换此图片即可四、联系方式您在使用表单设计器对表单进行二次开发遇到困难时可以直接联系我们;也欢迎大家能够将您在项目上遇到的场景反馈给我们,以便于我们完善接口方法库。
2024年DynaForm入门培训教程

DynaForm入门培训教程一、引言DynaForm是一款功能强大的表单设计器,广泛应用于企业信息化建设。
本文旨在帮助初学者快速掌握DynaForm的使用方法,从而提高工作效率。
本教程将从DynaForm的安装与启动、基本操作、表单设计、数据绑定、事件处理等方面进行详细讲解。
二、安装与启动1.DynaForm安装包,双击安装文件,按照提示完成安装。
2.安装完成后,在桌面或开始菜单中找到DynaForm的启动图标,双击启动。
3.启动后,会显示DynaForm的主界面,如图1所示。
图1DynaForm主界面三、基本操作1.新建表单:“文件”菜单,选择“新建表单”,输入表单名称,“确定”按钮。
2.打开表单:“文件”菜单,选择“打开表单”,选择需要打开的表单文件,“打开”按钮。
3.保存表单:“文件”菜单,选择“保存”或“另存为”,选择保存位置和文件名,“保存”按钮。
4.预览表单:“视图”菜单,选择“预览表单”,查看表单的布局和样式。
5.发布表单:“文件”菜单,选择“发布表单”,选择发布位置,“确定”按钮。
四、表单设计1.拖拽控件:在工具箱中,需要添加的控件,将其拖拽到表单设计区。
2.设置控件属性:选中表单设计区的控件,在属性面板中设置控件的属性,如名称、、数据源等。
3.布局调整:通过拖拽控件边缘,调整控件的大小;通过拖拽控件,调整控件的位置。
4.添加验证规则:选中表单设计区的控件,在属性面板中设置验证规则,如必填、长度限制等。
五、数据绑定1.创建数据源:“数据”菜单,选择“新建数据源”,输入数据源名称,“确定”按钮。
2.添加数据字段:在数据源设计区,“添加字段”,输入字段名称和类型,“确定”按钮。
3.绑定数据源:选中表单设计区的控件,在属性面板中设置数据源和数据字段。
六、事件处理1.添加事件:选中表单设计区的控件,在属性面板中设置事件,如、改变等。
2.编写事件处理代码:在事件处理面板中,编写事件处理代码,如弹框提示、页面跳转等。
- 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表单—增加—表单控件本处提供各种表单控件给用户,采用对常见的功能和控件内置的方法,使得开发一些常见的功能(如数据库的增、删、改、查,树控件,表格控件)非常容易方便,几乎不用写一行代码,直接通过控件的拖拉,然后再设置属性和事件即可完成。