1 页面效果
在【服务管理】中完成添加外部系统之后,需要对外部接口进行授权。外部接口管理页面在【集成管理】-【接口授权】,如下图
点击“添加”按钮,即可为指定的外部系统分配特定的外部接口,如下图:
2 申请外部接口访问的Token
添加完外部系统之后,假设需要访问bpm-model模块下的流程分管授权的event事件接口。步骤如下:
1、添加对应的外部系统。
2、对指定的外部接口进行授权。
3、申请访问外部接口的token。通过/apiManager/getToken接口进行获取权限,该接口位于GetApiTokenController.class
此处有两个参数说明:
sysCode:即外部系统编码
secreKey:即密匙
如果验证通过,则Token的有效期为24小时。
3 访问外部接口
获取到访问外部接口的Token后,需要通过以下方式进行访问。注意,外部接口统一有一个前缀,默认为 “openApi”,然后需要在请求头那里携带上刚刚申请的token。格式为
Authorization Bearer token (注意Bearer后面有一个空格)
当访问未被授权的外部接口时,就会提示权限不足。
4 外部接口调用日志
查看记录每一个外部接口的调用日志。可在【系统配置】-【系统日志】-【外部接口调用日志】中查看,如下图。
5 外部系统消息日志
如果在外部系统配置了消息队列,那将会在发送消息时,把流程的相关消息转发到该队列。相关的业务逻辑在TaskNotifyEventListener.java。所以要触发该功能,需要携带上sysCode。
然后需要自定义队列的监听器,也就是消费者,注意下图的destination必须要与外部系统配置的消息队列名一致。
下面利用外部url表单发起流程,测试该功能是否正常。注意:下图的sysCode必须要与外部系统中,指定的系统编码一致。
发起流程后,我们可以在流程管理页面看到,会新增一个流程实例。
同时,也可以看到流程的相关信息也被转发到指定的队列里
我们的消费者已经成功消费消息。后续如果需要做功能扩展,可以在此处进行开发。
所有的外部接口调用记录,可以在这个页面查看
如果我们把启动流程的外部接口去掉授权,那么我们是无法通过外部接口直接启动流程的。
6 新增外部接口
我们总结出了平时调用得最多的接口,我们把这些接口,抽离放到controller目录下,且单独新建一个openController目录,如下图。
外部接口需要在controller上面添加@OpenApi注解,该注解有下面四个属性。
需要在外部接口类上面指定moduleName、和function这两个属性,可参考下图。另外,每一个接口都需要使用@ApiOperation这个注解,特别是value这个字段。原因在于,在切面中,定义的切入点表达式需要有@ApiOperation注解。
图 定义外部接口
图 切入点表达式
7 使用外部接口的OpenFeign远程调用功能
为每个外部接口都创建了远程调用的接口。具体在api-manager目录。注意:下面的FeignClient只适合在微服务部署的情况下调用。
在需要引用该外部接口的OpenFeign接口的情况下,则需要在对应的微服务的pom文件引入该依赖。
然后注入调用即可。
8 注意事项
该功能需要启用Redis和消息中间件(如ActiveMq)。