在集成服务中调用 Java 方法

如果活动实现需要调用 Java 类中的方法,那么您可以在集成服务中使用 Java Integration 步骤。

开始之前

要执行此任务,您必须进入 IBM® Process Designer 桌面编辑器中。

在创建 Integration Service 之前,首先添加包含所需类的 JAR 文件。 在添加 JAR 文件作为服务器文件后,您可以选择要用于服务器的类和方法。如果您需要的 JAR 文件包含在 IBM Business Process Manager Toolkit 中,那么可以添加对该 Toolkit 的依赖关系来访问这些文件。请参阅“在 Designer 视图中创建 Toolkit 依赖关系”获取指示信息。

过程

  1. 打开 Process Designer 桌面编辑器。
  2. 创建 Integration Service。
  3. 从选用板将 Java Integration 步骤拖到服务图中,然后使用序列行将此步骤连接到开始和结束事件。
  4. 单击图中的 Java Integration 步骤,然后单击属性中的“定义”选项。
  5. 单击“Java 类”字段旁的选择按钮,以选择 JAR 文件和要调用的 JAR 文件上的类。

    所列出的 JAR 文件是添加为受管服务器文件的文件,如主题“管理外部文件”中所述。 缺省情况下,IBM BPM Java 包中的类在 integration.jar 文件中提供,此文件包含在“系统数据”Toolkit 中。 如果当前项目对其他 Toolkit(包括 JAR 文件)有依赖性,那么这些文件也是可用的。

  6. 发现部分(属性定义选项卡下)中,单击方法字段。从下拉列表中选择要在上一步中选择的类上调用的方法。
  7. 此 Java 方法可调用进行序列化并返回至“集成”服务作为 XML 元素。如果您需要此 Java 方法的结果,请启用“翻译 JavaBeans”复选框。元素的内容基于对象类的属性。

    例如,如果从 integration.jar 文件(IBM BPM Java 包)选择了 teamworks.Users 类,并在启用“转换 JavaBeans”复选框的情况下选择了 getUser 方法。那么结果将类似以下示例:

    <userino type="com.lombardisoftware.core.UserInfo" description="UserInfo">
       <calendarId type="com.lombardisoftware.client.persistence.common.ID" description="calendarId" />
       <fullname type="java.lang.String" description="String">tw_author</fullname>
       <qualifiedName type="java.lang.String" description="String">tw_author</qualifiedName>
       <sendToAddress type="com.lombardisoftware.core.routing.Address" description="Address">
         <name type="java.lang.String" description="String">tw_author</name>
         <toGroup type="java.lang.Boolean" description="Boolean">false</toGroup>
         <toUser type="java.lang.Boolean" description="Boolean">true</toUser>
       </sendToAddress>
       <userData type="java.util.HashMap" description="HashMap">
         <entry key="Full Name" description="Map Entry">
        	  	  <key type="java.lang.String" description="String">Full Name</key>
        	  	  <value type="java.lang.String" description="String">tw_author</value>
         </entry>
       <userData>
       <userId type="com.lombardisoftware.client.persistence.common.ID$NumericID" description="ID$NumericID">
         <id type="java.math.BigDecimal" description="BigDecimal">2</id>
         <type type="com.lombardisoftware.client.persistence.common.POType$User" description="POType$User">
     	      	      <deleted type="java.lang.Boolean" description="Boolean">false</deleted>
     	      	      <exportable type="java.lang.Boolean" description="Boolean">false</exportable>
     	      	      <factoryName type="java.lang.String" description="String">com.lombardisoftware.client.persistence.UserFactory</factoryName>
     	      	      <id type="java.lang.Integer" description="Integer">2048</id>
     	      	      <libraryItem type="java.lang.Boolean" description="Boolean">false</libraryItem>
     	      	      <name type="java.lang.String" description="String">User</name>
     	      	      <tableName type="java.lang.String" description="String">LSW_USR_XREF</tableName>
         </type>
       </userId>
       <username type="java.lang.String" description="String">tw_author</username>
    </userinfo>
    注: 如果启用转换 JavaBeans 复选框,在 Integration Service 中为从 Java 方法返回的值选择的变量类型应为 XMLElement 或 ANY。

    如果不启用转换 JavaBeans 复选框,Java 方法将只能返回表 1 中所示类型的对象。

    表 1. 不启用“转换 JavaBeans”时 Java 方法返回的对象类型
    对象类型
    java.lang.String java.lang.Double java.lang.ArrayList
    java.lang.Long java.lang.Float java.lang.HashMap
    java.lang.Integer java.lang.Boolean org.jdom.Document
    java.lang.Short java.lang.Character org.jdom.Element
    java.lang.Byte java.lang.Calendar com.lombardisoftware.core.XMLNodeList 和 com.lombardisoftware.core.TWObject
  8. 单击 Integration Service 的变量选项卡以添加服务需要检索的任何输入变量,以及服务需要使其对服务或 BPD 中的后步骤可用的任何输出变量。
  9. 单击服务图中的 Java Integration 步骤,然后单击属性中的数据映射选项来配置该步骤的输入和输出映射。
  10. 根据整个流程的需要,将“集成”服务嵌套在另一服务中或者选择其作为活动的实现。