appendEvent

语法

appendEvent(engine, events)

详情

将事件实例写入 CEP 引擎的事件输入队列,无需序列化与反序列化。

参数

engine 引擎句柄。目前支持序列化引擎和 CEP 引擎。

events 可以是事件类型实例或者字典。如果指定为字典,系统会根据键值对构造出事件实例,因此字典的键必须包含事件类型(eventType ) 字段和事件定义中指定的事件字段(eventField)。

例子

定义事件 Orders,其包含字段 sym,val0,val1,val2:

class Orders{
    eventTime :: TIMESTAMP 
    sym :: STRING
    val0 :: INT
    val1 :: FLOAT
    val2 :: DOUBLE
    def Orders(s,v0,v1,v2){
        sym = s
        val0 = v0
        val1 = v1
        val2 = v2
        eventTime = now()
    }
}

定义一个简单的 monitor:

class mainMonitor:CEPMonitor {
    ordersTable :: ANY  // 定义成员变量 ordersTable,不限制数据类型和形式
    def mainMonitor(){
        ordersTable = array(ANY, 0)  // 这里确定 ordersTable 为一个元组
    }    

    def updateOrders(event) {
        ordersTable.append!([event.sym, event.val0, event.val1, event.val2])
    }
    def onload(){
        addEventListener(updateOrders, 'Orders',,'all') 
    }
}

创建 CEP 引擎如下:

dummy = table(array(TIMESTAMP, 0) as eventTime,array(STRING, 0) as eventType,  array(BLOB, 0) as blobs)
engine=createCEPEngine(name="test_CEP",monitors=<mainMonitor()>,dummyTable=dummy,eventSchema=Orders,timeColumn='eventTime')
向引擎中追加事件:
  • events 指定为一个事件类型实例:
    appendEvent(`test_CEP,Orders("a000", 3, 3.0, 30.0))
  • events 指定为一个字典:
    d=dict(['eventType',"sym", "val0","val1", "val2", "eventTime"],["Orders",'a000',5,float(3.6),double(29.3),2025.09.24T11:35:22.789])
    appendEvent(`test_CEP,d)

相关函数addEventListener, createCEPEngine, emitEvent, routeEvent, sendEvent