85.8. 事件流和入口点
决策引擎以事件流的形式处理大量事件。在 DRL 规则声明中,流也称为 入口点。当您在 DRL 规则或 Java 应用程序中声明一个入口点时,决策引擎在编译时标识并创建正确的内部结构,以仅评估该规则。
个入口点或流中的事实(fact)也可以加入决策引擎工作内存中的任何其他入口点的事实。事实始终与输入决策引擎的入口点保持关联。同一类型的事实可以通过几个入口点输入决策引擎,但通过入口点 A 进入决策引擎的事实永远不会与入口点 B 的模式匹配。
事件源有以下特征:
- 流中的事件按照时间戳排序。时间戳可能有不同的语义,但这些语义始终在内部排序。
- 活动流通常具有大量事件。
- 流中的 Atomic 事件通常不会单独使用,仅在流中集中使用。
- 事件流可以是同构,并且包含单一类型的事件,也可以是异构类型,并且包含不同类型的事件。
85.8.1. 为规则数据声明入口点 复制链接链接已复制到粘贴板!
您可以为事件声明入口点(事件流),以便决策引擎仅使用该入口点中的数据来评估规则。您可以在 DRL 规则或您的 Java 应用程序中引用一个入口点,以隐式声明该入口点。
流程
使用以下方法之一来声明入口点:
在 DRL 规则文件中,为插入的事实
从入口点 "<name>"指定:使用 "ATM Stream" 入口点授权撤回规则
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 "Branch Stream" 入口点应用费用规则
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 银行应用中的 DRL 规则示例插入事件
WithdrawalRequest,其事实检查帐户,但来自不同入口点。在运行时,决策引擎仅使用"ATM Stream"入口点中的数据来评估授权撤回规则,并使用仅来自"Branch Stream"入口点中的数据评估应用费用规则。插入到"ATM Stream"的任何事件都无法匹配"应用费用"规则的模式,并且插入到"Branch Stream"的任何事件都无法匹配"Authorizeraw"的模式。在 Java 应用代码中,使用
getEntryPoint()方法来指定和获取EntryPoint对象,并相应地将事实插入到该入口点中:带有 EntryPoint 对象的 Java 应用代码并插入事实
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,任何从
入口点"ATM Stream"指定的DRL 规则仅根据此入口点中的数据进行评估。