本期有表单布局、数据库存储和可配置业务逻辑三个方面。
配置驱动的表单布局
可以通过将布局移动到描述符文件来实现表单布局的灵活方法。支持此功能的三个 GUI 工具包是 QT、WPF 和 XUL。但是,AFAIK Swing 不直接支持此功能。QT Jambi 确实允许您在 Java 上使用 QT 作为 Swing 的替代方案,并且 QT 4.5 将提供 LGPL 许可。这不是一个纯 java 的解决方案,但如果这个和随之而来的 UI 代码的重写是可以接受的,那么它可能是一种可能性。
配置驱动的表单布局的优点是可以进行定制,而无需为每个客户维护单独的构建,因此即使您有现有的代码库,您也可能希望检查是否存在采用此类的商业案例一个工具包与维护多个客户特定的构建。但是,对于编译语言,您可能仍需要为生成的表单代码设置某种插件框架。
可配置的数据库存储
这更复杂。您可以通过三种方式做到这一点,它们各有利弊。
第一种方法是在表上设置一系列“用户”字段,例如“用户 1”、“用户 2”等。表单上的配置字段可以映射到这些字段 - 并且不应该使用通用用户字段映射工具难以实施。从数据库查询的角度来看,这是最有效的,但受到可能字段数量有限的限制。如果您有“User1”到“User20”字段,则只能支持 20 个用户定义的属性。此外,它们必须是很好的、广泛的泛型 varchar,因此您不会从数据库中获得类型安全。
第二种方法是将属性表挂在实体上。这不会为您提供类型安全性,但确实可以让您拥有任意数量的属性。为此构建一个通用处理程序也是非常可行的,但是当您对属性表进行多次连接时,查询性能会受到影响。
在 XML blob 中保留用户定义的字段。这没什么可推荐的,因为它使通过数据库访问数据变得更加困难。但是,我已经看到它完成了。
可配置的业务逻辑
这是一个更加棘手的问题。在不添加自定义代码和更改构建的情况下,您可以使用一些选项来执行可配置的业务规则:规则引擎、脚本语言或一组标准的开/关功能,例如必填字段。
规则引擎:你真的必须从头开始设计你的应用程序才能使用它们,它们有自己的局限性和弱点。ILOG,这个领域的老牌,也是相当昂贵的。对于 java,JESS 可能是一个选项。
嵌入式脚本语言:通过为 Jython、Groovy 或其他一些 JVM 友好的解释语言添加解释器,您可以为系统编写插件,而无需发布新的构建。仍然会产生一些测试工作量,但这可能是总体上的维护胜利。
功能的开/关配置。这是最不灵活的选项,但相对简单,并且在外部依赖和许可成本方面增加的相对较少。如果您尝试将配置改造成作为定制应用程序开始生活的东西,它也可能是您唯一的选择。
以上都不是
如果答案是“以上都不是”,那么您可能会被自定义构建所困扰。在这种情况下,为表单创建一个插件架构,这样您至少可以将客户特定的项目隔离到一个单独的模块中。