Java 如何在基于规则的web应用程序工作流上实现约束

Java 如何在基于规则的web应用程序工作流上实现约束,java,web-applications,workflow,validationrules,Java,Web Applications,Workflow,Validationrules,我们的web应用程序中存在以下问题。 有一个用于在应用程序上创建订单的工作流: 输入有关客户的信息(一张web表单) 输入有关设备的信息(另一个web表单) 以及每个表单上的一些约束条件,以便进入下一步: 客户有一系列需要指定的属性(名字、姓氏、街道、电话号码) 当客户希望收到短信通知时,需要输入有效的手机号码 对于设备(对于其付款类型(卡/现金/支票),客户需要接受一定金额的资金才能创建订单 目前,这些约束直接在应用程序的源代码中实现,这使得应用程序更难维护(一些规则从应用程序的一个版

我们的web应用程序中存在以下问题。 有一个用于在应用程序上创建订单的工作流:

  • 输入有关客户的信息(一张web表单)

  • 输入有关设备的信息(另一个web表单)

以及每个表单上的一些约束条件,以便进入下一步:

  • 客户有一系列需要指定的属性(名字、姓氏、街道、电话号码)

  • 当客户希望收到短信通知时,需要输入有效的手机号码

  • 对于设备(对于其付款类型(卡/现金/支票),客户需要接受一定金额的资金才能创建订单

目前,这些约束直接在应用程序的源代码中实现,这使得应用程序更难维护(一些规则从应用程序的一个版本更改到下一个版本)

在创建订单时,从代码中外部化这些检查的好方法是什么

像Drools这样的规则引擎可能是一个很好的解决方案,但我想让网站管理员通过可视化编辑器来定义验证规则。
有人能为我推荐一个已经存在的解决方案吗?

在某种程度上,spring webflow可以帮助您。否则,有各种各样的工作流/bpm解决方案可用(我曾经在Savvion bpm上工作过一次),那么我认为jboss drools就在那里了。

您可以创建一个单独的过程来验证来自用户的信息。我们已经创建了一个servlet,所有请求都可以通过它(如果需要,您可以使用JSP)。当请求传入时,我们可以获取请求参数,并将其与用户填写的表单类型一起传递给验证类。验证类将执行所需的验证,然后将true或false与任何失败字段的名称一起传递回

当servlet启动时,它将转到数据库或XML文件,检索每个表单所需的字段,并将其存储在缓存中。数据库或XML文件中的字段将与HTML表单中的字段同名。如果要添加/删除所需的字段,只需在HTML f中添加/删除该字段即可orm并从数据库或XML文件中添加/删除该字段。无需更改代码。由于验证数据存储在缓存中,因此在服务器启动时,数据库或XML文件只能读取一次。如果性能不是问题,则每次都可以从数据库或XML文件中读取


您还可以验证数据是否有效(例如,姓氏包含有效字符)通过将正则表达式与表单字段名称一起存储。通过这种方式,您可以通过更改数据库或XML文件中的表达式来更改字段的验证方式。无代码更改无重大重新测试。

有一些规则可以动态应用-当用户希望收到短信通知时,移动电话需要是有效的数字,否则不是。还有一种情况是,订单有一个特定的付款类型(在数据库/属性文件中配置),然后有一个特定的复选框(接受要支付的金额)。只有一个简单的XML文件不适合复杂/动态的规则。对于付款类型,您可以在数据库中存储付款类型字段的名称。然后在数据库中,将付款类型字段与复选框绑定,以及付款类型的哪些值需要验证复选框。这是我需要解决的问题类型o对整个流程有一个全面的了解。如果不完全了解流程,我就不能给你一个好的设计。对不起,我正在看Drools Expert。谢谢你的提示。