以表单为中心的Ruby on Rails面向表单编程

企业开发的很多特点,决定了其经常以数据库为中心的开发模式。不过本文要讲的是以表单为中心的开发模式,带来了不少启发。文章所述使用的是Ruby on Rails面向表单编程,不过基本理念应该是通用的。

在国内做过企业开发的人都知道,国内的企业开发往往是业务多、时间短,这是普遍现象,所以软件开发公司也都在追求快速进行企业开发的方法。很多的开发公司做企业项目的时候,都是由需求人员与客户交流,了解完需求后建立数据库表(PowerDesigner是这个领域的王者,相信很多人都用过),然后将需求文档和数据库交给开发人员(当然有的需求人员不建表,开发人员建表也常见),开发人员逐步实现需求。日后需求改变了,先修改数据库,然后修改程序上层界面。

这种开发模式以数据库为中心,上层所有开发围绕数据库进行,数据库是连接需求端与开发端的桥梁。相信国内不少公司都是采用的这种开发模式,也许正在阅读本文的读者所在公司也是吧?

当然,今天我在本文想要介绍的经验,不是以数据库为中心的开发模式,而是我认为的更高级的以表单为中心的开发模式。当然这也是我的实际工作经验。看看以下这个例子:

以表单为中心的Ruby on Rails面向表单编程

我们在做一个管理型项目的时候,用户给了我们上面这个Excel文件,让我们实现这个业务,这个时候需求已经很明确了,公司可以进行开发了。

假如是先前的以数据库为中心的开发模式,软件公司需求人员需要先建表,依照Excel文件,逐个添加字段。然后把Excel文件和数据库表给了开发人员,开发人员需要照着Excel文件做出软件输入界面,然后将输入域与数据库表格的字段一一对应。把上面的事情做完,就算配合娴熟的团队,至少也得一天时间了。如果这时候用户又提出,这个表单需要精确打印,随时准备盖章存档,那开发方的工作又多了很多。

以表单为中心的开发模式,不对数据库建模,而是对表单建模,采用专门的表单建模的工具,类似于Excel,将用户的Excel文件复制成模型,导出为XML格式的文件,以后这些XML文件就是我们需要维护的核心了。市场上表单建模工具有一些比较成熟的,比如用友的Cell组件,还有其他公司的报表软件。我们公司独立开发了一套工具(不对外销售),使用这套工具可以很好的进行面向表单的编程。 那么面向表单的编程如何解决上面用户提出的需求呢?

用户给我们一个Excel文件后,我们用建模工具做一个一摸一样的表单(如果工具本身支持Excel复制则更快),将表单存为XML文件后发布到程序框架中,框架程序分析XML文件后自动建表并添加字段。程序框架封装了表单的读、写、删、打印等常规操作,上层需要写代码的地方只有列表显示功能。用一个Sql语句查出需要显示的表单记录,挑出需要在列表中显示的字段即可。采用这种模式,不消20分钟,上面用户提出的需求便迎刃而解。这是最终做完后的界面之一:

以表单为中心的Ruby on Rails面向表单编程

除了实现上面这个界面,还可以实现更高级的功能,例如客户端验证和运算,保证某个单元格必填,或者某个单元格的值必须大于某个值,或者某几个单元格必须保证相加、乘积的关系。这些功能不必写代码了,使用表单设计器内置的功能即可。这种模式可以实现技术与业务分离。让人专注于业务,忘记技术。事实上,如果在开发项目的过程中,还在考虑用户的需求从技术上怎么实现,那无疑这个项目是很危险的。

下面是表单建模工具设计时的界面:

相关推荐