You are on page 1of 97

Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Processamento de Eventos Complexos


Complex Event Processing

Francisco José da Silva e Silva

Laboratório de Sistemas Distribuı́dos Inteligentes (LSDi)


Universidade Federal do Maranhão - UFMA
http://www.lsdi.ufma.br

4 de junho de 2018

1 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

1 Parte I: Conceitos Principais


Introdução ao CEP
Motor CEP e Linguagens de Consultas Contı́nuas
Contexto de Janelas de Tempo
2 Parte II: Prática com Esper
Conceitos Introdutórios
Junções, Acesso SGBD, Janelas Nomeadas e Tabelas
Padrões
3 Parte III: Aplicações do CEP em Computação Ubı́qua
DG2CEP
Middleware M-Hub/CDDL
MHARS (Mobile Human Activity Recognition System)
Ginga das Coisas
Restrições de Mobilidade

2 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Parte I: Introdução ao CEP

3 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Definições de Evento

Um registro imutável de uma ação ou mudança de estado


ocorrida no passado

Uma entidade observável disparada por um componente do


sistema (infraestrutura de IT, software, etc)

Dado que representa algo que tenha ocorrido no mundo real


ou em um sistema de software (mudança de estado em um
estoque, mudança climática, click de um usuário)

4 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Fluxo de Eventos

Uma sequencia ordenada de eventos (ex. fluxo de clicks)

Normalmente a ordenação é feita de acordo com o tempo de


ocorrência dos eventos

5 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Eventos Atômicos e Eventos Complexos

Um evento complexo é o resultado do processamento de


diversos eventos atômicos

Trata-se de um evento que somente pode ocorrer quando


diversos outros eventos tiverem ocorrido (ex. queda do preço
médio de residências em uma região)

6 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Processamento de Eventos Complexos

Refere-se a detecção e reação à ocorrência de eventos


complexos

Processamento eficiente de grandes quantidades de eventos


(próximo do tempo real)

Suporta a ciência de situação/contexto, rastreamento,


sensoreamento e atuação

7 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Processamento de Eventos Complexos

Paradigma de programação que permite o processamento de


fluxos de eventos em tempo real, reagindo-se a ocorrência de
eventos decorrentes deste processamento

Em SGBDs, os dados são armazenados e depois sobre eles são


realizadas consultas. CEP armazena consultas contı́nuas que
são executadas sobre os fluxos de eventos fornecidos como
entrada

Ao invés de armazenar dados,CEP foca na análise e


processamento contı́nua dos dados à medida que eles passam
(utilizando as consultas armazenadas)

8 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Processamento de Eventos Complexos

9 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Como? Operadores de uma Álgebra de Eventos

Operador de sequência (;): (E1 ; E2 )


Operador de disjunção (∨): (E1 ∨ E2 ) , at least one
Operador de conjunção (∧): (E1 ∧ E2 )
Operador de simultaneidade (=): (E1 =E2 )
Operador de negação (q): (E1 qE2 )
Quantificação (Any): Any (n)E1 , quando n eventos do tipo E1
ocorrerem
Operador aperiódico (Ap): Ap(E2 , E1 , E3 ), E2 entre E1 & E3
Operador periódico

10 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Produtores de Eventos

Eventos são criados por produtores, que são entidade (ex.


sensores, aplicações clliente) que codificam ocorrências de
interesse no domı́nio da aplicação

Eventos são caracterizados por um tipo, timestamp, e uma


carga útil (payload)

Por exemplo, pode-se definir o tipo de evento LocationUpdate


para representar a atualização da posição de um objeto móvel
usando-se a seguinte carga útil: uuid, latitude, longitude, e
timestamp

11 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Requisitos Comuns de Aplicações CEP

Alta vazão: aplicações que processam grandes volumes de


mensagens (entre 1.000 e 100k mensagens) por segundo

Baixa Latência: aplicações que reagem em tempo real a


condições que ocorram (de poucos milisegundos a poucos
segundos)

Computações complexas: aplicações que requerem a detecção


de padrões no fluxo de eventos (correlação de eventos),
filtragem de eventos, janelas de tempo ou de agregação de
eventos, junção de séries de eventos, disparo de ação baseada
na ausência de eventos, etc

12 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Casos Tı́picos de Aplicações de CEP

Comércio de ações de empresas: Exploração eficiente de


janelas de oportunidade
Monitoramento de rede e infraestrutura de TI: Detecção
de intrusão
Segurança: Prevenção de ataques dDOS
Arquitetura de veı́culos automotores: Processamento de
sinais ECU (Engine Control Unit)
Mercado financeiro: detecção de fraudes e gerenciamento
de risco
Aplicações de sensoreamento: leitura RFID, controle de
tráfego aéreo

13 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Implementações de Motores CEP

IBM InfoSphere Streams


Muitos frameworks acadêmicos

14 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Agente de Processamento de Eventos (Event Processing


Agent -EPA) e Rede de Processamento de Eventos (Event
Processing Network - EPN

Uma consulta contı́nua é executada por um estágio de


processamento CEP conhecido como EPA

15 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Agente de Processamento de Eventos (Event Processing


Agent -EPA) e Rede de Processamento de Eventos (Event
Processing Network - EPN

Uma consulta contı́nua é executada por um estágio de


processamento CEP conhecido como EPA
Um EPA reage a eventos de entrada; os analisa e manipula;
gera eventos derivados para outros consumidores de eventos
que pode ser outros EPAs ou aplicações finais

15 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Agente de Processamento de Eventos (Event Processing


Agent -EPA) e Rede de Processamento de Eventos (Event
Processing Network - EPN

Uma consulta contı́nua é executada por um estágio de


processamento CEP conhecido como EPA
Um EPA reage a eventos de entrada; os analisa e manipula;
gera eventos derivados para outros consumidores de eventos
que pode ser outros EPAs ou aplicações finais
Através da interconexão de EPAs, é possı́vel construir uma
rede de processamento de eventos, um workflow que analisa o
fluxo de evento de entrada à medida que ele passa

15 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Agente de Processamento de Eventos (Event Processing


Agent -EPA) e Rede de Processamento de Eventos (Event
Processing Network - EPN

Uma consulta contı́nua é executada por um estágio de


processamento CEP conhecido como EPA
Um EPA reage a eventos de entrada; os analisa e manipula;
gera eventos derivados para outros consumidores de eventos
que pode ser outros EPAs ou aplicações finais
Através da interconexão de EPAs, é possı́vel construir uma
rede de processamento de eventos, um workflow que analisa o
fluxo de evento de entrada à medida que ele passa
A estrutura topológica da EPN (um grafo direcionado)
facilita a distribuição de EPAs em
diferentes máquinas
15 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Rede de Processamento de Eventos

16 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Parte I: Motor CEP e Linguagens de


Consultas Contı́nuas

17 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Modelos de Linguagem CEP

1 Orientadas a fluxos
Seguem o projeto formal da Continuous Query Language
(CQL), uma extensão do SQL que inclui operadores sobre
fluxos

2 Orientadas a regras
Baseadas em inferência e cláusulas Evento-Condição-Ação
(ECA)

18 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Exemplo de Linguagem Orientada a Fluxo (Esper)

19 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Exemplo de Linguagem Orientada a Regras (Drools)

20 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Expressividade dos Modelos de Linguagem

Ambos modelos de linguagem podem implementar as mesmas


primitivas CEP
Entretanto, na prática, os motores CEP suportam conjuntos
diferentes de primitivas de processamento
Em geral, motores que utilizam linguagens orientadas a fluxo
focam em primitivas de transformação (e.g., filter, split,
combine)
Aqueles baseados em linguagens orientadas a regras se
concentram em primitivas de detecção de padrões (sequence,
negation).

21 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Classificação de Primitivas CEP

22 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Primitivas de Transformação

Project: cria um evento derivado usando um subconjunto de


seus atributos
Enrich: usa um fonte de dados externa (tabela em memória
ou SGBD) para criar um evento derivado que contêm novas
informações a partir do evento original de entrada
Aggregate: combina múltiplos eventos de entrada em um
único evento de saı́da
Compose: une dois ou mais fluxos de eventos de entrada,
buscando pela ocorrência de um dado critério e gerando
eventos derivados
Split: divide o evento de entrada em múltiplos eventos

23 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Primitivas de Detecção de Padrões

Conjunção: E1 ∧ E2 ∧ · · · ∧ En

Disjunção: E1 ∨ E2 ∨ · · · ∨ En

Negação: qE [10min]

Sequência: (ordem a ser seguida) E1 → E2 → E1 → E3

Repetição: detecta quando um dado tipo de evento se repete


pelo menos n vezes dentro de uma dada janela (e.g., tempo,
comprimento). E [n][3minutes]

24 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Parte I: Contexto e Janelas de Tempo

25 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Contexto

Diversas primitivas requerem o conceito de uma janela (ex.


janela de tempo) para processar o fluxo de eventos de entrada

Por exemplo, a primitiva de agregação combina eventos


correlacionados que ocorrem dentro de uma dada janela de
tempo gerando um evento complexo

Um contexto CEP subdivide o fluxo de eventos em uma ou


mais particões usando predicados lógicos e/ou temporais

26 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Exemplo de Contexto em CEP

27 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Janela de Tempo

Uma janela de tempo é um contexto temporal que subdivide o


fluxo de eventos em intervalos de tempo usando o atributo
timestamp

Tipos:
Janelas de marco de tempo (Landmark time windows):
armazena todos os eventos produzidos em um intervalo ∆ de
tempo e aplica a consulta contı́nua neste conjunto de eventos
Janelas deslizantes (sliding windows): janela de marco de
tempo móvel que contêm os eventos ocorridos nas últimas ∆
unidades de tempo

28 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Janelas de Marco de Tempo e Deslizantes

29 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Parte II: Esper: Conceitos


Introdutórios

30 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Esper

Motor para análise de fluxo e correlações de eventos (CEP) de


código aberto

31 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Esper

Motor para análise de fluxo e correlações de eventos (CEP) de


código aberto
Suporte comercial disponı́vel

31 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Esper

Motor para análise de fluxo e correlações de eventos (CEP) de


código aberto
Suporte comercial disponı́vel
Permite a detecção de diversas situações em fluxos de eventos
(histórico ou ao chegar) bem como o disparo de ações
customizadas quando for detectado condições definidas sobre
o fluxo de eventos

31 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Esper

Motor para análise de fluxo e correlações de eventos (CEP) de


código aberto
Suporte comercial disponı́vel
Permite a detecção de diversas situações em fluxos de eventos
(histórico ou ao chegar) bem como o disparo de ações
customizadas quando for detectado condições definidas sobre
o fluxo de eventos
Projetado para realizar processamento sobre grandes volumes
de eventos (eventualmente milhões), onde o armazenamento
de todos eles para posterior execução de consultas
utilizando-se arquiteturas clássicas de banco de dados
é uma abordagem inadequada

31 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Esper Event Processing Language (EPL)

Provê filtragem, agregação e junções sobre janelas deslizantes


ou múltiplos fluxos de eventos

Também inclui suporte a padrões que permitem expressar


causalidade temporal entre eventos (relação ”seguido
por”followed-by )

Suporta uma grande variedade de representações de eventos,


como Java beans, documento XML, classes legadas ou
simples pares < chave, valor >

32 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Arquitetura do Esper

33 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Representação de Eventos

34 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Representando Eventos: Exemplo da Usina Nuclear


public class Radia tionEve nt {

private int roomId ;


private double radiation ;
private Date timeOfReading ;

public Radi ationEve nt ( int roomId , double radiation ,


Date timeOfReading ) {
this . roomId = roomId ;
this . radiation = radiation ;
this . timeOfReading = timeOfReading ;
}

public int getRoomId () {


return roomId ;
}

public double getRadiation () {}

public Date g e t T i m e O f R e a d i n g () {}

}
35 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Propriedades de Eventos

Combinações também são possı́veis:


person.address(’home’).street[0]
36 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Modelo de Processamento

É contı́nuo: UpdateListener e/ou Subscriber são


utilizados para receber dados atualizados assim que o motor
processa os eventos utilizando a regra, os fluxos de eventos,
visões, filtros e taxas de saı́da definidos

As implementações devem prover um único método update()


que o motor chama quando os resultados estiverem disponı́veis

37 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Subscriber

Um objeto subscriber mapeia o resultado da execução de


regras CEP para um objeto Java
Deve prover um método update() para receber o fluxo de
eventos derivados do processamento CEP

38 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Insert Stream

Figura: select * from Withdrawal 39 / 81


Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Insert and Remove Streams (ex1)

Figura: select * from Withdrawal.win:lenght(5) 40 / 81


Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Filtros e Cláusula Where

Figura: select * from Withdrawal(amount>=200).win:lenght(5) 41 / 81


Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Filtros e Cláusula Where (ex2)

Figura: select * from Withdrawal.win:lenght(5) where


amount>=200

42 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Janela de Tempo - Time Window

Figura: select * from Withdrawal.win:time(4 sec)


43 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Janela de Tempo em Lote - Time Batch Window (ex3)

Figura: select * from Withdrawal.win:time batch(4 sec)


44 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Agregação e Agrupamento (ex4)

select count(*) as mycount from Withdrawal having


count(*) = 2
Alerta quando dois eventos do tipo Withdrawal tiverem sido
recebidos

45 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Agregação e Agrupamento (ex4)

select count(*) as mycount from Withdrawal having


count(*) = 2
Alerta quando dois eventos do tipo Withdrawal tiverem sido
recebidos
select avg(amount) from Withdrawal.win:time(4
sec)
Calcula a média dos saques realizados nos últimos 4 segundos

45 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Agregação e Agrupamento (ex4)

select count(*) as mycount from Withdrawal having


count(*) = 2
Alerta quando dois eventos do tipo Withdrawal tiverem sido
recebidos
select avg(amount) from Withdrawal.win:time(4
sec)
Calcula a média dos saques realizados nos últimos 4 segundos
select avg(amount) from Withdrawal.win:time(4
sec) having amount > 300
Calcula a média dos saques realizados nos últimos 4 segundos
caso haja pelo menos um saque com valor maior que 300

45 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

View Set Padrão (ex5)

Ex: select * from Withdrawal.std:firstevent()


std:firstevent(): retêm somente o primeiro evento que
chegar. Todos os eventos que chegarem após o primeiro serão
descartados.

46 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Parte II: Esper: Junções, Acesso


SGBD, Janelas Nomeadas e Tabelas

47 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Join em SQL

48 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Unindo Fluxos de Eventos

O join padrão é um inner join que produz eventos de saı́da


somente quando houver pelo menos um casamento em todos
os fluxos

Ex: select * from Temperature.std:lastevent(),


RadiationEvent.std:lastevent()

Esta regra gera como saı́da o último TemperatureEvent e o


último RadiationEvent em um evento de saı́da quando um
TemperatureEvent ou um RadiationEvent chegar.

Se nenhum TemperatureEvent for recebido antes de um


RadiationEvent, nenhuma saı́da será gerada

49 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Condições de União - Cláusulas Where

A seguinte regra retêm o último TemperatureEvent e


RadiationEvent pelo identificador da sala e realiza a junção
dos dois fluxos baseados no valor desta propriedade:

select * from TemperatureEvent.std:unique(roomId)


as t, RadiationEvent.std:unique(roomId) as n
where t.roomId = n.roomId;

Se um TemperatureEvent chegar contendo um identificador


de sala que não possua um RadiationEvent que case com
ele, não haverá evento de saı́da

50 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Condições de União - Cláusulas Where (ex 1)

select * from TemperatureEvent.std:lastevent(),


RadiationEvent.std:lastevent()
where TemperatureEvent.roomId = RadiationEvent.roomId
and TemperatureEvent.temperature > 300
and RadiationEvent.radiation > 3.5;

Gera um evento quando a última temperatura de uma sala estiver acima de


300 e última leitura de radiação acima de 3.5 para a mesma sala

51 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Acessando Dados Relacionais via SQL

Dados armazenados em um SGBD podem ser consultados


dentro de regras EPL

O Esper não inspeciona a consulta SQL. Portanto, pode-se


utilizar quaisquer extensões SQL ou funcionalidades providas
pelo SGBD

Esper mantêm os resultados de consultas SQL em uma cache


utilizando-se uma polı́tica configurável. Se nenhuma
configuração de cache for especificada, uma consulta ao
SGBD será realizada para cada evento

52 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Acessando Dados Relacionais via SQL

Junta um fluxo de eventos CustomerCallEvent com o resultado


de consulta SQL realizada em um banco de dados de nome
MyCustomerDB, tabela Customer

53 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Acessando Dados Relacionais via SQL

Também é possı́vel a utilização de vários SGBDs em uma única


consulta:

54 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Acessando Dados Não Relacionais Através de Invocação de


Métodos

Aplicações podem juntar dados obtidos a partir de serviços


Web, de uma cache distribuı́da, um BD orientado a objetos ou
simplesmente dados em memória através de uma chamada de
método a partir de uma regra CEP
O Esper pode ser configurado para armazenar em uma cache
os dados retornados a partir de chamadas de método

55 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Acessando Dados Não Relacionais Através de Invocação de


Métodos

O método lookupAsset provido pela classe MyLookupLib retorna


uma ou mais linhas basseadas no assetId, uma propriedade do
AssetMoveEvent.

56 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Acessando Dados Não Relacionais Através de Invocação de


Métodos

Esta regra demonstra o uso da cláusula Where para unir eventos a


linhas retornadas pela chamada de método, que neste caso não
recebe parâmetros.

57 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Janelas Nomeadas e Tabelas

Uma janela nomeada é uma janela de dados globalmente


visı́vel

Uma tabela é uma estrutura de dados globalmente visı́vel


organizada por uma chave primária

Através de janelas nomeadas e tabelas pode-se compartilhar


estado entre regras

58 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Exemplo de Janela Nomeada

Define uma janela nomeada na qual cada linha possui três


propriedades: symbol, volume, price. Esta janela nomeada
ativamente remove os eventos da janela que sejam mais antigos
que 30 segundos.

59 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Parte II: Esper: Padrões

60 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Operadores de Padrões

Operadores que controlam a repetição da sub-expressão do


padrão: every, every-distinct, [num], until

Operadores lógicos: and, or, not

Operadores temporais: operam sobre a ordem dos eventos ->


seguido-por

Guardas: condições where que controlam o ciclo de vida de


sub-expressões: timer:within, timer:withinmax,
while-expression

61 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Operadores de Padrões

Every
every (A -> B) : Detecta quando um evento A for sucedido
por um evento B
Repeat: Dispara quando uma sub-expressão contendo um
padrão é avaliada como verdadeira uma dada quantidade de
vezes
[5] (A or B) : dispara quando o último de cinco eventos A
ou B chegar
And
(A -> B) and (C -> D) : casa quando qualquer sequência
de um evento A seguido por um evento B e um evento C
seguido por um evento D, ou um evento C seguido por um
evento D e um evento A seguido por um evento B
ocorrer

62 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Exemplo de Padrão

Casa para cada evento ServiceMeasurement no qual o valor


da propriedade latency estiver acima de 20 segundos ou o
valor da propriedade success for falso
every indica que o padrão deve disparar para cada evento que
com ele casa e não apenas o primeiro evento a casar

63 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Operador Every

64 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Operador Every (ex 2)

65 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Parte III: Aplicações do CEP em


Computação Ubı́qua

66 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Density-Grid Clustering using Complex Event Processing


(DG2CEP)

67 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

DG2CEP EPN

68 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Avaliação do DG2CEP

69 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

O Middleware M-Hub/CDDL

M-Hub/CDDL é uma solução de middleware para facilitar o


desenvolvimento de aplicações de IoT/IoMT que possuem
múltiplos requisitos de QoC;

A solução combina um gateway móvel (o M-Hub) com uma


camada de distribuição de dados que provê, avalia e monitora
QoC (a CDDL);

70 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

M-Hub/CDDL em Cenário de AAL (Ambient Assisted


Living )

71 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Funcionalidades do M-Hub/CDDL

1 Suporte a mobilidade de gateways e smart objects

72 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Funcionalidades do M-Hub/CDDL

1 Suporte a mobilidade de gateways e smart objects


2 Sensoreamento oportunı́stico

72 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Funcionalidades do M-Hub/CDDL

1 Suporte a mobilidade de gateways e smart objects


2 Sensoreamento oportunı́stico
3 Gerenciamento de sensores e tecnologias heterogêneas

72 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Funcionalidades do M-Hub/CDDL

1 Suporte a mobilidade de gateways e smart objects


2 Sensoreamento oportunı́stico
3 Gerenciamento de sensores e tecnologias heterogêneas
4 Aquisição e avaliação de QoC em tempo de execução

72 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Funcionalidades do M-Hub/CDDL

1 Suporte a mobilidade de gateways e smart objects


2 Sensoreamento oportunı́stico
3 Gerenciamento de sensores e tecnologias heterogêneas
4 Aquisição e avaliação de QoC em tempo de execução
5 Descoberta de instantânea e contı́nua de serviços de contexto

72 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Funcionalidades do M-Hub/CDDL

1 Suporte a mobilidade de gateways e smart objects


2 Sensoreamento oportunı́stico
3 Gerenciamento de sensores e tecnologias heterogêneas
4 Aquisição e avaliação de QoC em tempo de execução
5 Descoberta de instantânea e contı́nua de serviços de contexto
6 Distribuição de dados de contexto local e remota

72 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Funcionalidades do M-Hub/CDDL

1 Suporte a mobilidade de gateways e smart objects


2 Sensoreamento oportunı́stico
3 Gerenciamento de sensores e tecnologias heterogêneas
4 Aquisição e avaliação de QoC em tempo de execução
5 Descoberta de instantânea e contı́nua de serviços de contexto
6 Distribuição de dados de contexto local e remota
7 Monitoramento de QoC

72 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Funcionalidades do M-Hub/CDDL

1 Suporte a mobilidade de gateways e smart objects


2 Sensoreamento oportunı́stico
3 Gerenciamento de sensores e tecnologias heterogêneas
4 Aquisição e avaliação de QoC em tempo de execução
5 Descoberta de instantânea e contı́nua de serviços de contexto
6 Distribuição de dados de contexto local e remota
7 Monitoramento de QoC
8 Provimento de múltiplos parâmetros de QoC

72 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Funcionalidades do M-Hub/CDDL

1 Suporte a mobilidade de gateways e smart objects


2 Sensoreamento oportunı́stico
3 Gerenciamento de sensores e tecnologias heterogêneas
4 Aquisição e avaliação de QoC em tempo de execução
5 Descoberta de instantânea e contı́nua de serviços de contexto
6 Distribuição de dados de contexto local e remota
7 Monitoramento de QoC
8 Provimento de múltiplos parâmetros de QoC
9 Abstrações de programação uniformes de alto nı́vel
baseadas no modelo publish/subscribe orientado
a tópicos
72 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

MHub

73 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Arquitetura do M-Hub/CDDL

74 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Uso de CEP no M-Hub/CDDL

1 Avaliação da QoC média de serviços providos por smart


objects em tempo de execução

2 Descoberta de instantânea e contı́nua de serviços de contexto

3 Monitoramento de QoC

4 Aplicação de Filtros

75 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Exemplo de Descoberta de Serviços Baseada em QoC

// Obttem referencia para o publicador padrao


Publisher publisher = DefaultPublisher.getInstance().

// Consulta a localizacao do publicador identificado


// como johndoe@example.com com acuracia menor que 5
String query = "serviceName = ’LOCATION’ and " +
"publisherID = ’johndoe@example.com’ and " +
"accuracy < 5";

// returnCode pode ser usado para cancelar a consulta continua


int returnCode = publisher.query(QueryType.CONTINUOUS, query);

// se, a qualquer momento, a aplicacao quiser cancelar


// a consulta acima, ela pode usar a instrucao abaixo.
// publisher.cancelQuery(returnCode)
});

76 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Exemplo de uso do Mecanismo de Monitoramento

// define um listener de monitoramento


IMonitorListener monitorListener = new IMonitorListener() {
@Override
public void onEvent(final Message message) {
// o evento de monitoramento aconteceu, faca algo.
doSomething(message);
};
// rega de monitoramento
String cepRule = "select * from pattern
[every A=SensorDataMessage -> B=SensorDataMessage
and A.accuracy <> B.accuracy] where A.serviceName = ’TEMPERATURE’
and A.publisherID = ’bertodetacio’";

// ruleId pode ser usado para remover a regra (ver cometario abaixo)
int ruleId = subscriber.getMonitor().addRule(cepRule, monitorListener);

// cancela o monitoramento usando a instrucao abaixo


// subscriber.getMonitor().removeRule(ruleId);

77 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

MHARS (Mobile Human Activity Recognition System)

78 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Ginga das Coisas (LSDi, Telemı́dia)

79 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Transporte: Ferramenta para Autoria e Detecção de


Restrições de Mobilidade em Tempo Real

80 / 81
Agenda Parte I: Conceitos Principais Parte II: Prática com Esper Parte III: Aplicações do CE

Transporte: Ferramenta para Autoria e Detecção de


Restrições de Mobilidade em Tempo Real

81 / 81

You might also like