1.概述
JPAAS 微服务目前都是打成了一个个的JAR包,比如流程我们打成了一个 jpaas_bpm.jar ,有些情况下客户希望能够进行扩展开发,比如增加一个用户策略,增加一个通知类型,但是又不想把整个jpaas_bpm 代码开放给开发人员。
jpaas 实现了一种扩展方法,即将平台中的接口提供出来,并打成jar包。用户需要扩展的时候,自己创建一个jar项目,实现我们提供的接口,并打成jar包,这个jar 包,放到和 jpaas_bpm.jar 同级目录的 plugins 目录中这样就完成了扩展,下面就是具体的实现步骤。
2.打接口包
在JPAAAS-BPM项目中,我们需要将需要暴露的接口进行打包,这个包是客户开发扩展需要引用的JAR包。在项目中有一个build.xml文件,我们可以执行 buildInterfaceJar 打出一个接口包,之后将jar包上传到maven私服。
3.开发自定义扩展包
3.1 新建一个jar项目
因为我们需要对 项目进行接口扩展,因此,我们需要引入我们打的接口包。
在pom.xml文件增加接口包配置
<dependency>
<groupId>com.redxun</groupId>
<artifactId>jpaas-bpm-interface</artifactId>
<version>1.0</version>
</dependency>
3.2. 定义需要扩展的实现类
在实现我们的接口后,还需要再 META-INF/services 目录下进行注册。
增加文件:
- 文件名为接口类全路径
- 内容为接口实现类全路径,多个换行
3.3. 配置接口类列表
因为我们需要不同的微服务应用中也可能使用插件化的开发模式,因此我们将加载插件包的代码做成了公共的包,放到了 jpaas-common-core
中。应用如果需要加载哪些接口的实现类,需要在nacos中创建 应用名-dev.properties
配置。
并在配置中添加:
plugin.interface
,比如下图。
这样配置后,微服务应用启动时,程序会自动加载 plugins 目录下的jar包。然后读取这个 配置接口列表,去加载的jar包中,所有的接口实现类,并注册到 spring容器中。
3.4. 扩展程序打包
** 放入到jpaas-bpm.jar同级的plugins文件夹中,重新启动服务即可 **
4.接口列表
在jpaas-bpm 项目中,下面是我们可以扩展的接口列表,我们对每一个接口的扩展方法都写了实现的文档。
4.1.人员查询策略(ITaskExecutorCalc)
http://doc.redxun.cn/docs/jpaas/ITaskExecutorCalc
4.2.事件调用接口(IEventHandler)
http://doc.redxun.cn/docs/jpaas/IEventHandler
4.3.服务任务接口(IServiceTask)
http://doc.redxun.cn/docs/jpaas/IServiceTask
4.4.流程与任务处理器(ProcessHandler)
http://doc.redxun.cn/docs/jpaas/ProcessHandler
4.5.流程表单状态接口(IFormStatus)
http://doc.redxun.cn/docs/jpaas/IFormStatus
4.6.消息处理器接口(IMessageHandler)
http://doc.redxun.cn/docs/jpaas/IMessageHandler
4.7.流程跳过接口(ISkipCondition)
http://doc.redxun.cn/docs/jpaas/ISkipCondition
4.8.脚本函数接口(IScript)
http://doc.redxun.cn/docs/jpaas/IScript
4.9.处理任务服务(ITaskHandler)
http://doc.redxun.cn/docs/jpaas/ITaskHandler
4.10.时间计算处理器(ITimeLimitHandler)
http://doc.redxun.cn/docs/jpaas/ITimeLimitHandler