跳到主要内容

REST API

Doubao 中英对照 REST API

Flowable REST 通用原则​

安装与认证​

Flowable 提供了面向 Flowable CMMN 引擎的 REST API,可以通过把 flowable-rest.war 文件部署到 Apache Tomcat 等 Servlet 容器中来安装。此外,也可以在另一个 Web 应用中使用它:把该 Servlet(和/或其映射)包含到你的应用中,并把所有 flowable-rest 依赖加入 classpath。

默认情况下,Flowable REST 会连接一个内存中的 H2 数据库。你可以在 WEB-INF/META-INF/flowable-app 文件夹下的 flowable-app.properties 文件中修改数据库设置。REST API 使用 JSON 格式(http://www.json.org),并基于 Spring MVC(http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html)构建。

默认情况下,所有 REST 资源都要求一个拥有 rest-access-api 权限的有效用户进行认证。如果希望任何有效用户都能调用 REST API,可以将 flowable.rest.app.authentication-mode 设置为 any-user(在 Flowable 的旧版本中这是默认值)。

可以通过设置以下属性来配置一个能够访问 REST API 的默认用户:

flowable.rest.app.admin.user-id=rest-admin
flowable.rest.app.admin.password=test
flowable.rest.app.admin.first-name=Rest
flowable.rest.app.admin.last-name=Admin

REST 应用启动时,如果该用户不存在则创建它,否则直接获取。该用户会被授予 access-rest-api 权限,默认情况下访问 REST API 需要该权限。之后请务必修改该用户的密码。如果未设置 flowable.rest.app.admin.user-id,则不会创建任何用户或权限。因此,在初始设置完成后,移除该属性并不会删除之前已配置的用户和权限。

使用基本 HTTP 访问认证(Basic Authentication),因此在执行请求时应始终带上 Authorization: Basic …​== HTTP 头,或者把用户名密码放在请求 URL 中(例如 *http://username:password@localhost:8080/xyz*)。

我们建议你将基本认证与 HTTPS 结合使用。

配置​

Flowable REST Web 应用使用 Spring Boot Flowable starter 来启动 Flowable CMMN 引擎、使用 Spring Security 定义基本认证安全,并为特定变量处理定义变量转换器。
可以通过修改 flowable-app.properties 文件来配置少量属性。

在 Tomcat 中使用​

由于 Tomcat 的默认安全属性,默认不允许出现转义的斜杠(%2F 和 %5C)(会返回 400 结果)。这可能影响部署资源及其数据 URL,因为 URL 中可能包含转义的斜杠。

当遇到意外的 400 结果问题时,设置以下系统属性:

-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

对于下面描述的 HTTP 请求,最佳实践是始终将 Accept 和 Content-Type(在 POST/PUT JSON 时)头设置为 application/json。

方法与返回码​

MethodOperations
GET获取单个资源或获取资源集合。
POST创建新资源。也用于执行资源查询——当请求结构过于复杂、不适合放进 GET 请求的查询 URL 时使用。
PUT更新已有资源的属性。也用于对已有资源调用动作。
DELETE删除已有资源。
ResponseDescription
200 - Ok操作成功,已返回响应(GET 和 PUT 请求)。
201 - Created操作成功,实体已创建并在响应体中返回(POST 请求)。
204 - No content操作成功,实体已删除,因此不返回响应体(DELETE 请求)。
401 - Unauthorized操作失败。该操作要求设置认证头。如果请求中确实带了认证头,则说明提供的凭据无效,或者该用户无权执行此操作。
403 - Forbidden操作被禁止,不应重试。这意味着是授权问题而非认证问题,即该操作根本不被允许。例如:删除属于正在运行的用例的任务是不被允许的,并且永远不会被允许,无论用户或用例/任务处于什么状态。
404 - Not found操作失败。未找到请求的资源。
405 - Method not allowed操作失败。该资源不允许使用此方法。例如,尝试更新(PUT)一个部署资源会返回 405 状态。
409 - Conflict操作失败。它导致的资源更新已被另一个操作更新过,使得本次更新不再有效。也可能表示要创建的资源所在的集合中已存在一个同标识的资源。
415 - Unsupported Media Type操作失败。请求体包含不支持的媒体类型。当请求体 JSON 包含未知属性或值的格式/类型不被接受时也会出现。
500 - Internal server error操作失败。执行操作时发生了意外异常。响应体包含错误详情。

HTTP 响应的媒体类型始终为 application/json,除非请求的是二进制内容(例如部署资源数据),此时使用内容自身的媒体类型。

错误响应体​

发生错误时(客户端和服务端错误,即 4XX 和 5XX 状态码),响应体包含一个描述所发生错误的对象。以下是任务未找到时返回 404 状态的示例:

{
"statusCode" : 404,
"errorMessage" : "Could not find a task with id '444'."
}

URL 片段​

作为 URL 一部分的参数(例如 http://host/flowable-rest/cmmn-api/cmmn-repository/deployments/\{deploymentId} 中的 deploymentId 参数)

需要进行适当的转义(参见 URL 编码或百分号编码),以防片段包含特殊字符。大多数框架都内置了这种功能,但应当加以注意。尤其是对于可能包含斜杠的片段(例如部署资源),这是必需的。

Rest URL 查询参数​

作为 URL 中查询字符串添加的参数(例如 http://host/flowable-rest/cmmn-api/cmmn-repository/deployments?name=Deployment 中使用的 name 参数)可以有以下类型,并在相应的 REST API 文档中说明:

TypeFormat
String纯文本参数。可以包含 URL 中允许的任何有效字符。对于 XXXLike 参数,字符串应包含通配符 %(经过正确的 URL 编码)。这样可以指定模糊搜索的意图。例如,'Tas%' 匹配所有以 'Tas' 开头的值。
Integer表示整数值的参数。只能包含 -2.147.483.648 到 2.147.483.647 之间的非十进制数字值。
Long表示 long 值的参数。只能包含 -9.223.372.036.854.775.808 到 9.223.372.036.854.775.807 之间的非十进制数字值。
Boolean表示布尔值的参数。只能是 true 或 false。其他所有值都会导致 '405 - Bad request' 响应。
Date表示日期值的参数。使用 ISO-8601 日期格式(参见 wikipedia 上的 ISO-8601),同时包含时间和日期部分(例如 2013-04-03T23:45Z)。

JSON body 参数​

TypeFormat
String纯文本参数。对于 XXXLike 参数,字符串应包含通配符 %。这样可以指定模糊搜索的意图。例如,'Tas%' 匹配所有以 'Tas' 开头的值。
Integer表示整数值的参数,使用 JSON 数字。只能包含 -2.147.483.648 到 2.147.483.647 之间的非十进制数字值。
Long表示 long 值的参数,使用 JSON 数字。只能包含 -9.223.372.036.854.775.808 到 9.223.372.036.854.775.807 之间的非十进制数字值。
Date表示日期值的参数,使用 JSON 文本。使用 ISO-8601 日期格式(参见 wikipedia 上的 ISO-8601)。

分页与排序​

分页和排序参数可以作为查询字符串添加到 URL 中(例如 http://host/flowable-rest/cmmn-api/cmmn-repository/deployments?name=Deployment 中使用的 name 参数)。

ParameterDefault valueDescription
sort各查询实现不同排序键名称,其默认值和允许取值见相应查询。
orderasc排序顺序,可以是 'asc' 或 'desc'。
start0用于结果分页的参数。默认从 0 开始。
size10用于结果分页的参数。默认大小为 10。

注意

请记住,start 参数用作查询的偏移量。例如,要把任务分三页获取,每页 3 个任务,可以使用:

GET /runtime/tasks?start=0&size=3
GET /runtime/tasks?start=3&size=3
GET /runtime/tasks?start=6&size=3

JSON 查询变量格式​

使用变量进行查询时,REST API 遵循常见的原则和 JSON 格式:

{
"name" : "variableName",
"value" : "variableValue",
"operation" : "equals",
"type" : "string"
}
ParameterRequiredDescription
name否查询中要包含的变量名。在某些查询中使用 'equals' 时可以为空,用于查询具有给定值的任意变量名的资源。
value是查询中包含的变量值,应包含给定类型的正确格式。
operator是查询中使用的操作符,可取值:equals、notEquals、equalsIgnoreCase、notEqualsIgnoreCase、lessThan、greaterThan、lessThanOrEquals、greaterThanOrEquals 和 like。
type否使用的变量类型。省略时,类型会从 value 参数推断。任何 JSON 文本值视为 string 类型,JSON 布尔值视为 boolean 类型,JSON 数字根据大小视为 long 或 integer 类型。建议在不确定时显式指定类型。开箱即用支持的类型如下。
Type nameDescription
string值按 java.lang.String 处理并转换。
short值按 java.lang.Integer 处理并转换。
integer值按 java.lang.Integer 处理并转换。
long值按 java.lang.Long 处理并转换。
double值按 java.lang.Double 处理并转换。
boolean值按 java.lang.Boolean 处理并转换。
date值按 java.util.Date 处理并转换。JSON 字符串将使用 ISO-8601 日期格式转换。

变量表示​

处理变量(执行决策)时,REST API 在读取和写入时都使用一些常见原则和 JSON 格式。变量的 JSON 表示如下:

{
"name" : "variableName",
"value" : "variableValue",
"valueUrl" : "http://...",
"type" : "string"
}
ParameterRequiredDescription
name是变量名。
value否变量值。写入变量时如果省略 value,将使用 null 作为值。
valueUrl否读取 binary 或 serializable 类型的变量时,该属性指向获取原始二进制数据的 URL。
type否变量类型。有关类型的更多信息见下表。写入变量时如果省略该值,类型将从原始 JSON 属性请求类型推断,仅限 string、double、integer 和 boolean。建议始终带上类型,以免对类型做出错误假设。
Type nameDescription
string值按 java.lang.String 处理。写入时使用原始 JSON 文本值。
integer值按 java.lang.Integer 处理。写入时以 JSON 数字值作为转换基础,回退到 JSON 文本。
short值按 java.lang.Short 处理。写入时以 JSON 数字值作为转换基础,回退到 JSON 文本。
long值按 java.lang.Long 处理。写入时以 JSON 数字值作为转换基础,回退到 JSON 文本。
double值按 java.lang.Double 处理。写入时以 JSON 数字值作为转换基础,回退到 JSON 文本。
boolean值按 java.lang.Boolean 处理。写入时以 JSON 布尔值作为转换基础。
date值按 java.util.Date 处理。写入时 JSON 文本将使用 ISO-8601 日期格式转换。

可以通过自定义 JSON 表示(简单值或复杂/嵌套 JSON 对象)来支持额外的变量类型。通过扩展 org.flowable.cmmn.rest.service.api.CmmnRestResponseFactory 上的 initializeVariableConverters() 方法,可以添加额外的 org.flowable.rest.variable.RestVariableConverter 类,支持将你的 POJO 转换为适合通过 REST 传输的格式,并把 REST 值转换回你的 POJO。到 JSON 的实际转换由 Jackson 完成。

部署​

使用 Tomcat 时,请阅读在 Tomcat 中使用一节。

部署列表​

查询所有 cmmn 部署并返回匹配结果。

GET cmmn-repository/deployments
ParameterRequiredValueDescription
name否String只返回具有给定名称的部署。
nameLike否String只返回名称与给定字符串相似的部署。
category否String只返回具有给定类别的部署。
categoryLike否String只返回类别与给定字符串相似的部署。
categoryNotEquals否String只返回类别与给定类别不匹配的部署。
parentDeploymentId否String只返回具有给定父部署 id 的部署。
parentDeploymentId否String只返回父部署 id 与给定字符串相似的部署。
tenantId否String只返回具有给定租户标识的部署。
tenantIdLike否String只返回租户标识与给定值相似的部署。
withoutTenantId否String只返回没有租户标识的部署。
sort否String排序属性,与 order 一起使用。可取值:id/name/deployTime/tenantId。
Response CodeDescription
200表示请求成功。

响应体示例:

{
"data": [
{
"id": "59eca679-3c6b-11ea-8548-38c986587585",
"name": "test-case",
"deploymentTime": "2020-01-21T17:30:35.607+01:00",
"category": null,
"parentDeploymentId": null,
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585",
"tenantId": ""
}
],
"total": 1,
"start": 0,
"sort": "id",
"order": "asc",
"size": 1
}

获取单个部署​

GET cmmn-repository/deployments/{deploymentId}
ParameterRequiredValueDescription
deploymentId是String要获取的部署的 id。
Response codeDescription
200表示已找到并返回该部署。
404表示未找到请求的部署。

成功响应体:

{
"id": "59eca679-3c6b-11ea-8548-38c986587585",
"name": "test-case",
"deploymentTime": "2020-01-21T17:30:35.607+01:00",
"category": null,
"parentDeploymentId": null,
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585",
"tenantId": ""
}

创建新部署​

POST cmmn-repository/deployments

请求体:

请求体应包含 multipart/form-data 类型的数据。请求中恰好应该有一个文件,任何额外文件都会被忽略。部署名称就是传入的文件字段名。如果需要在一个部署中部署多个资源,请把资源压缩成一个 zip,并确保文件名以 +.bar+ 或 +.zip+ 结尾。

可以在请求体中额外传入一个名为 +tenantId+ 的表单字段参数。该字段的值将作为本次部署所属租户的 id。

Response codeDescription
201表示部署已创建。
400表示请求体中没有内容,或内容的 mime 类型不支持部署。状态描述包含额外信息。

成功响应体:

{
"id": "59eca679-3c6b-11ea-8548-38c986587585",
"name": "test-case",
"deploymentTime": "2020-01-21T17:30:35.607+01:00",
"category": null,
"parentDeploymentId": null,
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585",
"tenantId": ""
}

删除部署​

DELETE repository/deployments/{deploymentId}
ParameterRequiredValueDescription
deploymentId是String要删除的部署的 id。
Response codeDescription
204表示已找到该部署并已删除。响应体有意留空。
404表示未找到请求的部署。

列出部署中的资源​

GET cmmn-repository/deployments/{deploymentId}/resources
ParameterRequiredValueDescription
deploymentId是String要获取其资源的部署的 id。
Response codeDescription
200表示已找到该部署并返回了资源列表。
404表示未找到请求的部署。

成功响应体:

[
{
"id": "test-case.cmmn.xml",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585/resources/test-case.cmmn.xml",
"contentUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585/resourcedata/test-case.cmmn.xml",
"mediaType": "text/xml",
"type": "caseDefinition"
},
{
"id": "test-case.testCase.png",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585/resources/test-case.testCase.png",
"contentUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585/resourcedata/test-case.testCase.png",
"mediaType": "image/png",
"type": "resource"
}
]

单个资源的结果 JSON 中的 contentUrl 属性包含用于获取该二进制资源的实际 URL。

获取部署资源​

GET cmmn-repository/deployments/{deploymentId}/resources/{resourceId}
ParameterRequiredValueDescription
deploymentId是String请求资源所属部署的 id。
resourceId是String要获取的资源的 id。如果 resourceId 包含斜杠,请务必对其进行 URL 编码。例如:使用 'diagrams%2Fmy-case.cmmn.xml' 而不是 'diagrams/Fmy-case.cmmn.xml'。
Response codeDescription
200表示部署和资源均已找到,并已返回该资源。
404表示未找到请求的部署,或部署中不存在具有给定 id 的资源。状态描述包含额外信息。

成功响应体:

{
"id": "test-case.cmmn.xml",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585/resources/test-case.cmmn.xml",
"contentUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585/resourcedata/test-case.cmmn.xml",
"mediaType": "text/xml",
"type": "caseDefinition"
}

获取部署资源内容​

GET cmmn-repository/deployments/{deploymentId}/resourcedata/{resourceId}
ParameterRequiredValueDescription
deploymentId是String请求资源所属部署的 id。}
resourceId是String要获取其数据的资源的 id。如果 resourceId 包含斜杠,请务必对其进行 URL 编码。例如:使用 'diagrams%2Fmy-case.cmmn.xml' 而不是 'diagrams/Fmy-case.cmmn.xml'。
Response codeDescription
200表示部署和资源均已找到,并已返回资源数据。
404表示未找到请求的部署,或部署中不存在具有给定 id 的资源。状态描述包含额外信息。

成功响应体:

响应体将包含请求资源的二进制资源内容。响应 content-type 将与资源 'mimeType' 属性返回的类型相同。此外还会设置 content-disposition 头,允许浏览器下载该文件而不是直接显示它。

用例定义​

用例定义列表​

GET cmmn-repository/case-definitions
ParameterRequiredValueDescription
version否integer只返回具有给定版本的用例定义。
name否String只返回具有给定名称的用例定义。
nameLike否String只返回名称与给定名称相似的用例定义。
key否String只返回具有给定 key 的用例定义。
keyLike否String只返回名称与给定 key 相似的用例定义。
resourceName否String只返回具有给定资源名的用例定义。
resourceNameLike否String只返回名称与给定资源名相似的用例定义。
category否String只返回具有给定类别的用例定义。
categoryLike否String只返回类别与给定类别相似的用例定义。
categoryNotEquals否String只返回不具有给定类别的用例定义。
deploymentId否String只返回属于具有给定 id 的部署的用例定义。
startableByUser否String只返回可由给定用户启动的用例定义。
latest否Boolean只返回最新的用例定义版本。只能与 'key' 和 'keyLike' 参数一起使用,使用任何其他参数将导致 400 响应。
suspended否Boolean如果 +true+,只返回已挂起的用例定义。如果 +false+,只返回活动的(未挂起的)用例定义。
sort否'name'(默认)、'id'、'key'、'category'、'deploymentId' 和 'version'排序属性,与 'order' 一起使用。
Response codeDescription
200表示请求成功,并返回用例定义。
400表示参数格式不正确,或 'latest' 与 'key' 和 'keyLike' 以外的其他参数一起使用。状态消息包含额外信息。

成功响应体:

{
"data": [
{
"id": "59fd213c-3c6b-11ea-8548-38c986587585",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"key": "testCase",
"version": 1,
"name": "Test Case",
"description": null,
"tenantId": "",
"deploymentId": "59eca679-3c6b-11ea-8548-38c986587585",
"deploymentUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585",
"resource": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585/resources/test-case.cmmn.xml",
"diagramResource": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585/resources/test-case.testCase.png",
"category": "http://flowable.org/cmmn",
"graphicalNotationDefined": true,
"startFormDefined": false
}
],
"total": 1,
"start": 0,
"sort": "name",
"order": "asc",
"size": 1
}
  • graphicalNotationDefined:表示用例定义包含图形信息(BPMN DI)。
  • resource:包含实际部署的 CMMN 1.1 xml。
  • diagramResource:包含用例定义的图形表示,无图时为 null。

获取单个用例定义​

GET cmmn-repository/case-definitions/{caseDefinitionId}
ParameterRequiredValueDescription
caseDefinitionId是String要获取的用例定义的 id。
Response codeDescription
200表示已找到并返回该用例定义。
404表示未找到请求的用例定义。

成功响应体:

{
"id": "59fd213c-3c6b-11ea-8548-38c986587585",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"key": "testCase",
"version": 1,
"name": "Test Case",
"description": null,
"tenantId": "",
"deploymentId": "59eca679-3c6b-11ea-8548-38c986587585",
"deploymentUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585",
"resource": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585/resources/test-case.cmmn.xml",
"diagramResource": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/deployments/59eca679-3c6b-11ea-8548-38c986587585/resources/test-case.testCase.png",
"category": "http://flowable.org/cmmn",
"graphicalNotationDefined": true,
"startFormDefined": false
}
  • graphicalNotationDefined:表示用例定义包含图形信息(BPMN DI)。
  • resource:包含实际部署的 BPMN 2.0 xml。
  • diagramResource:包含用例的图形表示,无图时为 null。

更新用例定义的类别​

PUT cmmn-repository/case-definitions/{caseDefinitionId}

请求体 JSON:

{
"category" : "updatedcategory"
}
Response codeDescription
200表示该用例的类别已被修改。
400表示请求体中未定义类别。
404表示未找到请求的用例定义。

获取用例定义的资源内容​

GET cmmn-repository/case-definitions/{caseDefinitionId}/resourcedata
ParameterRequiredValueDescription
caseDefinitionId是String要获取其资源数据的用例定义的 id。

响应:

响应码/响应体与 +GET cmmn-repository/deployment/{deploymentId}/resourcedata/{resourceId}+ 完全相同。

获取用例定义的 BPMN 模型​

GET cmmn-repository/case-definitions/{caseDefinitionId}/model
ParameterRequiredValueDescription
caseDefinitionId是String要获取其模型的用例定义的 id。
Response codeDescription
200表示已找到该用例定义并返回模型。
404表示未找到请求的用例定义。

响应体:
响应体是 +org.flowable.cmmn.model.CmmnModel+ 的 JSON 表示,包含完整的用例定义模型。

获取用例定义的所有候选启动者​

GET repository/case-definitions/{caseDefinitionId}/identitylinks
ParameterRequiredValueDescription
caseDefinitionId是String要获取其身份链接的用例定义的 id。
Response codeDescription
200表示已找到该用例定义并返回请求的身份链接。
404表示未找到请求的用例定义。

成功响应体:

[
{
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585/identitylinks/groups/flowableUser",
"user": null,
"group": "flowableUser",
"type": "candidate"
}
]

为用例定义添加候选启动者​

POST cmmn-repository/case-definitions/{caseDefinitionId}/identitylinks
ParameterRequiredValueDescription
caseDefinitionId是String用例定义的 id。

请求体(用户):

{
"user" : "kermit"
}

请求体(用户组):

{
"groupId" : "sales"
}
Response codeDescription
201表示已找到该用例定义并创建了身份链接。
404表示未找到请求的用例定义。

成功响应体:

从用例定义删除候选启动者​

DELETE cmmn-repository/case-definitions/{caseDefinitionId}/identitylinks/{family}/{identityId}
ParameterRequiredValueDescription
caseDefinitionId是String用例定义的 id。
family是String根据身份链接类型,为 +users+ 或 +groups+。
identityId是String要移除为候选启动者的标识的 userId 或 groupId。
Response codeDescription
204表示已找到该用例定义并删除了身份链接。响应体有意留空。
404表示未找到请求的用例定义,或该用例定义没有与该 URL 匹配的身份链接。

获取用例定义的某个候选启动者​

GET cmmn-repository/case-definitions/{caseDefinitionId}/identitylinks/{family}/{identityId}
ParameterRequiredValueDescription
caseDefinitionId是String用例定义的 id。
family是String根据身份链接类型,为 +users+ 或 +groups+。
identityId是String要获取为候选启动者的标识的 userId 或 groupId。
Response codeDescription
200表示已找到该用例定义并返回身份链接。
404表示未找到请求的用例定义,或该用例定义没有与该 URL 匹配的身份链接。

用例实例​

获取单个用例实例​

GET cmmn-runtime/case-instances/{caseInstanceId}
ParameterRequiredValueDescription
caseInstanceId是String要获取的用例实例的 id。
Response codeDescription
200表示已找到并返回该用例实例。
404表示未找到请求的用例实例。

成功响应体:

{
"data": [
{
"id": "095fd94e-3c78-11ea-8548-38c986587585",
"name": null,
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"businessKey": null,
"startTime": "2020-01-21T19:01:23.923+01:00",
"startUserId": "rest-admin",
"state": "active",
"ended": false,
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionName": "Test Case",
"caseDefinitionDescription": null,
"parentId": null,
"callbackId": null,
"callbackType": null,
"referenceId": null,
"referenceType": null,
"variables": [],
"tenantId": "",
"completed": false
}
],
"total": 1,
"start": 0,
"sort": "id",
"order": "asc",
"size": 1
}

删除用例实例​

DELETE cmmn-runtime/case-instances/{caseInstanceId}
ParameterRequiredValueDescription
caseInstanceId是String要删除的用例实例的 id。
Response codeDescription
204表示已找到并删除该用例实例。响应体有意留空。
404表示未找到请求的用例实例。

启动用例实例​

POST cmmn-runtime/case-instances

请求体(按用例定义 id 启动):

{
"caseDefinitionId":"59fd213c-3c6b-11ea-8548-38c986587585",
"variables": [
{
"name":"myVar",
"value":"This is a variable"
}
]
}

请求体(按用例定义 key 启动):

{
"caseDefinitionKey":"testCase",
"businessKey":"myBusinessKey",
"tenantId": "tenant1",
"variables": [
{
"name":"myVar",
"value":"This is a variable"
}
]
}

注意,该 JSON 还接受 transientVariables 属性,其结构与 variables 属性相同。

returnVariables 属性可用于在用例实例上下文中取回已存在的变量并放入响应中。默认情况下不返回变量。

请求体中只能使用 +caseDefinitionId+ 或 +caseDefinitionKey+ 之一。+businessKey+、+variables+ 和 +tenantId+ 参数是可选的。如果省略 +tenantId+,将使用默认租户。

Response codeDescription
201表示已创建用例实例。
400表示未找到用例定义(根据 id 或 key),或传入了无效变量。状态描述包含关于错误的额外信息。}

成功响应体:

{
"id": "095fd94e-3c78-11ea-8548-38c986587585",
"name": null,
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"businessKey": null,
"startTime": "2020-01-21T19:01:23.923+01:00",
"startUserId": "rest-admin",
"state": "active",
"ended": false,
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionName": "Test Case",
"caseDefinitionDescription": null,
"parentId": null,
"callbackId": null,
"callbackType": null,
"referenceId": null,
"referenceType": null,
"variables": [
{
"name": "myVar",
"type": "string",
"value": "This is a variable",
"scope": "local"
},
{
"name": "initiator",
"type": "string",
"value": "rest-admin",
"scope": "local"
}
],
"tenantId": "",
"completed": false
}

用例实例列表​

GET cmmn-runtime/case-instances
ParameterRequiredValueDescription
id否String只返回具有给定 id 的用例实例。
caseDefinitionKey否String只返回具有给定用例定义 key 的用例实例。
caseDefinitionId否String只返回具有给定用例定义 id 的用例实例。
businessKey否String只返回具有给定 businessKey 的用例实例。
involvedUser否String只返回给定用户参与其中的用例实例。
includeCaseVariables否Boolean表示在结果中包含用例变量。
tenantId否String只返回具有给定 tenantId 的用例实例。
tenantIdLike否String只返回 tenantId 与给定值相似的用例实例。
withoutTenantId否Boolean如果 +true+,只返回未设置 tenantId 的用例实例。如果 +false+,则忽略 +withoutTenantId+ 参数。
sort否String排序字段,可为 +id+(默认)、+caseDefinitionId+、+tenantId+ 或 +caseDefinitionKey+。
Response codeDescription
200表示请求成功,并返回用例实例。
400表示参数格式不正确。状态消息包含额外信息。

成功响应体:

{
"data": [
{
"id": "095fd94e-3c78-11ea-8548-38c986587585",
"name": null,
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"businessKey": null,
"startTime": "2020-01-21T19:01:23.923+01:00",
"startUserId": "rest-admin",
"state": "active",
"ended": false,
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionName": "Test Case",
"caseDefinitionDescription": null,
"parentId": null,
"callbackId": null,
"callbackType": null,
"referenceId": null,
"referenceType": null,
"variables": [],
"tenantId": "",
"completed": false
}
],
"total": 1,
"start": 0,
"sort": "id",
"order": "asc",
"size": 1
}

查询用例实例​

GET 方法的替代方式,使用带查询参数的请求体。

POST query/case-instances

请求体:

{
"caseDefinitionKey":"myCase",
"variables":
[
{
"name" : "myVariable",
"value" : 1234,
"operation" : "equals",
"type" : "long"
}
]
}
Response codeDescription
200表示请求成功,并返回用例实例。
400表示参数格式不正确。状态消息包含额外信息。

获取用例实例的图​

GET cmmn-runtime/case-instances/{caseInstanceId}/diagram
ParameterRequiredValueDescription
caseInstanceId是String要获取其图的用例实例的 id。
Response codeDescription
200表示已找到该用例实例并返回图。
400表示未找到请求的用例实例,但该用例不包含任何图形信息(CMMN:DI),无法创建图。}
404表示未找到请求的用例实例。

获取用例实例的参与人员​

GET cmmn-runtime/case-instances/{caseInstanceId}/identitylinks
ParameterRequiredValueDescription
caseInstanceId是String要获取其链接的用例实例的 id。
Response codeDescription
200表示已找到该用例实例并返回链接。
404表示未找到请求的用例实例。

成功响应体:

[
{
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/case-instances/095fd94e-3c78-11ea-8548-38c986587585/identitylinks/users/rest-admin/starter",
"user": "rest-admin",
"group": null,
"type": "starter"
},
{
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/case-instances/095fd94e-3c78-11ea-8548-38c986587585/identitylinks/users/rest-admin/participant",
"user": "rest-admin",
"group": null,
"type": "participant"
}
]

向用例实例添加参与用户​

POST cmmn-runtime/case-instances/{caseInstanceId}/identitylinks
ParameterRequiredValueDescription
caseInstanceId是String要获取其链接的用例实例的 id。

请求体:

{
"userId":"kermit",
"type":"participant"
}

+userId+ 和 +type+ 都是必需的。

Response codeDescription
201表示已找到该用例实例并创建链接。
400表示请求体中未包含 userId 或 type。
404表示未找到请求的用例实例。

从用例实例移除参与用户​

DELETE cmmn-runtime/case-instances/{caseInstanceId}/identitylinks/users/{userId}/{type}
ParameterRequiredValueDescription
caseInstanceId是String用例实例的 id。
userId是String要删除链接的用户 id。
type是String要删除的链接类型。
Response codeDescription
204表示已找到该用例实例并删除了链接。响应体有意留空。
404表示未找到请求的用例实例,或要删除的链接不存在。响应状态包含关于错误的额外信息。

用例实例的变量列表​

GET cmmn-runtime/case-instances/{caseInstanceId}/variables
ParameterRequiredValueDescription
caseInstanceId是String要获取其变量的用例实例的 id。
Response codeDescription
200表示已找到该用例实例并返回变量。
404表示未找到请求的用例实例。

成功响应体:

| - | - | - | - | 

如果变量是二进制变量或可序列化变量,+valueUrl+ 指向用于获取原始值的 URL。如果是普通变量,值直接出现在响应中。

获取用例实例的某个变量​

GET cmmn-runtime/case-instances/{caseInstanceId}/variables/{variableName}
ParameterRequiredValueDescription
caseInstanceId是String要获取其变量的用例实例的 id。
variableName是String要获取的变量名。
Response codeDescription
200表示用例实例和变量均已找到,并返回变量。
400表示请求体不完整或包含非法值。状态描述包含关于错误的额外信息。
404表示未找到请求的用例实例,或该用例实例不具有给定名称的变量。状态描述包含关于错误的额外信息。

成功响应体:

{
"name": "myVar",
"type": "string",
"value": "This is a variable",
"scope": null
}

如果变量是二进制变量或可序列化变量,+valueUrl+ 指向用于获取原始值的 URL。如果是普通变量,值直接出现在响应中。注意只返回 +local+ 作用域的变量,因为用例实例变量没有 +global+ 作用域。

在用例实例上创建(或更新)变量​

POST cmmn-runtime/case-instances/{caseInstanceId}/variables

PUT cmmn-runtime/case-instances/{caseInstanceId}/variables

使用 +POST+ 时,传入的所有变量都会被创建。如果其中某个变量已存在于该用例实例上,请求将导致错误(409 - CONFLICT)。使用 +PUT+ 时,不存在的变量会在用例实例上创建,已存在的变量会被覆盖,且不会报错。

ParameterRequiredValueDescription
caseInstanceId是String要获取其变量的用例实例的 id。

请求体:

[
{
"name":"intProcVar",
"type":"integer",
"value":123
},

...
]

可以向请求体数组传入任意数量的变量。

Response codeDescription
201表示已找到该用例实例并创建变量。
400表示请求体不完整或包含非法值。状态描述包含关于错误的额外信息。
404表示未找到请求的用例实例。
409表示已找到该用例实例但它已具有给定名称的变量(仅在使用 POST 方法时抛出)。请改用更新方法。

更新用例实例上的单个变量​

PUT cmmn-runtime/case-instances/{caseInstanceId}/variables/{variableName}
ParameterRequiredValueDescription
caseInstanceId是String要获取其变量的用例实例的 id。
variableName是String要获取的变量名。
 {
"name":"intProcVar"
"type":"integer"
"value":123
}
Response codeDescription
200表示用例实例和变量均已找到,并更新变量。
404表示未找到请求的用例实例,或该用例实例不具有给定名称的变量。状态描述包含关于错误的额外信息。

如果变量是二进制变量或可序列化变量,+valueUrl+ 指向用于获取原始值的 URL。如果是普通变量,值直接出现在响应中。

在用例实例上创建新的二进制变量​

POST runtime/case-instances/{caseInstanceId}/variables
ParameterRequiredValueDescription
caseInstanceId是String要为其创建新变量的用例实例的 id。

请求体:

请求应为 +multipart/form-data+ 类型。应包含一个带有该变量二进制值的文件部分。此外,还可以出现以下额外表单字段:

  • name:变量的必填名称。
  • type:要创建的变量类型。省略时默认为 +binary+,请求中的二进制数据将以字节数组形式存储。

成功响应体:

{
"name": "test",
"type": "binary",
"value": null,
"valueUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/case-instances/095fd94e-3c78-11ea-8548-38c986587585/variables/test/data",
"scope": "local"
}
Response codeDescription
201表示已创建变量并返回结果。
400表示缺少要创建的变量名。状态消息提供额外信息。
404表示未找到请求的用例实例。
409表示该用例实例已具有给定名称的变量。请改用 PUT 方法更新任务变量。
415表示可序列化数据包含一个在运行 Flowable 引擎的 JVM 中不存在对应类的对象,因此无法反序列化。

更新用例实例上已有的二进制变量​

PUT runtime/case-instances/{caseInstanceId}/variables
ParameterRequiredValueDescription
caseInstanceId是String要为其创建新变量的用例实例的 id。

请求体:
请求应为 +multipart/form-data+ 类型。应包含一个带有该变量二进制值的文件部分。此外,还可以出现以下额外表单字段:

  • name:变量的必填名称。
  • type:要创建的变量类型。省略时默认为 +binary+,请求中的二进制数据将以字节数组形式存储。
Response codeDescription
200表示已更新变量并返回结果。
400表示缺少要更新的变量名。状态消息提供额外信息。
404表示未找到请求的用例实例,或该用例实例不具有给定名称的变量。
415表示可序列化数据包含一个在运行 Flowable 引擎的 JVM 中不存在对应类的对象,因此无法反序列化。

获取阶段概览​

GET /cmmn-runtime/{caseInstanceId}/stage-overview
ParameterRequiredValueDescription
caseInstanceId否String要获取阶段概览的用例实例 id。

成功响应体 {

[
{
"id": "stage1",
"name": "First Stage",
"current": true
"ended": false,
"endTime": null,
},
{
"id": "stage2",
"name": "Second stage",
"current": false
"ended": false,
"endTime": null,
}
]

计划项实例​

计划项实例列表​

GET cmmn-runtime/plan-item-instances
ParameterRequiredValueDescription
id否String只返回具有给定 id 的计划项实例。
caseDefinitionId否String只返回具有给定用例定义 id 的计划项实例。
caseInstanceId否String只返回具有给定用例实例 id 的计划项实例。
stageInstanceId否String只返回具有给定阶段实例 id 的计划项实例(阶段本身也是一个计划项实例)。
planItemDefinitionId否String只返回具有给定计划项定义 id 的计划项实例。
planItemDefinitionType否String只返回具有给定计划项定义类型的计划项实例(例如 stage、milestone 等)。
planItemDefinitionTypes否String只返回具有传入类型之一的计划项实例。类型以逗号分隔列表传入。
state否String只返回处于给定状态的计划项实例。
name否String只返回具有给定名称的计划项实例。
elementId否String只返回具有给定元素 id 的计划项实例(如 CMMN 模型中所给)。
referenceId否String只返回具有给定引用 id 的计划项实例(例如计划项是流程任务时)。
referenceType否Date只返回具有给定引用类型的计划项实例。
createdBefore否Date只返回在给定日期之前启动的计划项实例。
createdAfter否String只返回在给定日期之后启动的计划项实例。
starUserId否String只返回由给定用户启动的计划项实例。
tenantId否String只返回具有给定租户 id 的计划项实例。
withoutTenantId否String只返回不具有租户 id 的计划项实例。
sort否'name' 和 'createTime'排序属性,与 'order' 一起使用。
Response codeDescription
200表示请求成功,并返回计划项实例。
400表示参数格式不正确。状态消息包含额外信息。

成功响应体:

{
"data": [
{
"id": "09618702-3c78-11ea-8548-38c986587585",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/plan-item-instances/09618702-3c78-11ea-8548-38c986587585",
"name": null,
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"derivedCaseDefinitionId": null,
"derivedCaseDefinitionUrl": null,
"stageInstanceId": null,
"stageInstanceUrl": null,
"planItemDefinitionId": "expandedStage1",
"planItemDefinitionType": "stage",
"state": "active",
"stage": true,
"elementId": "planItem2",
"createTime": "2020-01-21T19:01:23.934+01:00",
"lastAvailableTime": "2020-01-21T19:01:23.942+01:00",
"lastEnabledTime": null,
"lastDisabledTime": null,
"lastStartedTime": "2020-01-21T19:01:23.974+01:00",
"lastSuspendedTime": null,
"completedTime": null,
"occurredTime": null,
"terminatedTime": null,
"exitTime": null,
"endedTime": null,
"startUserId": null,
"referenceId": null,
"referenceType": null,
"completable": false,
"entryCriterionId": null,
"exitCriterionId": null,
"formKey": null,
"extraValue": null,
"tenantId": ""
},
...
],
"total": 3,
"start": 0,
"sort": "createTime",
"order": "asc",
"size": 3
}

获取单个计划项实例​

GET cmmn-runtime/plan-item-instances/{planItemInstanceId}
ParameterRequiredValueDescription
planItemInstanceId是String计划项实例的 id。
Response codeDescription
200表示请求成功,并返回计划项实例。
404表示未找到该计划项实例。

成功响应体:

{
"id": "09618702-3c78-11ea-8548-38c986587585",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/plan-item-instances/09618702-3c78-11ea-8548-38c986587585",
"name": null,
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"derivedCaseDefinitionId": null,
"derivedCaseDefinitionUrl": null,
"stageInstanceId": null,
"stageInstanceUrl": null,
"planItemDefinitionId": "expandedStage1",
"planItemDefinitionType": "stage",
"state": "active",
"stage": true,
"elementId": "planItem2",
"createTime": "2020-01-21T19:01:23.934+01:00",
"lastAvailableTime": "2020-01-21T19:01:23.942+01:00",
"lastEnabledTime": null,
"lastDisabledTime": null,
"lastStartedTime": "2020-01-21T19:01:23.974+01:00",
"lastSuspendedTime": null,
"completedTime": null,
"occurredTime": null,
"terminatedTime": null,
"exitTime": null,
"endedTime": null,
"startUserId": null,
"referenceId": null,
"referenceType": null,
"completable": false,
"entryCriterionId": null,
"exitCriterionId": null,
"formKey": null,
"extraValue": null,
"tenantId": ""
}

对计划项实例执行动作​

PUT cmmn-runtime/plan-item-instances/{planItemInstanceId}

使用如下 JSON 请求体

{
"action": "start"
}

可选动作:

ActionDescription
start启动计划项(必须处于 enabled 状态)。
trigger触发计划项(正在等待触发)。
enable启用计划项(当前处于 disabled 状态)。
disable触发计划项(当前处于 enabled 状态)。
evaluateCriteria求值计划项实例的哨兵(以及这样做会带来的任何后果)。

任务​

任务列表​

GET cmmn-runtime/tasks
ParameterRequiredValueDescription
name否String只返回具有给定名称的任务。
nameLike否String只返回名称与给定名称相似的任务。
description否String只返回具有给定描述的任务。
priority否Integer只返回具有给定优先级的任务。
minimumPriority否Integer只返回优先级大于给定值的任务。
maximumPriority否Integer只返回优先级低于给定值的任务。
assignee否String只返回分配给给定用户的任务。
assigneeLike否String只返回受理人与给定值相似的任务。
owner否String只返回属于给定用户的任务。
ownerLike否String只返回所有者与给定值相似的任务。
unassigned否Boolean只返回未分配给任何人的任务。如果传入 +false+,该值被忽略。
delegationState否String只返回具有给定委派状态的任务。可取值为 +pending+ 和 +resolved+。
candidateUser否String只返回可由给定用户签收的任务。包括该用户是显式候选人的任务,以及可由该用户所属用户组签收的任务。
candidateGroup否String只返回可由给定用户组中的用户签收的任务。
candidateGroups否String只返回可由给定用户组中的用户签收的任务。多个值以逗号分隔。
involvedUser否String只返回给定用户参与其中的任务。
taskDefinitionKey否String只返回具有给定任务定义 id 的任务。
taskDefinitionKeyLike否String只返回任务定义 id 与给定值相似的任务。
caseInstanceId否String只返回属于具有给定 id 的用例实例的任务。
caseDefinitionId否String只返回属于具有给定 id 的用例定义的任务。
createdOn否ISO Date只返回在给定日期创建的任务。
createdBefore否ISO Date只返回在给定日期之前创建的任务。
createdAfter否ISO Date只返回在给定日期之后创建的任务。
dueOn否ISO Date只返回在给定日期到期的任务。
dueBefore否ISO Date只返回在给定日期之前到期的任务。
dueAfter否ISO Date只返回在给定日期之后到期的任务。
withoutDueDate否boolean只返回没有到期日的任务。如果值为 +false+,该属性被忽略。
excludeSubTasks否Boolean只返回不是其他任务子任务的任务。
active否Boolean如果 +true+,只返回未挂起的任务(属于未挂起流程的,或根本不属于任何流程的)。如果 false,只返回属于已挂起流程实例的任务。
includeTaskLocalVariables否Boolean表示在结果中包含任务局部变量。
tenantId否String只返回具有给定 tenantId 的任务。
tenantIdLike否String只返回 tenantId 与给定值相似的任务。
withoutTenantId否Boolean如果 +true+,只返回未设置 tenantId 的任务。如果 +false+,则忽略 +withoutTenantId+ 参数。
candidateOrAssigned否String选择已被签收或分配给用户的任务,或等待用户(候选人或用户组)签收的任务。
category否string选择具有给定类别的任务。注意这是任务类别,不是用例定义的类别。
Response codeDescription
200表示请求成功,并返回任务。
400表示参数格式不正确。状态消息包含额外信息。

成功响应体:

{
"data": [
{
"id": "09688be5-3c78-11ea-8548-38c986587585",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/tasks/09688be5-3c78-11ea-8548-38c986587585",
"owner": null,
"assignee": "rest-admin",
"delegationState": null,
"name": "Human task",
"description": null,
"createTime": "2020-01-21T19:01:23.975+01:00",
"dueDate": null,
"priority": 50,
"suspended": false,
"claimTime": null,
"taskDefinitionKey": "humanTask1",
"tenantId": "",
"category": null,
"formKey": null,
"parentTaskId": null,
"parentTaskUrl": null,
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"variables": []
}
],
"total": 1,
"start": 0,
"sort": "id",
"order": "asc",
"size": 1
}

获取任务​

GET cmmn-runtime/tasks/{taskId}
ParameterRequiredValueDescription
taskId是String要获取的任务的 id。
Response codeDescription
200表示已找到并返回该任务。
404表示未找到请求的任务。

成功响应体:

{
"id": "09688be5-3c78-11ea-8548-38c986587585",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/tasks/09688be5-3c78-11ea-8548-38c986587585",
"owner": null,
"assignee": "rest-admin",
"delegationState": null,
"name": "Human task",
"description": null,
"createTime": "2020-01-21T19:01:23.975+01:00",
"dueDate": null,
"priority": 50,
"suspended": false,
"claimTime": null,
"taskDefinitionKey": "humanTask1",
"tenantId": "",
"category": null,
"formKey": null,
"parentTaskId": null,
"parentTaskUrl": null,
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"variables": []
}

更新任务​

PUT cmmn-runtime/tasks/{taskId}

请求体 JSON:

{
"assignee" : "assignee",
"delegationState" : "resolved",
"description" : "New task description",
"dueDate" : "2020-04-17T13:06:02.438+02:00",
"name" : "New task name",
"owner" : "owner",
"parentTaskId" : "3",
"priority" : 20
}

所有请求值都是可选的。例如,你可以只在请求体 JSON 对象中包含 'assignee' 属性,仅更新任务的受理人,其他字段不受影响。当一个属性被显式包含并设置为 null 时,该任务值将被更新为 null。例如:+{"dueDate" : null}+ 将清除任务的到期日。

以下参数可用于更新:

ParameterType
nameString
descriptionString
dueDateDate
assigneeString
ownerString
parentTaskIdString
priorityinteger
categoryString
formKeyString
delegationStateString
tenantIdString
Response codeDescription
200表示任务已更新。
404表示未找到请求的任务。
409表示请求的任务被并发更新。

任务动作​

POST cmmn-runtime/tasks/{taskId}

完成任务 - 请求体 JSON:

{
"action" : "complete",
"variables" : []
}
ParameterTypeDescription
actionString可以是 complete、claim、delegate 或 resolve。
assigneeString任务的受理人。
outcomeString完成任务时用于指定任务的结果。
variablesString要设置的变量。
transientVariablesString要设置的瞬态变量。

签收任务 - 请求体 JSON:

{
"action" : "claim",
"assignee" : "userWhoClaims"
}

由给定受理人签收任务。如果受理人为 +null+,任务将不分配给任何人,可再次被签收。

Response codeDescription
200表示动作已执行。
400表示请求体包含无效值,或动作需要受理人但受理人缺失。
404表示未找到请求的任务。
409表示由于冲突无法执行该动作。任务被并发更新,或(对于 'claim' 动作)任务已被其他用户签收。

删除任务​

DELETE cmmn-runtime/tasks/{taskId}?cascadeHistory={cascadeHistory}&deleteReason={deleteReason}
ParameterRequiredValueDescription
taskId是String要删除的任务的 id。
cascadeHistory否Boolean删除任务时是否同时删除历史任务实例(如适用)。未提供时默认为 false。
deleteReason否String删除任务的原因。当 +cascadeHistory+ 为 true 时忽略此值。
Response codeDescription
204表示已找到并删除该任务。响应体有意留空。
403表示请求的任务不能删除,因为它是用例实例的一部分。
404表示未找到请求的任务。

获取任务的所有变量​

GET cmmn-runtime/tasks/{taskId}/variables?scope={scope}
ParameterRequiredValueDescription
taskId是String要获取其变量的任务的 id。
scope否String要返回的变量作用域。当为 'local' 时,只返回任务局部变量。当为 'global' 时,只返回任务父执行层级的变量。省略该参数时,同时返回局部和全局变量。
Response codeDescription
200表示已找到该任务并返回请求的变量。
404表示未找到请求的任务。

成功响应体:

[
{
"name": "myVar",
"type": "string",
"value": "This is a variable",
"scope": "global"
},
{
"name": "test",
"type": "binary",
"value": null,
"valueUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/tasks/09688be5-3c78-11ea-8548-38c986587585/variables/test/data",
"scope": "global"
},
{
"name": "initiator",
"type": "string",
"value": "rest-admin",
"scope": "global"
}
]

获取任务的某个变量​

GET cmmn-runtime/tasks/{taskId}/variables/{variableName}?scope={scope}
ParameterRequiredValueDescription
taskId是String要为其获取变量的任务的 id。
variableName是String要获取的变量名。
scope否String要返回的变量作用域。当为 'local' 时,只返回任务局部变量值。当为 'global' 时,只返回任务父执行层级的变量值。省略该参数时,如果存在局部变量则返回局部变量,否则返回全局变量。
Response codeDescription
200表示已找到该任务并返回请求的变量。
404表示未找到请求的任务,或该任务不具有给定名称(在给定作用域中)的变量。状态消息提供额外信息。

成功响应体:

{
"name": "myVar",
"type": "string",
"value": "This is a variable",
"scope": "global"
}

获取变量的二进制数据​

GET cmmn-runtime/tasks/{taskId}/variables/{variableName}/data?scope={scope}
ParameterRequiredValueDescription
taskId是String要为其获取变量数据的任务的 id。
variableName是String要获取其数据的变量名。只能使用 +binary+ 和 +serializable+ 类型的变量。如果使用任何其他类型的变量,将返回 +404+。
scope否String要返回的变量作用域。当为 'local' 时,只返回任务局部变量值。当为 'global' 时,只返回任务父执行层级的变量值。省略该参数时,如果存在局部变量则返回局部变量,否则返回全局变量。
Response codeDescription
200表示已找到该任务并返回请求的变量数据。
404表示未找到请求的任务,或该任务不具有给定名称(在给定作用域中)的变量,或该变量没有可用的二进制流。状态消息提供额外信息。

成功响应体:

响应体包含变量的二进制值。当变量为 +binary+ 类型时,无论变量内容或请求 accept-type 头如何,响应的 content-type 都设置为 +application/octet-stream+。对于 +serializable+,content-type 使用 +application/x-java-serialized-object+。

在任务上创建新变量​

POST cmmn-runtime/tasks/{taskId}/variables
ParameterRequiredValueDescription
taskId是String要为其创建新变量的任务的 id。

用于创建简单(非二进制)变量的请求体:

[
{
"name" : "myTaskVariable",
"scope" : "local",
"type" : "string",
"value" : "Hello World"
},
{
...
}
]

请求体应为一个数组,包含一个或多个表示要创建变量的 JSON 对象。

  • name:变量的必填名称。
  • scope:要创建的变量的作用域。省略时默认为 +local+。
  • type:要创建的变量类型。省略时回退到原始 JSON 值类型(string、boolean、integer 或 double)。
  • value:变量值。
Response codeDescription
201表示已创建变量并返回结果。
400表示缺少要创建的变量名,或试图在没有关联流程的独立任务上创建 +global+ 作用域的变量,或请求中包含空变量数组,或请求不包含变量数组。状态消息提供额外信息。
404表示未找到请求的任务。
409表示该任务已具有给定名称的变量。请改用 PUT 方法更新任务变量。

在任务上创建新的二进制变量​

POST cmmn-runtime/tasks/{taskId}/variables
ParameterRequiredValueDescription
taskId是String要为其创建新变量的任务的 id。

请求体:
请求应为 +multipart/form-data+ 类型。应包含一个带有该变量二进制值的文件部分。此外,还可以出现以下额外表单字段:

  • name:变量的必填名称。
  • scope:要创建的变量的作用域。省略时默认为 +local+。
  • type:要创建的变量类型。省略时默认为 +binary+,请求中的二进制数据将以字节数组形式存储。
Response codeDescription
201表示已创建变量并返回结果。
400表示缺少要创建的变量名,或试图在没有关联流程的独立任务上创建 +global+ 作用域的变量。状态消息提供额外信息。
404表示未找到请求的任务。
409表示该任务已具有给定名称的变量。请改用 PUT 方法更新任务变量。
415表示可序列化数据包含一个在运行 Flowable 引擎的 JVM 中不存在对应类的对象,因此无法反序列化。

更新任务上已有的变量​

PUT cmmn-runtime/tasks/{taskId}/variables/{variableName}
ParameterRequiredValueDescription
taskId是String要为其更新变量的任务的 id。
variableName是String要更新的变量名。

用于更新简单(非二进制)变量的请求体:

{
"name" : "myTaskVariable",
"scope" : "local",
"type" : "string",
"value" : "Hello World"
}
  • name:变量的必填名称。
  • scope:要更新的变量的作用域。省略时默认为 +local+。
  • type:要更新的变量类型。省略时回退到原始 JSON 值类型(string、boolean、integer 或 double)。
  • value:变量值。
Response codeDescription
200表示已更新变量并返回结果。
400表示缺少要更新的变量名,或试图在没有关联流程的独立任务上更新 +global+ 作用域的变量。状态消息提供额外信息。
404表示未找到请求的任务,或该任务在给定作用域中不具有给定名称的变量。状态消息包含关于错误的额外信息。

更新任务上的二进制变量​

PUT cmmn-runtime/tasks/{taskId}/variables/{variableName}
ParameterRequiredValueDescription
taskId是String要为其更新变量的任务的 id。
variableName是String要更新的变量名。

请求体:
请求应为 +multipart/form-data+ 类型。应包含一个带有该变量二进制值的文件部分。此外,还可以出现以下额外表单字段:

  • name:变量的必填名称。
  • scope:要更新的变量的作用域。省略时默认为 +local+。
  • type:要更新的变量类型。省略时默认为 +binary+,请求中的二进制数据将以字节数组形式存储。
Response codeDescription
200表示已更新变量并返回结果。
400表示缺少要更新的变量名,或试图在没有关联流程的独立任务上更新 +global+ 作用域的变量。状态消息提供额外信息。
404表示未找到请求的任务,或要更新的变量在给定任务的给定作用域中不存在。
415表示可序列化数据包含一个在运行 Flowable 引擎的 JVM 中不存在对应类的对象,因此无法反序列化。

删除任务上的变量​

DELETE cmmn-runtime/tasks/{taskId}/variables/{variableName}?scope={scope}
ParameterRequiredValueDescription
taskId是String要删除的变量所属任务的 id。
variableName是String要删除的变量名。
scope否String要删除的变量作用域。可以是 +local+ 或 +global+。省略时默认为 +local+。
Response codeDescription
204表示已找到该任务变量并已删除。响应体有意留空。
404表示未找到请求的任务,或该任务不具有给定名称的变量。状态消息包含关于错误的额外信息。

删除任务上的所有局部变量​

DELETE cmmn-runtime/tasks/{taskId}/variables
ParameterRequiredValueDescription
taskId是String要删除的变量所属任务的 id。
Response codeDescription
204表示已删除所有局部任务变量。响应体有意留空。
404表示未找到请求的任务。

获取任务的所有身份链接​

GET cmmn-runtime/tasks/{taskId}/identitylinks
ParameterRequiredValueDescription
taskId是String要获取其身份链接的任务的 id。
Response codeDescription
200表示已找到该任务并返回请求的身份链接。
404表示未找到请求的任务。

成功响应体:

[
{
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-runtime/tasks/09688be5-3c78-11ea-8548-38c986587585/identitylinks/users/rest-admin/assignee",
"user": "rest-admin",
"group": null,
"type": "assignee"
}
]

获取任务针对用户组或用户的所有身份链接​

GET cmmn-runtime/tasks/{taskId}/identitylinks/users
GET cmmn-runtime/tasks/{taskId}/identitylinks/groups

只返回针对用户或用户组的身份链接。响应体和状态码与获取任务完整身份链接列表时完全相同。

获取任务上的单个身份链接​

GET cmmn-runtime/tasks/{taskId}/identitylinks/{family}/{identityId}/{type}
ParameterRequiredValueDescription
taskId是String任务的 id。
family是String根据目标身份类型,为 +groups+ 或 +users+。
identityId是String标识的 id。
type是String身份链接的类型。
Response codeDescription
200表示已找到该任务和身份链接并返回。
404表示未找到请求的任务,或该任务不具有请求的 identityLink。状态包含关于该错误的额外信息。

在任务上创建身份链接​

POST cmmn-runtime/tasks/{taskId}/identitylinks
ParameterRequiredValueDescription
taskId是String任务的 id。

请求体(用户):

{
"userId" : "kermit",
"type" : "candidate",
}

请求体(用户组):

{
"groupId" : "sales",
"type" : "candidate",
}
Response codeDescription
201表示已找到该任务并创建了身份链接。
404表示未找到请求的任务,或该任务不具有请求的 identityLink。状态包含关于该错误的额外信息。

成功响应体:

{
"userId" : null,
"groupId" : "sales",
"type" : "candidate",
"url" : "http://localhost:8081/flowable-rest/service/runtime/tasks/100/identitylinks/groups/sales/candidate"
}

删除任务上的身份链接​

DELETE cmmn-runtime/tasks/{taskId}/identitylinks/{family}/{identityId}/{type}
ParameterRequiredValueDescription
taskId是String任务的 id。
family是String根据目标身份类型,为 +groups+ 或 +users+。
identityId是String标识的 id。
type是String身份链接的类型。
Response codeDescription
204表示已找到该任务和身份链接并删除了链接。响应体有意留空。
404表示未找到请求的任务,或该任务不具有请求的 identityLink。状态包含关于该错误的额外信息。

历史​

历史用例实例列表​

GET cmmn-history/historic-case-instances

URL 参数:

ParameterRequiredValueDescription
caseInstanceId否String历史用例实例的 id。
caseDefinitionKey否String历史用例实例的用例定义 key。
caseDefinitionId否String历史用例实例的用例定义 id。
businessKey否String历史用例实例的业务键。
involvedUser否String历史用例实例的参与用户。
finished否Boolean表示历史用例实例是否已完成。
finishedAfter否Date只返回在该日期之后完成的历史用例实例。
finishedBefore否Date只返回在该日期之前完成的历史用例实例。
startedAfter否Date只返回在该日期之后启动的历史用例实例。
startedBefore否Date只返回在该日期之前启动的历史用例实例。
startedBy否String只返回由该用户启动的历史用例实例。
includeCaseVariables否Boolean表示是否同时返回历史用例实例变量。
tenantId否String只返回具有给定 tenantId 的实例。
tenantIdLike否String只返回 tenantId 与给定值相似的实例。
withoutTenantId否Boolean如果 +true+,只返回未设置 tenantId 的实例。如果 +false+,则忽略 +withoutTenantId+ 参数。
Response codeDescription
200表示历史用例实例可被查询。
400表示参数格式不正确。状态消息包含额外信息。

成功响应体:

{
"data": [
{
"id": "095fd94e-3c78-11ea-8548-38c986587585",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"name": null,
"businessKey": null,
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionName": "Test Case",
"caseDefinitionDescription": null,
"startTime": "2020-01-21T19:01:23.923+01:00",
"endTime": null,
"startUserId": "rest-admin",
"superProcessInstanceId": null,
"variables": [],
"tenantId": "",
"state": "active",
"callbackId": null,
"callbackType": null,
"referenceId": null,
"referenceType": null
}
],
"total": 1,
"start": 0,
"sort": "caseInstanceId",
"order": "asc",
"size": 1
}

查询历史用例实例​

POST query/historic-case-instances

请求体:

{
"caseDefinitionKey" : "myCase",


"variables" : [
{
"name" : "myVariable",
"value" : 1234,
"operation" : "equals",
"type" : "long"
}
]
}

所有支持的 JSON 参数字段与上一节中的参数完全相同,但以 JSON body 参数而非 URL 参数的方式传入,以支持更高级的查询并避免请求 URL 过长导致的错误。此外,查询还允许基于用例变量进行过滤。+variables+ 属性是一个 JSON 数组,包含使用常规 Flowable REST 格式的对象。

Response codeDescription
200表示请求成功,并返回任务。
400表示参数格式不正确。状态消息包含额外信息。

成功响应体:

获取单个历史用例实例​

GET cmmn-history/historic-case-instances/{caseInstanceId}
ParameterRequiredValueDescription
caseInstanceId否String历史用例实例的 id。
Response codeDescription
200表示已找到历史用例实例。
404表示未找到历史用例实例。

成功响应体:

{
"id": "095fd94e-3c78-11ea-8548-38c986587585",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"name": null,
"businessKey": null,
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionName": "Test Case",
"caseDefinitionDescription": null,
"startTime": "2020-01-21T19:01:23.923+01:00",
"endTime": null,
"startUserId": "rest-admin",
"superProcessInstanceId": null,
"variables": [],
"tenantId": "",
"state": "active",
"callbackId": null,
"callbackType": null,
"referenceId": null,
"referenceType": null
}

删除历史用例实例​

DELETE cmmn-history/historic-case-instances/{caseInstanceId}
ParameterRequiredValueDescription
caseInstanceId否String历史用例实例的 id。
Response codeDescription
200表示历史用例实例已删除。
404表示未找到历史用例实例。

获取历史用例实例的身份链接​

GET cmmn-history/historic-case-instance/{caseInstanceId}/identitylinks
ParameterRequiredValueDescription
caseInstanceId否String历史用例实例的 id。
Response codeDescription
200表示请求成功,并返回身份链接。
404表示未找到该用例实例。

成功响应体:

[
{
"type": "starter",
"userId": "rest-admin",
"groupId": null,
"taskId": null,
"taskUrl": null,
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-case-instances/095fd94e-3c78-11ea-8548-38c986587585"
},
{
"type": "participant",
"userId": "rest-admin",
"groupId": null,
"taskId": null,
"taskUrl": null,
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-case-instances/095fd94e-3c78-11ea-8548-38c986587585"
}
]

获取历史用例实例变量的二进制数据​

GET cmmn-history/historic-case-instances/{caseInstanceId}/variables/{variableName}/data
ParameterRequiredValueDescription
caseInstanceId否String历史用例实例的 id。
variableName要返回其数据的变量名。
Response codeDescription
200表示已找到该用例实例并返回请求的变量数据。
404表示未找到请求的用例实例,或该用例实例不具有给定名称的变量,或该变量没有可用的二进制流。状态消息提供额外信息。

成功响应体:

响应体包含变量的二进制值。当变量为 +binary+ 类型时,无论变量内容或请求 accept-type 头如何,响应的 content-type 都设置为 +application/octet-stream+。对于 +serializable+,content-type 使用 +application/x-java-serialized-object+。

获取历史用例实例的阶段概览​

GET cmmn-history/historic-case-instances/{caseInstanceId}/stage-overview
ParameterRequiredValueDescription
caseInstanceId否String历史用例实例的 id。

成功响应体:

[
{
"id": "stage1",
"name": "First Stage",
"current": true
"ended": false,
"endTime": null,
},
{
"id": "stage2",
"name": "Second stage",
"current": false
"ended": false,
"endTime": null,
}
]

历史里程碑列表​

GET cmmn-history/historic-milestone-instances

注意:里程碑实际上表示为一个计划项实例。

ParameterRequiredValueDescription
caseInstanceId否String只返回属于具有给定 id 的用例实例的里程碑实例。
caseDefinitionId否String只返回属于具有给定 id 的用例定义的里程碑实例。
mileStoneId否String只返回具有给定 id 的里程碑实例(即计划项实例 id)。
mileStoneName否String只返回具有给定名称的里程碑实例。
reachedBefore否Date只返回在给定日期之前达到的里程碑实例。
reachedBefore否Date只返回在给定日期之后达到的里程碑实例。
Response codeDescription
200表示已找到该里程碑实例并返回请求的变量数据。
404未找到该里程碑实例。

成功响应体:

{
"data": [
{
"id": "095fd94e-3c78-11ea-8548-38c986587585",
"name": "My milestone",
"elementId": "milestone1",
"caseInstanceId: "123fd94e-3c78-23ea-8548-38c986587585",
"caseDefinitionId: "567fd94e-3c78-23ea-8548-38c981236545",
"timestamp": "2020-01-21T19:01:23.923+01:00"
...
}
],
"total": 1,
"start": 0,
"sort": "caseInstanceId",
"order": "asc",
"size": 1
}

获取单个历史里程碑实例​

GET cmmn-history/historic-milestone-instances/{milestoneInstanceId}
ParameterRequiredValueDescription
milestoneInstanceId否String历史里程碑实例的 id。
Response codeDescription
200表示已找到该里程碑实例并返回请求的变量数据。
404未找到该里程碑实例。

成功响应体:

{
"id": "095fd94e-3c78-11ea-8548-38c986587585",
"name": "My milestone",
"elementId": "milestone1",
"caseInstanceId: "123fd94e-3c78-23ea-8548-38c986587585",
"caseDefinitionId: "567fd94e-3c78-23ea-8548-38c981236545",
"timestamp": "2020-01-21T19:01:23.923+01:00"
...
}

历史计划项实例列表​

GET cmmn-history/historic-planitem-instance

URL 参数:

ParameterRequiredValueDescription
caseInstanceId否String只返回属于具有给定 id 的用例实例的计划项实例。
caseDefinitionId否String只返回属于具有给定 id 的用例定义的计划项实例。
planItemInstanceId否String只返回具有给定 id 的计划项实例。
planItemInstanceName否String只返回具有给定名称的计划项实例。
planItemInstanceState否String只返回具有给定状态的计划项实例。
stageInstanceId否String只返回属于具有给定 id 的阶段计划项实例的计划项实例。
elementId否String只返回具有给定元素(即模型中的)id 的计划项实例。
planItemDefinitionId否String只返回具有给定计划项定义 id 的计划项实例。
planItemDefinitionType否String只返回具有给定计划项定义类型的计划项实例。
referenceId否String只返回具有给定引用 id 的计划项实例。
referenceType否String只返回具有给定引用类型的计划项实例。
startUserId否Date只返回由给定用户启动的计划项实例。
createdBefore否Date只返回在给定日期之前创建的计划项实例。
createdAfter否Date只返回在给定日期之后创建的计划项实例。
tenantId否String只返回属于给定租户 id 的计划项实例。
withoutTenantId否String只返回不属于任何租户的计划项实例。

由于计划项实例可以在不同状态之间迁移,以下状态时间戳参数也可用(均为日期参数):

  • lastAvailableBefore
  • lastAvailableAfter
  • lastEnabledBefore
  • lastEnabledAfter
  • lastDisabledBefore
  • lastDisabledAfter
  • lastStartedBefore
  • lastStartedAfter
  • lastSuspendedBefore
  • lastSuspendedAfter
  • completedBefore
  • completedAfter
  • terminatedBefore
  • terminatedAfter
  • occurredBefore
  • occurredAfter
  • exitBefore
  • exitAfter
  • endedBefore(所有终态的兜底参数)
  • endedAfter(所有终态的兜底参数)
Response codeDescription
200表示请求成功,并返回身份链接。
400表示参数格式不正确。状态消息包含额外信息。

成功响应体:

{
"data": [
{
"id": "09618702-3c78-11ea-8548-38c986587585",
"name": null,
"state": "active",
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"derivedCaseDefinitionId": null,
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"stageInstanceId": null,
"stage": true,
"elementId": "planItem2",
"planItemDefinitionId": "expandedStage1",
"planItemDefinitionType": "stage",
"createTime": "2020-01-21T19:01:23.934+01:00",
"lastAvailableTime": "2020-01-21T19:01:23.942+01:00",
"lastEnabledTime": null,
"lastDisabledTime": null,
"lastStartedTime": "2020-01-21T19:01:23.974+01:00",
"lastSuspendedTime": null,
"completedTime": null,
"occurredTime": null,
"terminatedTime": null,
"exitTime": null,
"endedTime": null,
"lastUpdatedTime": "2020-01-21T19:01:23.974+01:00",
"startUserId": null,
"referenceId": null,
"referenceType": null,
"entryCriterionId": null,
"exitCriterionId": null,
"formKey": null,
"extraValue": null,
"showInOverview": true,
"tenantId": "",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-planitem-instances/09618702-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"derivedCaseDefinitionUrl": null,
"stageInstanceUrl": null
},
...
],
"total": 3,
"start": 0,
"sort": "createTime",
"order": "asc",
"size": 3
}

获取历史计划项实例​

GET cmmn-history/historic-planitem-instances/{planItemInstanceId|
ParameterRequiredValueDescription
planItemInstanceId否String历史计划项实例的 id。
Response codeDescription
200表示已找到该里程碑实例并返回请求的变量数据。
404未找到该计划项实例。

成功响应体

{
"id": "09618702-3c78-11ea-8548-38c986587585",
"name": "My Stage",
"state": "active",
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"derivedCaseDefinitionId": null,
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"stageInstanceId": null,
"stage": true,
"elementId": "planItem2",
"planItemDefinitionId": "expandedStage1",
"planItemDefinitionType": "stage",
"createTime": "2020-01-21T19:01:23.934+01:00",
"lastAvailableTime": "2020-01-21T19:01:23.942+01:00",
"lastEnabledTime": null,
"lastDisabledTime": null,
"lastStartedTime": "2020-01-21T19:01:23.974+01:00",
"lastSuspendedTime": null,
"completedTime": null,
"occurredTime": null,
"terminatedTime": null,
"exitTime": null,
"endedTime": null,
"lastUpdatedTime": "2020-01-21T19:01:23.974+01:00",
"startUserId": null,
"referenceId": null,
"referenceType": null,
"entryCriterionId": null,
"exitCriterionId": null,
"formKey": null,
"extraValue": null,
"showInOverview": true,
"tenantId": "",
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-planitem-instances/09618702-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585",
"derivedCaseDefinitionUrl": null,
"stageInstanceUrl": null
}

历史任务实例列表​

GET cmmn-history/historic-task-instances
ParameterRequiredValueDescription
taskId否String历史任务实例的 id。
caseInstanceId否String历史任务实例的用例实例 id。
caseDefinitionId否String历史任务实例的用例定义 id。
taskDefinitionKey否String属于某个用例的任务的任务定义 key。
taskName否String历史任务实例的任务名。
taskNameLike否String历史任务实例使用 'like' 操作符的任务名。
taskDescription否String历史任务实例的任务描述。
taskDescriptionLike否String历史任务实例使用 'like' 操作符的任务描述。
taskDefinitionKey否String历史任务实例在用例定义中的任务标识符。
taskCategory否String选择具有给定类别的任务。注意这是任务类别,不是用例定义的类别(BPMN XML 中的命名空间)。
taskDeleteReason否String历史任务实例的任务删除原因。
taskDeleteReasonLike否String历史任务实例使用 'like' 操作符的任务删除原因。
taskAssignee否String历史任务实例的受理人。
taskAssigneeLike否String历史任务实例使用 'like' 操作符的受理人。
taskOwner否String历史任务实例的所有者。
taskOwnerLike否String历史任务实例使用 'like' 操作符的所有者。
taskInvolvedUser否String历史任务实例的参与用户。
taskPriority否String历史任务实例的优先级。
finished否Boolean表示历史任务实例是否已完成。
caseFinished否Boolean表示历史任务实例所属用例实例是否已完成。
parentTaskId否String历史任务实例的可选父任务 id。
dueDate否Date只返回到期日等于该日期的历史任务实例。
dueDateAfter否Date只返回到期日在该日期之后的历史任务实例。
dueDateBefore否Date只返回到期日在该日期之前的历史任务实例。
withoutDueDate否Boolean只返回没有到期日的历史任务实例。当传入 +false+ 作为值时,该参数被忽略。
taskCompletedOn否Date只返回在该日期完成的历史任务实例。
taskCompletedAfter否Date只返回在该日期之后完成的历史任务实例。
taskCompletedBefore否Date只返回在该日期之前完成的历史任务实例。
taskCreatedOn否Date只返回在该日期创建的历史任务实例。
taskCreatedBefore否Date只返回在该日期之前创建的历史任务实例。
taskCreatedAfter否Date只返回在该日期之后创建的历史任务实例。
includeTaskLocalVariables否Boolean表示是否同时返回历史任务实例局部变量。
tenantId否String只返回具有给定 tenantId 的历史任务实例。
tenantIdLike否String只返回 tenantId 与给定值相似的历史任务实例。
withoutTenantId否Boolean如果 +true+,只返回未设置 tenantId 的历史任务实例。如果 +false+,则忽略 +withoutTenantId+ 参数。
Response codeDescription
200表示历史任务实例可被查询。
400表示参数格式不正确。状态消息包含额外信息。

成功响应体:

{
"data": [
{
"id": "09688be5-3c78-11ea-8548-38c986587585",
"name": "Human task",
"description": null,
"deleteReason": null,
"owner": null,
"assignee": "rest-admin",
"startTime": "2020-01-21T19:01:23.975+01:00",
"endTime": null,
"durationInMillis": null,
"workTimeInMillis": null,
"claimTime": null,
"taskDefinitionKey": "humanTask1",
"formKey": null,
"priority": 50,
"dueDate": null,
"parentTaskId": null,
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-task-instances/09688be5-3c78-11ea-8548-38c986587585",
"variables": [],
"tenantId": "",
"category": null,
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585"
}
],
"total": 1,
"start": 0,
"sort": "taskInstanceId",
"order": "asc",
"size": 1
}

获取单个历史任务实例​

GET cmmn-history/historic-task-instances/{taskId}
ParameterRequiredValueDescription
taskId否String历史任务的 id。
Response codeDescription
200表示已找到历史任务实例。
404表示未找到历史任务实例。

成功响应体:

{
"id": "09688be5-3c78-11ea-8548-38c986587585",
"name": "Human task",
"description": null,
"deleteReason": null,
"owner": null,
"assignee": "rest-admin",
"startTime": "2020-01-21T19:01:23.975+01:00",
"endTime": null,
"durationInMillis": null,
"workTimeInMillis": null,
"claimTime": null,
"taskDefinitionKey": "humanTask1",
"formKey": null,
"priority": 50,
"dueDate": null,
"parentTaskId": null,
"url": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-task-instances/09688be5-3c78-11ea-8548-38c986587585",
"variables": [],
"tenantId": "",
"category": null,
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"caseDefinitionId": "59fd213c-3c6b-11ea-8548-38c986587585",
"caseDefinitionUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-repository/case-definitions/59fd213c-3c6b-11ea-8548-38c986587585"
}

查询历史任务实例​

POST query/historic-task-instances

所有支持的 JSON 参数字段与上一节中的参数完全相同,但以 JSON body 参数而非 URL 参数的方式传入,以支持更高级的查询并避免请求 URL 过长导致的错误。此外,查询还允许基于用例变量进行过滤。

Response codeDescription
200表示请求成功,并返回任务。
400表示参数格式不正确。状态消息包含额外信息。

删除历史任务实例​

DELETE cmmn-history/historic-task-instances/{taskId}
Response codeDescription
200表示历史任务实例已删除。
404表示未找到历史任务实例。

获取历史任务实例的身份链接​

GET cmmn-history/historic-task-instance/{taskId}/identitylinks
Response codeDescription
200表示请求成功,并返回身份链接/。
404表示未找到该任务实例。

成功响应体:

[
{
"type": "assignee",
"userId": "rest-admin",
"groupId": null,
"taskId": "09688be5-3c78-11ea-8548-38c986587585",
"taskUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-task-instances/09688be5-3c78-11ea-8548-38c986587585",
"caseInstanceId": null,
"caseInstanceUrl": null
}
]

获取历史任务实例变量的二进制数据​

GET cmmn-history/historic-task-instances/{taskId}/variables/{variableName}/data
Response codeDescription
200表示已找到该任务实例并返回请求的变量数据。
404表示未找到请求的任务实例,或该用例实例不具有给定名称的变量,或该变量没有可用的二进制流。状态消息提供额外信息。

成功响应体:

响应体包含变量的二进制值。当变量为 +binary+ 类型时,无论变量内容或请求 accept-type 头如何,响应的 content-type 都设置为 +application/octet-stream+。对于 +serializable+,content-type 使用 +application/x-java-serialized-object+。

历史变量实例列表​

GET cmmn-history/historic-variable-instances

URL 参数:

ParameterRequiredValueDescription
caseInstanceId否String历史变量实例的用例实例 id。
taskId否String历史变量实例的任务 id。
excludeTaskVariables否Boolean表示从结果中排除任务变量。
variableName否String历史变量实例的变量名。
variableNameLike否String历史变量实例使用 'like' 操作符的变量名。
Response codeDescription
200表示历史变量实例可被查询。
400表示参数格式不正确。状态消息包含额外信息。

成功响应体:

{
"data": [
{
"id": "09604e80-3c78-11ea-8548-38c986587585",
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"taskId": null,
"variable": {
"name": "initiator",
"type": "string",
"value": "rest-admin",
"scope": null
}
},
{
"id": "0960c3b1-3c78-11ea-8548-38c986587585",
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"taskId": null,
"variable": {
"name": "myVar",
"type": "string",
"value": "This is a variable",
"scope": null
}
},
{
"id": "06436c38-3c7a-11ea-8548-38c986587585",
"caseInstanceId": "095fd94e-3c78-11ea-8548-38c986587585",
"caseInstanceUrl": "http://localhost:8080/flowable-rest/cmmn-api/cmmn-history/historic-case-instances/095fd94e-3c78-11ea-8548-38c986587585",
"taskId": null,
"variable": {
"name": "test",
"type": "binary",
"value": null,
"scope": null
}
}
],
"total": 3,
"start": 0,
"sort": "variableName",
"order": "asc",
"size": 3
}

查询历史变量实例​

POST query/historic-variable-instances

请求体:

{
"caseDefinitionId" : "59fd213c-3c6b-11ea-8548-38c986587585",
...

"variables" : [
{
"name" : "myVariable",
"value" : 1234,
"operation" : "equals",
"type" : "long"
}
]
}

所有支持的 JSON 参数字段与上一节中的参数完全相同,但以 JSON body 参数而非 URL 参数的方式传入,以支持更高级的查询并避免请求 URL 过长导致的错误。此外,查询还允许基于用例变量进行过滤。+variables+ 属性是一个 JSON 数组,包含使用常规 Flowable 变量格式的对象。

Response codeDescription
200表示请求成功,并返回任务。
400表示参数格式不正确。状态消息包含额外信息。

获取历史任务实例变量的二进制数据​

GET cmmn-history/historic-variable-instances/{varInstanceId}/data
ParameterRequiredValueDescription
varInstanceId否String需要其数据的历史变量 id。
Response codeDescription
200表示已找到该变量实例并返回请求的变量数据。
404表示未找到请求的任务实例,或该用例实例不具有给定名称的变量,或该变量没有可用的二进制流。状态消息提供额外信息。

成功响应体:

响应体包含变量的二进制值。当变量为 +binary+ 类型时,无论变量内容或请求 accept-type 头如何,响应的 content-type 都设置为 +application/octet-stream+。对于 +serializable+,content-type 使用 +application/x-java-serialized-object+。

作业管理​

CMMN REST API 允许完整访问和管理异步作业、定时器作业、挂起作业和死信作业。
该 API 与 BPMN 引擎的 API 完全相同,只是把 management 替换为 cmmn-management。