前言:在企业数据处理过程中,经常需要通过定制表单来输入业务数据。由于涉及的数据比较离散,并不同于ERP系统的紧密关联数据。假如由开发人员每个增加页面,工作量会比较大,后期后期的维护很升级也耗费时间和精力。所以表单设计器是一个实现动态表单的解决办法,用户无需重复编写表单代码就可以管理表单和存储表单数据。

1. 表单设计器

表单设计器是一款基于Bootstrap3风格的WEB应用,操作过程描述主要是将左侧面板控件拖动到表单编辑区域进行排版,每个控件可以编辑对应的数据库字段属性,常见属性有:字段类型,输入格式,控件名称等。等所有界面字段编辑保存后,生成表单模板的HTML文本。从而可以预览正式的表单加载页面。这样在表单集成业务应用系统中,生成正式的运行页面。在运行阶段,页面控件的输入数值可以被保存在后端对应的数据库表中。

1.1 控件类型

常见的控件类型主要有:输入文本框,下拉框,单选按钮,复选按钮,多选列表,命令按钮和数据表格等。其中如文本等类型的控件对应数据库的输入字段,而如按钮类型的控件只是在界面上显示而已,并不对应于数据库的字段。

1.2 HTML内容

表单定义内容被存储成HTML内容,便于表单后期解析加载。其中HTML的Bootstrap框架样式和脚本文件只需要记录路径就可以。通过表的设计器上的预览功能界面上,就可以看到完整的HTML输出内容和页面布局。

1.3 高级控件功能实现

a) 文件上传组件

表单附件是依附于表单的文档数据,比如WORD、EXCEL、PDF和JPEG文件等。在表单设计器控件中,文件上传组件采用了第三方组件FineUpload完成这一控件功能。表单定义的HTML内容中包含了上传组件类型,在表单解析器中将会加载FineUpload控件的样式和脚本,并通过上传页面完整实现文件上传到后端服务器的过程。

文件上传到服务器端后,可以对接用户自有的文件系统,也可以比如阿里云或其它云端存储系统。

b) 数据表格组件

在一个表单中为了展现关联数据,可以设置数据表格控件来读取数据库其它表单实体数据。数据表格采用ag-grid控件,主要是考虑复杂数据格式的处理和编辑。

1.4 表单解析器

表单解析器是把表单定义的HTML内容重新加载到页面DIV控件中,对于简单控件类型,直接加载预留的控件格式定义就可以,但是对于高级控件,如文件上传和数据表格控件,则需要额外读取这些控件的样式或者脚本,或者其它标准定义好的页面,从而完成这些控件的所实现的表单高级功能。

2. 表单数据存储

常见的表单数据存储有XML格式,或者预留的多列数据库结构定义以及EAV模型存储。在SlickMaster表单设计器项目中,优先采用了EVA模型,主要考虑的是系统的数据存储和后期读取效率的平衡。EAV模型也被知名电商公司Magento应用于产品数据定义,确实很好地解决了表单定义、表单数据存储和表单数据查询等关键问题。

2.1 EAV模型解释

EAV是Entity-Attribute-Value的缩写,用于存储表单实体、属性定义和属性数值。跟传统关系型数据库不同的是:实际表数据库存储时是key-value格式的行记录存储,而关系型数据库是多列数据存储。

2.2 表单数据行列转置

数据读取虽然可以通过行记录方法读取出来,其中一行读取一条属性名称和属性数值。但是通常的行记录是希望包含多列数据同时拼凑出一条。所以数据库记录需要行列转置(Pivot)来实现表单数据实体的读取。虽然属性不是固定对象字段类型,但是仍然可以通过.NET的dynamic类型来操作处理。再有,这些动态类型的实体数据,在前端展现也可以通过每次动态生成的列标题来加载展现,最终实现了数据的用户友好体验展现。

3. 表单和工作流引擎的集成

表单可以跟引擎组件集成在一起完成文档的审批流转。其中表单数据的保存、接收、流转、撤销、退回、废弃和结束等通用按钮都是可以被标准化定义出来。而表单解析器则是通过把表单设计器定义好的表单HTML内容加载在动态表单的展现区域。

4. 总结:

表单设计器用于解决常见的比如调查问卷填写,或企业管理数据的录入和维护,其主要功能是渲染生成HTML表单,存储结构化数据。在高级应用功能是集成工作流引擎组件,完成表单审批流转。

5. DEMO

演示地址:http://demo.slickflow.com/smd/

6. 社区版源代码

SlickMaster项目开源地址:

http://github.com/besley/slickmaster

7. 企业版授权说明

1) Demo仅作为功能演示使用,如需获取产品完整源代码和开发文档,请申请企业版商业授权。

2) QQ群:233248778

3) EMail: sales@ruochisoft.com

SlickMaster.NET 开源表单设计器快速使用指南的更多相关文章

  1. .net erp(办公oa)开发平台架构概要说明之表单设计器

    背景:搭建一个适合公司erp业务的开发平台.   架构概要图: 表单设计开发部署示例图    表单设计开发部署示例说明1)每个开发人员可以自己部署表单设计至本地一份(当然也可以共用一套开发环境,但是如 ...

  2. YbSoftwareFactory 代码生成插件【十六】:Web 下灵活、强大的审批流程实现(含流程控制组件、流程设计器和表单设计器)

    程序=数据结构+算法,而企业级的软件=数据+流程,流程往往千差万别,客户自身有时都搞不清楚,随时变化的情况更是家常便饭,抛开功能等不谈,需求变化很大程度上就是流程的变化,流程的变化会给开发工作造成很大 ...

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

    基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extj ...

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

    基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extj ...

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

    这里列出表单设计器系列的内容,6.7.8节的内容应该在春节后才有时间出了.因为这周末就请假回老家了,准备我的结婚大事.在此提前祝大家春节快乐! 基于Extjs的web表单设计器 基于Extjs的web ...

  6. .net web 开发平台- 表单设计器 一(web版)

    如今为了适应需求的不断变化,动态表单设计器应运而生.它主要是为了满足界面的不断变化和提高开发速度.比如:一些页面客户可能也无法确定页面的终于布局,控件的位置,在哪种情况下显示或不显示等可能须要随时改动 ...

  7. formbuild拖拽表单设计器

        formbuild拖拽表单设计器 表单设计器适用于OA系统.问卷调查系统.考试系统等系统,具体使用请前至官网API请点击 formbuild拖拽表单设计器     formbuild迭代几个功 ...

  8. 基于Extjs的web表单设计器

    由于这样工作和自身的一些原因很长一段时间没有写过博客了.最近想把自己前面一段时间搞出的一个表单设计器的相关经验或者经历记录下来.分享给大家,也算是对自己前2个月的一个总结回顾吧. 首先介绍一下开发此版 ...

  9. 基于Extjs的web表单设计器 第一节

    前面一节介绍了表单设计器的背景和最终的大概样式,本节主要介绍表单设计器的需求及功能设计. 在讲需求之前先明确几个常用的概念: 主表或者卡片表——具有多行多列的一个区域的控件块,如下图所示. 明细表—— ...

随机推荐

  1. Facebook人工智能实验室的前世今生

    Facebook人工智能实验室的前世今生 是时候停止把Facebook当作纯粹的社交媒体公司来看了.它用无人机提供互联网服务,为了发展虚拟现实而收购Oculus,不懈追求人工智能,Facebook已经 ...

  2. Spring Cloud (十三) Zuul:静态路由、静态过滤器与动态路由的实现

    前言 本文起笔于2018-06-26周二,接了一个这周要完成的开发任务,需要先等其他人的接口,可能更新的会慢一些,还望大家见谅.这篇博客我们主要讲Spring Cloud Zuul.项目地址:我的gi ...

  3. iOS 解决汉字联想输入,导致字数限制失效的问题

    字数限制的问题点在于汉语可以无限汉语联想词汇,导致字数限制对于汉字输入就失去的作用.我们的做法是监听键盘联想出来的汉子,将其统计: 1 在viewDidLoad里面监听文本变化的通知 - (void) ...

  4. Java并发——线程同步Volatile与Synchronized详解

    0. 前言 转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52370068 面试时很可能遇到这样一个问题:使用volatile修饰in ...

  5. 二维码扫描开源库ZXing定制化【转】

    转自:http://www.cnblogs.com/sickworm/p/4562081.html 最近在用ZXing这个开源库做二维码的扫描模块,开发过程的一些代码修改和裁剪的经验和大家分享一下. ...

  6. 标准linu休眠和唤醒机制分析(四)【转】

    转自:http://blog.csdn.net/lizhiguo0532/article/details/6453552 suspend第三.四.五阶段:platform.processor.core ...

  7. C# 每月第一天和最后一天

    //每月第一天 - DateTime.Now.Day); //每月最后一天 var endTime=DateTime.Now.AddDays(1 - DateTime.Now.Day).AddMont ...

  8. java 完全解耦

    只要有一个方法操作的是类而非接口,那么你就只能使用这个类及其子类,如果你想要将这个方法应用于不在此继承结构中的某个类,那么你就会触霉头,接口可以在很大程度上放宽这种限制,因此,我们可以编写可服用性更好 ...

  9. hdu 5428 质因子

    问题描述有一个数列,FancyCoder沉迷于研究这个数列的乘积相关问题,但是它们的乘积往往非常大.幸运的是,FancyCoder只需要找到这个巨大乘积的最小的满足如下规则的因子:这个因子包含大于两个 ...

  10. #JS 前端javascript规范文档

    一.规范目的 为提高团队协作效率,便于前端后期优化维护,输出高质量的文档. 二.基本准则 符合web标准,结构表现行为分离,兼容性优良.页面性能方面,代码要求简洁明了有序, 尽可能的减小服务器负载,保 ...