可视化设计
设计服务通过拖拉拽组件,配置构建规则,下图是设计服务的原型示意

左侧:组件类型选择,其中"决策"下有两个扩展子组件"其他"和"分支决策";"跳过"和"跳出"是条件循环控制的子组件;语句有左右两个表达式项构成,表达式项可以是变量,常量,表达式
右侧,上方:展示可用的变量,上级,包括到最上级的变量,以及全局可用的工具类;本快的变量,
右侧,下方:组件的编辑配置框,每个组件可单独预览,框中的组件链式排序构成完整规则
上图看,组件是链状,但实际分支嵌入到决策组件,因此元模型是树状的结构
设计元素
本节介绍规则组件的可视化配置属性,篇幅较大,分3部分
设计元素1

- 类型
类型有3个配置属性,其中**++名称++** 必填,++全名++ 可选,**++维度++**集合类型可选
类型是类型表选择,通常不需要手动配置
- 变量/常量
变量/常量有两个必填属性,++名称++ 和**++类型++** ,++语句++ 可选,当声明变量需初始化配置。**++值++**属性常量必填,变量可选
变量/常量声明后,进入变量/常量表,用于后续遍历参与的组件配置
方法参数多参数需要配置
- 决策
++决策++ 可配置多个**++分支决策++** ,++其他++ 是可选最后一个,**++分支决策++**有两个配置条件,
1 条件,返回true/false的**++语句++** 组件,决定是否执行改决策,**++其他++**没有条件配置
2 动作,语句组,若干语句,决策内的逻辑
- 语句
语句可认为是带";"的表达式,有3个配置
1 ++操作符++ 操作符列表中选择
2 左**++语句项++** 变量语句项,常量语句项,语句语句项
++变量语句项/++ ++常量语句项++ 与配置++变量++ ++/++ ++常量++ 一致 ;++语句语句项++,自身是语句,递归配置
3 右**++语句项++** 同左语句项
设计元素2

参数和语句项 图中所示比较清楚,不再过多解释
- 返回
++返回++ 有可选属性**++语句++**,设置返回变量,常量或者语句
设计元素3
本节介绍规则组件可视化配置属性,for ,while

for/while差不多,上面语句项是断言,循环的条件
可视化api
本节详细说明设计api,后面章节详细说明api
public ResultT<IPage<RuleLogic>> searchRuleLogic(
Integer pageNum, Integer pageSize, String searchWords)
public ResultT<List<++RuleComponent++ >> getRuleLogicComponent(Long ruleLogicId)
public ResultT<String> previewRuleComponent(@RequestBody ComponentBean bean)
public ResultT<String> previewRuleLogic(@RequestBody List<ComponentBean> beans)
public <R> ResultT<R> testRuleLogic(@RequestBody RuleLogic logic,
@RequestParam String factType,
@RequestParam String json) throws Exception
public <R> ResultT<R> testRuleLogic(@RequestBody RuleLogic logic,
@RequestParam String factType1, @RequestParam String json1,
@RequestParam String factType2, @RequestParam String json2) throws Exception
public ResultT<RuleLogic> saveRulesLogicDraft(@RequestBody RuleLogic logic)
public ResultT<ContainedRule<?, ?>>
releaseRuleLogic (Long ruleLogicId) throws RuleLowCodeException
public ResultT<Void> resetRuleLogic (Long ruleLogicId) throws RuleLowCodeException
接口说明
本节以postman脚本说明接口使用,下图是规则组件元模型的json

搜索规则逻辑
方法:POST
URL: /ruledesign/searchRuleLogic
参数:

返回:

获取规则逻辑组件
方法:GET
参数:

返回:

上图规则逻辑的组件,content是组件bean的返回,元模型json格式
预览规则组件1-声明组件
本节示例预览声明变量规则组件
方法:POST
参数:

返回示例:

返回生产的代码,上图是带赋值表达的声明
预览规则组件2-ifelse
本机示例组合ifelse规则组件
方法:POST
参数:

上图一组if-elseif*-else组件,COMPOSITED组合组件类型包装
返回:

预览规则组件-for/continue
示例预览for规则组件
方法:POST
URL: ruledesign/previewRuleLogic
参数:

for类型组件,集合遍历,并带有内嵌语句
返回:

上图for规则脚本,fact.x 传入的事实,x是其list类型的属性
预览规则组件-while/break
示例预览while规则组件
方法:POST
URL: ruledesign/previewRuleLogic
参数:

while组件根据条件的循环,并带有内嵌语句
返回:

上图while规则脚本
预览规则逻辑
本接口预览完整的规则逻辑,是规则组件列表集合(list)
方法:POST
URL: ruledesign/previewRuleLogic
参数:

参数规则逻辑,代表完整功能的规则,包括一个声明组件,一组ifelse组件
返回:

上图完整规则预览返回,包括声明组件 和一组 ifelse组件
测试规则逻辑1fact
本机介绍在线测试规则逻辑,单个事实
方法:POST
URL: ruledesign/testRuleLogic1?factType=com.grp.base.ruleengine.fact.TestFact&json={"x": 51, "y": 55}
参数:
参数分两部分,上面url带了事实参数,分别是事实类型,事实示例json
另一部分是在线规则组件,上一篇的预览规则逻辑
返回:

测试规则逻辑2fact
本节展示两个事实的规则逻辑测试
方法:POST
URL: http://localhost:8080/ruledesign/testRuleLogic2?
factType1=com.grp.base.ruleengine.fact.TestFact1
&json1={"x": "rule"}&factType2=com.grp.base.ruleengine.fact.TestFact2&json2={"y": "engine"}
定义两个fact,分别带有x,y字符串属性

对应的脚本 "return su.reverse(fact1.x + fact2.y);",使用了su字符串工具类的方法
返回:

x+y的反转
保存规则逻辑
方法:POST
URL: ruledesign/saveRulesLogicDraft
参数:

参数是完整的规则逻辑,其中,rcs规则逻辑的组件,pck/name 规则逻辑的包和名称
返回:

返回,code/msg返回信息,还有规则逻辑,此时带有id,实现是保存到数据库
发布规则逻辑
发布规则,规则逻辑设置为RELEASED,生成规则
方法: POST
URL: ruledesign/releaseRuleLogic?ruleLogicId=
参数:ruleLogicId 规则逻辑Id
返回:

返回创建的规则,规则脚本逻辑元模型生成
重置规则逻辑
规则发布后,可以重置为DRAFT状态,二次修改后再发布
总述
所有设计服务api测试示例
