基于EDA架构的协同平台的研究与实现

2019-11-05 17:13时应友
中国信息化 2019年9期
关键词:发布者调用耦合

时应友

本文以行业精益管理对业务高度协同为出发点,分析SOA在事件响应与处理方面的固有缺陷,引入事件驱动(EDA)概念,探讨EDA架构对协同管理的支撑,研究事件驱动的关键技术,重点剖析事件的规范化描述以及事件驱动的原理,提出一种基于EDA架构的协同平台框架的设计思路和实现方法,最后以“基于EDA架构的协同办公平台”为背景,将该架构应用于实际系统中加以实现。

一、背景及现状

近年来,烟草行业通过增加产量和提升产品结构实现了快速发展,但依靠外延式发展的潜力和速度难以持续,导致重点费用控制艰难、适应市场能力不强、运行效率不高等问题。精益管理的本质就是利用最小的资源创造最大的价值,改变传统管理理念和行为模式,优化资源配置,推进管理创新,注重信息化支撑,不断优化价值流程,持续提升企业管理水平。

精益管理对应用和服务之间的协同要求日益提高。一般情况下企业内部协同是通过工作流实现,外部协同则通过SOA等实现。近年来,基于SOA架构的协同可实现跨系统、跨组织的流程协作,在一定时期、一定程度上实现了对协同的支撑,但对极端松耦合、高效率、易扩展等支撑并不令人满意。请求/响应的服务模式主要支持同步的服务调用和执行,即服务请求者发出请求后,在请求者和提供者间须维持一个链接直到请求者收到响应。这就产生了两个问题:一是请求者和服务者必须知道彼此的存在,二是如果得不到响应,请求者不得不采用轮询方式不断发出请求。事实上,协同的请求往往是来自分布式的、不可预知的应用或服务。这种线性的协同模式不能很好支撑不可预知、松耦合、异步的系统或服务间的协同。

理想的协同环境下,流程是通过事件触发。因此,本文将事件驱动的方法和面向服务的方法相结合,引入了EDA作为协同平台的支撑。

二、总体结构设计

EDA是Gartner公司2003年提出的一种设计和构建应用的方法,EDA也称为事件驱动的SOA,与SOA是两种相容且互补的架构。二者最明显的区别是,SOA采用请求/响应服务机制,EDA通常采用发布/订阅机制。请求/响应服务服务模式中,发布者和使用者是一对一的关系,服务使用者调用发布者提供的服务,且必须等待,直到提供者一端的操作完成。而消息发布/订阅模式可实现事件的一对多灵活分发:发布者将事件发布到中央处理主干上,传递给多个订阅者,其可让事件的发布者和订阅者之间彻底解耦。

EDA与SOA是两种相容且互补的架构。一个典型的事件驱动模型由事件发布者、事件订阅者、事件管理器和服务注册中心组成。在事件的发布者和订阅者之间要通过事件和服务的注册中心来连接两者。如图1所示:

事件发布者(或事件源)生成事件。事件发布者可以是应用程序、数据存储、服务、业务流程、发送器、传感器或者协作工具。事件订阅者接到事件时,由其确定触发哪些处理,包括(但不局限于)调用一个服务或启动一个业务流程,将事件发布到一个订阅中心,直接通知人员或系统,生成一个新事件,以及捕获事件以备用。

EDA架构本质上是一个极端松耦合且高度分布的框架,事件的发布者只需发布这个事件,并不需要了解会引发什么事情,也不需要知道订阅者的信息,事件的发布者和订阅者也不必同时处于活动状态。相应的,事件订阅者也只需接受事件,并根据规则执行下一动作,并不需要知道事件是由谁引发的。

从以上特性可以看出,EDA具备非实时、异步、极端松耦合等特性,它将传统的轮询模式转化为了事件驱动的推动模式,这就意味着事件触发的消息能够在独立的、非耦合的组件和服务之间传递,实现表面上毫无关联的应用或服务之间的整合。因此,EDA是解决SOA松耦合通信与协同服务的理想解决方案,它不仅是激活和驱动分布式系统的直接动因,也是进一步构建分布式对象管理的基础。

基于EDA架构是最近研究的热点之一。Brenda M. Michelson提出了一个实现EDA架构的模型,把实现EDA架构的组件分为五类:

事件元数据(Event Metadata),包括事件描述(Event Specifications)和事件处理规则(Event Processing Rules)。

事件处理(Event Processing),包括事件处理引擎(Event Processing Engine)和事件数据(event occurrence data)。

事件工具(Event Tooling),包括开发工具和管理工具,开发工具用于设定事件的描述和事件处理规则,管理工具则提供可视化的流程监控、干预以及统计分析功能。

企业集成主干(Enterprise Integration),實现对事件的预处理(过滤、路由、转换等)、事件通道传输、服务调用、业务流程调用、事件发布订阅和企业信息访问等功能。

集成资源和目标(Sources and Targets),包括企业应用、服务、业务流程、数据库、人、代理(agent)等企业资源。

在上述基础上,本文设计了一种基于EDA架构的协同平台模型,如图2所示:

核心内容包括以下几个部分:

企业服务总线(ESB:Enterprise Service Bus):松散耦合服务和应用之间标准的集成方式,承担解耦中介的角色,在EDA架构中提供服务注册中心和事件注册中心,实现协议转换、消息转换、消息路由等功能;提供服务等级协议、服务管理监控等管理功能。

本体(Ontology)服务器:理清事件之间的逻辑关系,提取事件的关键词,为接下来的服务编排处理做好准备。本体服务器提供明确定的词汇表,描述概念与概念之间的关系,实现对事件的规范化描述,使事件能够被响应方识别。

事件管理器:是平台的中央控制器,是对外沟通的窗口,负责响应外部用户的要求,并按要求给系统中的EDA或SOA元件分配任务。它负责与事件注册中心、规则引擎、BPM、Ontology本体服务器进行交互和调度。

规则引擎:解析、调用、执行规则包的服务,由推理引擎发展而来。一个业务规则包含一组条件和在此条件下执行的操作,规则引擎定义了在什么条件下触发一个规则,以及当规则被触发后,执行规则对应的流程。

业务流程管理(BPM: Business Process Management):通常包括建模与设计、部署与执行、监控与分析、优化与调整、工作流引擎、流程仿真、流程监控、流程KPI分析、等工具,可以完成流程的编排、运行,可视化监控流程的执行情况,对流程执行过程中出现的意外进行处理,对流程执行的情况进行统计、分析。

开发工具和管理工具:开发工具用于对事件的描述、对事件处理规则的设定,管理工具提供可视化的流程监控、干预以及统计分析功能。

基于EDA架构的请求/响应行为模型如图3所示,其工作流程如图4所示。

三、技术实现

(一)事件模型

事件实际上是指事情的记录,以基本形式表示的事件可以提供丰富的内容,通常它包含了事件发生的时间、来源及相关数据,以及希望返回的结果等。事件模型用XML格式描述,用schema验证。

(二)事件驱动模型

事件架构通常包括事件通道、事件发布者和事件接收者。事件通道负责注册和取消注册事件接收者,并负责将事件消息从事件发布者以匿名方式路由到事件接收者。下面的框架给出了事件通道功能,即根据事件对象实现的Java 类或接口的类型,来过滤消息,并将消息路由到适当的接收者。如图5所示:

当事件管理器接收到一个事件,调用本体服务器对事件本身进行规范化描述,并调用规则引擎,明确调用流程的走向,最后把流程传递给BPM,由BPM调用相应的流程(或一组流程),程序片段如下:

public static Object invokeAction(String process, String activity, String action, String executor, String executeContext, Map events)

调用Action

参数:

String process process流程标识, 带路径

String activity activity活动标识

String action action动作标识

String executor 执行者

String executeContext 执行环境

Map events 事件参数

返回:

Object //包含了根据事件<返回要求>规定的格式化信息,或是产生新的事件等。

可以触发多个流程:

public static List invokeActions(List processes, List activities, List actions, List executors, List executeContexts, List events)

调用多个Action

参数:

List processes process流程标识列表, 带路径

List activities activity活动标识列表

List actions action动作标识列表

List executors 执行者列表

List executeContexts 执行环境

List events 事件参数列表

返回:

List 返回每个流程处理后的结果。

四、应用效果

基于EDA架构的协同办公平台以组织战略目标和阶段目标为核心,以目标分解后的任务为驱动,以规范化的流程、高度共享的信息、即时快捷的沟通为纽带,为决策、管理、執行层提供统一、规范、高效的基础管理和协作平台,通过绩效管理体系实现人员、任务、目标的三级量化考评,为决策和目标的提升提供依据。系统主要由统一信息门户、移动门户、目标管理、体系管理、综合事务管理、绩效考核、对标管理、创新管理、创优管理、知识管理、决策支持等核心应用体系构成。

基于EDA架构的协同平台提供的这种异步、极端松耦合的协同机制,很好地满足了不可预知的、复杂的异构应用系统或服务间协同的需求,有效解决了信息孤岛、应用孤岛和资源孤岛三大问题,实现跨部门、跨组织、跨系统的流程互联和数据交换,满足组织上下贯通、左右协同的需求。协同平台作为支撑组织管理和业务活动的核心应用,承载着组织意图、战略管控、制度运行、事务处理、绩效考核、知识型和学习型组织建设等业务落地。

五、总结

本文分析了企业业务协同中存在的问题,探讨了基于事件驱动的架构对协同的支持,以及实现事件驱动思想的关键技术,在此基础上给出了事件模型以及一个基于事件驱动的协同模型,分析了协同模型的各组成部分及事件驱动机制工作的原理,重点探讨了事件的规范化描述以及事件驱动的原理,并提出了基于EDA架构的协同办公平台的设计与应用实现。

猜你喜欢
发布者调用耦合
高效降解菌耦合颗粒生物活性炭处理印染废水
新加坡新法规引争议
新疆人口与经济耦合关系研究
新疆人口与经济耦合关系研究
瑞萨电子推出光电耦合器适用于工业自动化和太阳能逆变器
基于INTESIM睪ISCI的流固耦合仿真软件技术及应用
在微信朋友圈买到假货,该如何维权?
基于Android Broadcast的短信安全监听系统的设计和实现
网络大V转发违法广告须担责
寓言