本书认为所给出的上下文敏感信息服务模型应该达到这样的效果:不要求现有服务模型做任何修改,不必重新部署已部署的服务,在现有服务模型的基础上定义一个叠加服务模型。为此,本书借鉴了事件驱动架构中的基于内容的发布/订阅技术及ECA规则,给出了一种基于事件订阅和规则的上下文敏感信息服务模型。
从构成上看,一个上下文敏感信息服务由事件订阅信息、服务驱动规则、普通信息服务以及事件触发规则组成,如图5-10所示。
图5-10 上下文敏感信息服务的构成
对事件进行订阅的目的是期望当某个上下文事件发生时,能够及时通知订阅该事件的服务。当前对事件的订阅主要有三种模式:基于主题、基于内容和基于类型。本书中的服务对事件的订阅采用主题和内容相结合的方式,即在订阅时除声明事件主题的同时,还可以对事件的内容进一步约束。这种订阅方式从两个方面带来了好处:(1)由于可以针对事件内容进行订阅,使得订阅者能够更有针对性地订阅感兴趣的事件,降低了无用事件的干扰;(2)从发布事件的角度讲,保证了事件可以更准确地交付给最相关的信息服务。
事件订阅信息由四部分组成,包括订阅信息的标识、订阅者、所订阅事件的上下文事件和对事件内容施加的约束,其中内容约束用一个上下文要素的取值约束关系表达式进行描述。图5-11给出了一个订阅信息的实例,刻画了一个名为CustomerService的服务对“用户上下文”事件的订阅,其中Filter下的<Expression property="个人兴趣"operator="contains">17</Expression>表示该服务只对个人兴趣包含代码为17的兴趣分类的用户上下文事件感兴趣。
定义服务驱动规则的目的是期望系统在捕获到事件后,还可以进一步将事件内容传递到服务中。因此,服务驱动规则主要描述了被订阅事件与信息服务输入参数之间的映射关系。服务驱动规则由四部分组成,包括事件模板、所驱动的服务、事件类型(请求或响应)、事件内容与服务输入参数之间的映射关系。
定义事件触发规则的目的是期望系统能够根据当前服务的操作触发新的事件,而后又可以根据新触发的事件去驱动其他服务。因此,事件触发规则主要描述了服务输入输出参数与被触发事件之间的映射关系。事件触发规则主要由四部分组成,即要监听的服务、服务操作类型(如输入、输出)、要触发的事件、触发的事件类型(如Request和Response)、服务输入输出数据与事件内容之间的转换关系。
图5-11 事件订阅信息实例
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。