使用规则
在工业生产中,规则的创建只是第一步,只有通过有效调用才能真正发挥其价值。例如,设备异常预警规则能够自动监测设备数据并及时告警,质量判定规则可以实时校验零件参数以确保品质合格。规则引擎为此提供两种核心调用方式:
- XDM调用:适用于与xDM-F数据模型绑定的自动触发场景。例如,创建零件数据时,系统自动执行尺寸校验规则。
- API调用:适用于需要主动触发或嵌入其他系统的灵活场景。例如,在生产报表生成时,调用规则进行数据计算与汇总。
本文将通过典型工业场景示例,详细介绍两种调用方式的具体操作方法,帮助您在专业与易懂之间取得平衡。
前提条件
XDM调用
XDM调用是一种自动化规则执行方式。当规则与XDM模型(如“零件”数据模型、“设备”数据模型)绑定,并设置了触发场景(如“创建”、“修改”)后,系统将在对应操作发生时自动执行规则,无需人工干预。
下面以“零件数据创建时自动校验尺寸” 为例,说明XDM调用的完整流程:
- 确认规则的关键配置。
调用前必须确保规则已按实际业务需求配置到位,否则会导致触发失败。以“零件尺寸校验规则”为例,关键配置要求如下:
表1 “零件尺寸校验规则”配置信息 配置项
配置示例
说明
规则名称
PartSizeCheckRule
用户自定义,建议体现“规则场景+用途”。
规则类型
属性校验原子规则
必须选择“属性校验原子规则”或“属性赋值原子规则”,否则无法使用XDM调用。
关联模型
Parts(即“零件”数据实体)
绑定需要触发规则的XDM模型。
界面模式
规则集
根据实际业务逻辑进行选择。校验类规则推荐选择“规则集”或“真值表”。
冲突解决策略
先进先出
多规则触发时的执行顺序,根据实际业务逻辑进行选择。
触发场景
勾选“创建”和“修订”
例如勾选“创建”,新增零件实例数据时触发该校验。
规则逻辑
长度≤10mm,且宽度≤5mm
需在“规则配置”中完成配置,并测试通过。
- 触发规则自动执行。
规则发布后,只要触发预设场景,系统会自动执行规则,无需人工干预。操作如下:
- 在左侧导航栏中,选择,进入“数据实例”页面。
- “数据实体/关系实体”选择规则关联的XDM模型(如“Parts”)。
- 单击“创建”,填写零件信息(如长度11mm、宽度4mm)。
- 单击“确定”提交时,系统会自动触发规则校验。
一个XDM模型可绑定多条规则,例如“Parts”同时绑定“尺寸校验”、“材质校验”两条规则,触发时,系统自动按“冲突解决策略”顺序执行。
- 如果符合逻辑(如长度9mm、宽度4mm),数据正常保存,实例数据创建成功。
- 如果不符合逻辑(如长度11mm),弹出校验失败的提示(如“零件长度超出标准值10mm,请修正”),数据无法保存。
API调用
当需要将规则嵌入到自定义业务流程(如生产报表系统、运维巡检系统)时,API调用是最佳选择。以下以“运维系统定时调用规则,批量检测50台电机设备数据” 为例,说明API调用的步骤:
- 获取API信息。
- 在左侧导航栏中,选择,进入“全量数据服务”页面。
- 单击“分类”下的“规则引擎”折叠面板,找到“XDM_runtime_execute_post”接口名称。
“XDM_runtime_execute_post”为规则引擎在系统中预置的数据服务API,用于执行指定规则。
- 单击“API列表”中的“API英文名称”超链接,进入该API详情页面,复制其“API URL”。
API URL格式如下:
http://{Endpoint}/rdm_{appID}_app/services/rule-engine/api/runtime/execute
- 发起调用请求。
- 打开接口调用工具(如Postman)。
- 请求方式选择“POST”,在地址栏粘贴1获取的API URL。
- 根据业务需求配置请求头和请求体,单击“Send”发起调用。
请求示例:
POST https://dme.cn-north-4.huaweicloud.com/rdm_fce01234567d41828cf3473b07fa7ae2_app/services/rule-engine/api/runtime/execute Content-Type: application/json X-Auth-Token: ABCDEFG.... { "ruleCode": "MOTOR_TEMP_CHECK_RULE", // 目标规则编码(可在“规则列表 > 详情”中获取) "dataList": [ // 批量检测的设备数据列表 {"deviceId": "M001", "temp": 82, "runTime": 180}, // 1号电机:温度82℃,运行180分钟 {"deviceId": "M002", "temp": 88, "runTime": 200}, // 2号电机:温度88℃,运行200分钟 {"deviceId": "M003", "temp": 79, "runTime": 150}, // 3号电机:温度79℃,运行150分钟 {"deviceId": "M004", "temp": 92, "runTime": 220}, // 4号电机:温度92℃,运行220分钟 {"deviceId": "M005", "temp": 85, "runTime": 190} // 5号电机:温度85℃,运行190分钟 ] }响应示例:
{ "code": 200, "msg": "执行成功", "result": [ {"deviceId": "M001", "pass": true, "msg": "电机运行正常"}, {"deviceId": "M002", "pass": false, "msg": "温度超出阈值85℃,触发预警"}, {"deviceId": "M003", "pass": true, "msg": "电机运行正常"}, {"deviceId": "M004", "pass": false, "msg": "温度超出阈值85℃且运行超200分钟,触发停机建议"}, {"deviceId": "M005", "pass": true, "msg": "电机运行正常"} ] }