使用 REST API 将 IBM Business Process Manager V7.5.1 中的业务流程应用程序与外部系统集成

集成外部活动与外部系统

本文将讨论如何使用 REST API 将活动和外部系统相集成。IBM® Business Process Manager V7.5.1 目前支持 WebSphere® Lombardi Edition V7.2 中不受支持的 REST API 所提供的所有功能。

Ricardo Olivieri, 软件工程师, IBM

Ricardo OlivieriRicardo OlivieriIBM Software Services for WebSphere 的一位软件工程师。他的专业领域包括架构、设计和开发软件应用程序(主要是 Web 和数据库中心应用程序),管理和配置 WebSphere Application Server 以及分布式软件架构。Ricardo 有几年的 Java 开发以及 Groovy、Perl 和 Python 开发经验,并且有很强的后端开发(服务器端、业务逻辑、数据库、SQL)和前端开发背景。最近,Ricardo 又有了一些关于使用 WebSphere Lombardi Edition 进行 IBM 开发的奇思妙想。在 IBM 的这几年中,他学习和使用了多种开源架构、库和项目,比如 Drools、Spring、Struts、Restlet、Hibernate、Dojo 和 JasperReports。他拥有 University of Puerto Rico Mayaguez Campus 计算机工程学士学位。



2012 年 4 月 16 日

简介

在 IBM Business Process Manager (BPM) 中,您可以定义和实现一些活动,比如步骤 (step),必须执行这些步骤才能完成一个业务流程,本文将介绍如何使用 REST API 集成活动与外部系统。随着 Business Process Manager V7.5.1 的发布,现在您可以使用不支持 REST API 的 WebSphere Lombardi Edition V7.2 提供的所有功能。关于 REST API for Lombardi Edition V7.2 的更多信息,请参阅 Common business process modeling situations in WebSphere Lombardi Edition V7.2, Part 2: Integrating a business process application with an external system using the REST API

先决条件

要理解本文所讨论的这些主题,并不需要深入透彻地理解 IBM Business Process Manager V7.5.1。但是应该熟悉该产品的基本功能和业务流程管理的基本概念。此外,还需要对 Java™、JEE、HTML、JavaScript、Dojo、WebSphere Application Server、Web 应用程序安全性、单点登录、具象状态传输 (REST) 架构、集成开发环境(比如 Eclipse)和编程语言有一定的了解。


集成一个业务流程和一个外部用户界面

将业务流程和外部用户界面相集成是很常见的。例如,某个团队投资了大量时间和精力开发一个使用 Java Server Faces (JSF) 的 Web 界面,用户界面其大部分都已实现了,而现在团队决定要使用 IBM BPM 实现该业务工作流,而不再使用 Java 编程语言硬编码该逻辑。尽管管理团队完全同意使用 IBM BPM 实现该业务流程,但是与使用 IBM BPM coaches 重新创建用户界面相比,他们更喜欢保留这个新的 JSF 用户界面。这种情况下,应该从用户那里收集数据,将它们作为外部活动实现,而不是使用 coaches,将它们作为公共服务实现。

在整个文章中,我们使用了一个带外部活动的业务流程基本样例,用它来展示如何集成一个外部系统。该业务流程包含在本文 下载 小节,您可以将它导入 IBM BPM。下面我们将开始介绍这个样例业务流程,然后介绍如何使用一个 Java 应用程序来执行它。图 1 显示了该业务流程的实现图 Process With External Steps,图 2 展示了其中所用的变量。

图 1. 带外部活动的业务流程
带外部活动的业务流程
图 2. Process With External Steps 中所用的变量
Process With External Steps 中所用的变量

在图 1 中,您可以看到业务流程包含两个作为外部实现来实现的步骤:External Activity 1External Activity 2。另外,在图 2 中,您可以看到该流程有一个名为 priority 的输入值,类型为字符串数据类型,可以将它是作为一个变量来传递,用于启动流程。

图 3 显示 External Activity 1 实现是一个 User Task 实现类型的 External Activity 1 Impl。打开 External Activity 1 Impl,您可以看到您在该步骤中指定的输入值和输出值(参见图 4)。输入值是从 IBM BPM 中执行的流程中传递到外部系统的值,而输出值是将要从外部系发送到 IBM BPM 流程中的值。

图 3. External Activity 1 的实现类型
External Activity 1 的实现类型
图 4. External Activity 1 的输入值和输出值
External Activity 1 的输入值和输出值

对于 External Activity 1,您可以看见一个指定的输入参数:priority。该参数是用于启动流程的一个字符串值。同样,该活动的输出值由一个 User 数据类型的变量组成。图 5 显示了 User 类型的定义。您可以看到这个数据类型是由简单的基本数据类型组成。

图 5. User 数据类型定义
User 数据类型定义

将外部实现的输入和输出映射到在流程级别中定义的变量,如图 6 所示。

图 6. External Activity 1 数据映射
External Activity 1 数据映射

图 7 显示了 External Activity 2 的实现。对于这一步,输入由一个额定值 (rating value) 和一个报价值构成,这些值是系统根据 External Activity 1 执行过程中收集的值估算出来的(在 System Step 1 中)。输出的是一个布尔值,指定使用是否接受系统生成的报价值或额定值。

图 7. External Activity 2 的输入和输出
External Activity 2 的输入和输出

图 8 显示了 External Activity 2 的输入和输出变量的数据映射。正如在 External Activity 1 中那样,这些值也可以映射到在业务流程级别上定义的变量。

图 8. External Activity 2 的数据映射
External Activity 2 的数据映射

系统步骤

除了这两个步骤可以作为外部活动在 Process With External Steps 业务流程中执行外,还有两个其他步骤:System Step 1System Step 2。这两个步骤是系统活动,只能作为 JavaScript 代码实现。

在业务流程执行过程中,执行到某个实现为外部实现的步骤时,执行会停止,IBM BPM 会等待外部系统完成该活动。要继续执行业务流程,则需要以编程方式将外部系统连接到 IBM BPM 并完成活动。下一节将探讨如何使用 REST API 将 Process With External Steps 业务流程与一个外部系统相集成。

请注意,外部活动显示在 Process Portal 的用户收件箱中,但无法从 Portal 界面执行这些活动,如图 9 所示。对于使用 coach 实现为人工服务的活动,Portal 提供了一个选项来执行它们。

图 9. Process Portal 中的外部实现
Process Portal 中的外部实现

使用 REST API

REST API 大大简化了与外部系统的集成。在 WebSphere Lombardi Edition V7.2 中,REST API 是一个可选的(而不是官方的)包。在 IBM BPM V7.5.1 中,REST API 是核心产品的一部分,默认情况下已安装该产品。

Web API

REST API 的一个替代工具是 Web API(参见 信息中心,了解有关的更多细节),它也提供了一组操作,从外部客户端应用程序访问 BPM 功能。Web API 也受到了官方的支持,已存在很长一段时间。当您使用 Web API 时,通常会获得一个传统的 Web 服务客户端或服务器实现。Web API 不在本文的讨论范围之内。

使用 REST API,您能够以编程方式执行和完成外部活动。举例而言,您可以实现一个 Java Swing 或一个 SWT 用户界面,让用户输入必要的数据来完成流程中的相应步骤。Java 应用程序通过 REST API 发送必要的值,以便前进到业务流程中的下一个步骤。您不仅可以使用 REST API 执行外部实现,还可以执行服务或启动业务流程,以及其他一些功能。

请注意,您可以使用自己选择的语言来编写 REST 客户端,从而能够通过 REST API 访问 IBM BPM 服务器。


REST API 客户端

JavaScript

在 IBM BPM 安装过程中,会在每个 Process Center 和 Process Server 节点中安装一个 Web 客户端工具。这个客户端工具对于学习和熟悉 REST API 所提供的功能很有用。例如,可以了解进行的实际 HTTP 调用,在使用您所选择的语言编写自己的 REST 客户端实现时,这些调用很有用。要访问这个 Web 客户端,您可以在 Web 浏览器中访问以下 URL:

http://host_name:port_number/bpmrest-ui

其中:

  • host_name 是流程服务器(或 Process Center)的主机的网络名称。
  • port_number 是 REST API Web 客户端工具所使用的 HTTP 端口号。该端口号取决于您的系统配置(默认端口号为 9080)。

例如,如果您的 IBM BPM 服务器(比如 “server1”)使用端口 9080 作为 HTTP 服务器端口,那么您应该在浏览器中打开 URL http://server1:9080/bpmrest-ui 来访问 Web 客户端。关于使用 Web 客户端的更多细节,请访问 信息中心

这个基于浏览器的 REST API 客户端工具通过执行 AJAX 调用来连接 IBM BPM 服务器。但是,如果您认为自己可以实现一个 JavaScript 客户端,让您自己的 Web 应用程序使用该客户端来调用 REST API,则存在一定的限制。如果打算通过执行 AJAX 调用从您的 Web 应用程序调用 REST API,这不会生效,除非您的 Web 应用程序是从托管 IBM BPM 业务流程的相同服务器(相同的主机名 端口号)提供的。请注意,随产品发布的 Web 客户端工具正好属于这种情况。浏览器仅能建立与发送请求的机器的新网络连接(参见 WikipediaW3C 上同源策略文档)。

要消除同源策略带来的限制,有多种选择。例如,从浏览器的视角来看,您的 Web 应用程序和 IBM BPM 需要显示在同一台服务器上,才能消除这些限制。为此,可以使用代理网关。但是,具体解决方案取决于您的 Web 应用程序和 IBM BPM 将要部署到的网络基础架构,或者这些组件添加到网络所带来的成本,使用代理网关可能不是一个可行的解决方案。一种更加可行且常用的解决方案是使用 JSONP,它允许某个页面从不同域的服务器请求数据。如果熟悉 HTML,您或许知道,<script> 元素不受同源策略对应用的规则的约束。JSONP 只是利用了 <script> 元素的开放策略,允许一个页面从不同的域收集数据。

要使用 JSONP,那么它所连接的服务器必须支持它。IBM BPM V7.5.1 支持 JSONP(但默认未启用),因此您可以编写 JavaScript 来使用这项技术。要在 IBM BPM 安装中启用 JSONP,则需要更新 100Custom.xml 文件,以便包含清单 1 中所示的配置。

清单 1. 在 Business Process Manager 上启用 JSONP
<properties>
 <common merge="mergeChildren">
 <jsonp-enabled merge="replace">true</jsonp-enabled>
 </common>
</properties>

100Custom.xml 文件可在下面的文件夹中找到:

<BPM installation-folder>/profiles/<profile-root>/config/cells/<cellname>/
 nodes/<nodename>/servers/<servername>/<server type>/config/

在 IBM BPM 服务器上启用了 JSONP 支持之后,就可以编写代码来调用 REST API,该代码类似于清单 2 中所示的代码。

清单 2. 使用 JSONP 调用 REST API
<html>
…
<head>
…
<script type="text/javascript">
 dojo.require("dojo.io.script");
</script>
…
</head>
<body>
 <script type="text/javascript">
 dojo.require("dojo.io.script");
 dojo.io.script.get(
 {
 callbackParamName : "callback",
 url : "http://localhost:9080/rest/bpm/wle/v1/exposed/process" +
 "?accept=application/x-javascript",
 load : function(data) {
 dojo.byId("results").innerHTML = "<pre>Data: " +
 dojo.toJson(data, true) + "</pre>";
 },
 error : function(error) {
 dojo.byId("results").innerHTML = "<pre>Error: " +
 dojo.toJson(error, true) + "</pre>";
 }
 });
 </script>
 <b>REST API method invocation for exposed processes (in JSON):</b>
 <div id="results" style="height: 200px;"></div>
</body>
</html>

清单 2 中所示的代码段使用 Dojo 框架执行一次 JSONP 调用,获取用户可在 Process Portal 中启动的业务流程列表。有关 JSONP 和 IBM BPM 提供的 REST URL 的更多信息,请参阅信息中心中的 IBM BPM REST API 支持的内容类型针对 BPD 相关资源的 REST 接口 主题。编写使用 JSONP 调用 REST API 的 JavaScript 客户端,这不属于本文的讨论范围。如果您打算为您的项目编写 JavaScript 客户端,上述详细信息可以帮助您入门。

Java

出于多种原因,您可能需要使用一个不基于浏览器的客户端来调用 REST API:

  • 一个组织或部门拥有一组自我约束规则或策略,不允许在 IBM BPM 服务器上启用 JSONP。
  • 技术要求:要求给出一种设计,不得从浏览器调用 REST API,而是从托管 Web 应用程序的应用服务器调用它。
  • 将开发一个使用 Swing 的独立 Java 应用程序,用该应用程序作为业务流程中的外部活动步骤的前端。

换句话说,根据解决方案的要求,可能有很充分的技术原因要求不直接从浏览器调用 REST API。

示例 Java 客户端

本文提供了一个使用 Java 编写的 可重用的 REST 客户端。这个客户端允许您在 IBM BPM 中执行以下基本任务:

  • 启动业务流程。
  • 运行服务。
  • 完成任务。
  • 获取任务详细信息。
  • 将一项任务重新分配给特定用户。
  • 将一项任务重新分配给提交 REST 调用的用户。
  • 基本搜索。

上述方法已足以将一个外部系统与 IBM BPM 中的业务流程相集成。但是,根据项目的具体需求,可能还需要其他方法和函数。请注意,这个示例客户端是 “按原样” 提供的,您可以使用任何您想要的方式更改或完善代码。

本文还提供了一个 示例 Java 独立应用程序,它使用可重用的 Java REST 客户端执行 Process With External Steps 业务流程图(之前已介绍)。

要在 Java 独立应用程序中使用示例 Java REST 客户端,首先要创建 BPMClientImpl 类的一个实例,如清单 3 所示。

清单 3. Java 独立应用程序中的 REST 客户端实例
// Hostname of the IBM Business Process Manager server
String hostname ="localhost";
// IBM Business Process Manager server port number
int port = 9080; 
// The userid to connect to Lombardi Edition, such as tw_admin
String userid = "userid";
// The password that corresponds to the specified userid
String password = "password";
// Create WASAuthenticationTokenHandler instance
AuthenticationTokenHandler handler =
 new WASAuthenticationTokenHandler(userid, password); 
// Create REST client
BPMClient client = new BPMClientImpl(hostname, port, handler);

通过 BPMClientImpl 实例进行的 REST 方法调用全部在同一用户帐户的上下文中执行的。该用户的帐户由用于创建 WASAuthenticationTokenHandler 类实例的凭据标识(参见清单 3)。

在 WebSphere Application Server 上运行的 REST 客户端:如果不开发 Java 独立程序,则会开发一个要部署到 WebSphere Application Server(以下简称 Application Server)上的 Web 应用程序,并为 Application Server 和 IBM BPM 服务器设置单一登录,使用 WASAuthenticationTokenHandler 类的没有参数的构造函数。在这种情况下,当采用访问 Web 应用程序的已验证用户的身份时,会自动调用 REST 方法。如果未在托管 Web 应用程序的 Application Server 与 IBM BPM 之间设置单一登录,则需要使用清单 3 中所示的 WASAuthenticationTokenHandler 类的构造函数。有关更多详细信息,请参阅代码中的 Javadoc 注释。

创建 BPMClientImpl 类的一个实例后,即可开始执行 REST 调用。清单 4 中的伪代码展示了示例 Java 应用程序如何使用 Java REST API 客户端来执行 Process With External Steps 业务流程。

清单 4. 从 Java 代码调用 REST API
JSONObject results; 

// Create input argument to start the business process
JSONObject bpdArgs = new JSONObject();
bpdArgs.put("priority", "high");

// Start the business process (Process With External Steps)
results = client.runBPD(BPD_ID, PROCESS_APP_ID, bpdArgs);
int processID = results.getJSONObject("data").getInt("piid");

// Retrieve the inbox (list of user tasks) for the user
results = client.getInbox();

// Find reference to first external task in process in user's inbox
JSONObject externalTask_1 = . . .
int externalTaskID_1 = externalTask_1.getInt("taskId");

// Get details for external task/activity
results = client.getTaskDetails(externalTaskID_1);
parseVariables(results);

// Get model for external task/activity
String externalActivityID_1 = results.getJSONObject("data")
 .getString("externalActivityID");
results = client.getExternalActivityModel(externalActivityID_1); 
parseActivityModel(results); 

// Claim External Activity 1
results = client.reassignTask(externalTaskID_1); 

// Complete External Activity 1
JSONObject outputTask_1 = new JSONObject();
JSONObject user = new JSONObject();
user.put("name", "John");
user.put("age", "25");
user.put("numberOfClaims", "10");
user.put("zipCode", "78758");
outputTask_1.put("user", user); 
results = client.finishTask(externalTaskID_1, outputTask_1); 

// Retrieve the inbox (list of user tasks) for the user
results = client.getInbox();

// Get reference to second external task in process
JSONObject externalTask_2 = . . . 
int externalTaskID_2 = externalTask_2.getInt("taskId");

// Get details for external task/activity
results = client.getTaskDetails(externalTaskID_2); 
parseVariables(results); 

// Process input values (here we'd process quote and rating input values) 
// ... 

// Get model for external task/activity
String externalActivityID_2 = results.getJSONObject("data").
 getString("externalActivityID");
results = client.getExternalActivityModel(externalActivityID_2); 
parseActivityModel(results); 

// Claim External Activity 2
results = client.reassignTask(externalTaskID_2); 

// Complete External Activity 2
JSONObject outputTask_2 = new JSONObject();
outputTask_2.put("accepted", true); 
results = client.finishTask(externalTaskID_2, outputTask_2); 

// Run a service
JSONObject servArgs = new JSONObject();
servArgs.put("orderNumber", 1234); 
results = client.runService(ACRONYM + "@Sample Service", servArgs); 
//Process data returned from service invocation
...

清单 4 中的伪代码首先使用 runBPD() 方法在 IBM BPM 中启动业务流程。请注意,为了识别要启动的业务流程,必须提供 Process With External Steps 业务流程的业务流程 ID 和相应的流程应用程序 ID 作为输入参数。您可以查询 IBM BPM 数据库来获取这两个 ID 的值,或者可以使用现成的 Web 客户端工具。从客户端工具的主页上,展开 Process API 节点,选择 Exposed Processes 选项,然后单击 Execute Call 按钮。您然后会在窗口右侧看到用户可在 Process Portal 中启动的所有流程的列表。在返回的每个流程的数据中,包含业务流程 ID(itemID)和流程应用程序 ID(processAppID),如图 10 所示。

图 10. 使用 REST Web 客户端获取流程 ID
使用 REST Web 客户端获取流程 ID

在 IBM BPM 中启动业务流程之后,示例应用程序会调用 getInbox() 方法来检索用户的收件箱(任务列表)。然后在客户端上分析收件箱中的项目,以获取业务流程中第一个外部实现 (External Activity 1) 的引用。获取了此活动的引用之后,可以调用 getTaskDetails() 方法来获取它的详细信息,比如输入变量的值和任务截止日期。查看从此方法返回的数据,您会发现,作为输入参数传递给业务流程的优先级值作为输入变量传递给了此任务。然后,可以调用 getExternalActivityModel() 方法来获取输入和输出的数据类型。示例代码然后分别调用 reassignTask()finishTask() 方法来声明和执行第一个外部实现。

要执行第一个外部实现,则需要创建一个与 User 数据类型的结构匹配的 JSON 对象(参见 图 5)。在 图 6 中,我们已经看到,External Activity 1 的输出是一个 User 数据类型的对象。因此,需要将这个 JSON 对象作为来自 Java 应用程序的响应数据的一部分,将它发送给 IBM BPM 服务器。

执行第一个外部实现后,示例代码随后会搜索、声明和完成第二个外部实例。如前面的 图 7 中所示,External Activity 2 有两个输入和一个输出变量。要获取输入值(quoterating),需要查询从 IBM BPM 服务器返回的任务详细信息。请查看清单 4 中的代码,您会看到 Java REST 客户端始终返回一个 JSON 对象。因此,要查询返回的数据,只需调用 JSON 对象上的 getter 方法即可。清单 5 给出了示例 Java 应用程序中的两个方法的代码,该应用程序在 JSON 对象上使用 getter 方法读取从 IBM BPM 服务器返回的数据。

清单 5. 分析从 IBM BPM 服务器返回的数据
private void parseVariables(JSONObject taskDetails) throws JSONException {
 JSONObject variables = taskDetails.getJSONObject("data")
 .getJSONObject("data").getJSONObject("variables");
 @SuppressWarnings("rawtypes")
 Iterator keys = variables.keys();
 System.out.println("-------- Variable values (start) -------- ");
 while (keys.hasNext()) {
 String variableName = (String) keys.next();
 Object value = variables.get(variableName);
 System.out.println(variableName + " : " + value); 
 }
 System.out.println("-------- Variable values (end) -------- ");
}

private void parseActivityModel(JSONObject activityModel) throws JSONException {
 String types[] = { "inputs", "outputs" };
 JSONObject model = activityModel.getJSONObject("data");
 for (String type : types) {
 JSONObject ios = model.getJSONObject(type); 
 @SuppressWarnings("rawtypes")
 Iterator params = ios.keys();
 System.out.println("-------- " + type + " (start) -------- ");
 while (params.hasNext()) {
 String variableName = (String) params.next();
 JSONObject param = ios.getJSONObject(variableName); 
 System.out.println(variableName + " : " + param); 
 }
 System.out.println("-------- " + type + " (end) -------- ");
 }
}

第一个方法 parseVariables() 读取分配给一个外部实现的输入和输出的名称和值。请注意,当调用此方法时,输出值是空的,因为这些值是在完成外部任务时发送回服务器的值。

第二个方法 parseActivityModel() 获取外部实现的输入和输出的数据类型。如果对 External Activity 2 执行这两个方法,输出如清单 6 和清单 7 所示。

清单 6. External Activity 2 的模型数据
-------- inputs (start) --------
quote : {"isList":false,"type":"Integer"}
rating : {"isList":false,"type":"Integer"}
-------- inputs (end) --------
-------- outputs (start) --------
accepted : {"isList":false,"type":"Boolean"}
-------- outputs (end) --------
清单 7. External Activity 2 的输入变量值
-------- Variable values (start) --------
accepted : null
quote : 678
rating : 4
-------- Variable values (end) --------

和预期的一样,清单 6 显示 External Activity 2 有两个输入变量 quoterating,而且两个变量的数据类型均为整数。您还可以看到,这个外部实现只有一个输出变量 accepted,该变量为布尔类型。

在清单 7 中,可以看到分配给输入值(quoterating)的值。因为这是一个示例客户端应用程序,所以没有围绕从 IBM BPM 服务器返回的 quoterating 值构建业务逻辑(用这些值可计算接受的输出变量的值)。相反,accepted 布尔输出变量的值硬编码为 true(如清单 4 所示)。另外,请注意,在示例客户端应用程序完成 External Activity 2 之后,会执行 System Step 2,然后业务流程执行结束。

最后,清单 4 中的伪代码的最后一节显示了如何调用在 IBM BPM 中实现的一个服务 Sample Service。该服务接受一个参数(一个订单号),并返回一个值(一个客户编号),如图 11 所示。

图 11. Sample Service 的输入和输出
Sample Service 的输入和输出

Sample Service 的实现生成一个随机数,并将它与作为参数提供的输入数字相乘,如图 12 所示。要读取从服务返回的值,只需查询从服务调用返回的 JSON 对象即可。

图 12. Sample Service 实现
Sample Service 实现

附带文件

本文中提供了执行 Process With External Steps 业务流程的示例 Java 应用程序的 完整源代码

  • 示例应用程序(源代码和二进制文件)包含在 bpm-rest-client-demo-app.jar 文件中。这个 JAR 文件仅包含一个名为 demo.SampleBPMClientApp 的 Java 类,该类对应于在 清单 3清单 4 中给出的代码。
  • 可重用的 Java REST 客户端代码封装在 bpm-rest-client.jar 文件中。

请注意,在运行 demo.SampleBPMClientApp 程序之前,您需要导入 External_Interfaces_App - EI_12412_1020_AM.twx 文件。这个 TWX 文件也包含在本文中。它包含 Process with External Steps 业务流程图。

Java REST 客户端代码依赖于同样包含在本文中的开源库:

  • Restlet JAR:
    • org.restlet.ext.json.jar (V2.0.7)
    • org.restlet (V2.0.7)
  • JSON 类:
    • org.json.jar
  • Spring 核心 JAR:
    • org.springframework.core-3.0.5.RELEASE.jar

在运行 demo.SampleBPMClientApp 程序时,请确保本文中提供的所有 JAR 文件都包含在 JVM 的 classpath 中。否则,会得到 ClassNotFoundException 错误。

demo.SampleBPMClientApp 程序按照下列指定顺序接受(作为输入运行时参数)以下值:

  • Hostname:托管 Process With External Steps 业务流程的 IBM BPM 服务器的主机名。
  • Port number:托管 Process With External Steps 业务流程的 IBM BPM 服务器的 HTTP 端口号。默认端口为 9080。
  • Userid:连接到 IBM BPM 服务器的用户 ID。
  • Password:连接到 IBM BPM 服务器的用户 ID 的密码。

运行时环境

示例 Java REST 客户端已在运行于 WebSphere Application Server V7 上的 JEE 应用程序中和一个 Java 独立程序中经过成功测试。在这两种情形中,都使用了 IBM BPM V7.5.1。另外,在托管 JEE 应用程序的 WebSphere Application Server 和 IBM BPM 服务器上设置了单一登录。


查看 REST API 的实际应用

实际查看示例 Java 应用程序如何执行 Process With External Steps 业务流程的最佳方式可能是在一个集成开发环境(比如 Eclipse 或 Rational® Application Developer)中运行 Java 代码。使用集成开发环境,您可以在代码中设置断点。例如,可以在代码开始时设置一个断点,然后逐步执行代码。随后,可以在 Process Designer 的 Inspector 透视图中查看在 Java 代码执行过程中,业务流程是如何执行的。图 10 显示了在示例 Java 代码运行时,Process With External Steps 业务流程的 Inspector 透视图。

图 13. Inspector 透视图
Inspector 透视图

结束语

本文介绍了如何使用 IBM Business Process Manager 轻松地将 REST API 与外部系统相集成。通过使用 REST API,外部应用程序可启动业务流程,完成业务流程中的活动或步骤,获取活动的详细信息(例如输入和输出),并执行某项服务。如果必须将外部应用程序(比如 Java 独立程序或 JEE 应用程序)与在 IBM BPM 中实现的业务流程相集成,则可以考虑使用 REST API。


下载

描述名字大小
样例业务流程文件download.zip1.5MB

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=810211
ArticleTitle=使用 REST API 将 IBM Business Process Manager V7.5.1 中的业务流程应用程序与外部系统集成
publish-date=04162012