开发者中心

数据模型

输入流

一般结构

所有的输入流共享相同的基本结构

参数 数据类型 描述
_type String 事件的类型。不同流的类型值参见下表
_mode String 数据发送给QuarkIoE的处理模式。参见 处理模式
_origin String 事件的来源。如果数据由cep规则创建,则来源是 "cep"
payload Object 事件中的实际数据

类型:

Stream Type
ManagedObjectCreated MANAGED_OBJECT_CREATE
ManagedObjectUpdated MANAGED_OBJECT_UPDATE
ManagedObjectDeleted MANAGED_OBJECT_DELETE
EventCreated EVENT_CREATE
EventDeleted EVENT_DELETE
MeasurementCreated MEASUREMENT_CREATE
MeasurementDeleted MEASUREMENT_DELETE
OperationCreated OPERATION_CREATE
OperationUpdated OPERATION_UPDATE
AlarmCreated ALARM_CREATE
AlarmUpdated ALARM_UPDATE

为简化访问,可以直接通过API特定的参数在各自流的数据类型访问有效载荷:

API 参数 数据类型
Inventory managedObject ManagedObject
Events event Event
Measurements measurement Measurement
Device control operation Operation
Alarms alarm Alarm

ManagedObject

class: com.cumulocity.model.ManagedObject

参数 数据类型 描述
id ID ManagedObject的ID
type String ManagedObject的类型
name String ManagedObject的名称
lastUpdated Date ManagedObject最后更新的时间
owner String ManagedObject的所有者
childAssets Object[] 所有子资产ID的数组
childDevices Object[] 所有子设备ID的数组
assetParents Object[] 所有父资产ID的数组
deviceParents Object[] 所有子设备ID的数组

引用父和子的 Object[] 只包含ID。可以使用类型转换函,例如 cast(event.managedObject.childAssets[0], com.cumulocity.model.ID)

例子:

        
          select
          event.managedObject.id,
          event.managedObject.type,
          event.managedObject.name,
          event.managedObject.lastUpdated,
          event.managedObject.owner,
          event.managedObject.childAssets,
          event.managedObject.childDevices,
          event.managedObject.assetParents,
          event.managedObject.deviceParents
          from ManagedObjectCreated event;
        
      

事件

class: com.cumulocity.model.event.Event

参数 数据类型 描述
id ID 事件的ID
creationTime Date 数据库中事件生成的时间
type String 事件的类型
text String 事件的文本
time Date 事件创建的时间 (设备发送)
source ID 创建事件的设备ID

例子:

      
        select
        event.event.id,
        event.event.creationTime,
        event.event.type,
        event.event.text,
        event.event.time,
        event.event.source
        from EventCreated event;
      
    

测量值

class: com.cumulocity.model.measurement.Measurement

参数 数据类型 描述
id ID 测量值的ID
type String 测量值的类型
time Date 测量值创建的时间 (设备发送)
source ID 创建测量值的设备ID

例子:

   
    select
    event.measurement.id,
    event.measurement.type,
    event.measurement.time,
    event.measurement.source
    from MeasurementCreated event;
  

操作

class: com.cumulocity.model.operation.Operation

参数 数据类型 描述
id ID 操作的ID
creationTime Date 数据库中操作生成的时间
status OperationStatus 操作的当前状态
deviceId ID 执行操作的设备ID

例子:

 
  select
  event.operation.id,
  event.operation.creationTime,
  event.operation.status,
  event.operation.deviceId
  from OperationCreated event;

报警

class: com.cumulocity.model.event.Alarm

参数 数据类型 描述
id ID 报警ID
creationTime Date 数据库中生成报警的时间
type String 报警的类型
count long 活跃是报报警告的次数
severity Severity 报警的严重级别
status AlarmStatus 报警的状态
text String 报警的文本
time Date 报警创建的时间 (设备发送)
source ID 创建报警的设备ID

例子:

 
  select
  event.alarm.id,
  event.alarm.creationTime,
  event.alarm.type,
  event.alarm.count,
  event.alarm.severity,
  event.alarm.status,
  event.alarm.text,
  event.alarm.time,
  event.alarm.source
  from AlarmCreated event;

输出流

一般结构

输出流可以在QuarkIoE中CREATE, UPDATE 和 DELETE 数据。 当更新或删除数据时,必须提供将被更新或删除的对象的ID。 如果不是事件处理,当创建数据时QuarkIoE将产生一个ID。数据的创建还需要一定的参数设置(与REST API相同)。 除了列出的预定义的参数外,还可以添加任何自定义的片段到数据中。添加自定义片段请参阅 ---->this<----。

注意:创建自己的ID只在ManagedObjects中有效。

ManagedObjects
可用的输出
CreateManagedObject
UpdateManagedObject
DeleteManagedObject
参数 数据类型 描述 强制
id ID 或 String ManagedObject的ID UPDATE 和 DELETE
type String ManagedObject的类型
name String ManagedObject的名称
owner String ManagedObject的所有者。事件处理中如果不设置则为"cep"
childAssets Set<String> 或 Set<ID> 所有子资产ID的集合
childDevices Set<String> 或 Set<ID> 所有子设备ID的集合

例子:

insert into CreateManagedObject
  select
  "myManagedObject" as name,
  "myType" as type
  from EventCreated event;

  insert into UpdateManagedObject
  select
  "12345" as id,
  "myNewManagedObject" as name
  from EventCreated event;

  insert into DeleteManagedObject
  select
  "12345" as id
  from EventCreated event;
事件
可用的输出
CreateEvent
DeleteEvent
参数 数据类型 描述 强制
id ID 或 String 事件的ID DELETE
type String 事件的类型 CREATE
text String 事件的文本 CREATE
time Date 事件创建的时间 (设备发送) CREATE
source ID 或 String 创建事件的设备ID CREATE

例子:

insert into CreateEvent
  select
  "copiedEventType" as type,
  "This event was copied" as text,
  event.event.time as time,
  event.event.source as source
  from EventCreated event;

  insert into DeleteEvent
  select
  "12345" as id
  from EventCreated event;
测量值
可用的输出
CreateMeasurement
DeleteMeasurement
参数 数据类型 描述 强制
id ID 或 String 测量值的ID DELETE
type String 测量值的类型 CREATE
time Date 测量值创建的时间 (设备发送) CREATE
source ID 或 String 创建测量值的设备ID CREATE

例子:

insert into CreateMeasurement
  select
  "c8y_TemperatureMeasurement" as type,
  event.event.time as time,
  event.event.source as source,
  {
  "c8y_TemperatureMeasurement.T.value", 5
} as fragments
from EventCreated event;

insert into DeleteMeasurement
select
"12345" as id
from EventCreated event;
操作
可用的输出
CreateOperation
UpdateOperation
参数 数据类型 描述 强制
id ID 或 String 操作的ID UPDATE
status OperationStatus 或 String 操作的当前状态 CREATE
deviceId ID 或 String 执行操作的设备ID CREATE

例子:

insert into CreateOperation
  select
  OperationStatus.PENDING as status,
  event.event.source as deviceId,
  {
  "c8y_Restart", {}
} as fragments
from EventCreated event;

insert into UpdateOperation
select
"12345" as id,
OperationStatus.EXECUTING as status
from EventCreated event;
报警
可用的输出
CreateAlarm
UpdateAlarm
参数 数据类型 描述 强制
id ID 或 String 报警的ID UPDATE
type String 报警的类型 CREATE
severity Severity 或 String 报警的严重级别 CREATE
status AlarmStatus 或 String 报警的状态 CREATE
text String 报警的文本 CREATE
time Date 报警创建的时间 (设备发送) CREATE
source ID 或 String 创建报警的设备ID CREATE

例子:

insert into CreateAlarm
  select
  "c8y_HighTemperatureAlarm" as type,
  event.event.time as time,
  event.event.source as source,
  CumulocitySeverities.WARNING as severity,
  CumulocityAlarmStatuses.ACTIVE as status,
  "The device has high temperature" as text
  from EventCreated event;

  insert into UpdateAlarmn
  select
  "12345" as id,
  CumulocityAlarmStatuses.ACKNOWLEDGED as status
  from EventCreated event;

特殊的流

在这一节中提到的流不与QuarkIoE数据库进行交互,而是创建外部服务调用。

发送邮件
参数 数据类型 描述 强制
receiver String 收件人地址
cc String 抄送地址
bcc String 密送地址
replyTo String 回复地址
subject String 邮件主题
text String 邮件正文

可以在参数中设置一个以上收件人地址,抄送地址和密送地址。因此,创建一个逗号分隔的字符串包含所有邮件地址,如"receiver1@mail.com,receiver2@mail.com"。

例子:

insert into SendEmail
      select
      "receiver1@cumulocity.com,receiver2@cumulocity.com" as receiver,
      "cc@cumulocity.com" as cc,
      "bcc@cumulocity.com" as bcc,
      "reply@cumulocity.com" as replyTo,
      "Example mail" as subject,
      "This mail was sent to test the SendEmail stream in Quarkioe" as text
      from AlarmCreated;
    
发送仪表盘
参数 数据类型 描述 强制
receiver String 收件人地址
cc String 抄送地址
bcc String 密送地址
replyTo String 回复地址
subject String 邮件主题
text String 邮件正文
dashboardUrl String 附加到邮件的页面URL

可以在参数中设置一个以上收件人地址,抄送地址和密送地址。因此,创建一个逗号分隔的字符串包含所有邮件地址,如"receiver1@mail.com,receiver2@mail.com"。

注意:

此功能只在你的租户中相应的发送仪表盘服务器端代理启动时有效。如何激活此功能

例子:

insert into SendDashboard
      select
      "receiver1@cumulocity.com,receiver2@cumulocity.com" as receiver,
      "cc@cumulocity.com" as cc,
      "bcc@cumulocity.com" as bcc,
      "reply@cumulocity.com" as replyTo,
      "Example dashboard" as subject,
      "https://mytenant.cumulocity.com/apps/cockpit/index.html" as dashboardUrl,
      "This mail contains an attached screenshot of the home dashboard" as text
      from AlarmCreated;
    
发送短信
参数 数据类型 描述 强制
receiver String 接受人电话号码
text String 短信正文。最大160字符
deviceId String 生成短信的设备ID。将创建一条此设备的日志事件

可以在参数中设置一个以上电话号码。因此,创建一个逗号分隔的字符串包含所有电话号码,如"+8612345678901,+8698765432101"。 虽然技术上QuarkIoE不需要国家代码,我们还是建议使用,因为短信网关可能需要。可以使用象"0086" 或 "+86" (中国)这样的符号。

注意:

此功能只有租户连接到短信提供商时有效。更多信息请联系 support@cumulocity.com.

例子:

insert into SendSms
        select
        "+8612345678901" as receiver,
        "This sms was sent to test the SendSms stream in Quarkioe" as text,
        "12345" as deviceId
        from AlarmCreated;
      
发送语音
参数 数据类型 描述 强制
phoneNumber String 接受人电话号码
textToSpeech String 转语音的文字 yes
deviceId String 生成语音呼叫的设备ID。将创建一条此设备的日志事件
attempts Long 如果呼叫不通重试的次数 (0 = 不重试)
timeout Long 两次重试间隔的分钟数
alarmId String 创建呼叫的报警ID(为确认)
questionText String 转语音的确认问题
acknowledgeButton Long 接受人确认呼叫按的按钮数字

注意:

此功能只有租户连接到语音提供商时有效。 更多信息请联系 support@cumulocity.com。

例子:

insert into SendSpeech
        select
        "+4923456789" as phoneNumber,
        "Your device lost power connection." as textToSpeech,
        2 as attempts,
        5 as timeout,
        "12345" as deviceId,
        "67890" as alarmId,
        "To acknowledge this call please press button 5" as questionText,
        5 as acknowledgeButton
        from EventCreated e
      

附加数据模型

ID

class: com.cumulocity.model.ID

参数 数据类型 描述
value String 实际的ID值
type String ID的类型
name String 设备名称(只在ID指向设备,如在measurement.source中)

例子:

select
    event.measurement.source.value,
    event.measurement.source.type,
    event.measurement.source.name
    from MeasurementCreated event;
  
操作状态

class: com.cumulocity.model.operation.OperationStatus

操作状态是一个枚举,有以下值: PENDING, SUCCESSFUL, FAILED, EXECUTING

例子:

insert into UpdateOperation
      select
      event.operation.id.value as id,
      OperationStatus.FAILED as status
      from OperationCreated event;
    
严重级别

class: com.cumulocity.model.event.Severity

严重级别是枚举接口,实现CumulocitySeverities。 CumulocitySeverities 提供以下值: CRITICAL, MAJOR, MINOR, WARNING

例子:

insert into UpdateAlarm
        select
        event.alarm.id.value as id,
        CumulocitySeverities.MAJOR as severity
        from AlarmCreated event;
      
<
报警状态

class: com.cumulocity.model.event.AlarmStatus

报警状态是枚举接口,实现CumulocityAlarmStatuses。 CumulocityAlarmStatuses 提供以下值: ACTIVE, ACKNOWLEDGED, CLEARED

例子:

insert into UpdateAlarm
          select
          event.alarm.id.value as id,
          CumulocityAlarmStatuses.ACKNOWLEDGED as status
          from AlarmCreated event;