当我们增、删、改一个实体，如字段时，就产生了一个字段变更的事件，这个事件需要广播给其他关联业务，关联业务对事件做出响应。

开发中需要我们关注两个概念：

1. 发布事件。（即事件实例）
2. 监听事件。（即监听器）

## 事件类型：

1. 本地事件（仅触发本地监听器）
2. 远程事件（仅触发远程监听器）
3. 通用事件（会同时触发本地监听器和远程监听器）

## 监听器类型：

1. 本地监听器（仅响应本地事件）：需要实现该事件类型基础监听器，并添加注解@Service，允许使用注解@AsyncListener来声明是否异步执行。一般在同服务内的业务使用。
2. 远程监听器（仅响应远程时间）：同上，但需要添加@RemoteListener来声明监听器为远程监听器。通过mq实现，一般用于多服务间事件，或事件响应削峰机制。

# 使用方法：

1、发布事件：

如事件还没有被定义过，则需要先定义事件相关的信息类、事件类型、基础监听接口及监听器的默认实现，不过目前一些大多事件已经定义过了，可以先略过此步。（目前已定义的事件包括表单、表格、字段、字段同步、视图，已定义的基础类包括事件类型、事件模块、事件消息、事件基础监听器等）。此部分不要求完全了解。

调用EventBusFactory. getCommonInstance（或getLocalInstance、getRemoteInstance）传入事件模块来获得一个事件总线示例，然后将事件信息填充，调用EventBus的post方法发布事件即可。如已有事件发布机制则无需再次发布。

[图片附件未整合: ../_assets/196731684735942656/001-c4dbc1e747.png]

2、监听事件：

创建一个实现对应事件的监听器，实现dealWithEvent方法。

       如：需要在表单更新的时候清除表单相关配置的缓存，则可以创建一个类实现ObjEventBusListener，在dealWithEvent中根据事件的类型、信息去刷新缓存信息。
