决策表的编辑有2个步骤,即规则包编辑、规则数据设置和发布。
1. 规则包编辑双击CKBoot.exe打开CKRule规则引擎编辑界面。点新建,在左侧的工程窗口中,就会出现一个新的规则包。点击根结点,可以修改规则包的名称。
1.1. 传入传出参数
双击对象库-传入传出参数,打开编辑界面,把通用格式的字段填写到界面中。
名称列所填写的内容必须符合.Net的字段命名规范,如-,空格,@等字符都不能使用,首字母不能为数字。
传入传出参数和自定义类型的定义,会影响到后面的所有编码。
与外部进行json通讯时,使用的属性名称是映射名称,如果映射名称为空时才使用名称。
1.2. 决策表定义
打开规则库-决策表定义界面。
所谓决策表,就是用表格的形式保存规则数据,以便于一下子处理大量的规则。
其执行的核心处理逻辑就是扫描每一行,检查相关单元格的值,当达到某种条件时,就执行相应的动作。
如设置停车场决策表时,要填写这个表的各列信息,包含标题,数据库字段,数据类型,逻辑类型,精度,规则等内容。其中
标题就是决策表最终显示在前端时的列标题。
数据库字段就是绑定到管理平台或其他数据库的字段。当前是绑定到管理平台上面的RoolTbl表的,该表的数据如下:
数据类型用于控制输入时使用的类型,以减少输入的差错。
逻辑类型是指条件、结论或无。设置时,条件和结论都必须存在,可以存在多个。如果存在多个条件,意思就是多个条件都成立时,就执行一个或多个结论。当代码比较复杂,不太适合这种定义时,可以直接使用结论列,填写相关的代码,而条件列则填写1==1;即可,意思为就像编辑中的if(1==1){}。
规则编写
选择结论列的脚本,点设置后弹出如下界面。
这个界面可以设置遍历时使用的脚本。
如需要获取当前行的对象时,使用Row属性,Row.Cells[“Prop1”].Value意思就是获取当前行,并且数据库名称为Prop1的单元格的值,这个值的类型为string。通过这个Row属性就可以获取所有单元格的值。
CDouble是系统内置的方法,点击界面左边的类别—扩展(15),就可以查看不同函数的用法。同时,该界面也可以直接使用.Net自身的所有API。
上面的代码的意思是,找出各个单元格的值,并转换为正确的类型,遍历传入的所有点位数据,如果点位值在区间之中,且类型为“信息”,就将信息设置为其中一个单元格的内容。
1.3. 主规则
本功能用于调用客户端编写的规则。
上面2个步骤,用于定义决策表,而主规则界面可以调用决策表逻辑。双击规则库-主规则,新增一个规则集。
在规则集中添加如下代码:
详细代码如下:
代码的作用是,读取规则管理平台中的RuleTbl的数据,初始化决策表,然后执行决策表。
2. 规则数据设置与发布编辑规则数据和发布规则等功能都在规则管理平台中进行的。
2.1. 规则包管理
登录规则管理平台,打开规则包管理界面,找到相应的分类,右键新增规则。
点击浏览,找到刚才生成的ckp文件,系统自动加载规则包名称,填写到编码,名称上面。而字段就会拉出规则的输入输出信息。在编辑类型中,选择决策表。
2.2. 规则发布
打开规则发布界面
找到未发布的规则包,双击行记录。
在界面下部会显示该规则的相关的信息,如当前规则、服务开始时间、服务结束时间和服务类型。服务开始时间必须小于当前时间,服务结束时间必须大于当前时间,服务类型选择Json即可。然后点击发布。
2.3. 规则数据设置
打开规则数据设置界面,该界面显示所有已经发布的记录。
找到对应的规则,点击用决策表设置。弹出决策表编辑界面。
上图中,运行时机和描述都是由规则包编辑时设置的,而表格中的各列,都是决策表设置的各列。数据保存后,会按数据库字段对应的内容,保存到RoolTbl表中。
至此,一个决策表编辑完毕。