IBM BPM REST API 支持的 HTTP 方法

HTTP 方法提供了您可以对 IBM® BPM 工件执行的操作,例如创建、读取、更新和删除。

支持以下 HTTP 方法:
表 1. HTTP 方法
HTTP 方法 描述
POST 创建新资源。
GET 检索资源。
PUT 更新现有资源。
DELETE 删除资源。

GET 方法是一种安全的方法,因为资源状态不会因此操作而发生变化。

要点: IBM BPM REST API 以全球标准时间 (UTC) 格式报告时区。
如果您希望应用程序以其他时区中来显示日期和/或时间,那么可以使用 java.text.DateFormat 的实例,在该实例上设置所需 TimeZone,然后调用 format 以传递要显示的 Date 对象。 以下代码段使用应用程序运行所在的缺省时区:
// Assuming that "dateFromREST" is a java.util.Date object
DateFormat df = DateFormat.getDateTimeInstance();
TimeZone tz = TimeZone.getDefault();
df.setTimeZone(tz);
String formattedDate = df.format(dateFromREST);
// formattedDate has the date you want to show to the user.

安全性注意事项

在使用 HTTP 方法时,请考虑以下安全性方面:

  • 某些防火墙由于安全性注意事项而不允许 HTTP PUTDELETE 流量通过防火墙。为适应此限制,您可以通过以下某种方法发送这些请求:
    • 使用 X-Method-OverrideX-HTTP-Method-Override HTTP 头字段来通过 POST 请求传递 PUTDELETE 请求。
    • 如果请求的是与 BPD 有关的资源,可以使用 x-method-overridex-http-method-override URI 参数。例如:
      POST /rest/bpm/htm/v1/task?...&x-method-override=PUT
  • 您可以将某些 HTTP 方法用于与 BPD 有关的资源,以对 JavaScript 表达式求值。考虑到安全性注意事项,缺省情况下不启用 JavaScript 支持。 要启用 JavaScript 支持,请在 Process Server 的 100Custom.xml 文件中设置关联属性:
    <properties>
      <common>
        <enable-javascript-execution>true</enable-javascript-execution>
      </common>
    </properties>

有关 REST API 请求的 URI 长度注意事项

在某些情况下,REST API 请求的 URI 长度可能会超过所支持的 URI 长度,例如,由于浏览器限制或请求 URI 中的查询参数的数量和长度所致。
作为变通方法,您可以借助一个使用 application/x-www-form-urlencoded 内容类型的 POST 请求来传递请求。要采用此变通方法,请按照以下方法构造 REST API 请求:
  1. 在 HTTP 请求中使用 POST 方法。
  2. X-HTTP-Method-Override HTTP 头设置为原始请求中计划使用的方法。例如,如果您计划原始请求是 PUT 请求,那么将此头的值设置为 PUT
  3. Content-Type HTTP 头的值设置为 application/x-www-form-urlencoded
  4. 将原始请求 URI 查询字符串的所有请求参数添加到 HTTP 请求主体。
例如,您需要调用以下 REST API 来设置某些输出变量,从而完成任务实例,但请求 URI 过长:
PUT http://host1.company.com:9080/rest/bpm/wle/v1/task/3?action=finish&params={"orderNumber":"5","customerName":{"firstName":"John","lastName":"Doe"}}
Headers:
  Accept application/json
以下 HTTP 请求显示如何使用 application/x-www-form-urlencoded 内容类型来调用相同的 API:
POST http://host1.company.com:9080/rest/bpm/wle/v1/task/3
Headers
  Accept application/json
  Content-Type: application/x-www-form-urlencoded
  X-Method-Override:  PUT
Request Body:
  action=finish&params={"orderNumber":"5","customerName":{"firstName":"John","lastName":"Doe"}}