82.8. 事件流和入口点
决策引擎可以以事件流的形式处理大量事件。在 DRL 规则声明中,流也称为 入口点。当您在 DRL 规则或 Java 应用程序中声明入口点时,决策引擎会在编译时标识并创建正确的内部结构,以仅使用该入口点中的数据来评估该规则。
从一个入口点或流开始的事实,除了决策引擎的工作内存中外,还可以从任何其他入口点加入事实。事实始终与输入决策引擎的入口点保持关联。同一类型的事实可以通过多个入口点进入决策引擎,但通过入口点 A 输入决策引擎的事实永远不会从入口点 B 匹配。
事件流具有以下特征:
- 流中的事件根据时间戳排序。时间戳对不同的流可能具有不同的语义,但它们始终在内部排序。
- 事件流通常具有大量事件。
- 流中的 Atomic 事件通常不单独使用,仅适用于流。
- 事件流可以被同发布,包含单一类型的事件,或者异构事件,并包含不同类型的事件。
82.8.1. 声明规则数据的入口点 复制链接链接已复制到粘贴板!
您可以为事件声明入口点(事件流),以便决策引擎仅使用该入口点中的数据来评估规则。您可以通过在 DRL 规则中或明确在 Java 应用程序中引用入口点来隐式声明入口点。
�程
使用以下方法之一声明入口点:
在 DRL 规则文件中,为插入的事实指定
entry-point "<name>"
:使用 "ATM Stream" 入口点授权撤回规则
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 "Branch Stream" 入口点应用费用规则
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 法国应用程序的 DRL 规则示例都使用 fact checking
Account
,但从不同的入口点插入事件WithdrawalRequest
。在运行时,决策引擎仅使用"ATM Stream"
入口点中的数据来评估Authorize 撤回
规则,并使用仅使用"Branch Stream"
入口点中的数据来评估应用费用
规则。插入到"ATM Stream"
的任何事件都不能匹配"Apply Cost"规则的模式,插入到
的任何事件都永不与"
Branch Stream""Authorize withdrawal rule"
的模式匹配。在 Java 应用程序代码中,使用
getEntryPoint ()
方法指定并获取EntryPoint
对象,并相应地将事实插入到该入口点中:带有 EntryPoint 对象的 Java 应用程序代码并插入的事实
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,任何
从入口点"ATM Stream"
指定的 DRL 规则都会根据此入口点中的数据进行评估。