达实AIoT
文档中心
快速开始
  • 单点登录对接
  • 开放接口对接
  • 领域模型事件对接
  • 私有部署
  • 应用开发指南
  • DASDesign
IoT平台
应用平台
  • 低代码工具
  • 基础服务
  • 系统运维
  • 场景模型
应用
  • 物业管理
  • 数据中心
  • 智慧园区IPS
  • 园区服务
  • 物业管理
  • 场景模型
  • 会议
  • 门禁
  • 停车场
文档中心
快速开始
  • 单点登录对接
  • 开放接口对接
  • 领域模型事件对接
  • 私有部署
  • 应用开发指南
  • DASDesign
IoT平台
应用平台
  • 低代码工具
  • 基础服务
  • 系统运维
  • 场景模型
应用
  • 物业管理
  • 数据中心
  • 智慧园区IPS
  • 园区服务
  • 物业管理
  • 场景模型
  • 会议
  • 门禁
  • 停车场
期待您的声音
  1. 领域事件
  • 领域模型
  • 领域事件
    • 领域模型事件定义
    • 外部事件
      • 2-1 车行场景事件(开发中)
      • 2-2 人行场景事件
      • 2-3 会议事件 (开发中)
      • 2-6 组织事件
      • 2-7 用户事件
      • 2-8 空间事件
      • 2-9 企业事件
      • 2-10 客户事件
      • 2-11 排班事件
      • 2-12安防事件
      • 异常事件处理
    • 平台事件
      • 0-前缀说明 1: IoT 2: 项目
      • 2-1 用户事件
      • 2-2 设备中心事件
      • 2-3 物联网设备属性上报
      • 2-4 物联网设备事件上报
      • 2-5 客户事件
      • 2-6 机构事件(组织)
      • 2-7 空间事件
      • 2-8 客户权限领域事件
      • 2-9 产品事件
      • 2-10 设备空间事件
      • 2-11 告警中心事件
      • 2-12 人行场景事件
      • 2-13 工单事件
      • 2-14 角色事件
  • 云端开发指南
    • 推送业务事件消息
      POST
  1. 领域事件

领域模型事件定义

业务模型说明#

说明#

事件推送方式分两种
1、通过MQ(如Pulsar、RabbitMQ;仅私有化部署提供)
对接指南请参考
RabbitMQ对接指南
PulsarMQ对接指南
2、通过Webhook(V6R3版本以上)
事件类型
1、平台事件 平台产生的各类事件称为平台事件,主要供外部系统进行消费,与自有系统进行集成。Topic格式为-v1-business-作为前缀,
2、外部事件 外部子系统推送的事件,非AIoT发出的事件称为外部事件,外部事件需遵循外部事件定义进行推送。以开放接口的方式进行推送,推送接口请参考推送业务事件消息接口

1. 定义#

事件与动作,均是业务流转过程中产生的数据,但由于其产生的时机,数据的性质和动作有区别,在使用事件数据源数据时请勿将其与动作相混淆。在这里对事件数据源的数据性质做说明
事件是对业务中已发生的动作的描述,事件总发生在动作之后,即:动作发生 --> 产生事件,关心此动作发生的消费者系统消费会消费此事件,并在自己的业务场景中使用。
tip 使用场景
比如,联动服务作为消费者,消费车辆的进出场事件,当指定车牌号的车辆入场时,触发一系列联动动作。

2. 与动作相区分#

tip 说明
动作是系统中主动发起的业务行为,往往是通过主动触发的形式(例如请求API的方式)。比如,A系统要创建一个工单,发起一个创建工单的动作(请求工单系统API)。工单系统API在创建工单动作完成后,产生工单创建完成事件。

3. 示意图#

这个简单的示意图说明了动作和事件之间的关系,其中系统A请求API创建工单,这是一个动作。在执行动作之后,工单系统发布了一个事件,供其他系统订阅
image.png

1. 对象模型规范#

tip 说明
对象模型是用于描述事件属性的抽象化概念,是业务中实际发生事件的数字化映射

1.1 公共属性#

所有的事件对象都具有一些公共属性,通过公共属性,我们可以获取到所有事件都具有的公共基础信息,事件的公共属性包括:
属性名称作用说明
消息Id(msgId)非必填消息Id消息唯一Id(建议UUID)
上报时间(reportTs)必填事件上报时间13位时间戳
描述(profile) 必填描述事件的准确类别始终包含的字段包括:
appType(代表业务模型的编码;类型:string)
poiCode(代表业务模块下更细的分类编码;类型:string)
modelId(技术侧定义的payload结构ID;类型:int,通过推送事件接口 推送业务事件消息 时传递此参数)
事件(events) 必填定义详细的事件信息1、每个事件支持多级嵌套(不建议嵌套太深如2级以上,建议在不影响理解的情况下尽量平铺);事件之间各自独立的,不要理解为数据结构是同一个
2、每个事件都具有eventType字段,用于描述事件类型(1. 通知(大多默认情况) 2. 告警 3. 取消告警);类型:enum/int
3、如果事件发生时间与上报时间reportTs不一致,每个事件单独定义事件发生时的时间字段,建议统一约定参数名为:eventTs。如果有冲突也可定义其他参数名;类型:long,13位时间戳

这是一个代表车行业务模型中车辆进出事件的对象示例,将在后文进行详细说明:
{
    "reportTs": 1661154622,
    "profile": {
        "poiCode": "s0010001",//此业务的编码
        "appType": "parking",//标识这是属于车行一类业务类型
        "modelId": 10001//json结构的唯一 标识
    },
    "events": {
        "in": {
            "eventType": 1,//事件中的公共参数字段,1代表这是一个普通通知型的事件
            "eventTs": 148813512323,//由于进停车场发生的时间早于事件实际上报的时间,故单独定义
            "parkingLotId": "停车场id",
            "parkingLotName": "达实达实A停车场",
            "exitType": 1,
            "exitId": "148813512323",
            "exitName": "B1东出口",
            "plateNum": "粤B12312"
        },
    }
}
{
    "reportTs": 1661154622,
    "profile": {
        "poiCode": "s0010001",
        "appType": "parking",
        "modelId": 10001
    },
    "events": {
        "out": {
            "eventType": 1,
            "eventTs": 148813512323,
            "parkingLotId": "停车场id",
            "parkingLotName": "达实达实A停车场",
            "exitType": 2,
            "exitId": "148813512323",
            "exitName": "B1西出口",
            "plateNum": "粤B12312"
        }
    }
}
要严格按照以上结构,除了events曾级下的具体事件中字段可以自定义,如out下的事件字段(eventType除外即使在具体事件层级下,也必须遵守统一名称约定),其他结构结构不允许自定义,如禁止随意添加删减修改字段

1.2 profile属性说明#

tip 说明
通过profile属性,可以始终定位到某个业务模型下唯一的一种事件对象,其应用场景包括:
【数据处理分析】: 在平台侧的数据处理以及分析过程中,可以根据 poiCode/modelId,自动对不同数据应用不同的数据处理流程;方便后期大数据分析;
【语义化展示】: 应用系统在接收到业务数据时,可以根据数据携带的 modelId获取取对应的对象模型定义,根据模型定义对数据自动进行语义化展示,如 temperature_value: 35 展示为 温度: 35 度;
在这里对profile属性的各个字段做详细说明:

appType#

代表业务模型的编码持续更新,各开发人员自主在此进行注册,目前包括:
编码说明
parking车行业务
walking人行业务
meeting场地预定业务
alarm告警业务
space空间业务
device设备业务
org组织数据业务
projectDevice项目设备业务
product产品业务
instance实例业务
simulator模拟器业务
user用户数据业务
customer客户数据业务
customerPermission客户权限数据业务
org组织数据业务(外部)
user用户数据业务(外部)
enterprise企业数据业务(外部)
customer客户数据业务(外部)
role角色数据业务
meetingRoom会议业务
......

poiCode#

代表业务模块分类的编码,此编码由三部分组成:业务模型标识,场景编码,业务模块编码

业务模块(功能)类型标识#

业务模块(功能)分两大类,业务模型使用小写字母s作为前缀(service的第一个字母),设备场景使用小写字母d作为前缀(device的第一个字母)

场景编码#

按照平台收录顺序排列持续更新,各开发人员自主在此进行注册,现有的各场景的编码分别为
业务模块(功能)poiCode对照表#
模型名称类型poiCode编码
车行模型:车行模块业务模型s001
人行场模型:人行模块业务模型s002
场地预定模型:场地模块业务模型s003
告警模型:告警模块业务模型s004
空间模型:空间模块业务模型s005
组织数据模型:组织数据模块业务模型s006
项目设备模型:项目设备模块业务模型s007
用户数据模型:用户模块业务模型s008
客户数据模型:客户数据模块业务模型s009
客户权限数据模型:客户权限模块业务模型s010
组织模型:组织同步模块业务模型s011
用户模型:用户同步模块业务模型s012
企业模型:企业同步模块业务模型s013
客户模型:客户同步模块业务模型s014
排班模型:排班同步模块业务模型s0150001
排班模型:排班组同步模块业务模型s0150002
人行场模型:人员进出场业务模型s0020001
人行场模型:访客签到业务模型s0020002
安防模型:服务事件业务模型s0160001
角色模型:角色同步模块业务模型s017
诊断业务模型业务模型s0190001
访客业务模型业务模型s020
门禁业务模型业务模型s021
会议业务模型:会议室模块业务模型s022001
会议业务模型:会议模块业务模型s022002
......
设备(IoT)业务poiCode对照表#
模型名称类型编码
设备模型:设备模块设备模型d001
产品场景:产品模块设备模型d002
实例场景:实例模块设备模型d003
模拟器场景:模拟器模块设备模型d004
......

modelId#

代表技术侧定义的对象模型ID,此编码和poiCode值相同(暂时)

对象模型ID#

按照平台收录顺序排列持续更新,各开发人员自主在此进行注册,现有的各业务模型的ModelID分别为
ModelID对照表#
场景名称场景类型ModelID
车行场景业务场景1
人行场景业务场景2
场地预定场景业务场景3
告警场景业务场景4
空间场景业务场景5
组织数据场景业务场景6
项目设备场景业务场景7
用户数据场景业务场景8
客户数据场景业务场景9
客户权限数据场景业务场景10
组织场景(外部)业务场景11
用户场景(外部)业务场景12
企业场景(外部)业务场景13
客户场景(外部)业务场景14
人行场景:人员进出场业务场景20001
人行场景:访客签到业务场景20002
安防模型:服务事件业务场景160001
角色数据场景业务场景17
会议场景:会议室业务场景s022001
会议场景:会议业务场景s022002
......
设备场景#
场景名称场景类型编码
设备场景设备场景1
产品场景设备场景2
实例场景设备场景3
模拟器场景设备场景4
......

业务模块编码#

此编码会在各个业务模块的数据标准中定义,不在此处对各个业务场景的所有业务模块编码做统一展示

1.3 events属性说明#

注意
事件属性作为业务自定义字段,由各个业务模块自行决定其内容与各字段含义,详见数据标准定义

期待您的宝贵建议

微信扫描二维码,为我们的AIoT产品提出您的宝贵建议,用户体验是我们坚持不懈的追求。

微信扫描二维码
上一页
领域模型
下一页
2-1 车行场景事件(开发中)
Built with