如何订阅事件
使用说明
在低代码平台中,可以通过服务编排和BPM,来订阅事件。
场景介绍
如何自定义事件中,创建了一个记录应聘者是否被录用状态变化的事件。本章节向您介绍如何通过服务编排,来订购该事件。通过事件发送接口,模拟招聘经理给出招聘结果,通过订阅该事件,系统根据状态结果自动发邮件给人事部,通知人事部是否办理入职手续。
通过服务编排订阅事件
- 参考如何开发服务编排中操作,新建一个服务编排。
图1 新建一个服务编排
- 标签:新建服务编排的标签名,用于在页面展示。
- 名称:服务编排在系统中的唯一标识,创建后不可修改。
- 类型:新建服务编排的类型,本示例选择“Event Trigger”。
- Autolaunched Flow:自启动服务编排,即在接口调用后,会立即执行服务编排中定义的逻辑。
- Event Trigger:事件触发的服务编排,在事件触发时,才会开始执行服务编排中定义的逻辑。
- 事件:选择如何自定义事件中创建的事件(请确保事件已启用)。
- 描述:服务编排的描述信息。
- 在服务编排设计页面左侧,选择“逻辑”,拖拽“决策”图元至画布中。
该图元类似if语句的判断,用于在服务编排流程中创建判断条件,根据判断结果连线其他图元,决定后续执行何种操作。本示例需要设置应聘者被成功录用、应聘者没被录用和其他三个判断分支。
图2 拖拽决策图元至画布中
- 选中决策图元,单击,设置分支条件参数。
图3 pass分支条件配置
图4 unpass分支条件配置
可编辑的结果,即所有的判断条件。系统已预置默认条件,即当其他所有条件均不满足情况下,进入该分支。
本示例,需要新增如下两个判断条件:
- Pass:应聘者被录用。应聘通过时,事件中自定义的布尔类型参数“Result”赋值为全局常量“{!$GlobalConstant.True}”,表示结果为真,即应聘通过。
- Unpass:应聘者没有被录用。应聘失败时,事件中自定义的布尔类型参数“Result”赋值为全局常量“{!$GlobalConstant.False}”,表示结果为假,即应聘拒绝。
- 在服务编排设计页面左侧,选择“基本”,拖拽“发送邮件”图元至画布中。
发送邮件是发送邮件的接口。本示例中,需要根据录用结果,发送不同的邮件给人事部。
- 录用成功,需要邮件通知人事部办理入职。
- 录用不成功,需要邮件通知人事部告知应聘者应聘失败。
- 事件超时(默认分支),需要邮件通知招聘经理,看其是否给出招聘结果。
- 如下图所示,以应聘者被成功录用为例,设置发送邮件参数。
- 选中发送邮件图元,单击,设置基本信息。
图5 设置邮件发送基本信息
- 单击,设置邮件发送参数。
图6 配置邮件发送参数
- 邮件配置:可选择“直接编辑”手动设置邮件信息或“基于模板”选择邮件模板。本示例选择“直接编辑”。
- 主题:邮件的标题。
- 内容:邮件内容,需要使用事件变量“EmployResultNotify__e”。
- 地址:接收人的邮箱地址。
- 字符串:表示直接输入。
- 集合:表示可以拖入一个集合变量。
- 选中发送邮件图元,单击,设置基本信息。
- 参照5中操作,设置应聘者录用失败和超时邮件发送。
- 如图7所示,连接所有元素。
- 在服务编排设计页面上方,单击,保存服务编排。
- 保存成功后,单击,启用服务编排。
启用后,当有“EmployResultNotify”事件触发时,即会执行服务编排中定义的逻辑。
结果验证
通过服务编排订阅“EmployResultNotify”事件后,招聘经理需要给出招聘结果,即给“Result”赋值后,人事部经理才会收到招聘者是否被录用的邮件通知。即需要设置发送事件,订阅者才可以接收事件。
本章节,通过单独创建一个服务编排,来给应聘者Lily的应聘结果“Result”赋值,模拟事件发送。
- 参考如何开发服务编排中操作,新建一个服务编排。
图8 新建一个服务编排
- 在服务编排设计页面左侧,选择“基本”,拖拽“发送事件”图元至画布中。
Send Event为系统提供的,发送事件接口。
图9 拖拽发送事件图元至画布中
- 配置发送事件图元。
以应聘者Lily被成功录用为例,在“全局上下文”中,单击“变量”后的加号,新增变量,设置发送事件参数。
- 单击,进入全局上下文页面,新建一个变量variable0。
图10 新增一个变量
- 选中发送事件图元,单击,设置基本信息。
图11 设置发送事件基本信息
- 单击,设置发送事件。
图12 发送事件配置页面
- 事件:选择待发送的事件,本示例选择“命名空间__EmployResultNotify__e”。
- 分区字段:从事件中,选择一个自定义参数,用作Kafka的分区字段。设置后,会根据该字段值进行路由,相同的值将路由到同一个Kafka分区。如果不指定,则默认随机路由到不同Kafka分区,从而提升并发处理性能。
- 发送到外部:系统内部有配置与AstroZero相连Kafka的固定Topic(__BINGO_SYS_TOPIC)。
- 不勾选,表示将事件数据发到默认的Topic上。
- 勾选,表示将事件数据发送到与AstroZero相连Kafka的其他Topic上。
- 延迟到事务结束(提交或回滚)后才发送:是否延迟到该服务编排事务结束后,才发送事件。默认不勾选,即流程执行到该图元时,立即发送事件。
- 目标/源:该事件自定义的参数取值,请单击“新增行”,进行添加并赋值。本示例配置如下:
- “目标”选择“EmployName”:从“全局上下文 > 常量”中,拖拽新建的变量variable0到“源”中。
- “目标”选择“Result”:从“全局上下文 > 全局常量”中,拖拽应聘结果“{!$GlobalConstant.True}”到“源”中,表示应聘者Lily被成功录用。
- 单击,进入全局上下文页面,新建一个变量variable0。
- 连接开始和发送邮件图元。
图13 连线图元
- 在服务编排设计页面上方,单击,保存服务编排。
- 保存成功后,单击,运行服务编排。
- 设置输入参数,单击“运行”,运行后,才能发送该事件。
邮件接收者,收到邮件,验证成功。
图14 发送事件