You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Orion订阅将CrateDB计算结果更新至实体属性?

实现属性变化驱动的自动更新方案

可以通过事件驱动的订阅+中间服务替代手动脚本,实现当State属性变化后自动更新Output属性的需求。以下是具体可行的实现方式:

方式1:基于Orion订阅触发中间服务

通过新增Orion订阅,在State属性变化时通知自定义中间服务,由中间服务完成从CrateDB获取计算结果、更新Orion实体Output属性的流程。

步骤1:创建新的Orion订阅

新增订阅,指定当State变化时通知你的中间服务:

curl -X POST 'http://orion:1026/v2/subscriptions/' \
-H 'Content-Type: application/json' \
-d '{
  "description": "Orion notify middleware on State changes",
  "subject": {
    "entities": [
      {
        "idPattern": ".*",
        "type": "SomeType"
      }
    ],
    "condition": {
      "attrs": ["State"]
    }
  },
  "notification": {
    "http": {
      "url": "http://your-middleware:3000/update-output"
    },
    "attrs": ["State", "id"],
    "metadata": []
  }
}'

注意:订阅中的type要和实体定义的SomeType保持大小写一致(你现有订阅里写的Sometype是小写t,需要修正)。

步骤2:实现中间服务逻辑

中间服务收到Orion的通知后,执行以下操作:

  1. 从通知 payload 中提取实体ID(比如Asset:001)和当前State值
  2. 连接CrateDB,查询该实体对应的计算结果
  3. 调用Orion的属性更新接口,将计算结果写入Output属性:
curl -X PATCH 'http://orion:1026/v2/entities/{entityId}/attrs' \
-H 'Content-Type: application/json' \
-d '{
  "Output": {
    "type": "Float",
    "value": 123.45  # 替换为CrateDB查询到的实际计算结果
  }
}'

方式2:基于CrateDB触发器触发更新

如果计算逻辑是在CrateDB中自动完成的(比如通过存储过程),可以直接配置CrateDB触发器,当计算结果写入表时触发HTTP请求,调用中间服务更新Orion实体:

  1. 在CrateDB中创建触发器,监听目标计算结果表的插入/更新事件
  2. 触发器触发时,调用你的中间服务接口,传递实体ID和计算结果
  3. 中间服务收到请求后,直接调用Orion的更新接口完成Output属性的更新

关键说明

  • Orion本身不支持直接通过订阅实现属性间的自动更新,必须依赖外部服务调用Orion的API完成属性修改
  • 两种方案均为事件驱动,相比手动脚本的定时执行,更实时且高效

内容的提问来源于stack exchange,提问作者drypatrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:50:23