概要

流程插件用于节点任务创建时或任务完成时触发,根据用户在流程配置界面的配置,来实现一些业务需求。

具体实现

# 1. 插件文件目录

目前系统中包含三种类型的插件:execution(放置所有执行类插件)、task(放置所有任务类插件)、usercalc(放置所有用户计算策略插件),如果是其他类型的插件,请建一个新的包来放置。当然,在bpmx-plugin-api和bpmx-plugin-core也需要对该类的插件增加相应的接口和抽象类支持。当前插件(任务节点调用restful接口)定义为task任务类插件,放置位置如下:

# 2. 定义插件运行实体

# 3. 定义插件运行时、插件上下文、插件定义

在restful插件目录下添加插件定义(def)文件,插件上下文(context)、插件(plugin)目录如下:

l 插件运行时(plugin)文件需要继承实现对应抽象类(目前系统中有:执行类(AbstractBpmExecutionPlugin)、任务类(AbstractBpmTaskPlugin)、用户计算类(AbstractUserCalcPlugin)),这里继承的是任务类(AbstractBpmTaskPlugin);插件定义和上下文也同样需要继承实现对应抽象类(Task、Execution、UserCalc),这里是继承任务类。

l 插件中具体业务逻辑请根据实际业务需求来实现,task对象可以获取当前流程的相关数据。此处为输出任务名称和配置的消息。

# 4. 插件在配置文件中声明、配置

插件目录开发完成后需要在BpmPluginConfig.java文件中声明、配置:

注意:插件bean注册的名称一定要按照插件的根节点名称+“PluginContext”的规则命名,因为代码中是通过String pluginContextBeanId = el.getLocalName() + PluginContext.PLUGINCONTEXT来获取的解析类。这里的根节点名称为:

test,所以bean的名称为:testPluginContext。

# 5. 插件应用

1、 保存插件数据(一般在PluginsController中新增方法保存数据):

2、 获取插件数据(一般在PluginsController中新增方法获取数据):

3,在前端按照插件运行实体(TestPluginEntity)调用后台接口传入json保存插件配置

4,配置插件数据后,任务创建、完成时(可在TestPluginContext的getEventTypes中自定义)就会检测到添加的插件,满足条件则触发运行。