摘要:Apache Flink是目前最流行的流式计算平台之一, 已经在工业界得到了广泛应用. 复杂事件处理是流式计算的一种重要使用场景, Apache Flink平台定义并实现了一种复杂事件处理语言(简称FlinkCEP). FlinkCEP语法特性丰富, 不仅包括常见的过滤、连接、循环等操作, 还包括迭代条件、匹配筛选策略等高级特性. FlinkCEP语义复杂, 尚缺乏语言规范对其语义进行准确描述, 只能通过实现细节来理解, 因此对其语义进行形式描述对于开发人员准确理解其语义非常必要. 针对FlinkCEP提出一种数据流转换器的自动机模型, 该模型包括用于刻画迭代条件的数据变量、存储输出结果的数据流变量、用于刻画匹配筛选策略的迁移优先级等特性. 使用数据流转换器对FlinkCEP的语义进行形式建模, 并且根据形式语义设计FlinkCEP的查询求值算法, 实现原型系统. 进一步, 生成能够较为全面覆盖FlinkCEP语法特性的测试用例集, 利用这些测试用例与FlinkCEP在Flink平台上的实际运行结果进行对比实验. 实验结果表明所提出的形式语义与FlinkCEP在Flink平台上的实际语义基本是一致的. 而且, 对实验结果不一致的情况进行分析, 指出FlinkCEP在Flink平台上的实现对于组模式的处理可能存在错误.