前言:在企业数据处理过程中,经常需要通过定制表单来输入业务数据。由于涉及的数据比较离散,并不同于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. spark DataFrame 常见操作

    spark dataframe派生于RDD类,但是提供了非常强大的数据操作功能.当然主要对类SQL的支持. 在实际工作中会遇到这样的情况,主要是会进行两个数据集的筛选.合并,重新入库. 首先加载数据集 ...

  2. 关于Web安全的那些事(XSS攻击)

    概述 XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列表,然后向联系人发 ...

  3. Web性能优化系列(2):剖析页面绘制时间

    本文由 伯乐在线 - J.c 翻译,sunbiaobiao 校稿.未经许可,禁止转载!英文出处:www.deanhume.com.欢迎加入翻译小组. 最近,我参加了在伦敦举办的Facebook移动开发 ...

  4. Java练习之使用StringBuilder

    package string.demo; /* * 将数组变为字符串输出 */ public class StringBuilderTest { /** * @param args */ public ...

  5. Opencv学习笔记——release和debug两个模式的运行问题

    本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作者:晨凫 ...

  6. 6 个 Linux 运维典型问题,大牛的分析解决思路在这里 【转】

    作为一名合格的 Linux 运维工程师,一定要有一套清晰.明确的解决故障思路,当问题出现时,才能迅速定位.解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示 ...

  7. MySQL 5.7在线设置复制过滤【转】

    转自 MySQL 5.7在线设置复制过滤 - yayun - 博客园 https://www.cnblogs.com/gomysql/p/4991197.html 5.7也GA了,有许多新的特性,其中 ...

  8. Flask源码解析:Flask上下文

    一.上下文(Context) 什么是上下文: 每一段程序都有很多外部变量.只有像Add这种简单的函数才是没有外部变量的.一旦你的一段程序有了外部变量,这段程序就不完整,不能独立运行.你为了使他们运行, ...

  9. centos memcached

    2014年1月19日 16:58:37 memcached 是基于libevent事件监听功能的,所以要安装 libevent 和 libevent-devel 启动命令 ./memcached -d ...

  10. 读写分离MYSQL类

    2014年4月27日 12:34:08 概述: 1. 根据sql语句判断是连接读库还是写库 2. 链式调用$this->where()->get() 3. 不同的主机对应不同的实例, 不再 ...