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