关于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/