about云开发

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 435|回复: 1

[连载型] Flink难点:彻底明白CEP3:独立模式【Patterns】操作Pattern Operation

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式
本帖最后由 pig2 于 2019-6-11 19:05 编辑

问题导读

1.独立模式有哪些条件?
2.循环模式模式该如何停止?
3.subtype的作用是什么?


上一篇:
Flink难点:彻底明白CEP2,条件分类
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27295


1.where(condition)        
定义当前模式的条件。 要匹配模式,事件必须满足条件。 多个连续的where()子句,其条件为AND:
[Scala] 纯文本查看 复制代码
pattern.where(event => ... /* some condition */)

[] 纯文本查看 复制代码
pattern.where(new IterativeCondition<Event>() {
    @Override
    public boolean filter(Event value, Context ctx) throws Exception {
        return ... // some condition
    }
});


2.or(condition)        

添加与现有条件进行“或”运算的新条件。 仅当事件至少通过其中一个条件时,才能匹配该模式:
[Scala] 纯文本查看 复制代码
pattern.where(event => ... /* some condition */)
    .or(event => ... /* alternative condition */)


[Java] 纯文本查看 复制代码
pattern.where(new IterativeCondition<Event>() {
    @Override
    public boolean filter(Event value, Context ctx) throws Exception {
        return ... // some condition
    }
}).or(new IterativeCondition<Event>() {
    @Override
    public boolean filter(Event value, Context ctx) throws Exception {
        return ... // alternative condition
    }
});


3.until(condition)        

指定循环模式的停止条件。 意味着如果匹配给定条件的事件发生,则不再接受该模式中的事件。

仅适用于oneOrMore()

注意:它允许在基于事件的条件下清除相应模式的状态。


[Java] 纯文本查看 复制代码
pattern.oneOrMore().until(new IterativeCondition<Event>() {
    @Override
    public boolean filter(Event value, Context ctx) throws Exception {
        return ... // alternative condition
    }
});


[Scala] 纯文本查看 复制代码
pattern.oneOrMore().until(event => ... /* some condition */)


4.subtype(subClass)        

定义当前模式的子类型条件。 如果事件属于此子类型,则事件只能匹配该模式:
[Scala] 纯文本查看 复制代码
pattern.subtype(classOf[SubEvent])

[Java] 纯文本查看 复制代码
pattern.subtype(SubEvent.class);


5.oneOrMore()        

指定此模式至少需要出现一次匹配事件。

默认情况下,使用宽松的内部连续性(在后续事件之间)。 有关内部连续性的更多信息,请参阅连续

注意:建议使用until()或within()来启用状态清除

[Java] 纯文本查看 复制代码
pattern.oneOrMore();

[Scala] 纯文本查看 复制代码
pattern.oneOrMore()


6.timesOrMore(#times)        

指定此模式至少需要#times【次数】出现匹配事件。

默认情况下,使用宽松的内部连续性(在后续事件之间)。 有关内部连续性的更多信息,请参阅连续


[Scala] 纯文本查看 复制代码
pattern.timesOrMore(2)

[Java] 纯文本查看 复制代码
pattern.timesOrMore(2);


7.times(#ofTimes)

指定此模式需要匹配事件的确切出现次数。

默认情况下,使用宽松的内部连续性(在后续事件之间)。 有关内部连续性的更多信息,同6。

[Scala] 纯文本查看 复制代码
pattern.times(2);

[Java] 纯文本查看 复制代码
pattern.times(2)


8.times(#fromTimes, #toTimes)        

指定此模式期望在匹配事件的#fromTimes和#toTimes之间出现。
默认情况下,使用宽松的内部连续性(在后续事件之间)。 有关内部连续性的更多信息,同6。

[Scala] 纯文本查看 复制代码
pattern.times(2, 4)

[Java] 纯文本查看 复制代码
pattern.times(2, 4);


9.optional()        

指定此模式是可选的,即根本不会发生。 这适用于所有上述量词。
[Java] 纯文本查看 复制代码
pattern.oneOrMore().optional();


[Scala] 纯文本查看 复制代码
pattern.oneOrMore().optional()


10.greedy()

指定此模式是贪婪的,即它将尽可能多地重复。 这仅适用于量词,目前不支持组(group )模式。
[Scala] 纯文本查看 复制代码
pattern.oneOrMore().greedy();

[] 纯文本查看 复制代码
pattern.oneOrMore().greedy()


最新经典文章,欢迎关注公众号

加入About云知识星球,获取更多实用资料

本帖被以下淘专辑推荐:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /3 下一条

QQ|小黑屋|about云开发-学问论坛|社区 ( 京ICP备12023829号

GMT+8, 2019-6-18 03:02 , Processed in 0.441844 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2 Licensed

快速回复 返回顶部 返回列表