有状态会话长期存在,并允许随着时间的推移进行迭代更改。 有状态会话的一些常见用例包括但不限于:
1. 监测
半自动买入股票市场监控与分析。
2. 诊断
故障查找,医疗诊断
3. 物流
包裹跟踪和送货配置
4. 合规
验证市场交易的合法性。
我们举例说明了用于提高火灾报警器的监控用例。 只使用四个类,我们假设Room代表房子里的房间,每个Room都有一个喷头Sprinkler。 如果在房间里发生火灾,我们用一个Fire实例来表示,用Alarm代表警报 。
public class Room {
private String name
// getter and setter methods here
}
public class Sprinkler {
private Room room;
private boolean on;
// getter and setter methods here
}
public class Fire {
private Room room;
// getter and setter methods here
}
public class Alarm {
}
当发生火灾时,会为该类别创建Fire类的实例,并将其插入到会话中。 该规则使用Fire对象的房间字段上的绑定来约束与当前关闭的房间的喷水灭火器的匹配。 当此规则触发并且执行结果时,喷头被打开。
rule "火灾发生时,打开洒水器"
when
Fire($room : room)
$sprinkler : Sprinkler( room == $room, on == false )
then
modify( $sprinkler ){ setO