Javascript/Typescript 中的动态规则框架

问题描述 投票:0回答:1

我们的团队正在构建一个保险套件数字网络应用程序,供客户购买保单。我们有与州和政策覆盖相关的要求,其中

  1. 我们需要根据州或政策覆盖范围动态询问客户问题
  2. 我们需要根据州或保单覆盖规则验证客户输入
  3. 我们需要在工作流程中根据客户输入动态转换/更新/设置数据对象值

目前团队正在前端 NextJS 应用程序中对所有这些逻辑进行硬编码,以处理上述场景,并关注新状态下更多应用程序部署的维护和可扩展性。

我们正在研究构建每个州或覆盖范围的 json 驱动规则的可能性,这些规则应在工作流程中由 Web 应用程序检索,然后在框架的帮助下读取 json 配置和客户输入数据来满足上述要求。

任何建议都非常感谢

javascript reactjs json next.js architecture
1个回答
0
投票

我面临着类似的挑战,我理解您对可维护性和可扩展性的担忧。您转向 JSON 驱动的规则引擎的想法是一个可靠的方法。让我概述一个应该有效满足您的需求的解决方案:

1. JSON 驱动的规则配置

为每个州和政策范围创建 JSON 配置。这些将定义问题、验证规则和数据转换。

2.规则引擎

开发一个轻量级规则引擎来解释这些 JSON 配置。该引擎将负责:

  • 生成动态问题
  • 验证用户输入
  • 应用数据转换

3. API层

实现一个 API,根据状态和政策覆盖范围提供适当的 JSON 规则。

4.前端集成

修改您的 NextJS 应用程序以在工作流程中动态获取和利用这些规则。

enter image description here

好处

该架构具有多项优势:

  1. 关注点分离:业务逻辑(规则)与表示层分离,提高可维护性。
  2. 可扩展性:添加新状态或覆盖范围只需创建新的 JSON 配置,而不是更改代码。
  3. 一致性:前端和后端验证可以使用相同的规则。
  4. 灵活性:无需完整的应用程序部署即可更新规则。

实施步骤

  1. 设计 JSON 结构来表示问题、验证规则和数据转换。
  2. 开发规则引擎,从基本功能开始并根据需要进行扩展。
  3. 创建 API 端点来服务 JSON 规则。
  4. 修改您的前端以动态获取并应用这些规则。
  5. 实现缓存机制来优化性能。

对于规则引擎,您可以从自定义解决方案开始,或者利用 json-rules-engine 等现有库,这为规则处理提供了良好的基础。

请记住彻底测试每个组件,尤其是规则引擎,以确保其正确解释和应用 JSON 配置。

这种方法应该显着减少前端中的硬编码逻辑量,同时提供您所需的灵活性和可维护性。当您实施此解决方案时,您可能会找到进一步完善和优化流程的机会。

© www.soinside.com 2019 - 2024. All rights reserved.