FIWARE CEP (Proton) 派生事件属性与聚合 EPA 错误

FIWARE CEP (Proton) Error in derived event attributes with Aggregate EPA

我从 Orion 收到一个 ContextUpdate 事件,我设置了一个规则来计算在特定时间 window 内接收到的事件的数量,可能具有相同的 "entityId"。 在聚合 EPA 的派生事件中,我希望 "DeviceID" 属性采用与接收到的事件的 "entityId" 相同的值。 但是,无论是 "Defered" 还是 "Immediate" 评估策略,在消费者输出(文本文件)的 DeviceID 属性中,我都有:

"DeviceID":"[Ljava.lang.Object;@4456c43f"

有什么提示吗?

谢谢。

这里是 json 配置:

{
"epn": {
    "events": [{
        "name": "DCUPiazzaCarraraContextUpdate",
        "createdDate": "Thu Oct 22 2015",
        "attributes": [{
            "name": "entityId",
            "type": "String",
            "dimension": 0
        }, {
            "name": "entityType",
            "type": "String",
            "dimension": 0
        }, {
            "name": "battery",
            "type": "Double",
            "dimension": 0
        }, {
            "name": "temperature",
            "type": "Double",
            "dimension": 0
        }, {
            "name": "stato",
            "type": "Boolean",
            "dimension": 0
        }, {
            "name": "rssi",
            "type": "Integer",
            "dimension": 0
        }, {
            "name": "lqi",
            "type": "Integer",
            "dimension": 0
        }, {
            "name": "timestamp",
            "type": "String",
            "dimension": 0
        }, {
            "name": "numprog",
            "type": "Integer",
            "dimension": 0
        }, {
            "name": "dcu",
            "type": "String",
            "dimension": 0
        }]
    }, {
        "name": "DCUAbsence",
        "createdDate": "Sat Nov 07 2015",
        "attributes": [{
            "name": "entityId",
            "type": "String",
            "dimension": 0
        }, {
            "name": "entityType",
            "type": "String",
            "dimension": 0
        }, {
            "name": "AlertType",
            "type": "String",
            "dimension": 0
        }, {
            "name": "eventnum",
            "type": "Integer",
            "dimension": 0
        }, {
            "name": "DeviceID",
            "type": "String",
            "dimension": 0
        }, {
            "name": "DeviceContext",
            "type": "String",
            "dimension": 0
        }]
    }],
    "epas": [{
        "name": "AbsenceDCU",
        "createdDate": "Sat Nov 07 2015",
        "epaType": "Aggregate",
        "context": "AbsenceDCUComp",
        "inputEvents": [{
            "name": "DCUPiazzaCarraraContextUpdate",
            "consumptionPolicy": "Reuse",
            "instanceSelectionPolicy": "First"
        }],
        "computedVariables": [{
            "name": "eventnum",
            "aggregationType": "Count",
            "DCUPiazzaCarraraContextUpdate": "1"
        }],
        "evaluationPolicy": "Immediate",
        "cardinalityPolicy": "Unrestricted",
        "internalSegmentation": [],
        "derivedEvents": [{
            "name": "DCUAbsence",
            "reportParticipants": false,
            "expressions": {
                "entityId": "\"Alert\"",
                "entityType": "\"PiazzaCarrara\"",
                "AlertType": "\"006\"",
                "eventnum": "eventnum",
                "DeviceID": "DCUPiazzaCarraraContextUpdate.entityId",
                "DeviceContext": "DCUPiazzaCarraraContextUpdate.entityType"
            }
        }]
    }],
    "contexts": {
        "temporal": [{
            "name": "AbsenceDCUWindow",
            "createdDate": "Sat Nov 07 2015",
            "type": "TemporalInterval",
            "atStartup": false,
            "neverEnding": false,
            "initiators": [{
                "initiatorType": "Event",
                "initiatorPolicy": "Ignore",
                "name": "DCUPiazzaCarraraContextUpdate"
            }],
            "terminators": [{
                "terminatorType": "RelativeTime",
                "terminationType": "Discard",
                "relativeTime": "5000"
            }]
        }],
        "segmentation": [{
            "name": "AbsenceDCUID",
            "createdDate": "Thu Dec 17 2015",
            "participantEvents": [{
                "name": "DCUPiazzaCarraraContextUpdate",
                "expression": "DCUPiazzaCarraraContextUpdate.entityId"
            }, {
                "name": "DCUAbsence",
                "expression": "DCUAbsence.DeviceID"
            }]
        }],
        "composite": [{
            "name": "AbsenceDCUComp",
            "createdDate": "Thu Dec 17 2015",
            "temporalContexts": [{
                "name": "AbsenceDCUWindow"
            }],
            "segmentationContexts": [{
                "name": "AbsenceDCUID"
            }]
        }]
    },
    "consumers": [{
        "name": "OnFileAlert",
        "createdDate": "Thu Oct 22 2015",
        "type": "File",
        "properties": [{
            "name": "filename",
            "value": "/var/log/tomcat7/Alert.json"
        }, {
            "name": "formatter",
            "value": "json"
        }, {
            "name": "delimiter",
            "value": ";"
        }, {
            "name": "tagDataSeparator",
            "value": "="
        }, {
            "name": "SendingDelay",
            "value": "1000"
        }, {
            "name": "dateFormat",
            "value": "dd/MM/yyyy-HH:mm:ss"
        }],
        "events": [{
            "name": "DCUAbsence"
        }, {
            "name": "DCUPiazzaCarraraContextUpdate"
        }]
    }],
    "producers": [],
    "name": "CounterExample"
}

}

在类型为 Aggregate 的 EPA 中,由于来自该类型的许多事件可能会在上下文中到达,因此当您在派生表达式中引用输入事件属性时,您会得到一个array 保存该类型的所有参与者输入事件的属性。

在您的示例中,DCUPiazzaCarraraContextUpdate.entityId 将包含 array entityId

如果您想要单个值,您可以使用数组访问函数从数组中获取一个值,或者由于您对 entityId 使用分段上下文,您可以从该上下文中获取 entityId。

要从上下文中获取属性,请使用 context."segmentation-context-name" 表达式,在您的情况下是:

context.AbsenceDCUID

在一般情况下,您可以使用数组访问函数从数组中获取特定条目。例如,从数组中获取最后一个值:

ArrayGet(DCUPiazzaCarraraContextUpdate.entityId, ArraySize(DCUPiazzaCarraraContextUpdate.entityId)-1)