关于FoxBPM连接器前面单独做过介绍,本章介绍FoxBPM如何发布连接器。
有关连接发布配置在foxbpm.cfg.xml文件中
<resourcePathConfig>
<resourcePath id="foxbpmflowconnector" name="流程连接器路径"
type="flowConnector" projectName="foxbpm-connector"
virtualPath="src/main/java/org/foxbpm/connector/flowconnector/" src="org/foxbpm/connector/flowconnector/" />
<resourcePath id="foxbpmactorconnector" name="处理者选择器路径"
type="actorConnector" projectName="foxbpm-connector"
virtualPath="src/main/java/org/foxbpm/connector/actorconnector/" src="org/foxbpm/connector/actorconnector/" />
</resourcePathConfig>
注意:这里配置有两个用途:
1、foxbpm-rest服务通过以上配置来发布连接器信息 ;
2、FoxBPM流程设计器需要获取以上配置来进行读取连接信息;
以上是两个resourcePath节点项是FoxBPM默认提供的连接器。
下面介绍下resourcePath 节点属性项:
id:一般唯一编号;
name:名称;
type:这里目前只支持(flowConnector、actorConnector)其中一个;
projectName:存在的工程名称,这里需要注意的是:这个项目名称和最终打包名称必须一致;
virtualPath:这里注意是获取或者写入连接器资源信息;
src:包路径;
注意:路径分隔使用/
关于FoxBPM连接器发布
1、关于FoxBPM连接器发布是有foxbpm-rest服务来完成的,foxbpm-rest服务启动过程会通过FoxBPM流程引擎来获取foxbpm.cfg.xml文件中配置的连接器信息
1、获取连接器资源信息
Map<String,Map<String,String>> pathMap = new HashMap<String,Map<String,String>>();
ProcessEngineConfigurationImpl processEngineConfigurationImpl = ProcessEngineManagement.getDefaultProcessEngine().getProcessEngineConfiguration();
ResourcePathConfig resourcePathConfig = processEngineConfigurationImpl.getResourcePathConfig();
List<ResourcePath> resourcePaths = resourcePathConfig.getResourcePath();
2、处理连接器资源
for(ResourcePath path : resourcePaths){
if("flowConnector".equals(path.getType()) || "actorConnector".equals(path.getType())){
Map<String,String> pathList = pathMap.get(path.getProjectName());
if(pathList == null){
pathList = new HashMap<String, String>();
pathMap.put(path.getProjectName(), pathList);
}
pathList.put(path.getType(), path.getSrc());
}
}
for(String key : pathMap.keySet()){
Map<String,String> pathList = pathMap.get(key);
if(pathList ==null){
continue;
}
for(String tmp : pathList.keySet()){
String dirPath = pathList.get(tmp);
URL url = this.getClass().getClassLoader().getResource(dirPath);
if(url == null){
log.warn("位置:" + dirPath + " 不存在,跳过不处理");
continue;
}
String urlStr = url.toString();
String jarPath = urlStr.substring(0, urlStr.indexOf("!/") + 2);
URL jarURL = new URL(jarPath);
JarURLConnection jarCon = (JarURLConnection) jarURL.openConnection();
JarFile jarFile = jarCon.getJarFile();
Enumeration<JarEntry> jarEntrys = jarFile.entries();
while (jarEntrys.hasMoreElements()) {
JarEntry entry = jarEntrys.nextElement();
String name = entry.getName();
if(name.startsWith(dirPath) && !entry.isDirectory() && !name.endsWith(".class")){
处理连接器的配置文件....
}
}
log.debug("位置:" + dirPath + " 处理完毕");
}
}
foxbpm-rest服务启动完成后,会在foxbpm-webapps-base服务的WEB-INF\classes\目录下生tmpConnectorZipFile.zip中
注意:这时候还需要检查设计器中配置的rest服务地址和本地缓存地址是否都配置正确 ;window-->preferences-->流程设计器;
保证以上配置都正确后,我们再点击“同步设计器” ,会提示如下信息
点击确定后会在d:/ba目录下生成serviceFiles\connector\foxbpm-connector\连接器信息,这里说明FoxBPM连接器发布完成了。
接下来我们可以创建一个bpmn文件来验证下,在流程图上点击一个人工任务选择“任务分配”,或“连接器”点击看是否能正常出现连接器配置界面。
详情请关注FoxBPM,官方地址:https://github.com/FoxBPM/