TreeviewCopyright © aleen42 all right reserved, powered by aleen42
事件订阅
一、应用场景
根据客户订阅的事件动作,YonSuite\YonBIP对用单据数据改变后,会将数据改变的单据信息根据注册的回调地址推送给三方。 目的:1、保证双方系统数据的实时一致性;2、通过事件订阅可以减少接口轮询获取单据变更的数据的情况。
二、基础入门
三、配置回调地址
- 登录业务系统 https://yonsuite.diwork.com/#/ 或者 https://yonbip.diwork.com/#/
- 进入API调用节点,选择自己添加的应用点击事件订阅
- 点击测试时还会校验appkey,appsecrect等解密 ,如果错误测试也会提示,参考二、回调解密
- 测试成功结果提示
四、回调解密
- 参考文档
五、添加事件订阅
- 只有添加了对应事件才能获取到相关回调。请注意!
六、JAVA代码示例使用说明
- 我们提供了JAVA代码示例,简单配置即可使用。(示例地址查看 四、基础入门)
6.1、回调地址配置参考
com.yonyou.isv.demo.openapi.base.module.isv.event.ISVEventListenerController#onEventNew
6.2、添加事件编码
- 添加事件编码: com.yonyou.isv.demo.openapi.event.IsvEventExtendType
- 编码对应参考下图事件编码
6.3、编写接收事件代码
package com.yonyou.isv.demo.openapi.event.todo;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Sets;
import com.yonyou.isv.demo.openapi.base.module.isv.event.ISVEventListener;
import com.yonyou.isv.demo.openapi.base.network.cryptor.EncryptionHolder;
import com.yonyou.isv.demo.openapi.event.ISVEventExtendDto;
import com.yonyou.isv.demo.openapi.event.IsvEventExtendType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.Set;
/**
* @description: 待办新增事件
* @author: nishch
* @create: 2021-07-05
**/
@Slf4j
@Component
@RequiredArgsConstructor
public class TodoAddEvent implements ISVEventListener<ISVEventExtendDto> {
/**
* TODO:在这里写待办的处理逻辑,如果返回true则继续执行下一个相同编码的事件,返回false不继续执行。
* @param type 事项类型
* @param event 解析后对象
* @param holder 响应消息体
* @return boolean
*/
@Override
public boolean onEvent(String type, ISVEventExtendDto event, EncryptionHolder holder){
String jsonString = JSON.toJSONString(event);
if (StringUtils.isNotBlank(jsonString)){
Map<String,String> info = JSONObject.parseObject(event.getContent(), Map.class);
Map<String,Object> result = JSONObject.parseObject(info.get("value"), Map.class);
log.info("todo id: {}", JSON.toJSONString(result));
log.info("todo webUrl: {}", JSON.toJSONString(result.get("webUrl")));
return true;
}
return false;
}
/**
* 如果存在相同事件编码的处理逻辑,此处用于执行排序
* @return int
*/
@Override
public int priority() {
return ISVEventListener.super.priority()-100;
}
/**
* 返回事件编码
* @return Set<String>
*/
@Override
public Set<String> supportTypes() {
return Sets.newHashSet(IsvEventExtendType.TODO_CENTER_ADD_TODO);
}
/**
* 返回接收实体对象
* @return Class<ISVEvent>
*/
@Override
public Class<ISVEventExtendDto> getEventClass() {
return ISVEventExtendDto.class;
}
}
6.4、测试
七、问题说明
1、请注意:待办事件订阅需要提交工单,研发老师给对应租户添加白名单后才能收到 2、其他事件用户自己添加后即可接收