我正在创建一个 CEP 引擎看起来很合适的系统(我需要检测多个流中事件之间的基于时间的模式)。检测到的事件需要在 WPF 应用程序中显示给最终用户,但并非所有用户都有权查看所有事件。
使用 CEP 引擎时,这通常是如何处理的?我是否需要在 UI 应用程序和 CEP 引擎之间增加一个服务层,还是可以在 CEP 引擎本身中完成?
我正在创建一个 CEP 引擎看起来很合适的系统(我需要检测多个流中事件之间的基于时间的模式)。检测到的事件需要在 WPF 应用程序中显示给最终用户,但并非所有用户都有权查看所有事件。
使用 CEP 引擎时,这通常是如何处理的?我是否需要在 UI 应用程序和 CEP 引擎之间增加一个服务层,还是可以在 CEP 引擎本身中完成?
我不确定在所有 CEP 引擎中是否有对这个问题的“通常”答案。CEP 引擎在它们提供的服务中实际上并不统一。
你用“streambase”标记了这个问题,所以我可以谈谈。StreamBase CEP 运行时在创建与服务器的客户端连接以从输出流中取出元组时支持用户身份验证。人们通常将其连接到他们的本地 LDAP 或 AD 服务器。
也就是说,至少在当前版本 (7.3) 中,StreamBase CEP 运行时中没有每元组出队授权/权利实施机制。
因此,当 StreamBase 用户想要执行每个元组的权利时,我们通常会引导他们在应用程序层构建它,或者使用其他一些可用的基础设施。例如,不要使用本机 StreamBase 客户端连接,而是使用 TIBCO EMS 或 IBM MQSeries 之类的适配器,并使用那里的每个主题/队列权利来限制访问。或者作为另一个示例,让 StreamBase 服务器在连接后将令牌发送回经过身份验证的用户,并使用该令牌作为客户端上使用出队拦截器针对 LDAP 进行权利检查的密钥。
或者,正如您所说,使用您自己的服务层。
StreamBase 组件交换中还有另一个“穷人的权利服务”示例。搜索“StreamBase 权利”。这使用内存或 JDBC 数据库来存储用户、角色和权利,并通过有效的运行时权利检查机制将它们应用到服务器端。但是与此的连接没有严格的运行时限制;它只是一个使用漂亮 UI 实现权利功能的示例。客户自愿遵守这些限制,这可能不是您所要求的。
披露/免责声明:我是 TIBCO Software, Inc. 的员工。此处表达的观点是我自己的观点,与 TIBCO 无关。