介绍FoxBpm如何实现发布连接器

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

猜你喜欢

转载自yangguangftlp.iteye.com/blog/2112344