您好,欢迎来到微智科技网。
搜索
您的当前位置:首页epl

epl

来源:微智科技网


目录

目录 ............................................................................................................................................................................................... 1 第1章EPL开发环境 .................................................................................................................................................................... 2

安装 ....................................................................................................................................................................................... 2 APAMA自带EPL资料 ........................................................................................................................................................... 2 第2章EPL语言 ............................................................................................................................................................................ 2

基本类型 ............................................................................................................................................................................... 2 语句 ....................................................................................................................................................................................... 3 Event ...................................................................................................................................................................................... 7 Monitor .................................................................................................................................................................................. 9 Listener .................................................................................................................................................................................10 Stream ..................................................................................................................................................................................10 第3章EPL与事件驱动 ..............................................................................................................................................................11

描述事件 .............................................................................................................................................................................11 处理事件 .............................................................................................................................................................................11

第1章EPL开发环境

安装

APAMA自带EPL资料

1. APAMA安装目录下/doc/index.html

2. APAMA安装目录下/doc/pdf/*.pdf

3. APAMA安装目录下/samples/monitorscript

第2章EPL语言

基本类型

1. boolean 布尔,只有true和false2个取值

2. integer 8字节有符号整数

3. float 8字节浮点数

4. string字符串

5. sequence 数组,Value类型可以是boolean、integer、float、string、sequence、dictionary和event。

6. dictionary 字典,Key可以是boolean、integer、float、string、sequence、dictionary和event。

语句

1. 变量声明

类型 变量名;

boolean b1;

string s1 := “hello”;

dictionary dictionary;

2. 变量赋值

使用:=作为赋值操作符

float threshold := 0.005;

integer myMoney;

myOrders := new

myMoney := -250;

3. if/else

if (判断条件) then {

}

if (判断条件) then {

} else {

}

if (判断条件) then {

} else if (判断条件) then {

} else {

}

4. 判断语句

=表示等于,>表示大于,<表示小于,>=表示大于或等于,<=表示小于或等于,not表示非,and表示并且,or表示或者,

if (myBookNum > 1000) then {

log “我有好多书”;

if (haveReadNum = 0) then {

log “,一本也没读”;

} else if not (haveReadNum>500) then {

log “还好读了几本”;

}

}

5. for

for 变量 in sequence<> {

}

string s1;

sequence sq1 := new sequence;

for s1 in sq1 {

log s1;

}

dictionary dic1 := new dictionary;

for s1 in dic1.values() {

log s1;

}

6. while

while 判断条件 {

}

integer k := 0;

while k < 250 {

log k.toString();

k := k + 1;

}

Event

event 事件名 {

类型 变量名;

action 函数名(参数列表) 返回值 {

}

}

action可以作为类型

self类似this

package sample.epl.basics;

event BookId {

string name;

}

event MyBookStore {

dictionary book_set;

string store_name;

dictionary > observerMap;

action storeBook(BookId id,integer num) {

if book_set.hasKey(id) then {

book_set[id] := book_set[id] + num;

} else { book_set.add(id, num); }

action ab;

if (self.book_set[id] > 0) then {

ab := self.observerMap[id];

ab(id);

} else { self.book_set.remove(id); }

}

}

Monitor

monitor 名字 {

action onload() {

这是必须函数,在monitor注入时被调用

}

action ondie() {

在die被调用,即monitor实例销毁时被调用

}

action onunload() {

在monitor被卸载时调用

}

}

Listener

listener是一个类型

listener 变量名 := 事件listener

事件listener使用on关键字,all表示所有,没有all表示一次

OrderUpdate ou;

listener l1 := on all OrderUpdate() : ou{

log ou.toString();

}

Stream

stream是一个类型

stream<类型> 变量名 := 事件stream

stream sk := all K();

stream文档主要有:APAMAAPAMA

安装目录下doc/pdf/ doc/pdf/

ApamaEPLStreamsAShortTour.pdf, 安装目录下

developing_epl.pdf中Working with streams and stream queries这一章。

第3章EPL与事件驱动

描述事件

采用EPL可以很方便的描述事件。

处理事件

1. 简单处理

APAMA外部给correlator发送一个事件,然后correlator触发相应的listener

com.apama.marketdata.Depth d;

on all com.apama.marketdata.Depth():d {

log d.toString();

}

在收到com.apama.marketdata.Depth(“abc”,[],[],[],[],[],{})事件,correlator运行相应的epl代码

2. 复杂处理

a) 通过编写epl代码,产生事件流

event A { integer a; }

event B { integer b; }

event C { integer c; }

on all A() : a { route B(a.a+1); }

on all B() : b { route C(b.b+1); }

on all C() : c { log “你中奖了”; }

b) 通过stream进行事件的聚合

3. event Book {

4. string name;

5. float price;

6. }

7. event SelectBook { string name; float price; float avgPrice; }

8. monitor BookStreamTest {

9. action onload() {

10. stream bs := all Book();

11. stream fs := from b in bs retain 1000 select

com.apama.aggregates.avg(b.price);

12. SelectBook sb;

13. from b in bs from f in fs where b.price>f select SelectBook(\"select \" +

b.name,b.price,f) : sb {

14. }

15. }

16. }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务