动态表单

    随着计算机软件技术的不断完善和发展,国内的信息化建设的日益深入,越来越多的信息化系统开发和运行,人们越来越多的关注并参与到信息化建设中。于是逐渐产生了一个比较突出的矛盾,那就是人们日益增长的信息化建设和运用的需求和使用和日益落伍的信息化建设的手段之间的矛盾。这个矛盾主要表现在
1. 软件公司和系统集成公司接受的信息化建设的项目越来越多,而开发和实施人力不够。
2. 项目进度要求日益提高,而传统的开发模式过于依赖慢速的编程。
3. 系统要求越来越灵活,客户需求变更频繁,而传统的硬编码方式来适应客户需求变化的做法日益落后和低效率。
4. 实施信息系统的地点从大中型城市向中小型城市扩展,信息系统实施点多面广,环境复杂多变,迫切需要控制单点实施时间,提高实施效率。
5. 人力资源的不足和使用不合理,由于信息系统实施地点变多,传统的实施过程可能需要二次开发,需要编程,导致普通的没有编程能力的系统实施人员无法独立的完成实施任务,迫使具有编程能力的程序员过多的参与一线实施。而程序员是软件公司和系统集成公司内的比较高级的人力资源,频繁的参与一线实施是对人力资源的浪费,为此迫切需要功能强大简单易用的实施配套工具软件,提高普通实施人员的工作能力,减少系统现场实施对程序员的依赖。

    这个矛盾有一个比较典型的表现实例就是应用系统的用户数据输入界面,现在出现一些信息系统,客户要求其数据的输入界面可以任意修改。所谓数据输入界面,就是数据表单界面,包括WinForm表单和HTMLForm表单界面,是用户输入原始数据的主要工作区域,它很大程度上影响信息系统能处理的数据格式范围和精度。一些客户由于其自身工作业务的需要,频繁的要求信息提供的数据输入表单界面发生改变,比如新增修改和删除提示信息,文本框,单选复选框和列表框等等,同一个操作,在不同的状态下使用不同的数据输入表单。
    面对这种需求,传统的做法是获得应用系统当前的源代码,进入相应的IDE,进入它的数据表单设计器然后进行修改。比如对ASP.NET系统,使用VS.NET等IDE打开系统的源代码,进入WebForm表单设计器,修改表单界面,还可能修改一些后台程序,然后编译测试,更新应用系统。整个过程繁琐复杂耗时而且不可靠,而且只有有经验的程序员才能完成,水平不高的程序员或普通的系统实施人员是无法胜任这一系列操作。这种更新手段对信息系统的正常工作带来不小的影响。而且若没有系统的源代码或源代码版本不对,则此工作无法完成。
    现在有人开始使用配置文件或者用所谓的表单定义模板来实现动态的表单界面,应用系统运行时,根据需要加载不同的表单定义模板,根据表单定义模板中的定义数据动态的加载表单界面,这种处理模式能满足客户的修改表单输入界面的需求而不影响系统的正常运行,这个过程不需要程序的源代码,没有编译和测试,只要提供表单定义模板文件,一切都是自动完成的。
    但是这种动态表单模式带来一个问题,谁来提供表单定义模板文件。若没有配套工具,则需要手工编写模板文件,这个工作必然是枯燥低效,经常需要多次尝试着凑数据,编制过程非常烦心。若拥有方便易用的配套工具,则能大大加快制作表单定义模板的速度和准确性,提高系统实施人员的工作效率。这里的配套工具就是所见即所得的互换式图形化设计器,简称图形化设计器。
    图形化设计器是一种技术含量比较高的软件,它涉及到构造自定义的文档对象模型,高级的图形编程技术,复杂的用户界面事件的处理,这些技术手段是一般的信息系统开发过程所没有的,开发图形设计器难度大,时间长,工作量大,需要编写数万行的高效率的代码,这些都要求有专门对此有经验的开发者才能开发。一般的小型软件公司没能力开发,有些公司虽然有能力开发,但由于经济技术和时间的原因而一直未能开发出比较好的图形设计器(能开发图形设计器的人必然是高手,高手必然很忙)。但是若具有图形化设计器,则能成倍的加快表单定义模板的编制速度,能在短时间内完成大量的表单定义任务。
    图形化设计器有一种比较简单的开发模式,那就是模拟VS.NET的WinForm窗体设计器的运行原理,设计界面上的设计元素就是Windows控件,这些控件处于设计模式,可以直接拖拽操作来修改控件的位置和大小,这种方式实现简单,开发工作量小,但存在以下缺点:
1. 程序运行缓慢而且消耗大量资源,由于Windows控件是一种重量级资源,当文档中包含很多设计元素时需要动态加载很多个Windows控件,这样程序运行缓慢而且消耗很多资源。
2. Windows控件基本上是矩形的,当需要实现非矩形的设计元素时则很困难。
3. 当需要绘制已有控件不支持的图形时需要编写新的控件。
4. 文档重绘慢而且难于控制,文档重绘需要各个Windows控件的重绘,此时操作系统需要一个个通知这些控件重绘,需要进行大量不直接绘图的操作。
5. 文档视图不能输出为图片,很难向其他应用程序开放编程接口。
    而图形设计器自己绘制图形时虽然实现复杂,但不会有上述缺点。程序运行快,可对图形进行全面的控制。XDesignerLib实现的就是自己绘制图形的图形化设计器。

    除了用于设计数据表单界面的图形化设计器,还有很多其他的领域需要图形化设计器。只要是图形化设计器,那就都需要解决类似的问题,其程序结构也大体一样。
    有鉴于此,本人开发了名为XHtmlFormDeisgner的HTML表单设计器,它能定义HTML表单,并能将其定义信息保存到XML文档,而且还能在设计器中直接预览设计出来的HTML表单.详细情况请查看 http://www.xdesigner.cn/_xhtmldesigner.aspx ,希望能给大家实现动态表单有所帮助.

袁永福(http://www.xdesigner.cn) 2007-4-4

原文地址:https://www.cnblogs.com/xdesigner/p/699109.html