转载

配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

简介

由于 IBM BPM 中的 Business Process Choreographer 和 Business Process Designer 具有不同的开发路径,不同的部署环境,而且有多个产品版本共存,所以我们迫切需要一个用户界面来与业务流程定义 (BPD) 和业务流程执行语言 (BPEL) 相关任务进行交互。

试用 Workflow 服务

创建长时间运行的有状态工作流,利用 来自 Bluemix 的 Workflow 服务 中的同步或异步的事件驱动交互来协调任务和服务。免费试用该服务!

由于提供的任务列表用户界面比较单一,所以您的流程应用程序的用户可以处理个别任务,但不知道不同的复杂后端系统。

IBM Process Federation Server 基于 IBM WebSphere Application Server Liberty 配置文件服务器。它提供了应用编程接口 (API) 来访问跨 IBM BPM 系统的联合资源列表,比如任务列表和启动列表。它包含基于一个 Elasticsearch 服务的联合环境的分布式索引。Elasticsearch 服务能够快速访问联合资源,将联合的 IBM BPM 系统从昂贵的查询中解放出来。

如图 1 所示,Process Federation Server 充当着所有后端 IBM BPM 系统的单一入口点。

图 1. Process Federation Server 的结构

配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

所有任务查询都由 Process Federation Server 而不是各个 IBM BPM 系统进行处理。另外,在您的业务流程用户想要认领或完成他们的任务时,客户端(在本例中为浏览器)会自动重定向到相应的 IBM BPM 系统。在此方法中,越来越多的后端 IBM BPM 系统可以在单个域中联合,从 Elasticsearch 服务获益,而且 Process Federation Server 仍然可以提供非常好的响应时间。

本教程将演示安装和配置 Process Federation Server 来访问两个后端 IBM BPM 系统的详细步骤,以便您能够全面理解整体拓扑结构,了解如何配置您的环境。在设置 Process Federation Server 后,您可以创建自己的客户端用户界面(例如图 1 中的 Federated portal )通过具象状态传输 (REST) API 来访问联合的 IBM BPM 系统。如果您希望最终用户更容易地处理其所有任务,无论是来自 BPD 还是 BPEL 的任务,您可以为 IBM BPM V8.5.6 创建自己的客户端用户界面。

您将了解如何设置一个包含两个后端 IBM BPM 环境的简单 Process Federation Server 环境:

  • 包含一个 Oracle Real Application Cluster 数据库的 IBM BPM V8.5.6
  • 包含一个 IBM DB2 数据库的 IBM BPM V8.0.1.3

图 2 显示了详细的拓扑结构和环境信息。为了提供一个典型示例,本教程中的示例使用了两个 IBM BPM 版本和两种数据库。

图 2. 示例系统拓扑结构

配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

示例拓扑结构包含一个连接到两个 Process Federation Server( PFS1PFS2 )的 IBM HTTP Server ( PFSIHS ),它将两个后端 IBM BPM 系统联合在一起:一个包含 Oracle Real Application Cluster 数据库的 IBM BPM Advanced Process Server V8.5.6 三集群部署环境 ( DE1 ),以及包含 IBM DB2 数据库的 IBM BPM Advanced Process Server V8.0.1.3 三集群部署环境 ( DE2 )。两个 IBM BPM 系统的前面都拥有 IBM HTTP Server( BPM856IHSBPM8013IHS )。示例拓扑结构包含一个轻型目录访问协议 (LDAP) 服务器,所有 Process Federation Server 和 IBM BPM 服务器都连接到该服务器。

表 1 显示了示例拓扑结构中包含的机器。

表 1. 环境

服务器 主机名 操作系统 软件版本
IBM HTTP Server 1 PFSIHS.cn.ibm.com Windows Server 2008 R2 IBM HTTP Server V8.5 或 V8.5.5
Process Federation Server 1 PFS1.cn.ibm.com Red Hat Enterprise Linux 6.1 包含在 IBM BPM V8.5.6 中的 Process Federation Server
Process Federation Server 2 PFS2.cn.ibm.com Red Hat Enterprise Linux 6.1 包含在 IBM BPM V8.5.6 中的 Process Federation Server
IBM HTTP Server 2 BPM856IHS.cn.ibm.com Windows Server 2008 R2 IBM HTTP Server V8.5 或 V8.5.5
IBM BPM V8.5.6 – Node 1 BPM1.cn.ibm.com Red Hat Enterprise Linux 6.1 IBM BPM V8.5.6
IBM BPM V8.5.6 - Node 2 BPM2.cn.ibm.com Red Hat Enterprise Linux 6.1 IBM BPM V8.5.6
Oracle database DB856.cn.ibm.com Red Hat Enterprise Linux 6.1 Oracle 12c Real Application Cluster
IBM HTTP Server 3 BPM8013IHS.cn.ibm.com Windows Server 2008 R2 IBM HTTP Server V8.5 或 V8.5.5
IBM BPM V8.0.1.3 – Node 1 BPM3.cn.ibm.com Red Hat Enterprise Linux 6.1 IBM BPM V8.0.1.3
IBM BPM V8.0.1.3 – Node 2 BPM4.cn.ibm.com Red Hat Enterprise Linux 6.1 IBM BPM V8.0.1.3
IBM DB2 DB8013.cn.ibm.com Red Hat Enterprise Linux 6.1 IBM DB2 10.

要学习本教程,请确保您满足以下前提条件:

  • IBM BPM V8.5.6 服务器,必须将其设置用于包含 3 个集群和一个 Oracle Real Application Cluster 数据库的 IBM BPM Advanced Process Server V8.5.6。
  • IBM BPM V8.5.6 服务器,必须将其正确配置用于 IBM BPM V8.5.6 的 IBM HTTP Server。
  • IBM BPM V8.0.1.3 服务器,必须将其设置用于包含 3 个集群和一个 IBM DB2 数据库的 IBM BPM Advanced Process Server V8.0.1.3。
  • IBM BPM V8.0.1.3 服务器,必须正确将其配置用于 IBM BPM V8.0.1.3 的 IBM HTTP Server。
  • IBM BPM V8.5.6 服务器和 IBM BPM V8.0.1.3 服务器,必须正确将其配置用于 LDAP。

设置整个拓扑结构并不简单。图 3 使用了红色标出了主要步骤和路径。

图 3. 包含配置步骤的示例系统拓扑结构

配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

图 3 包含以下配置步骤(标为 C):

  1. 创建 PFS1PFS2 IBM Process Federation Server:安装和创建 IBM Process Federation Server
  2. 配置 Process Federation Server:
    1. 步骤 C1 -在 Process Federation Server 上认证用户
    2. 配置 Elasticsearch 服务
  3. 配置 IBM HTTP Server:步骤 C5 -为 Process Federation Server 配置 IBM HTTP Server

本教程将详细介绍每个不同的步骤。

安装和创建 Process Federation Server

  1. 完成以下步骤来安装 Process Federation Server:
    1. 在 Process Federation Server 镜像文件夹中,运行 installPFS.sh 文件。例如,键入:
      [root@rehl217 20150306-132310.0.linux]# ./installPFS.sh
    2. 在 Install Packages 页面上,请选择 WebSphere Application Server Liberty、Process Federation Server 和 WebSphere SDK,如图 4 所示。

    图 4. Process Federation Server 安装

    配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

    图 4. Process Federation Server 安装

    配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

  2. 运行以下命令,根据 ibmPfs:ibmProcessFederationServer 模板创建一个 Process Federation Server:
    # export JAVA_HOME=/opt/IBM/WebSphere/Liberty/java/java_1.7_64   # cd /opt/IBM/WebSphere/Liberty/bn   #./server create server1 – template=ibmPfs:ibmProcessFederationServer
  3. 在成功安装后,启动该服务器。确认服务器日志文件(比如 /opt/IBM/WebSphere/Liberty/usr/servers/server1/logs/message.log )中没有错误。例如,运行以下命令:
    # ./server start server1   #vi /opt/IBM/WebSphere/Liberty/usr/servers/server1/logs/message.log
  4. 在另一个机器上重复这些步骤,创建另一个 Process Federation Server。

配置 Process Federation Server

在成功安装后,配置 Process Federation Server。一般而言,有两个主要区域要配置:

  1. 配置安全性,以便用户可以通过认证并以单点登录方式访问 Process Federation Server 和后端系统。此配置包含两部分:
    • 在 Process Federation Server 上认证用户。
    • 配置单点登录。
  2. 将 Elasticsearch 服务配置为所有联合系统的数据容器。

在 Process Federation Server 上认证用户

用户在访问 Process Federation Server 和 IBM BPM 资源之前必须经过认证。所以您需要配置 Process Federation Server 来绑定一个用于认证的用户存储库。

客户端应用程序、Process Federation Server 和联合的 IBM BPM 系统需要一个通用的用户存储库,以便经过认证的用户可以通过单点登录 (SSO) 访问整个环境。受支持的用户注册表包括 LDAP 和自定义用户注册表。在开发和测试环境中,您还可以使用一个基于文件的基本注册表。

本教程中的示例使用了 IBM BPM 环境中所使用的 IBM Tivoli Directory Server 的 LDAP。

完成以下步骤:

  1. 在流程联合服务器机器上,编辑 server 文件夹下的 server.xml
    # cd /opt/IBM/WebSphere/Liberty/usr/servers/server1   # vi server.xml
  2. 将以下语句添加到 server.xml 文件中:
    <ldapRegistry baseDN="OU=WORKMANAGEMENTSVT,O=IBM.COM"  bindDN="cn=root" bindPassword="password" host="ldap.cn.ibm.com"  id="MyStressLDAP" realm="defaultWIMFileBasedRealm" port="389"  ldapType="IBM Tivoli Directory Server" >   <idsFilters  userFilter="(&(uid=%v)(|(objectclass=person)   (objectclass=ePerson)))" groupFilter="(&(cn=%v)(|   (objectclass=groupOfNames)(objectclass=groupOfUniqueNames)))" />   </ldapRegistry>

在完成配置后,无需重新启动 Process Federation Server,您可以访问 Process Federation Server 资源列表任务 REST API,确认用户需要在访问这些 REST API 之前输入用户凭证。例如,在您的浏览器中使用 REST 客户端来发出以下 REST 请求之一,可以看到需要用户凭证:

https://PFSIHS.cn.ibm.com/rest/bpm/federated/v1/systems   https://PFSIHS.cn.ibm.com/rest/bpm/federated/v1/tasks/query/IBM.DEFAULTALLTASKSLIST_75

配置单点登录

在流程应用程序的用户想要认领或完成任务时,客户端需要能够直接与相应的 IBM BPM 系统进行通信。要避免用户再次输入其凭证,必须在 Process Federation Server 和联合的 IBM BPM 系统之间配置单点登录。

在启用单点登录后,用户登录到一个 IBM BPM 服务器或 Process Federation Server,然后他们可以访问他们被授权的其他服务器,而不会再次被提示。要让客户端应用程序工作,客户端 Web 应用程序服务器、Process Federation Server 和联合的 IBM BPM 系统之间必须有一种类似的单点登录配置。

我们可以基于 LTPA 密钥或第三方认证产品来配置单点登录。作为示例,我们将在这里使用 LTPA 密钥实现单点登录。

在单点登录环境中,在 Process Federation Server 与联合环境中的每个 IBM BPM 服务器之间交换轻量级第三方认证 (LTPA) 密钥。当用户登录到 IBM BPM 服务器时,他们可以访问被授权的其他所有服务器,而不会再次被提示提供其凭证。

配置单点登录之前,确保满足以下条件:

  • 域:Process Federation Server 和 IBM BPM 服务器必须位于同一个域中。
  • Process Federation Server 和 IBM BPM 服务器的用户注册表:
    • 用户注册表必须在 Process Federation Server 和每个 IBM BPM 服务器之间共享。不同的 IBM BPM 环境可以使用不同的用户注册表,但您还必须在 Process Federation Server 上配置这些用户注册表。
    • 您不能将 LDAP 服务器与其他认证服务混合使用,比如基本用户注册表或自定义用户注册表。
    • 这些用户注册表必须使用同一个范围。范围名必须与您为 Process Federation Server 设置的名称相同。
  • LTPA 密钥文件:
    • 密钥是活动的。
    • 所有 IBM BPM 服务器共享同一个 LTPA 密钥文件。
  • 系统时间:要避免 LTPA 过期间隔的问题,请确保 Process Federation Server 和生产环境中的每个 IBM BPM 服务器上的系统时间是相同的。

然后,要配置单点登录,可以完成以下步骤:

  1. 为 Process Federation Server 配置单点登录。在 Process Federation Server 机器上,将以下语句添加到 server.xml 文件中:
    <webAppSecurity ssoDomainNames="cn.ibm.com" ssoRequiresSSL="true"  singleSignonEnabled="true" ssoCookieName="LtpaToken2">   </webAppSecurity>
  2. 在所有 IBM BPM 服务器上启用单点登录:

    在 IBM BPM V8.5.6 和 IBM BPM V8.0.1.3 上,完成以下步骤:

    1. 登录到管理控制台。
    2. 单击 Security > Global security 打开 Global security 页面。展开 Web and SIP security 并单击 Single sign-on (SSO),如图 5 所示。

      图 5. 管理控制台上的单点登录配置

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

      图 5. 管理控制台上的单点登录配置

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

    3. 在 Single sign-on (SSO) 窗口中,配置以下设置:
      • 选择 Enabled
      • 选择 Requires SSL (可选,但请为本教程启用它)。
      • 设置域名,它必须与 Process Federation Server server.xml 文件中配置的 ssoDomainNames 相同,例如: cn.ibm.com ,如图 6 所示。

        图 6. SSO 配置值

        配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问
  3. 禁用 IBM BPM 服务器上的自动 LTPA 密钥生成。因为 LTPA 密钥会在 Process Federation Server 和 IBM BPM 服务器之间共享,所以自动生成密钥会导致共享密钥经常不同步。请参阅 WebSphere Application Server 文档中的 禁用轻量级第三方认证密钥的自动生成 。
  4. 在联合流程环境中的所有服务器之间共享 LTPA 密钥文件。
    要最大程度地减小对需要共享 LTPA 密钥的现有 IBM BPM 环境的影响,可以从一个 IBM BPM 服务器获得并共享 LTPA 密钥文件:
    1. 在 IBM BPM V8.5.6 上,导出 IBM BPM 服务器 LTPA 密钥文件。在管理控制台中,选择 Security > Global security > Authentication mechanisms and expiration > LTPA 。输入用于加密密钥的密码和完全限定的密钥文件名,然后单击 Export keys 。获得 LTPA 密钥文件,例如: fpltpa.keys ,如图 7 所示。

      图 7. LTPA 密钥导出

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

      图 7. LTPA 密钥导出

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

    2. 在 IBM BPM V8.0.1.3 上,导入从 “步骤 a.

      手动将 fpltpa.keys 文件复制到 IBM BPM V8.0.1.3” 获得的 LTPA 密钥文件。在管理控制台中,选择 Security > Global security > Authentication mechanisms and expiration > LTPA 。输入加密密钥(您在步骤 a 中设置的密码)和完全限定的密钥文件名 fpltpa.keys ,然后单击 Import keys

    3. 在 Process Federation Server 1 上,导入您从 “步骤 a. 手动将 fpltpa.keys 文件复制到 IBM BPM V8.0.1.3 获得的 LTPA 密钥。例如,将它复制到 pfs_install_root /usr/servers/ server_name /resources/security 目录。然后将以下条目添加到 server.xml 文件中:
      <ltpa keysFileName=" pfs_install_root /usr/servers/ server_name /resources/security/ fpltpa .keys" keysPassword=" keys_Password "/>
  5. 在 Process Federation Server 2 上重复这些步骤。
  6. 要按域名访问 Process Federation Server 和 IBM BPM 系统,必须将域名注册到 DNS 中。在本教程中,为了简便起见,将以下域名条目添加到客户端的 hosts 文件中:
    • 对于用于 Process Federation Server 的 IBM HTTP Server: PFSIHS.cn.ibm.com
    • 对于用于 IBM BPM V8.5.6 服务器的 IBM HTTP Server: BPM856IHS.cn.ibm.com
    • 对于用于 IBM BPM V8.0.1.3 服务器的 IBM HTTP Server: BPM8013IHS.cn.ibm.com
  7. 验证单点登录配置。您可以访问一个 IBM BPM 系统的 Process Portal 来验证单点登录。然后打开一个新选项卡来访问其他系统。最后可以访问 Process Federation Server REST API,确认用户也能够被 Process Federation Server 识别。

配置 Elasticsearch 服务

Process Federation Server 上的 Elasticsearch 服务提供了一个分布式索引,其中包含来自联合环境中的 IBM BPM 系统的数据。分布式索引可确保用户能快速访问联合数据,将 IBM BPM 系统从昂贵的查询中解放出来。它通过任务元数据和业务数据来支持复杂的动态查询。有一个针对联合环境中的每个 IBM BPM 服务器的索引服务,以及一个向用户提供数据的基于 REST 的通用查询服务。Elasticsearch 服务可自动再平衡分布式索引。例如,在添加更多流程联合服务器来处理负载时,联合索引的分区(分片)会自动重新放在新服务器上。

Process Federation Server 上的 server.xml 配置文件包含针对 Elasticsearch 服务的配置属性及默认值。在默认情况下,Elasticsearch 服务是为单一服务器的、快速启动的环境配置的。

要配置 Elasticsearch 服务,可以完成以下步骤:

  1. 在 Process Federation Server 1 上,编辑 pfs_install_root /usr/servers/server1/server.xml 配置文件。
  2. 使用针对您环境的配置属性来更新 ibmPfs_elasticSearch 元素。查看下面这个示例:
    <ibmPfs_elasticSearch          cluster.name="federated_cluster1"         node.name="node1"         node.master="true"         node.data="true"         transport.tcp.port="9300"  transport.tcp.ssl="true"  transport.tcp.ssl.keystore="  {server.config.dir}/resources/security/key.jks"         transport.tcp.ssl.keystore_password="passw0rd"         transport.tcp.ssl.keystore_algorithm="ibm"         transport.tcp.ssl.truststore="${server.config.dir}/resources/security/server1trust.pk12"         transport.tcp.ssl.truststore_password="passw0rd"         transport.tcp.ssl.truststore_algorithm="PKIX"         transport.tcp.ssl.protocol="TLS"         http.enabled="true"         http.cors.enabled="true"         http.cors.allow-origin="*"         http.port="9200"         discovery.zen.minimum_master_nodes="1"  discovery.zen.ping.multicast.enabled="false"  discovery.zen.ping.unicast.hosts=" PFS1.cn.ibm.com:9300, PFS2.cn.ibm.com:9300" />
  3. PFS2 Process Federation Server 上,使用针对您环境的配置属性来更新 ibmPfs_elasticSearch 元素。查看下面这个示例:
    <ibmPfs_elasticSearch           cluster.name="federated_cluster1"          node.name="node2"          node.master="true"          node.data="true"          transport.tcp.port="9300"          transport.tcp.ssl="true"             transport.tcp.ssl.keystore="${server.config.dir}/resources/security/key.jks"          transport.tcp.ssl.keystore_password="passw0rd"          transport.tcp.ssl.keystore_algorithm="ibm"             transport.tcp.ssl.truststore="${server.config.dir}/resources/security/server1trust.pk12"          transport.tcp.ssl.truststore_password="passw0rd"          transport.tcp.ssl.truststore_algorithm="PKIX"          transport.tcp.ssl.protocol="TLS"          http.enabled="true"          http.cors.enabled="true"          http.cors.allow-origin="*"          http.port="9200"          discovery.zen.minimum_master_nodes="1"          discovery.zen.ping.multicast.enabled="false"          discovery.zen.ping.unicast.hosts=" PFS1.cn.ibm.com:9300, PFS2.cn.ibm.com:9300" />

请注意以下需求:

  • 同一个集群中的服务器需要拥有相同的 cluster.name
  • 同一个集群中的服务器应拥有不同的 node.name
  • 如果集群中的一个服务器可以是主节点,那么请设置 node.master="true"
  • 如果集群中的一个服务器可以是数据节点,那么请设置 node.data="true"
  • 要避免出现分裂脑 (brain split) 情形,可以在服务变得可用之前设置 discovery.zen.minimum_master_nodes 来定义所需的集群成员配额。
  • unicast mode clusterdiscovery.zen.ping.unicast.hosts 中列出同一个集群中的服务器。
  • 对于 key.jksserver1trust.pk12 请参阅 “保护通信” 部分。

联合 IBM BPM 系统

要联合 IBM BPM 系统,您必须在联合的 IBM BPM 系统上启用索引,然后必须在联合环境中配置和维护 IBM BPM 系统。

在联合的 IBM BPM 系统上启用索引

分布式 Process Federation Server 索引使流程参与者能够看到与 BPD 和 BPEL 相关的任务(来自联合环境中的所有 IBM BPM 系统)的整合列表。要让来自某个联合 IBM BPM 系统的数据出现在索引中,必须在该系统上启用索引。

在联合 IBM BPM 系统上启用索引之前,请确保满足以下条件:

  • 如果您在一个低于 V8.5.6 的 IBM BPM 系统上启用索引,请确认所需的临时修复程序已安装在该系统上。有关的更多信息,请参阅技术说明 1699090。
  • 确认 IBM BPM 服务器上的 Process Server 已停止。

要在一个联合的 IBM BPM 系统上启用索引,可以完成以下步骤:

  1. 在 IBM BPM V8.0.1.3 服务器上,停止所有 IBM BPM 进程。应用 8.0.1.3-WS-BPM-IFJR51915.zip 修复程序。
  2. 在 IBM BPM 服务器上启用来自 BPD 的数据的索引。在 IBM BPM 系统上运行时,与 BPD 相关的数据会写入到 Process Server 数据库 (BPMDB) 中。此数据要包含在 Process Federation Server 索引中,在 IBM BPM V8.5.6 和 IBM BPM V8.0.1.3 上,都必须创建变更日志表,配置 IBM BPM 服务器,将任务状态更改提交给这些表,并在 Process Federation Server 上启用 BPM 索引。
    1. 要在 IBM BPM 系统上的 Process Server 数据库中创建变更日志表,可以完成以下步骤。
      • 在 Process Federation Server 上,将 pfs_install_root/ibmProcessFederationServer/wlp-ext/dbscripts/oracle/create_bpd_change_log.ddl 复制到 IBM BPM 数据库机器。

        因为 IBM BPM V8.5.6 服务器使用的是 Oracle,所以请参阅 oracle 文件夹中的脚本。IBM BPM V8.0.1.3 服务器使用的是 DB2,所以您需要选择 db2 文件夹中的脚本。

      • 请查阅这些脚本中的指令,将变量替换为正确的值,例如将 @SCHEMA@ 替换为模式名称,比如 BPMDB
      • 运行脚本来创建相关表。
    2. 配置 IBM BPM 服务器来将任务的状态更改提交给变更日志表。
      • 在 IBM BPM 服务器上,更新 100Custom.xml 文件,使之包含 federated-index-enabled

        配置参数。重新启动所有服务器。

        查看下面这个示例:

        # vi /opt/IBM/BPM/profiles/Dmgr01/config/cells/Test01Cell01/nodes/Test01Node01      /servers/BPM.AppCluster.Test01Node01.0/process-center/config/100Custom.xml
      • 添加以下代码段:
        <server>        <search-index merge="mergeChildren">           <federated-index-enabled merge="replace">true</federated-index-enabled>         </search-index>   </server>
      • 然后重新启动所有服务器,确认 SystemOut.log 文件中没有错误。
    3. 在 Process Federation Server 上启用 BPD 索引。

      在 Process Federation Server 上,将针对您的 Process Server 数据库的特定的数据库库 (database library) 和 dataSource 元素添加到 server.xml 文件中。

      请参见下面这个使用 Oracle Real Application Cluster 的 IBM BPM V8.5.6 的示例:

      <library id="OraLib" name="OraLib">      <fileset dir="  /opt/IBM/WebSphere/Liberty/ibmProcessFederationServer/wlp-ext/jdbcdrivers/Oracle "  includes="ojdbc6.jar"></fileset>   </library>    <dataSource jndiName="jdbc/bpmdatarac" id="bpm_oracle"  type="javax.sql.DataSource"  isolationLevel="TRANSACTION_READ_COMMITTED">    <properties.oracle URL="jdbc:oracle:thin:@//   DB856:1521/pdb1" serverName=" DB856.cn.ibm.com "  databaseName="pdb1" user="racbpm" password="password"  serviceName="pdb1"></properties.oracle>    <jdbcDriver libraryRef="OraLib"></jdbcDriver>   </dataSource>

      参见下面这个使用 DB2 的 IBM BPM V8.0.1.3 的示例:

      <library id="DB2JCC4Lib">    <fileset dir="/home/holly_test/jdbcdrivers/DB2"  includes="db2jcc4.jar db2jcc_license_cisuz.jar"/>   </library>    <dataSource commitOrRollbackOnCleanup="commit"  id="bpm_db252"  isolationLevel="TRANSACTION_READ_COMMITTED"  jndiName="jdbc/bpmdata52" type="javax.sql.DataSource">    <jdbcDriver libraryRef="DB2JCC4Lib"/>    <properties.db2.jcc databaseName="BPMDB" serverName="  DB8013.cn.ibm.com " portNumber="50000" user="db2inst1"  password=" Passw0rd" />   </dataSource>

      本教程后面需要这些数据库信息。在 ibmPfs_federatedSystemibmPfs_bpdIndexeribmPfs_bpdRetriever 元素中更新针对 BPD 索引服务的配置属性。

  3. 在 IBM BPM 服务器上启用与 BPEL 数据相关的索引。当一个 BPEL 进程在 IBM BPM 系统上运行时,BPEL 进程和任务相关数据会写入到 Business Process Choreographer 数据库中。此数据库是共享数据库,默认数据库为 CMNDB 数据库。此数据要包含在 Process Federation Server 索引中,您必须在 IBM BPM 服务器上创建变更日志表,并在 Process Federation Server 上启用 BPEL 索引。步骤类似于启用与 BPD 相关的数据的索引。请参阅 IBM BPM 文档了解详细信息。

配置和维护联合环境中的 IBM BPM 系统

联合环境包含 Process Federation Server 和多个联合的 IBM BPM 系统。使用 Process Federation Server server.xml 配置文件中的属性,为联合环境配置 IBM BPM 系统,以及配置和维护该系统的索引服务。

要配置和维护联合环境中的 IBM BPM 系统,可以完成以下步骤:

  1. 在 Process Federation Server 上,编辑 pfs_install_root /usr/servers/server1/server.xml 配置文件。
  2. 添加包含针对 IBM BPM V8.5.6 和 IBM BPM V8.0.1.3 的配置属性 的 ibmPfs_federatedSystemindexREST retriever implementation 元素。
    请参阅以下为 IBM BPM V8.5.6 添加 BPD 相关数据的示例:
<ibmPfs_federatedSystem id="bpm170"  index.number_of_shards="12" index.number_of_replicas="1"  allowedOrigins="*"   restUrlPrefix="https://   BPM856IHS.cn.ibm.com/rest/bpm/wle"  taskCompletionUrlPrefix="https://   BPM856IHS.cn.ibm.com/teamworks"/>    <ibmPfs_bpdIndexer federatedSystemRef="bpm170"  dataSourceRef="bpm_oracle" schemaName="racbpm"  indexingInterval="30s">    <partitioningService dataSourceRef="bpm_oracle"  schemaName="racbpm"/>    </ibmPfs_bpdIndexer>    <ibmPfs_bpdRetriever federatedSystemRef="bpm170"  connectTimeout="10s" readTimeout="10s"  internalRestUrlPrefix="https://   BPM856IHS.cn.ibm.com/rest/bpm/wle"/>

添加一个针对 IBM BPM V8.0.1.3 服务器的类似部分。请注意以下考虑因素:

  • 确保 implementation 元素中的 federatedSystemRef 属性的值与 ibmPfs_federatedSystem 元素中的 id 属性相同。
  • 通过为您在上一步创建的 dataSourceRef 属性指定一个值,确保索引器可直接连接到 IBM BPM 数据库服务器。
  • 索引被划分为 12 个分片,这些分片默认情况下有一个用于数据复制的副本。分片在集群成员之间动态分配。
  • 您的流程应用程序的用户要认领和完成任务,您需要在 restUrlPrefixtaskCompletionUrlPrefixinternalRestUrlPrefix 属性中提供 IBM BPM URL。有关配置属性的详细信息,请参阅 IBM BPM 文档。

保护通信

联合环境中的通信默认通过安全套接字层 (SSL) 协议来保护。SSL 协议提供了传输层安全性,其中包含真实性、数据签名和数据加密,以确保客户端和服务器之间的连接是安全的。

可以通过多种方式保护通信,但在本教程中,您配置 Process Federation Server 和联合的 IBM BPM 系统之间的安全的入站和出站通信。

提供作为模板的 server.xml 文件包含一个默认的 SSL 配置和一个默认的密钥库。在首次启动 Process Federation Server 时,它将创建一个 Java 密钥库,并在该密钥库中创建一个自签名证书。客户端必须配置为信任 Process Federation Server 证书签名者。

要在生产环境中获得更安全的通信,可以将 Process Federation Server 默认自签名证书替换为由某个受信任的证书权威签名的具有适当证书链的证书。要管理 Process Federation Server 密钥库和证书,可以对您的 Java 虚拟机使用 keytool 实用工具,或者使用 IBM HTTP Server iKeyman 实用工具。

对于本教程中的拓扑结构,通过将每个联合的 IBM BPM 系统的签名者证书导入 Process Federation Server 的信任库中,使用 SSL 协议在 Process Federation Server 和 IBM BPM 之间启用安全的通信。因为 IBM HTTP Server 在 IBM BPM 集群前面,所以简单的方式是仅导入用于 IBM BPM 的 IBM HTTP Server 的证书。

完成以下步骤来保护通信:

  1. 在 Process Federation Server 上,编辑 pfs_install_root /usr/servers/server1/server.xml

    配置文件。添加以下元素:

    <sslOptions id="mySSLOptions" sslRef="mySSLSettings" />   <ssl id="mySSLSettings" keyStoreRef="myKeyStore"  trustStoreRef="myTrustStore" sslProtocol="TLS" />   <keyStore id="myKeyStore"  location="$   {server.config.dir}/resources/security/key.jks" type="JKS"   password="password" />   <keyStore password="password" id="myTrustStore" location="$   {server.config.dir}/resources/security/server1trust.pk12"></   keyStore>   <sslDefault sslRef="mySSLSettings" />

    考虑以下因素:

    • 对于 key.jks 密钥库,如果 key.jks 文件不存在,那么服务器会在启动时创建该文件。您可以使用 Liberty 配置文件安全性实用工具来编码密码。
    • 对于 server1trust.pk12 信任库,检查以下步骤。
  2. 在 IBM BPM V8.5.6 服务器上,获得 IBM HTTP Server 的个人证书并导入 Process Federation Server 信任库中。
    1. 在用于 IBM BPM V8.5.6 的 IBM HTTP Server 上,使用密钥管理程序 iKeyman 提取 IBM HTTP Server Personal 证书:
      execute C:/IBM/HTTPServer/bin/ikeyman.bat
    2. 打开 IBM HTTP Server Personal 证书(例如: C:/IBM/HTTPServer/bin/key1.kdb )。在窗口中输入密码,如图 8 所示。

      图 8. 找到用于 IBM HTTP Server 的个人证书的示例

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

      图 8. 找到用于 IBM HTTP Server 的个人证书的示例

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

    3. 单击 Extract Certificate 将它提取到一个文件中,如图 9 所示。

      图 9. 提取用于 IBM HTTP Server 的个人证书的示例

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

      图 9. 提取用于 IBM HTTP Server 的个人证书的示例

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

    4. 将生成的证书文件复制到 Federated Process Server 机器。将它导入 Process Federation Server 信任库中:
      #cd /opt/IBM/WebSphere/Liberty/java/java_1.7_64/bin   #./keytool -import -keystore   /opt/IBM/WebSphere/Liberty/usr/servers/server1/resources/s   ecurity/server1trust.pk12 -alias IHS2Cert -file   /home/holly_test/certIHS2.arm

对于用于 IBM BPM V8.0.1.3 服务器的 IBM HTTP Server,请重复第 2 步。

为 Process Federation Server 配置 IBM HTTP Server

要为 Process Federation Server 实现高可用性和灾难恢复,最好为两个 Process Federation Server( PFS1PFS2 )配置 IBM HTTP Server ( PFSIHS )。

要为 Process Federation Server 配置 IBM HTTP Server,请完成以下步骤:

  1. 跟平常一样,使用 iKeyman 工具创建一个 IBM HTTP Server 个人证书和根证书。在 Process Federation Server 前面配置 IBM HTTP Server,根据您的环境来修改 IBM HTTP Server 参数。
  2. 在 IBM HTTP Server ( PFSIHS ) 上,使用 Websphere Customization Toolbox 创建 Process Federation Server 响应文件,如图 10 所示。

    图 10. Websphere Customization Toolbox

    配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问
    1. 找到 httpd.conf 并输入端口,如图 11 所示。

      图 11. 选择 httpd.conf Web 服务器配置文件

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问
    2. 为该定义提供 Web 服务器的唯一名称,如图 12 所示。

      图 12. 命名 Web 服务器定义的示例

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问
    3. 输入 Process Federation Server 1 的主机名,如图 13 所示。

      图 13. 配置场景中的示例主机名

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问
    4. 然后,在插件的 config 文件夹下,确认服务器文件已创建。删除 *.responseFile 文件之外的所有文件。
  3. 配置 plugin-cfg.xml 文件。
    1. 生成 plugin-cfg.xml

      文件并将它复制到 IBM HTTP Server plugin 文件夹中。

      PFS1 Process Federation Server 上,使用 Java SDK 中的 Java Monitoring and Management Console (JConsole) 实用工具生成一个 plugin-cfg.xml 文件。运行以下命令:

      #cd /opt/IBM/WebSphere/Liberty/java/java_1.7_64/bin   #./jconsole

      该服务器进程已在等待连接的选项中列出,如图 14 所示。

      图 14. 与 Process Federation Server 的 JConsole 新连接

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问
    2. 连接到 Process Federation Server,然后单击 MBeans 选项卡。展开 WebSphere 并找到 com.ibm.ws.jmx.mbeans.generatePluginConfig 管理 bean (Mbean),如图 15 所示。

      图 15. JConsole 上的 Mbeans 选项卡上的 generatePluginConfigMbean

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问
    3. 进入您的插件的根文件夹,找到 Web 服务器插件的名称,然后单击 generatePluginConfig 。生成的 plugin-cfg.xml 文件应与 server.xml 文件位于同一个文件夹下,如图 16 所示。

      图 16. 选择 JConsole 上的 Mbeans 选项卡上的 generatePluginConfig

      配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问
    4. 然后将 plugin-cfg.xml 复制到 IBM HTTP Server plugins config 文件夹。
  4. PFS2 Process Federation Server 重复第 3 步,获得另一个插件: cfg1.xml 。将它复制到 IBM HTTP Server plugins config 文件夹。然后将这些文件合并到一个文件中,在本教程中的示例中,该文件为 plugin-config.xml 。编辑最后的 plugin-cfg.xml ,根据您的 IBM HTTP Server 和 Web 插件设置将 keyringstashfilecertLabel 属性更改为正确值:
    <Property Name="keyring" Value="your_key_database_file.kdb"/>   <Property Name="stashfile" Value="your_password_stash_file.sth"/>   <Property Name="certLabel" Value="your_certificate_label"/>
  5. 将 IBM HTTP Server SSL 密钥数据库文件和密码存放文件复制到 Federated Portal Liberty 配置文件,例如:
    ${server.config.dir}/resources/security
  6. pluginConfiguration 元素添加到 server.xml 文件中:
    <pluginConfiguration webserverPort="80" webserverSecurePort="443"  sslCertlabel="IHSCert" sslKeyringLocation="$   {server.config.dir}/resources/security/key1.kdb" sslStashfileLocation="$   {server.config.dir}/resources/security/key1.sth" />
  7. 重新启动 IBM HTTP Server 和 Process Federation Server。确认 IBM HTTP Server 日志中没有错误。尝试通过 IBM HTTP Server 链接访问 Process Federation Server。

通过 Elasticsearch 客户端验证该解决方案

可以使用许多客户端来验证 Elasticsearch 服务。本教程中的示例使用了 elasticsearch-head 。目前 elasticsearch-head 只能安装为独立客户端,然后指向您的 Elasticsearch 服务。

  1. 安装独立的 elasticsearch-head。
  2. 通过打开 elastic-search-head-master 下的 index.htm 来启动 elasticsearch-head,如图 17 所示。

    图 17. elasticsearch-head 工具

    配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问
  3. 指向您的 Process Federation Server。您可以看到任务已在 Elasticsearch 集群中建立了索引,如图 18 所示:

    图 18. 在 elasticsearch-head 工具上连接到 Process Federation Server

    配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

    图 18. 在 elasticsearch-head 工具上连接到 Process Federation Server

    配置 IBM Process Federation Server 来为您的 IBM BPM 流程用户提供单点访问

使用 Process Federation Server REST API 验证该解决方案

IBM BPM V8.5.6 中的 Process Federation Server 提供了 REST API,您可以使用它们构建自定义客户端应用程序来支持联合环境中的任务工作者场景,比如查询联合的任务列表,处理返回的任务,并从联合的启动列表中启动新实例。请参阅 IBM BPM V8.5.6 文档中的 用于 IBM Process Federation Server 资源的 REST 接口 。

Process Federation Server REST API 在以下各节中显示了一个响应,IBM BPM V8.5.6 文档中没有给出响应。因为每个 URL 表示一个 HTTP GET 请求,所以您可以直接在浏览器中测试每个 REST API 并检查响应内容。

系统元数据 REST API

系统元数据提供联合的 IBM BPM 系统的信息。使用该 API 检测系统是否可用或检索特定于系统的设置。该检测将会返回针对每个 IBM BPM 系统的属性,这些属性依赖于系统类型。

示例 URL:

https://PFSIHS.cn.ibm.com/rest/bpm/federated/v1/systems

示例响应:

{"federationResult":[{"indexRefreshInterval":1000,"id":"bpm170","statusCo   de":200,"taskCompletionUrlPrefix":"https:////BPM856IHS.cn.ibm.com //teamw   orks","restUrlPrefix":"https:////BPM856IHS.cn.ibm.com//rest//bpm//wle","  systemType":"SYSTEM_TYPE_WLE","indexName":"bpm170","systemID":"e2021188-   db69-46e3-9f24-30c5e2ffb3db","version":"8.5.6.0"},{"indexRefreshInterval"  :1000,"id":"bpm37","statusCode":200,"taskCompletionUrlPrefix":"https:////   BPM8013IHS.cn.ibm.com //teamworks","restUrlPrefix":"https:////BPM8013IHS.c   n.ibm.com //rest//bpm//wle","systemType":"SYSTEM_TYPE_WLE","indexName":"bp   m37","systemID":"4998fd69-9e05-45c5-930e-ceb1829a6cf8","version"  :"8.0.1.3"}],"systems":[{"systemID":"e2021188-db69-46e3-9f24-   30c5e2ffb3db","systemType":"SYSTEM_TYPE_WLE","version":"8.5.6.0","gro   upWorkItemsEnabled":false,"resources":   ["tasks","taskTemplates","processes"],"taskHistoryEnabled":false,"bui   ldLevel":"BPM8560-20150127-   000101","substitutionEnabled":false,"workBasketsEnabled":false,"subst   itutionManagementRestrictedToAdministrators":false,"businessCategorie   sEnabled":false,"taskSearchEnabled":true,"notificationWebMessagingEna   bled":false,"taskListWebMessagingEnabled":false,"apiVersion":"1.0","s   upports":null,"hostname":"BPM856IHS.cn.ibm.com"},   {"systemID":"4998fd69-9e05-45c5-930e-   ceb1829a6cf8","systemType":"SYSTEM_TYPE_WLE","version":"8.0.1.3","gro   upWorkItemsEnabled":false,"resources":   ["tasks","taskTemplates","processes"],"taskHistoryEnabled":false,"bui   ldLevel":"BPM8013-20140814-   155433","substitutionEnabled":false,"workBasketsEnabled":false,"subst   itutionManagementRestrictedToAdministrators":false,"businessCategorie   sEnabled":false,"taskSearchEnabled":true,"notificationWebMessagingEna   bled":false,"taskListWebMessagingEnabled":false,"apiVersion":"1.0","  supports":null,"hostname":"BPM8013IHS.cn.ibm.com"}]}

任务列表 REST API

任务列表提供联合的任务列表。仅支持默认的任务列表 IBM.DEFAULTALLTASKSLIST_75 。返回每个任务的属性,这些属性依赖于联合的 IBM BPM 系统类型。属性中包括一个表示运行该任务的系统的系统 ID。响应数据中的 federationResult 部分包含一个针对每个系统 ID 的条目,该条目表示使用该系统时要使用的 URL。

示例基本 URL:

https://PFSIHS.cn.ibm.com/rest/bpm/federated/v1/tasks/query/IBM.DEFAULTALLTASKSLIST_75

部分响应:

{"entityTypeName":"TASK","federationResult":   [{"statusCode":200,"id":"bpm170","indexRefreshInterval":1000,"taskCom   pletionUrlPrefix":"https:////BPM856IHS.cn.ibm.com//teamworks","restUr   lPrefix":"https:////BPM856IHS.cn.ibm.com//rest//bpm//wle","systemType"  :"SYSTEM_TYPE_WLE","indexName":"bpm170","systemID":"e2021188-db69-   46e3-9f24-30c5e2ffb3db","version":"8.5.6.0"},   {"statusCode":200,"id":"bpm37","indexRefreshInterval":1000,"taskCompl   etionUrlPrefix":"https:////BPM8013IHS.cn.ibm.com//teamworks","restUr   lPrefix":"https:////BPM8013IHS.cn.ibm.com//rest//bpm//wle","systemTyp   e":"SYSTEM_TYPE_WLE","indexName":"bpm37","systemID":"4998fd69-   9e05-45c5-930e-ceb1829a6cf8","version":"8.0.1.3"}],"totalCount"  :5,"items":[{"TAD_DISPLAY_NAME":"Step: task3","AT_RISK_TIME":"20   15-02-11T10:49:01Z","STATE":"STATE_FINISHED","NAME":"task3","SNAPSH   OT_NAME":"NN1","PRIORITY":30,"SNAPSHOT_ID":"2064.337e8aa9-f430-   4777-bb80-1fdf799385c4","DUE":"2015-02-11T10:55:01Z","STATUS"  :"Closed","PI_DISPLAY_NAME":"bpd2:59","OWNER":"user1_2","CONTAINM   ENT_CTX_ID":"59","PROCESS_INSTANCE.PIID":"59","PI_PIID":"59","TAD_DESCR   IPTION":"Step: task3","PI_NAME":"bpd2:59","TKIID":"57","ORIGINATOR"  :"bpmadmin","IS_AT_RISK":true,"PROCESS_APP_ACRONYM":"HT1","systemI   D":"e2021188-db69-46e3-9f24-30c5e2ffb3db","ACTIVATED":"2015-02-   11T09:55:01Z","TASK.TKIID":"57","COMPLETED":"2015-02-   16T09:15:38Z","KIND":"KIND_PARTICIPATING","PT_PTID":"25.b489c0a8-   66fb-4f4e-817f-6df7601e9a28","ASSIGNED_TO_ROLE_DISPLAY_NAME":null},   {"TAD_DISPLAY_NAME":"Step: task5","AT_RISK_TIME":"2015-02-   11T11:03:02Z","STATE":"STATE_READY","NAME":"task5","SNAPSHOT_NAME":  "OP2","PRIORITY":30,"SNAPSHOT_ID":"2064.b0cf716d-6a50-4b08-a6b7-   061a2321bbc2","DUE":"2015-02-11T11:09:02Z","STATUS":"Received","PI_DIS   PLAY_NAME":"bpd3:62","OWNER":null,"CONTAINMENT_CTX_ID":"62","PROC   ESS_INSTANCE.PIID":"62","PI_PIID":"62","TAD_DESCRIPTION":"Step: ta   sk5","PI_NAME":"bpd3:62","TKIID":"58","ORIGINATOR":"bpmadmin","IS_AT_RI   SK":true,"PROCESS_APP_ACRONYM":"HT1","systemID":"e2021188-db69-   46e3-9f24-30c5e2ffb3db","ACTIVATED":"2015-02-11T10:09:02Z","TASK.TKIID":  "58","COMPLETED":null,"KIND":"KIND_PARTICIPATING","PT_PTID":"25.55622acd-50c3-   43c0-8651-227ab2636d9b","ASSIGNED_TO_ROLE_DISPLAY_NAME":"All Users"},   {"TAD_DISPLAY_NAME":"Step: required2","AT_RISK_TIME":"2015-02-   11T11:04:15Z","STATE":"STATE_READY","NAME":"required2","SNAPSHOT_NA   ME":"OP2","PRIORITY":30,"SNAPSHOT_ID":"2064.b0cf716d-6a50-4b08-   a6b7-061a2321bbc2","DUE":"2015-02-11T11:10:15Z","STATUS":"Receiv   ed","PI_DISPLAY_NAME":"bpd3:62","OWNER":null,"CONTAINMENT_CTX_ID":"62","PRO   CESS_INSTANCE.PIID":"62","PI_PIID":"62","TAD_DESCRIPTION":"Step: requ   ired2","PI_NAME":"bpd3:62","TKIID":"59","ORIGINATOR":"bpmadmin","IS_AT_RI   SK":true,"PROCESS_APP_ACRONYM":"HT1","systemID":"e2021188-db69-46e3-   9f24-30c5e2ffb3db","ACTIVATED":"2015-02-11T10:10:15Z","TASK.TKIID":  "59","COMPLETED":null,"KIND":"KIND_PARTICIPATING","PT_PTID":"25.55622acd-   50c3-43c0-8651-227ab2636d9b","ASSIGNED_TO_ROLE_DISPLAY_NAME":"All Users"}

一个查询的示例 URL,其中包含交互过滤器和对包含词汇 ‘ Step ’ 的任务的全文搜索:
https://PFSIHS.cn.ibm.com/rest/bpm/federated/v1/tasks/query/IBM.DEFAULTALLTASKSLIST_75?interactionFilter=ASSESS_AND_WORK_ON&searchFilter=Step

部分响应:

{"entityTypeName":"TASK","federationResult":[{"statusCode":200,"id":"bpm3   7","indexRefreshInterval":1000,"taskCompletionUrlPrefix":"https:////BPM80   13IHS.cn.ibm.com//teamworks","restUrlPrefix":"https:////BPM8013IHS.cn.ib   m.com//rest//bpm//wle","systemType":"SYSTEM_TYPE_WLE","indexName":"bpm37  ","systemID":"4998fd69-9e05-45c5-930e-ceb1829a6cf8","version":"8.0.1.3"},   {"statusCode":200,"id":"bpm170","indexRefreshInterval":1000,"taskCompletio   nUrlPrefix":"https:////BPM856IHS.cn.ibm.com//teamworks","restUrlPrefix":"ht   tps:////BPM856IHS.cn.ibm.com//rest//bpm//wle","systemType":"SYSTEM_TYPE_WL   E","indexName":"bpm170","systemID":"e2021188-db69-46e3-9f24-30c5e2ffb3db","v   ersion":"8.5.6.0"}],"totalCount":4,"items":   [{"TAD_DISPLAY_NAME":"Step: task5","AT_RISK_TIME":"2015-02-11T11:03:02Z","ST   ATE":"STATE_READY","NAME":"task5","SNAPSHOT_NAME":"OP2","PRIORITY":30,"SNAPS   HOT_ID":"2064.b0cf716d-6a50-4b08-a6b7-061a2321bbc2","DUE":"2015-02-11T11:09:   02Z","STATUS":"Received","PI_DISPLAY_NAME":"bpd3:62","OWNER":null,"CONTAINME   NT_CTX_ID":"62","PROCESS_INSTANCE.PIID":"62","PI_PIID":"62","TAD_DESCRIPTION  ":"Step: task5","PI_NAME":"bpd3:62","TKIID":"58","ORIGINATOR":"bpmadmin","IS   _AT_RISK":true,"PROCESS_APP_ACRONYM":"HT1","systemID":"e2021188-db69-46e3-9f24-   30c5e2ffb3db","ACTIVATED":"2015-02-11T10:09:02Z","TASK.TKIID":"58","COMPLETED"  :null,"KIND":"KIND_PARTICIPATING","PT_PTID":"25.55622acd-50c3-43c0-8651-227ab2   636d9b","ASSIGNED_TO_ROLE_DISPLAY_NAME":"All Users"},{"TAD_DISPLAY_NAME":"Ste   p: required2","AT_RISK_TIME":"2015-02-11T11:04:15Z","STATE":"STATE_READY","NA   ME":"required2","SNAPSHOT_NAME":"OP2","PRIORITY":30,"SNAPSHOT_ID":"2064.b0cf716d-   6a50-4b08-a6b7-061a2321bbc2","DUE":"2015-02-11T11:10:15Z","STATUS":"Received","PI   _DISPLAY_NAME":"bpd3:62","OWNER":null,"CONTAINMENT_CTX_ID":"62","PROCESS_INSTAN   CE.PIID":"62","PI_PIID":"62","TAD_DESCRIPTION":"Step: required2","PI_NAME":"bp   d3:62","TKIID":"59","ORIGINATOR":"bpmadmin","IS_AT_RISK":true,"PROCESS_APP_ACRON   YM":"HT1","systemID":"e2021188-db69-46e3-9f24-30c5e2ffb3db","ACTIVATED":"2015-   02-11T10:10:15Z","TASK.TKIID":"59","COMPLETED":null,"KIND":"KIND_PARTICIPATING",  "PT_PTID":"25.55622acd-50c3-43c0-8651-227ab2636d9b","ASSIGNED_TO_ROLE_DISPLAY_NA   ME":"All Users"}

任务实例查询 REST API

任务实例查询提供可用的任务查询列表。仅支持默认的任务列表 IBM.DEFAULTALLTASKSLIST_75。

示例 URL:

https://PFSIHS.cn.ibm.com/rest/bpm/federated/v1/tasks/queries

示例响应:

{"federationResult":   [{"indexRefreshInterval":1000,"id":"bpm170","statusCode":200,"taskCom   pletionUrlPrefix":"https:////BPM856IHS.cn.ibm.com   //teamworks","restUrlPrefix":"https:////BPM856IHS.cn.ibm.com//rest//b   pm//wle","systemType":"SYSTEM_TYPE_WLE","indexName":"bpm170","systemI   D":"e2021188-db69-46e3-9f24-30c5e2ffb3db","version":"8.5.6.0"},   {"indexRefreshInterval":1000,"id":"bpm37","statusCode":200,"taskCompl   etionUrlPrefix":"https:////BPM8013IHS.cn.ibm.com   //teamworks","restUrlPrefix":"https:////BPM8013IHS.cn.ibm.com   //rest//bpm//wle","systemType":"SYSTEM_TYPE_WLE","indexName":"bpm37",  "systemID":"4998fd69-9e05-45c5-930e-   ceb1829a6cf8","version":"8.0.1.3"}],"items":   [{"authorizationType":"INSTANCE_BASED","kind":"FEDERATED","entityType   Name":"TASK","systemIDs":["e2021188-db69-46e3-9f24-   30c5e2ffb3db","4998fd69-9e05-45c5-930e-ceb1829a6cf8"],"locales":   ["zh","tr","sv","ru","ro","pl","no","nb","ko","ja","default","en","ar  ","cs","da","de","el","es","fi","fr","iw","hu","it","zh_TW","pt_BR"],  "name":"IBM.DEFAULTALLTASKSLIST_75","description":"This is the   default tasks list. Define custom tasks lists to show selected   business   data.","displayName":"All","keyAttribute":"TASK.TKIID"}],"identifier"  :"name"}

任务实例查询属性 REST API

任务实例查询属性提供了默认任务列表中您可在任务列表查询中使用的属性名。

示例 URL:

https://PFSIHS.cn.ibm.com/rest/bpm/federated/v1/tasks/query/IBM.DEFAULTALLTASKSLIST_75/attributes

示例响应:

{"federationResult":   [{"indexRefreshInterval":1000,"id":"bpm170","statusCode":200,"taskComp   letionUrlPrefix":"https:////BPM856IHS.cn.ibm.com//teamworks","restUr   lPrefix":"https:////BPM856IHS.cn.ibm.com//rest//bpm//wle","systemType  ":"SYSTEM_TYPE_WLE","indexName":"bpm170","systemID":"e2021188-db69-   46e3-9f24-30c5e2ffb3db","version":"8.5.6.0"},   {"indexRefreshInterval":1000,"id":"bpm37","statusCode":200,"taskCompl   etionUrlPrefix":"https:////BPM8013IHS.cn.ibm.com//teamworks","restUrl   Prefix":"https:////BPM8013IHS.cn.ibm.com//rest//bpm//wle","systemType  ":"SYSTEM_TYPE_WLE","indexName":"bpm37","systemID":"4998fd69-   9e05-45c5-930e-ceb1829a6cf8","version":"8.0.1.3"}],"totalSystemTypeCount":1,  "items":[{"content":"instance.processinstancename.string",  "sourceAttribute":"instance.processinstancename.string",  "name":"PI_DISPLAY_NAME","sourceQueryTableIdentifier":"n//a",  "type":"string","isArray":false},{"content":"process.processtemplateid.key",  "sourceAttribute":"process.processtemplateid.key","name":"PT_PTID",  "sourceQueryTableIdentifier":"n//a","type":"string","isArray":false},   {"content":"task.duetime.date","sourceAttribute":"task.duetime.date",  "name":"DUE","sourceQueryTableIdentifier":"n//a","type":"date","isArray":false},   {"content":"task.isatrisk.boolean","sourceAttribute":"task.isatrisk.boolean",  "name":"IS_AT_RISK","sourceQueryTableIdentifier":"n//a","type":"boolean",  "isArray":false},{"content":"task.status.key","sourceAttribute":"task.status.key",  "name":"STATUS","sourceQueryTableIdentifier":"n//a","type":"string","isArray":false},   {"content":"task.atrisktime.date","sourceAttribute":"task.atrisktime.date",  "name":"AT_RISK_TIME","sourceQueryTableIdentifier":"n//a","type":"date",  "isArray":false},{"content":"instance.processinstancename.string",  "sourceAttribute":"instance.processinstancename.string","name":"PI_NAME",  "sourceQueryTableIdentifier":"n//a","type":"string","isArray":false},   {"content":"task.tkiid.key","sourceAttribute":"task.tkiid.key","name":"TKIID",  "sourceQueryTableIdentifier":"n//a","type":"string","isArray":false},   {"content":"task.groupid.key","sourceAttribute":"task.groupid.key","name":"GROUP_ID",  "sourceQueryTableIdentifier":"n//a","type":"number","isArray":false},   {"content":"task.owner.key","sourceAttribute":"task.owner.key","name":"OWNER",  "sourceQueryTableIdentifier":"n//a","type":"string","isArray":false},   {"content":"task.completiontime.date","sourceAttribute":"task.completiontime.date",  "name":"COMPLETED","sourceQueryTableIdentifier":"n//a","type":"date","isArray":false},   {"content":"task.priority.long","sourceAttribute":"task.priority.long","name":"PRIORITY",  "sourceQueryTableIdentifier":"n//a","type":"number","isArray":false},   {"content":"task.description.string","sourceAttribute":"task.description.string",  "name":"TAD_DESCRIPTION","sourceQueryTableIdentifier":"n//a","type":"string",  "isArray":false},{"content":"instance.snapshotname.string",  "sourceAttribute":"instance.snapshotname.string","name":"SNAPSHOT_NAME",  "sourceQueryTableIdentifier":"n//a","type":"string","isArray":false},   {"content":"task.userid.key","sourceAttribute":"task.userid.key","name":"USER_ID",  "sourceQueryTableIdentifier":"n//a","type":"number","isArray":false},   {"content":"instance.piid.key","sourceAttribute":"instance.piid.key",  "name":"PROCESS_INSTANCE.PIID","sourceQueryTableIdentifier":"n//a",  "type":"string","isArray":false},{"content":"instance.snapshotid.key",  "sourceAttribute":"instance.snapshotid.key","name":"SNAPSHOT_ID",  "sourceQueryTableIdentifier":"n//a","type":"string","isArray":false},   {"content":"task.activationtime.date","sourceAttribute":"task.activationtime.date",  "name":"ACTIVATED","sourceQueryTableIdentifier":"n//a","type":"date",  "isArray":false},   {"content":"task.state.key","sourceAttribute":"task.state.key","name"  :"STATE","sourceQueryTableIdentifier":"n//a","type":"string","isArray":false},   {"content":"task.name.string","sourceAttribute":"task.name.string","name"  :"NAME","sourceQueryTableIdentifier":"n//a","type":"string","isArray  ":false},   {"content":"instance.piid.key","sourceAttribute":"instance.piid.key",  "name":"PI_PIID","sourceQueryTableIdentifier":"n//a","type":"string","isAr   ray":false},   {"content":"process.processappacronym.string","sourceAttribute":"proc   ess.processappacronym.string","name":"PROCESS_APP_ACRONYM","sourceQue   ryTableIdentifier":"n//a","type":"string","isArray":false},   {"content":"task.containmentcontextid.key","sourceAttribute":"task.co   ntainmentcontextid.key","name":"CONTAINMENT_CTX_ID","sourceQueryTable   Identifier":"n//a","type":"string","isArray":false},   {"content":"task.originator.key","sourceAttribute":"task.originator.k   ey","name":"ORIGINATOR","sourceQueryTableIdentifier":"n//a","type":"s   tring","isArray":false},   {"content":"task.tkiid.key","sourceAttribute":"task.tkiid.key","name"  :"TASK.TKIID","sourceQueryTableIdentifier":"n//a","type":"string","is   Array":false},   {"content":"task.assignedtoroledisplayname.string","sourceAttribute":  "task.assignedtoroledisplayname.string","name":"ASSIGNED_TO_ROLE_DISP   LAY_NAME","sourceQueryTableIdentifier":"n//a","type":"string","isArra   y":false},   {"content":"task.kind.key","sourceAttribute":"task.kind.key","name":"  KIND","sourceQueryTableIdentifier":"n//a","type":"string","isArray":f   alse},   {"content":"task.displayname.string","sourceAttribute":"task.displayn   ame.string","name":"TAD_DISPLAY_NAME","sourceQueryTableIdentifier":"n   //a","type":"string","isArray":false}]}

启动实体 REST API

可启动的实体提供可由当前登录的用户启动的进程、服务和任务的联合列表。返回每个可启动项的属性,这些属性依赖于联合的 IBM BPM 系统类型。属性中包括一个表示运行该实体的系统的系统 ID。响应数据中的 federationResult 部分包含一个针对每个系统 ID 的条目,该条目表示使用该系统时要使用的 URL。

示例 URL:

https://PFSIHS.cn.ibm.com/rest/bpm/federated/v1/launchableEntities

示例响应:

{"federationResult":   [{"statusCode":200,"id":"bpm170","indexRefreshInterval":1000,"taskCom   pletionUrlPrefix":"https://BPM856IHS.cn.ibm.com/teamworks","restUrlPr   efix":"https://BPM856IHS.cn.ibm.com/rest/bpm/wle","systemType":"SYSTE   M_TYPE_WLE","indexName":"bpm170","systemID":"e2021188-db69-46e3-9f24-   30c5e2ffb3db","version":"8.5.6.0"},   {"statusCode":200,"id":"bpm37","indexRefreshInterval":1000,"taskCompl   etionUrlPrefix":"https://BPM8013IHS.cn.ibm.com/teamworks","restUrlPre   fix":"https://BPM8013IHS.cn.ibm.com/rest/bpm/wle","systemType":"SYSTE   M_TYPE_WLE","indexName":"bpm37","systemID":"4998fd69-9e05-45c5-930e-   ceb1829a6cf8","version":"8.0.1.3"}],"items":   [{"snapshotID":"2064.95c9fb3c-e4a2-48af-   91df-dbcda7a90a17","itemID":"1.36bdcc65-8d6a-4635-85cf-   57cab68a7e45","systemType":"SYSTEM_TYPE_WLE","processAppName":"Proces   s Portal","isMobileReady":false,"launchableEntityType":"SERVICE","snaps   hotCreatedOn":"2015-01-28T04:29:34Z","display":"Process   Diagram","type":"service","startURL":"https://WIN2008R2X64RU.c   n.ibm.com/teamworks/executecf?modelID=1.36bdcc65-8d6a-4635-85cf-   57cab68a7e45&branchID=2063.34a0ce6e-631b-465d-b0dc-   414c39fb893f","tip":true,"processAppID":"2066.23d3ecec-6fdb-4033-   9c57-e931aa13761f","branchID":"2063.34a0ce6e-631b-465d-b0dc-   414c39fb893f","isDefault":false,"snapshotName":"8.5.6.0","subtype":"u   rl","itemReference":"/1.36bdcc65-8d6a-4635-85cf-   57cab68a7e45","ID":"2015.18","branchName":"Main","systemID":"e2021188   -db69-46e3-9f24-30c5e2ffb3db","processAppAcronym":"TWP"},   {"snapshotID":"2064.5327bc35-5faa-4052-9317-   d2a4b6e96a28","itemID":"25.c904b3b1-afc1-4698-bf5a-   a20892c20275","systemType":"SYSTEM_TYPE_WLE","processAppName":"Hiring   Sample","isMobileReady":false,"launchableEntityType":"PROCESS","snaps   hotCreatedOn":"2014-11-27T16:19:33Z","display":"Standard HR Open New   Position","type":"process","startURL":"https://WIN2008R2X64RU.cn.ibm   .com/rest/bpm/wle/v1/process?action=start&bpdId=25.c904b3b1-afc1-4698-   bf5a-a20892c20275&branchId=2063.1a52abd6-b068-4f9e-91a9-   ded9793eb34e","tip":true,"processAppID":"2066.9ab0d0c6-d92c-4355-9ed5-d8a05   acdc4b0","branchID":"2063.1a52abd6-b068-4f9e-91a9-ded9793eb34e","isDefault"  :false,"snapshotName":"Standard Hiring Sample v8560","itemReference":"/25.c   904b3b1-afc1-4698-bf5a-a20892c20275","ID":"2015.37","branchName":"Main","sys   temID":"e2021188-db69-46e3-9f24-30c5e2ffb3db","processAppAcronym":"HSS"},   {"snapshotID":"2064.b2076323-2a32-49a1-9e6f-570c3bf28935","itemID":"1.2a8bb2d0-   5038-43be-b17e-31a192f8847c","systemType":"SYSTEM_TYPE_WLE","processAppName":"T   estApp","isMobileReady":false,"launchableEntityType":"SERVICE","snapshotCreat   edOn":"2015-03-03T09:53:08Z","display":"HS_Service","type":"service","startURL"  :"https://HollyIHS1.cn.ibm.com/teamworks/executeServiceByName?   processApp=TEST1&serviceName=HS_Service&snapshot=ServiceExpose_1","ti   p":false,"processAppID":"2066.5b5acd2d-0374-4a0a-b405-   50a14e2a8e7c","branchID":"2063.c2536580-fe7c-4feb-946e-   7078301b8608","isDefault":true,"snapshotName":"ServiceExpose_1","subt   ype":"startable_service","itemReference":"/1.2a8bb2d0-5038-43be-b17e-   31a192f8847c","ID":"2015.109","branchName":"ServiceExpose_1","systemI   D":"4998fd69-9e05-45c5-930e-   ceb1829a6cf8","processAppAcronym":"TEST1"},   {"snapshotID":"2064.a4b8b434-29d2-4bd7-92ea-   7f3e30630b06","itemID":"1.04c8755c-b4fb-4f53-b0bc-   c0816add8a02","systemType":"SYSTEM_TYPE_WLE","processAppName":"HollyT   est1","isMobileReady":false,"launchableEntityType":"SERVICE","snapsho   tCreatedOn":"2015-01-   29T02:50:34Z","display":"HT11","type":"service","startURL":"https://W   IN2008R2X64RU.cn.ibm.com/teamworks/executeServiceByName?   processApp=HT1&serviceName=HT11&snapshot=V11","  tip":false,"processAppID":"2066.c7603da0-1c6e-402f-b631-   f54326c18ea5","branchID":"2063.60f8fbee-1282-4283-acd5-   4fa76f39a339","isDefault":false,"snapshotName":"V11","subtype":"star   table_service","itemReference":"/1.04c8755c-b4fb-4f53-b0bc-   c0816add8a02","ID":"2015.163","branchName":"Main","systemID":"e2021188-   db69-46e3-9f24-30c5e2ffb3db","processAppAcronym":"HT1"} ,   {"snapshotID":"2064.fe64ffd7-eaf6-4671-8b40-ac57241bb4d3","itemID"  :"25.ddd4df2a-09b7-4ab0-87f4-eede42a1f8c4","systemType":"SYSTEM_TYPE_   WLE","processAppName":"FailSysTask","isMobileReady":false,"launchableEnt   ityType":"PROCESS","snapshotCreatedOn":"2015-03-07T08:34:47Z","display"  :"FST","type":"process","startURL":"https://HollyIHS1.cn.ibm.com/rest/bp   m/wle/v1/process?action=start&bpdId=25.ddd4df2a-09b7-4ab0-87f4-   eede42a1f8c4&snapshotId=2064.fe64ffd7-eaf6-4671-8b40-ac57241bb4d3","ti   p":false,"processAppID":"2066.00dfe332-f13a-46e2-b9e8-b81546a0f0e4","branchI   D":"2063.24932202-8f85-4e8b-9215-6892f3be29cc","isDefault":false,"snapsho   tName":"failedSysLinkProcess","itemReference":"/25.ddd4df2a-09b7-4ab0-87f4-   eede42a1f8c4","ID":"2015.113","branchName":"failedSysLinkProcess","systemI   D":"4998fd69-9e05-45c5-930e-ceb1829a6cf8","processAppAcronym":"FST"}]}

排除 Process Federation Server 的故障

Process Federation Server 拥有一个处理 Process Federation Server 写入的消息的统一日志组件,还包含一个首次失败数据捕获 (FFDC) 功能。您可以配置 server.xml 文件中的 <logging> 元素来控制 trace.log 文件中的跟踪信息。

要使用为您的 Process Federation Server 设置的跟踪信息,可以完成以下步骤:

  1. 在 Process Federation Server 上,编辑 pfs_install_root /usr/servers/server1/server.xml 配置文件。
  2. 展开您想要跟踪的每个组件的 traceSpecification 属性。查看下面这个示例:
    <logging consoleLogLevel="INFO" traceFormat="ENHANCED"  traceSpecification="*=info:com.ibm.bpm.federated.*=all " />

请参阅 IBM 知识中心上的 IBM BPM 文档,了解 Process Federation Server 的故障排除细节。

请参阅下表,了解其他故障排除细节:

问题 可能的原因 行动计划
无法访问 Process Federation Server REST API 很有可能是因为 LDAP 未正确配置。 检查 messages.log
REST API 响应中的系统状态、任务和启动列表信息不正确。 SSO 或 SSL 未正确配置,所以无法连接目标 IBM BPM。 启用以下轨迹: com.ibm.bpm.federated.rest.query.*=all:com.ibm.bpm.federated.config.*=all: com.ibm.bpm.federated.retriever.*=all
Process Federation Server 集群未正常运行 Process Federation Server 集群未正确配置或未正常运行。 启用以下轨迹: com.ibm.wbimonitor.partitioning.*=all
新任务未建立索引 Process Federation Server 任务和进程索引器未正常运行。 启用以下轨迹: com.ibm.bpm.federated.indexer.*=all

结束语

在本教程中,您通过一个详细示例,学习了如何安装和配置 Process Federation Server 来访问两个后端 IBM BPM 系统。害学习了整体拓扑结构和如何配置您的环境。现在,您可以将所学的知识应用到自己的 IBM BPM 环境中。

致谢

感谢 Wu Mi Zhong 的评审和评价。

原文  http://www.ibm.com/developerworks/cn/bpm/library/techarticles/1601_wang-trs/1601_wang.html?ca=drs-
正文到此结束
Loading...