微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Orion Context Provider 查询多个实体

如何解决Orion Context Provider 查询多个实体

税务信息系统包含有关城市中每个公民的所有税务信息。

遵循 FIWARE 原则,消费者向 Orion 查询实体(公民)税务信息以及将请求转发给上下文提供者(即:TaxinformationSystem)似乎是有意义的。

Query citizen X tax information -> Orion -> TaxinformationSystem_CP

根据documentation,上下文提供者可以将自己注册为特定属性的来源。例如,这可以使这项工作:

http://{{orion}}/v2/entities/urn:citizenID/attrs/name/tax

然而,这似乎要求每个公民都注册一个实体,因此税务信息系统应该注册多次(每个公民一个)。 (还有居住信息系统、健康信息系统和...)

"entities": [
  {
    "id" : "citizenID",//one per citizen ???
    "type": "taxinformation"
  }
],

这似乎至少有很多不必要/多余的工作。

阅读更多内容后,seems any workaround is not yet implemented/supported

  • 似乎我不能使用查询参数 http://{{orion}}/v2/entities/tax?citizen=X,因为它们 aren't forwarded to CP
  • 如果实体尚未首先明确创建,我似乎无法查询任何公民税http://{{orion}}/v2/entities/X/tax
  • 似乎我无法设置 idPattern(目前仅支持 .*),因为它会返回所有公民税,因为 broker 不转发请求过滤器也不实体到CP
  • 都没有typePattern

(IIUC,isPattern 似乎现在已被弃用,取而代之的是 idPattern/typePattern)

我做错了吗? 每个公民注册一次是唯一的方法吗?

解决方法

在 FIWARE 中,在每个系统或平台中,都有更多使用和成熟的功能,还有一些更实验性和令人眼花缭乱的功能。真实用例和真实客户对某些功能(以及在现实生活和实际部署中的用途)的要求越多,它们就会得到越多的整合、证明和扩展。注册的情况并非如此,复杂的联合场景不是当前最先进的。我同意它们启用了一些非常有趣的实验用例,但在实际部署中,联合场景会增加额外的复杂性,使其在现阶段不受欢迎。

,

不确定我是否完全理解你的情况...

您可以像这样为所有公民进行注册:

{
  "dataProvided": {
    "entities": [
      {
        "idPattern": ".*","type": "taxInformation"
      }
    ],"attrs": [
      ...
  },"provider": {
    "http": {
      "url": "http://thetaxsystem.com"
    }
  }
}

因此,如果您想获取特定公民的税务信息,您可以在 CB 执行以下操作:

GET /v2/entities/1234567H?type=taxInformation

注册会导致请求作为上下文提供者发送到税务系统。

编辑: Context Broker (this one) 存在一个问题,导致此案例无法正常工作。特别是第二种情况:

regR = .*,query = 'E',attrs = {null}

EDIT2:上述情况已在 Orion Context Broker 中解决。它现在在 master 分支中可用(dockerhub 中的 :latest 标签),并将包含在下一个 Orion Context Broker 版本 (3.1.0) 中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。