Согласно комментариям, я думаю, что вы должны возвращать экземпляры подтипа вместо Event. Вот мои примеры кода для вас:
val event = mapper.readValue(bytes, classOf[Event])
event.getType match {
case "position" => mapper.readValue(bytes, classOf[Position])
case "recognition" => mapper.readValue(bytes, classOf[Recognized])
case _ =>
}
Я успешно попробовал пример из тестового примера в CEPITCase.java.
DataStream<Event> input = env.fromElements(
new Event(1, "foo", 4.0),
new SubEvent(2, "foo", 4.0, 1.0),
new SubEvent(3, "foo", 4.0, 1.0),
new SubEvent(4, "foo", 4.0, 1.0),
new Event(5, "middle", 5.0)
);
Pattern<Event, ?> pattern = Pattern.<Event>begin("start").subtype(SubEvent.class)
.followedByAny("middle").subtype(SubEvent.class)
.followedByAny("end").subtype(SubEvent.class);