This topic applies only to the IBM Business Process Manager Advanced configuration.

创建 XPath 函数 JAR 文件

通过创建包含 Java™ 服务提供程序插件的 XPath 函数 Java 归档 (JAR) 文件,定义您的定制 XPath 扩展函数。

关于此任务

XPath 扩展函数作为静态 Java 方法来实现。这些 Java 方法通过 Java 服务提供程序插件向流程运行时环境公开。 XPath 扩展函数只能在业务对象惰性解析方式下使用。

过程

  1. 在 Java 透视图中,创建 Java 项目。
  2. install_root/runtimes/bi_v8_stub/runtimes 目录中的 bpc_apis.jar 外部 JAR 文件添加至构建路径,其中 install_root 是安装 IBM® Integration Designer 的目录。 此 JAR 文件包含 com.ibm.bpe.xpath.spi.XPathExtensionFunctionPlugin 接口和 com.ibm.bpe.xpath.spi.XPathExtensionFunctionDescriptor 类,它们是创建插件所必需的。
  3. 编写实现 XPath 函数的公共静态方法。

    每个 XPath 函数都作为静态 Java 方法来实现,其中应用了以下类型映射:

    表 1. XPath 至 Java 类型映射
    XPath 类型 Java 类型
    字符串 (string) java.lang.String
    数字 java.lang.Number
    布尔值 java.lang.Boolean 或 boolean
    对象 (object) commonj.sdo.DataObject
    节点集 java.util.List
    例如,以下 Java 方法实现将节点集和字符串作为参数并返回字符串的 XPath 函数。
    public static String createDelimitedString(List list, String del) {
    	StringBuilder sb = new StringBuilder();
    	
    	if (list.size()< 0) {
    		sb.append(list.get(0));
    		for (int i=1; i<list.size(); i++) {
    			sb.append(del);
    			sb.append(list.get(i));
    		}
    	}
    
    	return sb.toString();
    }
  4. 要公开扩展函数,请实现 com.ibm.bpe.xpath.spi.XPathExtensionFunctionPlugin 覆盖 getXPathFunctions 方法,这将为您提供的每个函数返回函数描述符。

    有关实现 Java 服务提供程序接口的信息,请参阅位于参考:Java API 和 SPI 的 com.ibm.bpm.xpath.spi 包中 XPathExtensionFunctionPlugin 接口的 Javadoc。

    以下样本公开先前示例中的 createDelimitedString 方法,使此方法可用于所有表达式和条件。
    import com.ibm.bpe.xpath.spi.XPathExtensionFunctionDescriptor;
    import com.ibm.bpe.xpath.spi.XPathExtensionFunctionPlugin;
    public class MyXPathExtensionFunctionPlugin implements XPathExtensionFunctionPlugin {
    
    	@Override
    	public XPathExtensionFunctionDescriptor[] getXPathFunctions() {
    	return new XPathExtensionFunctionDescriptor[]{
    	new XPathExtensionFunctionDescriptor("createDelimitedString", 
    	"http://org.custom.xpath",
    	"abc", 
    	"org.custom.xpath.XPathExtensionFunctions", 
    	new XPathExtensionFunctionDescriptor.ParameterType[]{XPathExtensionFunctionDescriptor.ParameterType.NODE_SET,
    			XPathExtensionFunctionDescriptor.ParameterType.STRING}, 
    			XPathExtensionFunctionDescriptor.ParameterType.STRING, 
    			XPathExtensionFunctionDescriptor.ALL_EXPRESSION_TYPES)
    	};
    	}
    }
  5. 在 JAR 文件的 META-INF/services/ 目录中为插件创建服务提供程序配置文件。 该配置文件为运行时环境提供用于识别和装入插件的机制。该文件符合 Java 服务提供程序接口规范。
    1. 创建名为 com.ibm.bpe.xpath.spi.XPathExtensionFunctionPlugin 的文件。
    2. 在文件内既非注释行也非空白行的第一行中,指定您先前创建的插件类的标准名称。 例如,如果您的插件类名为 MyXPathExtensionFunctionPlugin,并且位于 org.custom.xpath 包中,那么配置文件的第一行必须是 org.custom.xpath.MyXPathExtensionFunctionPlugin
  6. 导出 JAR 文件。

下一步做什么

在创建 XPath 函数 JAR 文件后,必须向 IBM Integration Designer 注册插件,以在流程编辑器中使用。 有关更多信息,请参阅BPEL 流程:使用 IBM Integration Designer 注册 XPath 函数 JAR 文件