什么是复杂的事件处理?

时间:2013-12-09 11:30:48

标签: database complex-event-processing

我为一家公司构建了一个分析应用程序,该应用程序根据员工的销售/购买项目显示关键绩效指标(KPI)。
现在他们想要的是添加事件功能,如:
*如果任何员工出售价值超过10,000美元的物品,请提醒他们
* *如果某些员工厌倦生活并自杀,请提醒他们 基本上这些愚蠢的事件。

我完全不知道该做什么,他们建议使用ESPER,但我发现很难理解事件处理的工作原理。
我想知道事件处理在这种情况下是如何工作的,我在哪里可以了解更多信息。
除了编程和DB之外,我什么都不知道,我也不是PRO 请分享您对我应该做的事情的看法?

2 个答案:

答案 0 :(得分:0)

基本上,当您需要分析数据的“流”时,以及当搜索到的模式出现时您必须快速做出反应时,会使用复杂的事件处理。例如,当从不同机场起飞的三个人携带成分以潜在地制造炸弹,并且他们前往同一目的地时,您需要找到来自每个机场的数据的相关性,并快速对事件作出反应。

销售超过10000的员工不是您需要实时了解的事情。你可以在下个月奖励他,因为“正常”的报道会很好。

有些论文要读: Oracle CEP

答案 1 :(得分:0)

CEP实际上是完成任务的绝佳方式。您可以将CEP视为模式匹配技术。一旦匹配,如果您的CEP与其他工具集成,则可以通知您或启动其他流程。

以下是维基百科的例子。我们可以根据这些传入的信号轻松推断它是一场婚礼:

  • 教堂的钟声响起。
  • 一个男人穿着燕尾服的外表,一个女人穿着飘逸的白色礼服。
  • 米饭在空中飞舞。

这是一个抽象的例子,这样的事情可能无法进入任何系统,但你明白了。最好看一下代码来理解CEP的实现。这里是您可以在NebriOS之上编写的脚本来构建推理。其他工具如Drools也会完成同样的事情。

class wedding_detect(NebriOS):
    def check(self):
        if self.church_bells == "ringing" and \
            (self.clothes_type == "tuxedo" or \
            self.clothes_type == "wedding gown") and \
            self.rice_flying == True:
            return True
        else
            return False

    def action(self):
        # fires if the check() is true
        send_email("me@example.com", "A wedding is underway")

根据您的情况,CEP也很容易编程:

class sales_alert(NebriOS):
    def check(self):
        return self.sales_total > 10000

    def action(self):
        send_email("me@example.com", "You got a $10k sale!")

例如,sales_total可以从您的CRM进入系统。

那个CEP - 复杂事件处理!一个开始无论如何。

相关问题