规则引擎需求说明书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

规则引擎系统软件需求
说明书
2020/9/23
目录
1.引言 (3)
1.1.目的 (3)
1.2.范围 (3)
1.3.简写与缩略语 (3)
1.4.引用文件 (3)
2.总体描述 (4)
2.1.产品描述 (4)
2.2.产品功能 (4)
2.3.用户特点 (4)
2.4.约束 (4)
2.5.假设和依赖关系 (5)
3.具体需求 (5)
3.1.外部接口需求 (5)
3.2.功能需求 (5)
3.2.1.规则引擎控制台 (5)
3.2.2.规则引擎执行器 (8)
3.2.3.规则引擎资源服务器 (8)
3.2.4 规则引擎客户端 (9)
3.3.性能需求 (9)
3.4.设计约束 (9)
3.5.软件系统属性 (9)
3.5.1.可靠性 (9)
3.5.2.可用性 (9)
3.5.3.安全保密性 (10)
3.5.4.可维护性 (10)
3.5.5.可移植性 (10)
1.引言
1.1.目的
该文档试图说明整个系统的轮廓,对功能需求和性能需求进行详细的描述。

便于开发人员和用户进行理解和交流,反映出用户问题结构,可作为软件开发的依据和测试依据。

本文面向多种读者:
项目经理:可根据文档了解预期产品的功能,并进行系统设计,项目管理。

开发人员:对需求进行分析,并设计出系统,包括数据库设计。

测试人员:根据本文档编写测试用例,并对软件进行功能性测试和非功能性测试。

1.2.范围
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。

接受数据输入,解释业务规则,并根据业务规则做出业务决策。

1.3.简写与缩略语
字典:dict; 函数:func; 规则:rule;
1.4.引用文件
1、Drools
官网地址:https://
git地址:https:///kiegroup/drools.git
Drools是JBoss公司旗下的一款开源规则引擎,其使用了匹配规则的方式来进行,使用时需将业务逻辑进行抽象,抽象成一条条规则。

2、URule
官方地址:/products/urule
git地址:https:///youseries/urule.git
URule是一款纯Java规则引擎,它以RETE算法为基础,提供了向导式规则集、脚本式规则集、决策表、交叉决策表(PRO版提供)、决策树、评分卡及决策流共六种类型的规则定义方式,配合基于WEB的设计器,可快速实现规则的定义、维护与发布。

URule提供了两个版本:一个是基于Apache-2.0协议开源免费版本,URule开源版本第一款基于Apache-2.0协议开源的中式规则引擎;另一个是商用PRO版本
2.总体描述
2.1.产品描述
规则引擎通过java语言开发,把规则和核心业务拆开,规则单独配置。

这样当我们的规则变化的时候,就可以通过修改规则文件而不用修改核心的代码了。

在规则较为复杂的行业,都是适用的,如金融、制造、医疗、物流等行业,面临的规则变化较为复杂,目前使用较多。

而且对规则引擎需求的行业也将越来越多,如团购平台、传统企业管理渠道等
2.2.产品功能
将自己的实际业务体现成具体规则,通过规则引擎实例出自己项目所需的各种规则,通过调用规则引擎来执行此规则来实现业务与核心代码分离。

主要功能模块:
项目(用户管理创建的项目信息,创建的字典,函数,规则信息会和项目关联)。

知识库(字典管理:字典为创建规则时所依赖的实体信息;函数管理:用于规则中的条件判断)。

规则管理(规则数据管理:维护业务所需的规则信息;规则调试:可以在控制台执行所选规则并查看执行结果)。

调试(脚本执行:可用于编写脚本并执行,在创建函数后可在这里进行测试)。

统计管理(统计函数和规则的执行情况)。

2.3.用户特点
该系统的最终用户为软件开发人员,该用户群体了解软件业务开发流程,了解RPC服务调用,了解grovvy脚本编写,能够良好的将业务和自己软件的核心代码进行拆分,将复杂业务用规则引擎来实现。

通过规则引擎能够使开发人员减少大量的逻辑性代码编写。

2.4.约束
进行本软件的开发工作的约束条件:
(1)开发周期:在指定的时间内完成主要功能模块,发布v1.0.0版本。

(2)功能模块的扩展:需要调研市面其他规则引擎的功能,了解其优势,提高规则引擎的易用性丰富其功能。

(3)编程语言:java , grovvy , react
2.5.假设和依赖关系
本系统能够成功设计完成主要取决于以下条件:
(1)团队成员的积极配合,和其他系统成员之间协调接口功能。

对系统功能进行阶段性规划,个人时间合理规划,学习更多专业技能来保证系统的性能。

(2)及时沟通系统功能需求,解决开发阶段发现的其他风险。

3.具体需求
3.1.外部接口需求
(1)统一认证平台:系统登录的用户需要在统一认证平台录入。

(2)统一权限管理平台:将系统的资源上报权限管理平台,通过配置角色和功能对不同用户进行权限管理。

此系统需要调用用户信息。

3.2.功能需求
3.2.1.规则引擎控制台
需求描述:
(1)用户在控制台页面上进行所属项目的规则创建,可自行创建规则所需的字典和函数。

函数可以在界面上用脚本测试。

在自己创建的规则中体现出业务场景,
提供控制台调试规则。

字典、函数、规则数据拥有线上和线下版本,当使用快
照模式执行规则时使用的为最新版本的数据。

(2)在控制台可查看规则执行后的统计数据,相应规则、函数的执行成功、失败、,梦中数量。

(3)客户端订阅资源服务器信息:客户端远程ip、连接的资源服务器ip、订阅的内容、关注的资源。

3.2.1.1.F UNC-010-0010用户登录
需求描述:系统提供控制台登录界面,当用户使用规则引擎时需要在统一权限管理平台创建用户,用户的账号密码登录规则引擎控制台。

登录时前端请求统一认证平台获取Token,用于用户身份验证。

优先级:高
使用频度:经常
正常流程:统一证管理平台管理员创建的用户,用账号密码登录规则引擎控制台。

需求描述:控制台提供退出登录按钮,点击时退出当前用户清除token。

优先级:高
使用频度:经常
正常流程:在控制台页面提供退出按钮,点击按钮退出当前用户。

3.2.1.3.F UNC-010-0030项目管理
需求描述:用户在使用规则引擎时首先需要创建自己的项目,规则依赖于所属项目。

在创建项目时可进行项目描述。

提供编辑删除功能。

项目列表页提供分页显示。

优先级:高
使用频度:经常
正常流程:以自己项目名称创建项目模块。

3.2.1.
4. FUNC-010-0040字典管理
需求描述:提供字典数据模块字典包括:字典编号、字典名称、所属项目、当前状态、线上状态、创建者、修改者、创建时间、修改时间、线上版本、最新版本、操作(编辑,删除,版本)。

在创建字典时字典包括基本信息:名称,code,所属项目,key(唯一),版本。

请求参数:可提供java常用数据类型。

扩展变量:字典的一些常量定义。

字典提供多版本记录。

优先级:高
使用频度:经常
正常流程:创建规则时依赖的对象信息,通过字典进行规则传参。

以自己业务为准抽象为字典对象。

创建完成后可发布版本。

3.2.1.5. FUNC-010-0050函数管理
需求描述:提供函数管理模块,函数主要包括:列表分页,每条记录包括:函数签名,所属项目,类型,模式,是否公开,当前状态,线上状态,创建者、修改者、创建时间、修改时间、线上版本、最新版本、操作(编辑,调试,删除,复制,版本)。

在创建函数时提供属性:函数名称,key(唯一),函数code,返回值类型(java常用数据类型),函数类型(动作,操作符,补全函数),函数说明。

参数(支持多个):定义函数所用参数。

调试:在脚本执行界面执行函数代码展现出执行结果。

优先级:高
使用频度:经常
正常流程:在创建完成函数后,在使用规则时用于条件判断,例如大于、等于、小于等这些常用的函数可公开使用。

利于其他项目引用。

需求描述:提供规则管理模块,规则分页列表,每条记录包括属性:规则名称,key(唯一)、所属项目,当前状态,线上状态,类型(普通向导式)、创建者、修改者、创建时间、修改时间、线上版本、最新版本、操作(编辑,调试,删除,版本);在创建规则式基本信息会绑定字典。

在规则集中体现具体的业务描述(如果..那么..否则)。

提交规则调试:用于页面执行规则查看结果,可选择线上或者线下的规则进行调试,在执行参数中输入指定的参数,规则执行后展示是否命中,规则结构树,执行结果(json数据)。

统计管理优先级:高
使用频度:经常
正常流程:将自己的业务逻辑在规则中体现出来,可在界面执行查看出具体结果和是否命中。

3.2.1.7. FUNC-010-0070 统计管理
需求描述:统计计数:展示规则,函数在某段时间内的执行情况,包括接收数,命中数,异常数,成功数,平均耗时ms
优先级:低
使用频度:偶尔
正常流程:在线上规则执行后,所使用的函数和相应规则的执行接口会记录,在统计模块提供查询。

3.2.1.8. FUNC-010-0080 客户端
需求描述:TCP列表,展示客户端和资源服务器的连接情况,客户端远程ip、连接的资源服务器ip、订阅的内容、关注的资源。

同步资源服务器对应的客户端数据。

优先级:高
使用频度:经常
正常流程:在客户端引用规则引擎时会订阅规则引擎的资源服务器,当订阅成功后会看到每台资源服务器对应的远程客户端。

当订阅的资源修改之后会自动触发数据同步,而此处的同步为服务连接异常或者其他特殊情况,管理员可手动触发。

3.2.2.1.F UNC-020-0010 规则执行
需求描述:规则执行器为规则引擎的核心处理模块,提供控制台、远程服务的调用执行规则。

提供快照和正式版执行方式,快照执行会每次加载数据库的规则数据,正式版执行会将第一次的规则数据进行缓存,保证重复调用时的执行速度。

优先级:高
使用频度:经常
正常流程:实现规则引擎暴露的接口,在接口中接收规则参数,具体执行相应的规则,返回执行结果并记录。

3.2.2.2.F UNC-020-0020数据同步
需求描述:当线上的字典、函数、规则数据改变时更新执行器的缓存数据,保证数据一致性。

优先级:高
使用频度:经常
正常流程:在控制台发布字典、函数、规则时自动触发更新数据操作。

3.2.3.规则引擎资源服务器
3.2.3.1.F UNC-030-0010数据通信
需求描述:维持于多个客户端之间的订阅关系,通过订阅来传输数据,当数据发布后控制台的数据同步到各个资源服务器,如果这些数据中存在客户端关注的资源,资源服务器将推送数据到客户端。

接收客户端发送过来的数据,如果客户端发送来的资源数据库中不存在,则创建相应的字典或者函数。

暴露接口提供控制台统计客户端TCP连接信息。

优先级:高
使用频度:经常
正常流程:当客户端订阅资源服务器时,控制台显示TCP连接信息,数据发布、下线时客户端接收数据。

3.2.
4.1. FUNC-030-0010 订阅资源服务器
需求描述:能提供给外部服务引用,在客户端可以自定义字典、函数,根据rule_key 提供本地规则执行。

连接资源服务器实时获取到资源变更后数据。

保证订阅资源服务器高可用。

优先级:高
使用频度:经常
正常流程:外部服务引入客户端模块,在外部服务启动的时候初始化自定义的字典、函数到资源服务器,并缓存本地字典、函数和规则数据,利于本地执行规则。

启动时并触发订阅资源服务器实现数据同步。

在与资源服务器连接断开时触发重连,当指定的资源服务器无法连接时,尝试连接其他可用资源服务器。

3.3.性能需求
数据一致性;接口相应在1s内。

支持并行操作用户数:1000。

资源服务器支持客户端数:100
3.4.设计约束
按照公司项目管理规范
3.5.软件系统属性
3.5.1.可靠性
在现有软件环境和硬件条件下、在满足当前需求的条件下、在没有出现错误操作的情况下,所有软件模块必须能稳定无故障运行
3.5.2.可用性
(1)操作方便:操作流程合理,方便用户调试。

如:函数脚本编写,在不确定代码可正常执
行的情况下,提供脚本执行用于函数代码编写和测试。

保证服务高可用
(2)控制必录入项:在创建数据时输入框提示并限制字符格式。

(3)提示信息:在提交数据,发布版本,删除数据,执行功能时,提示成功或者失败的提示
语,用户可直观看到结果。

3.5.3.安全保密性
以项目为基准,用户只可操作自己项目下的数据。

3.5.
4.可维护性
系统的配置项能够通过配置文件进行修改,当修改数据库地址或者注册中心地址时能够方便操作不必修改代码。

3.5.5.可移植性
系统的迁移到不同系统保证能够正常使用。

相关文档
最新文档