事件驱动(业务)架构(EDA)有助于构建高效的价值链,从而产生和交换高质量的数据。将本体论和业务规则视角加入事件驱动架构,有助于进一步提升其效率和效能。本文将演示其工作原理。
我们首先描述了采用事件驱动架构(EDA)的企业如何构建:
ü 事件驱动型企业由多个业务能力组成,作为一个或多个价值链的独立部分协同工作,向客户交付一个或多个业务产品和服务;
ü 每个业务能力是一组业务活动的组合,在特定条件下,由新业务事件触发,执行业务实体的业务规则,并发布通知这些业务实体状态已更改的业务事件。
这里面的信息真是丰富!那么,让我们逐步拆解这个描述,分别定义加粗字体中提到的每个元素。我们以一个具体的例子来说,一家拥有价值链的电子商务企业,提供更多的履约业务服务。我们将对同一例子使用三种视角:1)本体视图,2)事件链视图,3)业务规则视图。
如果你不知道什么是本体论或业务规则,请先看看这篇文章:本体论和业务规则的区别。
视角一:本体论视角
由于事件驱动架构非常注重数据,我们将从图1所示的本体视图开始。图1所示的两个核心元素是业务实体和业务事件。我们将从解释这两个要素开始分解。

图1:数据视图
商业实体:代表在特定商业环境中使用的有形事物或虚拟概念。你可以从用来指代实体的<名词>中认出实体。如图1所示,电子商务示例中使用的实体包括:“客户”(同时也是参与者)、“订单”、“发票”和“付款”。指定商业实体的一个重要要求是给出一个恰当的定义。例如,“订单”被定义为:“客户发出的具有法律约束力的确认,表明他们想购买什么以及愿意为此支付多少钱”。为所有业务实体提供清晰定义,可以防止沟通误解,并提高在更广泛价值链中企业实体生命周期内保持高数据质量的可能性。图1中你还可以看到企业实体之间可以相互关联。这些商业实体之间的相互关系通过以下句子结构表达:<主语名词> <动词><宾语名词>。本质上,这就是构建所谓的本体论的方式。我们的电子商务模式示例如下:
ü 顾客下单
ü 客户收到发票
ü 客户做支付
ü 订单产生发票
ü 发票需要付款
商业事件:是关于商业实体状态变更的公告。事件名称通常结合了<名词>,后者代表涉事企业实体名称,后跟状态变化,例如“已创建发票”或“已收到付款”。在任何时间点,一个商业实体都可以有多种状态之一。在我们的例子中,“订单”商业实体可以处于以下状态之一:“已放置”、“验证”、“最终确定”或“确认”。企业实体的创建或状态变更,导致业务事件发布,是业务活动执行一项或多项业务规则的结果。
视角二:事件链视图
为了继续解析事件驱动架构的定义,我们现在切换到图2中电子商务示例的事件链视图。图2展示了业务能力之间的整个交互,从“客户”(左侧)执行业务活动“下单”开始,到“客户”收到“订单确认”业务事件通知结束。这里发生了很多事情,接下来我们一步步讲解剩余术语。

图2:过程视图
业务活动:是一种业务行为(动作),能够实现特定结果,例如创建企业实体的状态变化。我更喜欢用“活动”这个词来形容“过程”,因为那不意味着任何预制/固定的工作流,而这对事件驱动环境来说影响较小。你可以通过活动名称识别,比如<动作动词> <名词>,其中<名词>指代商业实体。例如,我们电子商务示例中的“下单”活动,最终创建了一个“下单”业务实体。当业务活动创建新业务或更改现有业务实体时,会发布业务事件以通知其环境。
业务能力:是基于一组选定标准(通常是所需的业务资源和/或能力)对业务活动的组合。那么,业务活动是如何组合成业务能力的呢?这并非一门精确的科学,在某种程度上更像是一门艺术,具体取决于你所遵循的业务架构风格。在事件驱动架构(EDA)中,你通常会看到业务能力是一组业务活动的集合,这些活动共同致力于实现与特定业务实体相关的既定成果。为了让这一点更具体,我们来看一下示例中的“计费”业务能力。该业务能力包含所有协同工作的业务活动,这些活动旨在实现发票的“创建”“发送”以及与收到的付款进行匹配,最终达到“已付款”状态。
事件链中的工作流程
如前所述,EDA中没有硬编码的工作流程。业务活动(作为业务能力的一部分)执行的顺序取决于:业务活动之间的发布与订阅之间的相互关系是什么?这意味着任何业务活动都可以在很大程度上自主决定它将以哪些业务事件作为执行其行为的条件。例如,我们本可以以“订单验证”业务活动作为触发条件,来建模“完成订单”业务活动的行为。这将导致不同的工作流程,即“订单”在收到“验证”状态后立即触发“最终”和“确认”。账单能力随后会最终实现“已付款”状态。实现这种替代工作流程所需的实际变更非常小,因为它只需在“最终订单”业务活动中移除一个业务事件条件。这是事件驱动业务架构的一个重大优势。
观点三:商业规则视图
最后一个简要主题是商业规则。这实际上是一个非常广泛的话题,存在许多不同形式的商业规则。我们只会介绍对事件驱动业务架构极为相关的业务规则类型:动作规则。动作规则总是至少包含两个部分:条件(“何时”部分)和动作(“然后”部分)。我们电子商务价值链中的一个业务规则示例如下:
ü 当订单被验证并支付该订单产生的发票后,该订单即被敲定。
颜色编码是为了更方便地阅读商业规则。红色表示指导业务规则语法并使其成为(受控)自然语言句子的词(例如:当和然后)。企业实体以下划线绿色标示。表示企业实体之间关系的动词用斜体蓝色书写。业务对象的状态变化以粗体紫色表示。
结论
通过生产和消费的业务事件连接业务活动(按业务能力分组),形成价值链。这种价值链能够以非常高效且以行动驱动的方式向客户(或其他类型的消费者)提供业务服务,这得益于行动规则。工作流程的变更可以轻松进行,而对业务能力的影响很小。因此,如果你想打造高效且灵活的业务,可以尝试包含本文中展示的本体论和业务规则视角的事件驱动架构。这会让你的工作轻松很多!Together正是以这种方式构建事件驱动架构的理想平台。