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。
方法与返回码
| Method | Operations |
|---|---|
| GET | 获取单个资源或获取资源集合。 |
| POST | 创建新资源。也用于执行资源查询——当请求结构过于复杂、不适合放进 GET 请求的查询 URL 时使用。 |
| PUT | 更新已有资源的属性。也用于对已有资源调用动作。 |
| DELETE | 删除已有资源。 |
| Response | Description |
|---|---|
| 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 文档中说明:
| Type | Format |
|---|---|
| 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 参数
| Type | Format |
|---|---|
| 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 参数)。
| Parameter | Default value | Description |
|---|---|---|
| sort | 各查询实现不同 | 排序键名称,其默认值和允许取值见相应查询。 |
| order | asc | 排序顺序,可以是 'asc' 或 'desc'。 |
| start | 0 | 用于结果分页的参数。默认从 0 开始。 |
| size | 10 | 用于结果分页的参数。默认大小为 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"
}
| Parameter | Required | Description |
|---|---|---|
| name | 否 | 查询中要包含的变量名。在某些查询中使用 'equals' 时可以为空,用于查询具有给定值的任意变量名的资源。 |
| value | 是 | 查询中包含的变量值,应包含给定类型的正确格式。 |
| operator | 是 | 查询中使用的操作符,可取值:equals、notEquals、equalsIgnoreCase、notEqualsIgnoreCase、lessThan、greaterThan、lessThanOrEquals、greaterThanOrEquals 和 like。 |
| type | 否 | 使用的变量类型。省略时,类型会从 value 参数推断。任何 JSON 文本值视为 string 类型,JSON 布尔值视为 boolean 类型,JSON 数字根据大小视为 long 或 integer 类型。建议在不确定时显式指定类型。开箱即用支持的类型如下。 |
| Type name | Description |
|---|---|
| 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"
}
| Parameter | Required | Description |
|---|---|---|
| name | 是 | 变量名。 |
| value | 否 | 变量值。写入变量时如果省略 value,将使用 null 作为值。 |
| valueUrl | 否 | 读取 binary 或 serializable 类型的变量时,该属性指向获取原始二进制数据的 URL。 |
| type | 否 | 变量类型。有关类型的更多信息见下表。写入变量时如果省略该值,类型将从原始 JSON 属性请求类型推断,仅限 string、double、integer 和 boolean。建议始终带上类型,以免对类型做出错误假设。 |
| Type name | Description |
|---|---|
| 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
| Parameter | Required | Value | Description |
|---|---|---|---|
| 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 Code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| deploymentId | 是 | String | 要获取的部署的 id。 |
| Response code | Description |
|---|---|
| 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 code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| deploymentId | 是 | String | 要删除的部署的 id。 |
| Response code | Description |
|---|---|
| 204 | 表示已找到该部署并已删除。响应体有意留空。 |
| 404 | 表示未找到请求的部署。 |
列出部署中的资源
GET cmmn-repository/deployments/{deploymentId}/resources
| Parameter | Required | Value | Description |
|---|---|---|---|
| deploymentId | 是 | String | 要获取其资源的部署的 id。 |
| Response code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| deploymentId | 是 | String | 请求资源所属部署的 id。 |
| resourceId | 是 | String | 要获取的资源的 id。如果 resourceId 包含斜杠,请务必对其进行 URL 编码。例如:使用 'diagrams%2Fmy-case.cmmn.xml' 而不是 'diagrams/Fmy-case.cmmn.xml'。 |
| Response code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| deploymentId | 是 | String | 请求资源所属部署的 id。} |
| resourceId | 是 | String | 要获取其数据的资源的 id。如果 resourceId 包含斜杠,请务必对其进行 URL 编码。例如:使用 'diagrams%2Fmy-case.cmmn.xml' 而不是 'diagrams/Fmy-case.cmmn.xml'。 |
| Response code | Description |
|---|---|
| 200 | 表示部署和资源均已找到,并已返回资源数据。 |
| 404 | 表示未找到请求的部署,或部署中不存在具有给定 id 的资源。状态描述包含额外信息。 |
成功响应体:
响应体将包含请求资源的二进制资源内容。响应 content-type 将与资源 'mimeType' 属性返回的类型相同。此外还会设置 content-disposition 头,允许浏览器下载该文件而不是直接显示它。
用例定义
用例定义列表
GET cmmn-repository/case-definitions
| Parameter | Required | Value | Description |
|---|---|---|---|
| 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 code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseDefinitionId | 是 | String | 要获取的用例定义的 id。 |
| Response code | Description |
|---|---|
| 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 code | Description |
|---|---|
| 200 | 表示该用例的类别已被修改。 |
| 400 | 表示请求体中未定义类别。 |
| 404 | 表示未找到请求的用例定义。 |
获取用例定义的资源内容
GET cmmn-repository/case-definitions/{caseDefinitionId}/resourcedata
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseDefinitionId | 是 | String | 要获取其资源数据的用例定义的 id。 |
响应:
响应码/响应体与 +GET cmmn-repository/deployment/{deploymentId}/resourcedata/{resourceId}+ 完全相同。
获取用例定义的 BPMN 模型
GET cmmn-repository/case-definitions/{caseDefinitionId}/model
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseDefinitionId | 是 | String | 要获取其模型的用例定义的 id。 |
| Response code | Description |
|---|---|
| 200 | 表示已找到该用例定义并返回模型。 |
| 404 | 表示未找到请求的用例定义。 |
响应体:
响应体是 +org.flowable.cmmn.model.CmmnModel+ 的 JSON 表示,包含完整的用例定义模型。
获取用例定义的所有候选启动者
GET repository/case-definitions/{caseDefinitionId}/identitylinks
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseDefinitionId | 是 | String | 要获取其身份链接的用例定义的 id。 |
| Response code | Description |
|---|---|
| 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
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseDefinitionId | 是 | String | 用例定义的 id。 |
请求体(用户):
{
"user" : "kermit"
}
请求体(用户组):
{
"groupId" : "sales"
}
| Response code | Description |
|---|---|
| 201 | 表示已找到该用例定义并创建了身份链接。 |
| 404 | 表示未找到请求的用例定义。 |
成功响应体:
从用例定义删除候选启动者
DELETE cmmn-repository/case-definitions/{caseDefinitionId}/identitylinks/{family}/{identityId}
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseDefinitionId | 是 | String | 用例定义的 id。 |
| family | 是 | String | 根据身份链接类型,为 +users+ 或 +groups+。 |
| identityId | 是 | String | 要移除为候选启动者的标识的 userId 或 groupId。 |
| Response code | Description |
|---|---|
| 204 | 表示已找到该用例定义并删除了身份链接。响应体有意留空。 |
| 404 | 表示未找到请求的用例定义,或该用例定义没有与该 URL 匹配的身份链接。 |
获取用例定义的某个候选启动者
GET cmmn-repository/case-definitions/{caseDefinitionId}/identitylinks/{family}/{identityId}
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseDefinitionId | 是 | String | 用例定义的 id。 |
| family | 是 | String | 根据身份链接类型,为 +users+ 或 +groups+。 |
| identityId | 是 | String | 要获取为候选启动者的标识的 userId 或 groupId。 |
| Response code | Description |
|---|---|
| 200 | 表示已找到该用例定义并返回身份链接。 |
| 404 | 表示未找到请求的用例定义,或该用例定义没有与该 URL 匹配的身份链接。 |
用例实例
获取单个用例实例
GET cmmn-runtime/case-instances/{caseInstanceId}
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 是 | String | 要获取的用例实例的 id。 |
| Response code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 是 | String | 要删除的用例实例的 id。 |
| Response code | Description |
|---|---|
| 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 code | Description |
|---|---|
| 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
| Parameter | Required | Value | Description |
|---|---|---|---|
| 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 code | Description |
|---|---|
| 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 code | Description |
|---|---|
| 200 | 表示请求成功,并返回用例实例。 |
| 400 | 表示参数格式不正确。状态消息包含额外信息。 |
获取用例实例的图
GET cmmn-runtime/case-instances/{caseInstanceId}/diagram
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 是 | String | 要获取其图的用例实例的 id。 |
| Response code | Description |
|---|---|
| 200 | 表示已找到该用例实例并返回图。 |
| 400 | 表示未找到请求的用例实例,但该用例不包含任何图形信息(CMMN:DI),无法创建图。} |
| 404 | 表示未找到请求的用例实例。 |
获取用例实例的参与人员
GET cmmn-runtime/case-instances/{caseInstanceId}/identitylinks
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 是 | String | 要获取其链接的用例实例的 id。 |
| Response code | Description |
|---|---|
| 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
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 是 | String | 要获取其链接的用例实例的 id。 |
请求体:
{
"userId":"kermit",
"type":"participant"
}
+userId+ 和 +type+ 都是必需的。
| Response code | Description |
|---|---|
| 201 | 表示已找到该用例实例并创建链接。 |
| 400 | 表示请求体中未包含 userId 或 type。 |
| 404 | 表示未找到请求的用例实例。 |
从用例实例移除参与用户
DELETE cmmn-runtime/case-instances/{caseInstanceId}/identitylinks/users/{userId}/{type}
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 是 | String | 用例实例的 id。 |
| userId | 是 | String | 要删除链接的用户 id。 |
| type | 是 | String | 要删除的链接类型。 |
| Response code | Description |
|---|---|
| 204 | 表示已找到该用例实例并删除了链接。响应体有意留空。 |
| 404 | 表示未找到请求的用例实例,或要删除的链接不存在。响应状态包含关于错误的额外信息。 |
用例实例的变量列表
GET cmmn-runtime/case-instances/{caseInstanceId}/variables
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 是 | String | 要获取其变量的用例实例的 id。 |
| Response code | Description |
|---|---|
| 200 | 表示已找到该用例实例并返回变量。 |
| 404 | 表示未找到请求的用例实例。 |
成功响应体:
| - | - | - | - |
如果变量是二进制变量或可序列化变量,+valueUrl+ 指向用于获取原始值的 URL。如果是普通变量,值直接出现在响应中。
获取用例实例的某个变量
GET cmmn-runtime/case-instances/{caseInstanceId}/variables/{variableName}
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 是 | String | 要获取其变量的用例实例的 id。 |
| variableName | 是 | String | 要获取的变量名。 |
| Response code | Description |
|---|---|
| 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+ 时,不存在的变量会在用例实例上创建,已存在的变量会被覆盖,且不会报错。
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 是 | String | 要获取其变量的用例实例的 id。 |
请求体:
[
{
"name":"intProcVar",
"type":"integer",
"value":123
},
...
]
可以向请求体数组传入任意数量的变量。
| Response code | Description |
|---|---|
| 201 | 表示已找到该用例实例并创建变量。 |
| 400 | 表示请求体不完整或包含非法值。状态描述包含关于错误的额外信息。 |
| 404 | 表示未找到请求的用例实例。 |
| 409 | 表示已找到该用例实例但它已具有给定名称的变量(仅在使用 POST 方法时抛出)。请改用更新方法。 |
更新用例实例上的单个变量
PUT cmmn-runtime/case-instances/{caseInstanceId}/variables/{variableName}
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 是 | String | 要获取其变量的用例实例的 id。 |
| variableName | 是 | String | 要获取的变量名。 |
{
"name":"intProcVar"
"type":"integer"
"value":123
}
| Response code | Description |
|---|---|
| 200 | 表示用例实例和变量均已找到,并更新变量。 |
| 404 | 表示未找到请求的用例实例,或该用例实例不具有给定名称的变量。状态描述包含关于错误的额外信息。 |
如果变量是二进制变量或可序列化变量,+valueUrl+ 指向用于获取原始值的 URL。如果是普通变量,值直接出现在响应中。
在用例实例上创建新的二进制变量
POST runtime/case-instances/{caseInstanceId}/variables
| Parameter | Required | Value | Description |
|---|---|---|---|
| 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 code | Description |
|---|---|
| 201 | 表示已创建变量并返回结果。 |
| 400 | 表示缺少要创建的变量名。状态消息提供额外信息。 |
| 404 | 表示未找到请求的用例实例。 |
| 409 | 表示该用例实例已具有给定名称的变量。请改用 PUT 方法更新任务变量。 |
| 415 | 表示可序列化数据包含一个在运行 Flowable 引擎的 JVM 中不存在对应类的对象,因此无法反序列化。 |
更新用例实例上已有的二进制变量
PUT runtime/case-instances/{caseInstanceId}/variables
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 是 | String | 要为其创建新变量的用例实例的 id。 |
请求体:
请求应 为 +multipart/form-data+ 类型。应包含一个带有该变量二进制值的文件部分。此外,还可以出现以下额外表单字段:
name:变量的必填名称。type:要创建的变量类型。省略时默认为 +binary+,请求中的二进制数据将以字节数组形式存储。
| Response code | Description |
|---|---|
| 200 | 表示已更新变量并返回结果。 |
| 400 | 表示缺少要更新的变量名。状态消息提供额外信息。 |
| 404 | 表示未找到请求的用例实例,或该用例实例不具有给定名称的变量。 |
| 415 | 表示可序列化数据包含一个在运行 Flowable 引擎的 JVM 中不存在对应类的对象,因此无法反序列化。 |
获取阶段概览
GET /cmmn-runtime/{caseInstanceId}/stage-overview
| Parameter | Required | Value | Description |
|---|---|---|---|
| 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
| Parameter | Required | Value | Description |
|---|---|---|---|
| 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 code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| planItemInstanceId | 是 | String | 计划项实例的 id。 |
| Response code | Description |
|---|---|
| 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"
}
可选动作:
| Action | Description |
|---|---|
| start | 启动计划项(必须处于 enabled 状态)。 |
| trigger | 触发计划项(正在等待触发)。 |
| enable | 启用计划项(当前处于 disabled 状态)。 |
| disable | 触发计划项(当前处于 enabled 状态)。 |
| evaluateCriteria | 求值计划项实例的哨兵(以及这样做会带来的任何后果)。 |
任务
任务列表
GET cmmn-runtime/tasks
| Parameter | Required | Value | Description |
|---|---|---|---|
| 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 code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 要获取的任务的 id。 |
| Response code | Description |
|---|---|
| 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}+ 将清除任务的到期日。
以下参数可用于更新:
| Parameter | Type |
|---|---|
| name | String |
| description | String |
| dueDate | Date |
| assignee | String |
| owner | String |
| parentTaskId | String |
| priority | integer |
| category | String |
| formKey | String |
| delegationState | String |
| tenantId | String |
| Response code | Description |
|---|---|
| 200 | 表示任务已更新。 |
| 404 | 表示未找到请求的任务。 |
| 409 | 表示请求的任务被并发更新。 |
任务动作
POST cmmn-runtime/tasks/{taskId}
完成任务 - 请求体 JSON:
{
"action" : "complete",
"variables" : []
}
| Parameter | Type | Description |
|---|---|---|
| action | String | 可以是 complete、claim、delegate 或 resolve。 |
| assignee | String | 任务的受理人。 |
| outcome | String | 完成任务时用于指定任务的结果。 |
| variables | String | 要设置的变量。 |
| transientVariables | String | 要设置的瞬态变量。 |
签收任务 - 请求体 JSON:
{
"action" : "claim",
"assignee" : "userWhoClaims"
}
由给定受理人签收任务。如果受理人为 +null+,任务将不分配给任何人,可再次被签收。
| Response code | Description |
|---|---|
| 200 | 表示动作已执行。 |
| 400 | 表示请求体包含无效值,或动作需要受理人但受理人缺失。 |
| 404 | 表示未找到请求的任务。 |
| 409 | 表示由于冲突无法执行该动作。任务被并发更新,或(对于 'claim' 动作)任务已被其他用户签收。 |
删除任务
DELETE cmmn-runtime/tasks/{taskId}?cascadeHistory={cascadeHistory}&deleteReason={deleteReason}
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 要删除的任务的 id。 |
| cascadeHistory | 否 | Boolean | 删除任务时是否同时删除历史任务实例(如适用)。未提供时默认为 false。 |
| deleteReason | 否 | String | 删除任务的原因。当 +cascadeHistory+ 为 true 时忽略此值。 |
| Response code | Description |
|---|---|
| 204 | 表示已找到并删除该任务。响应体有意留空。 |
| 403 | 表示请求的任务不能删除,因为它是用例实例的一部分。 |
| 404 | 表示未找到请求的任务。 |
获取任务的所有变量
GET cmmn-runtime/tasks/{taskId}/variables?scope={scope}
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 要获取其变量的任务的 id。 |
| scope | 否 | String | 要返回的变量作用域。当为 'local' 时,只返回任务局部变量。当为 'global' 时,只返回任务父执行层级的变量。省略该参数时,同时返回局部和全局变量。 |
| Response code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 要为其获取变量的任务的 id。 |
| variableName | 是 | String | 要获取的变量名。 |
| scope | 否 | String | 要返回的变量作用域。当为 'local' 时,只返回任务局部变量值。当为 'global' 时,只返回任务父执行层级的变量值。省略该参数时,如果存在局部变量则返回局部变量,否则返回全局变量。 |
| Response code | Description |
|---|---|
| 200 | 表示已找到该任务并返回请求的变量。 |
| 404 | 表示未找到请求的任务,或该任务不具有给定名称(在给定作用域中)的变量。状态消息提供额外信息。 |
成功响应体:
{
"name": "myVar",
"type": "string",
"value": "This is a variable",
"scope": "global"
}
获取变量的二进制数据
GET cmmn-runtime/tasks/{taskId}/variables/{variableName}/data?scope={scope}
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 要为其获取变量数据的任务的 id。 |
| variableName | 是 | String | 要获取其数据的变量名。只能使用 +binary+ 和 +serializable+ 类型的变量。如果使用任何其他类型的变量,将返回 +404+。 |
| scope | 否 | String | 要返回的变量作用域。当为 'local' 时,只返回任务局部变量值。当为 'global' 时,只返回任务父执行层级的变量值。省略该参数时,如果存在局部变量则返回局部变量,否则返回全局变量。 |
| Response code | Description |
|---|---|
| 200 | 表示已找到该任务并返回请求的变量数据。 |
| 404 | 表示未找到请求的任务,或该任务不具有给定名称(在给定作用域中)的变量,或该变量没有可用的二进制流。状态消息提供额外信息。 |
成功响应体:
响应体包含变量的二进制值。当变量为 +binary+ 类型时,无论变量内容或请求 accept-type 头如何,响应的 content-type 都设置为 +application/octet-stream+。对于 +serializable+,content-type 使用 +application/x-java-serialized-object+。
在任务上创建新变量
POST cmmn-runtime/tasks/{taskId}/variables
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 要为其创建新变量的任务的 id。 |
用于创建简单(非二进制)变量的请求体:
[
{
"name" : "myTaskVariable",
"scope" : "local",
"type" : "string",
"value" : "Hello World"
},
{
...
}
]
请求体应为一个数组,包含一个或多个表示要创建变量的 JSON 对象。
name:变量的必填名称。scope:要创建的变量的作用域。省略时默认为 +local+。type:要创建的变量类型。省略时回退到原始 JSON 值类型(string、boolean、integer 或 double)。value:变量值。
| Response code | Description |
|---|---|
| 201 | 表示已创建变量并返回结果。 |
| 400 | 表示缺少要创建的变量名,或试图在没有关联流程的独立任务上创建 +global+ 作用域的变量,或请求中包含空变量数组,或请求不包含变量数组。状态消息提供额外信息。 |
| 404 | 表示未找到请求的任务。 |
| 409 | 表示该任务已具有给定名称的变量。请改用 PUT 方法更新任务变量。 |
在任务上创建新的二进制变量
POST cmmn-runtime/tasks/{taskId}/variables
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 要为其创建新变量的任务的 id。 |
请求体:
请求应为 +multipart/form-data+ 类型。应包含一个带有该变量二进制值的文件部分。此外,还可以出现以下额外表单字段:
name:变量的必填名称。scope:要创建的变量的作用域。省略时默认为 +local+。type:要创建的变量类型。省略时默认为 +binary+,请求中的二进制数据将以字节数组形式存储。
| Response code | Description |
|---|---|
| 201 | 表示已创建变量并返回结果。 |
| 400 | 表示缺少要创建的变量名,或试图在没有关联流程的独立任务上创建 +global+ 作用域的变量。状态消息提供额外信息。 |
| 404 | 表示未找到请求的任务。 |
| 409 | 表示该任务已具有给定名称的变量。请改用 PUT 方法更新任务变量。 |
| 415 | 表示可序列化数据包含一个在运行 Flowable 引擎的 JVM 中不存在对应类的对象,因此无法反序列化。 |
更新任务上已有的变量
PUT cmmn-runtime/tasks/{taskId}/variables/{variableName}
| Parameter | Required | Value | Description |
|---|---|---|---|
| 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 code | Description |
|---|---|
| 200 | 表示已更新变量并返回结果。 |
| 400 | 表示缺少要更新的变量名,或试图在没有关联流程的独立任务上更新 +global+ 作用域的变量。状态消息提供额外信息。 |
| 404 | 表示未找到请求的任务,或该任务在给定作用域中不具有给定名称的变量。状态消息包含关于错误的额外信息。 |
更新任务上的二进制变量
PUT cmmn-runtime/tasks/{taskId}/variables/{variableName}
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 要为其更新变量的任务的 id。 |
| variableName | 是 | String | 要更新的变量名。 |
请求体:
请求应为 +multipart/form-data+ 类型。应包含一个带有该变量二进制值的文件部分。此外,还可以出现以下额外表单字段:
name:变量的必填名称。scope:要更新的变量的作用域。省略时默认为 +local+。type:要更新的变量类型。省略时默认为 +binary+,请求中的二进制数据将以字节数组形式存储。
| Response code | Description |
|---|---|
| 200 | 表示已更新变量并返回结果。 |
| 400 | 表示缺少要更新的变量名,或试图在没有关联流程的独立任务上更新 +global+ 作用域的变量。状态消息提供额外信息。 |
| 404 | 表示未找到请求的任务,或要更新的变量在给定任务的给定作用域中不存在。 |
| 415 | 表示可序列化数据包含一个在运行 Flowable 引擎的 JVM 中不存在对应类的对象,因此无法反序列化。 |
删除任务上的变量
DELETE cmmn-runtime/tasks/{taskId}/variables/{variableName}?scope={scope}
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 要删除的变量所属任务的 id。 |
| variableName | 是 | String | 要删除的变量名。 |
| scope | 否 | String | 要删除的变量作用域。可以是 +local+ 或 +global+。省略时默认为 +local+。 |
| Response code | Description |
|---|---|
| 204 | 表示已找到该任务变量并已删除。响应体有意留空。 |
| 404 | 表示未找到请求的任务,或该任务不具有给定名称的变量。状态消息包含关于错误的额外信息。 |
删除任务上的所有局部变量
DELETE cmmn-runtime/tasks/{taskId}/variables
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 要删除的变量所属任务的 id。 |
| Response code | Description |
|---|---|
| 204 | 表示已删除所有局部任务变量。响应体有意留空。 |
| 404 | 表示未找到请求的任务。 |
获取任务的所有身份链接
GET cmmn-runtime/tasks/{taskId}/identitylinks
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 要获取其身份链接的任务的 id。 |
| Response code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 任务的 id。 |
| family | 是 | String | 根据目标身份类型,为 +groups+ 或 +users+。 |
| identityId | 是 | String | 标识的 id。 |
| type | 是 | String | 身份链接的类型。 |
| Response code | Description |
|---|---|
| 200 | 表示已找到该任务和身份链接并返回。 |
| 404 | 表示未找到请求的任务,或该任务不具有请求的 identityLink。状态包含关于该错误的额外信息。 |
在任务上创建身份链接
POST cmmn-runtime/tasks/{taskId}/identitylinks
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 任务的 id。 |
请求体(用户):
{
"userId" : "kermit",
"type" : "candidate",
}
请求体(用户组):
{
"groupId" : "sales",
"type" : "candidate",
}
| Response code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 是 | String | 任务的 id。 |
| family | 是 | String | 根据目标身份类型,为 +groups+ 或 +users+。 |
| identityId | 是 | String | 标识的 id。 |
| type | 是 | String | 身份链接的类型。 |
| Response code | Description |
|---|---|
| 204 | 表示已找到该任务和身份链接并删除了链接。响应体有意留空。 |
| 404 | 表示未找到请求的任务,或该任务不具有请求的 identityLink。状态包含关于该错误的额外信息。 |
历史
历史用例实例列表
GET cmmn-history/historic-case-instances
URL 参数:
| Parameter | Required | Value | Description |
|---|---|---|---|
| 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 code | Description |
|---|---|
| 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 code | Description |
|---|---|
| 200 | 表示请求成功,并返回任务。 |
| 400 | 表示参数格式不正确。状态消息包含额外信息。 |
成功响应体:
获取单个历史用例实例
GET cmmn-history/historic-case-instances/{caseInstanceId}
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 否 | String | 历史用例实例的 id。 |
| Response code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 否 | String | 历史用例实例的 id。 |
| Response code | Description |
|---|---|
| 200 | 表示历史用例实例已删除。 |
| 404 | 表示未找到历史用例实例。 |
获取历史用例实例的身份链接
GET cmmn-history/historic-case-instance/{caseInstanceId}/identitylinks
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 否 | String | 历史用例实例的 id。 |
| Response code | Description |
|---|---|
| 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
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 否 | String | 历史用例实例的 id。 |
| variableName | 要返回其数据的变量名。 |
| Response code | Description |
|---|---|
| 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
| Parameter | Required | Value | Description |
|---|---|---|---|
| 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
注意:里程碑实际上表示为一个计划项实例。
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 否 | String | 只返回属于具有给定 id 的用例实例的里程碑实例。 |
| caseDefinitionId | 否 | String | 只返回属于具有给定 id 的用例定义的里程碑实例。 |
| mileStoneId | 否 | String | 只返回具有给定 id 的里程碑实例(即计划项实例 id)。 |
| mileStoneName | 否 | String | 只返回具有给定名称的里程碑实例。 |
| reachedBefore | 否 | Date | 只返回在给定日期之前达到的里程碑实例。 |
| reachedBefore | 否 | Date | 只返回在给定日期之后达到的里程碑实例。 |
| Response code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| milestoneInstanceId | 否 | String | 历史里程碑实例的 id。 |
| Response code | Description |
|---|---|
| 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 参数:
| Parameter | Required | Value | Description |
|---|---|---|---|
| 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 code | Description |
|---|---|
| 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|
| Parameter | Required | Value | Description |
|---|---|---|---|
| planItemInstanceId | 否 | String | 历史计划项实例的 id。 |
| Response code | Description |
|---|---|
| 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
| Parameter | Required | Value | Description |
|---|---|---|---|
| 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 code | Description |
|---|---|
| 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}
| Parameter | Required | Value | Description |
|---|---|---|---|
| taskId | 否 | String | 历史任务的 id。 |
| Response code | Description |
|---|---|
| 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 code | Description |
|---|---|
| 200 | 表示请求成功,并返回任务。 |
| 400 | 表示参数格式不正确。状态消息包含额外信息。 |
删除历史任务实例
DELETE cmmn-history/historic-task-instances/{taskId}
| Response code | Description |
|---|---|
| 200 | 表示历史任务实例已删除。 |
| 404 | 表示未找到历史任务实例。 |
获取历史任务实例的身份链接
GET cmmn-history/historic-task-instance/{taskId}/identitylinks
| Response code | Description |
|---|---|
| 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 code | Description |
|---|---|
| 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 参数:
| Parameter | Required | Value | Description |
|---|---|---|---|
| caseInstanceId | 否 | String | 历史变量实例的用例实例 id。 |
| taskId | 否 | String | 历史变量实例的任务 id。 |
| excludeTaskVariables | 否 | Boolean | 表示从结果中排除任务变量。 |
| variableName | 否 | String | 历史变量实例的变量名。 |
| variableNameLike | 否 | String | 历史变量实例使用 'like' 操作符的变量名。 |
| Response code | Description |
|---|---|
| 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 code | Description |
|---|---|
| 200 | 表示请求成功,并返回任务。 |
| 400 | 表示参数格式不正确。状态消息包含额外信息。 |
获取历史任务实例变量的二进制数据
GET cmmn-history/historic-variable-instances/{varInstanceId}/data
| Parameter | Required | Value | Description |
|---|---|---|---|
| varInstanceId | 否 | String | 需要其数据的历史变量 id。 |
| Response code | Description |
|---|---|
| 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。