目录

15.REST API

优质
小牛编辑
142浏览
2023-12-01

通用Activiti REST原则

安装与认证

activiti 包含了一个activiti引擎的REST API,把activiti-rest.war部署到像Apache Tomcat这样的servlet容器就可以使用。不过,它也可以使用在其他web应用中,把activiti-rest的依赖都加入 classpath,添加servlet,并映射到你的应用中。

默认情况下,activiti引擎会连接内存数据库H2。你可以修改 WEB-INF/classes目录下的db.properties来修改数据库设置。REST API使用JSON格式(http://www.json.org),它是基于Restlet(http://www.restlet.org)开发的。

默认所有REST资源都需要先使用有效的activiti用户认证后才能使用。会使用Basic HTTP认证,所以你要一直在请求的HTTP头中包含一个Authorization: Basic ...==属性,或在请求url中包含用户名和密码(比如: http://username:password@localhost...)。

建议把Basic认证与HTTPS一起使用。

可以从删除对应资源的认证,或添加额外的授权给一个认证的用户(比如,把用户加入一个组,让它可以执行URL Y)。 可以使用org.activiti.rest.common.filter.RestAuthenticator的实现,它有两个方法:

  • boolean requestRequiresAuthentication(Request request):在请求认证检查之前调用(通过头部传递合法的账号和密码)。如果方法返回true,这个方法就需要认证才能访问。如果返回false,无论请求是否认证都可以访问。如果返回false,就不会为这个方法调用isRequestAuthorized

  • boolean isRequestAuthorized(Request request):在用户已经通过activiti账号管理认证后,但是再请求实际之前调用。可以用来检查认证用户是否可以访问对应请求。如果返回true,会允许请求执行。如果返回true,请求不会执行,客户端会收到对应的错误。

自定义的RestAuthenticator应该设置到RestletServlet的org.activiti.rest.service.application.ActivitiRestServicesApplication中。 最简单的方法是创建ActivitiRestServicesApplication的子类,并在servlet-mapping中设置自定义的类名:

   <!-- Restlet adapter -->
  <servlet>
    <servlet-name>RestletServlet</servlet-name>
    <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
    <init-param>
      <!-- Application class name -->
      <param-name>org.restlet.application</param-name>
      <param-value>com.my.company.CustomActivitiRestServicesApplication</param-value>
    </init-param>
  </servlet>

使用Tomcat

根据Tomcat的默认安全配置,默认转码的前斜线(%2F%5C)都不允许使用(返回400)。 这可能对部署资源和它们的数据URL造成影响,URL可能会包含转移的前斜线。 当出现预期外的400问题,设置下面这个系统参数:-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true.

方法和返回值

Table 15.1.HTTP方法和对应操作

方法操作
GET获得一个资源或获得多个资源
POST创建一个新资源。当请求结果太复杂,无法放到GET请求的URL中,也用来查询资源。
PUT更新已有资源的属性。也用来调用现存资源的功能。
DELETE删除现存资源。

Table 15.2.HTTP方法响应代码

响应描述
200 - Ok操作成功,响应返回(GETPUT请求)。
201 - Created操作成功,实体已创建,并返回到响应体中(POST请求)。
204 - No content操作成功,实体已删除,不会返回响应体(DELETE请求)。
401 - Unauthorized操作失败。操作要求设置Authentication头部。如果请求中已经设置了头部,对应的凭证是无效的或者用户不允许执行这个操作。
403 - Forbidden禁止操作,不要重试。这不是认证和授权的问题,这是禁止操作。比如:删除一个执行中流程的任务是不允许的,无论用户或流程任务的状态。
404 - Not found操作失败。找不到请求的资源。
405 - Method not allowed操作失败。使用的资源方法不允许调用。比如:想更新(PUT)已部署的资源会返回405结果。
409 - Conflict操作失败。更新其他操作应更新的资源,会导致更新不合法。也可以表示一个结合中新创建的资源的id已经存在了。
415 - Unsupported Media Type操作失败。请求体包含了不支持的媒体类型。当请求体的JSON中包含未知的属性或值时,也会返回这个响应,一般是因为无法处理的错误格式或类型。
500 - Internal server error操作失败。执行操作时出现了预期外的异常。响应体中包含错误的细节。

media-type和HTTP响应永远都是application/json,除非需要使用二进制内容(比如:发布资源数据),会使用内容的media-type。

错误响应体

当发生错误时(包括客户端和服务端,4XX和5XX状态码),响应体会包含描述发生的错误的描述。 下面是任务不存在时出现的404状态:

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

请求参数

URL片段

url上的参数(比如http://host/actviti-rest/service/repository/deployments/{deploymentId}上的deploymentId) 都需要转义(参考URL编码或百分号编码来解决特殊字符问题)。 大多数框架都有这种内置功能,但我们也要把这个问题考虑在内。特别是对于可能包含前斜线(比如,部署资源)的情况,这就是必须的。

Rest URL查询参数

设置在URL中的查询参数(比如,http://host/activiti-rest/service/deployments?name=Deployment中的name参数) 可以使用以下类型,它们对应着以下REST-API文档:

Table 15.3.URL查询参数类型

类型格式
String纯文本参数。可以包含任何URL允许的合法的字符。对于XXXLike参数,字符串应该包含通配符%(还要通过url编码)。这可以指定模糊搜索的意图。比如'Tas%'匹配所有以'Tas'开头的值。
Integer整数参数。只能包含非小数的整数值,在-2.147.483.648与2.147.483.647之间。
Long长整形参数。只能包含非小树的长整形值,在-9.223.372.036.854.775.808与9.223.372.036.854.775.807之间。
Boolean布尔类型参数。可以是truefalse。如果使用了其他值,会返回'405 - Bad request'响应。
Date日期类型。使用ISO-8601日期格式(参考维基百科上的ISO-8601), 用于时间和日期组件(比如2013-04-03T23:45Z)。


JSON内容参数

Table 15.4.JSON参数类型

类型格式
String纯文本参数。可以包含任何URL允许的合法的字符。对于XXXLike参数,字符串应该包含通配符%(还要通过url编码)。这可以指定模糊搜索的意图。比如'Tas%'匹配所有以'Tas'开头的值。
Integer整数参数,JSON数字。只能包含非小数的整数值,在-2.147.483.648与2.147.483.647之间。
Long长整形参数,JSON数字。只能包含非小树的长整形值,在-9.223.372.036.854.775.808与9.223.372.036.854.775.807之间。
Boolean布尔类型参数,JSON布尔。可以是truefalse。如果使用了其他值,会返回'405 - Bad request'响应。
Date日期类型,JSON文本。使用ISO-8601日期格式(参考维基百科上的ISO-8601), 用于时间和日期组件(比如2013-04-03T23:45Z)。


分页与排序

分页与排序参数可以添加到URL的query-string中(比如http://host/activiti-rest/service/deployments?sort=name中的name参数)。

Table 15.5.查询JSON参数

参数默认值描述
sort根据查询实现而不同查询的名称,对于不同的查询实现,默认值也不同。
orderasc排序的方式,可以为'asc'或'desc'。
start0分页查询开始的值,默认从0开始。
size10分页查询每页显示的记录数。默认为10。


JSON查询变量格式

{
  "name" : "variableName",
  "value" : "variableValue",
  "operation" : "equals",
  "type" : "string"
}

Table 15.6.查询JSON参数

参数是否必须描述
name查询包含的变量名称。在一些查询中使用'equals'查询对应资源的所有值时,可以为空。
value查询包含的变量值,要包含给定类型的正确格式。
operation查询使用的参数,可以是以下值: equals, notEquals, equalsIgnoreCase, notEqualsIgnoreCase, lessThan, greaterThan, lessThanOrEquals, greaterThanOrEqualslike
type使用的变量的类型。如果省略,类型会根据value参数决定。所以JSON文本值都会认为是string类型,JSON布尔对应boolean,JSON数字根据数字的长度对应longinteger。在不确定时,建议使用精确的类型。下面列出了不稳定支持的其他类型。


Table 15.7.默认查询JSON类型

类型名称描述
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://...",
  "scope" : "local",
  "type" : "string"
}

Table 15.8.变量JSON属性

参数是否必须描述
name变量名称。
value变量值。写入变量时,如果没有设置value,会认为值是null
valueUrl当读取变量的类型为binaryserializable时,这个属性会指向获取原始二进制数据的URL。
scope变量的范围。如果为'local',变量会对应到请求的资源。如果为'global',变量会定义到请求资源的上级(或上级树的任何上级)。当写入变量,没有设置scope时,假设使用global
type变量类型。参考下面的表格对类型的描述。当写入变量,没有设置类型时,会根据请求的JSON属性来推断它的类型,限制为stringdoubleintegerboolean。如果不确定会用到的类型,建议还是要设置一个类型。


Table 15.9.变量类型

类型名描述
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。写入时,使用ISO-8601日期格式转换为JSON文本。
binary二进制变量,对应字节数组。value属性为null,valueUrl包含指向原始二进制流的URL。
serializable可序列化的Java对象序列化后的结果。和binary类型相同,value属性为null,valueUrl包含指向原始二进制流的URL。所有可以序列化变量(上面不包含的类型)都会使用这个类型。


可以通过自定义JSON格式来支持更多变量类型(无论是简单数值或复杂/内嵌JSON对象)。 扩展org.activiti.rest.api.RestResponseFactoryinitializeVariableConverters()方法, 你可以添加自定义的org.activiti.rest.api.service.engine.variable.RestVariableConverter类来支持POJO与对应REST数据的相互转换。实际的JSON转换是通过Jackson实现的。

部署

如果使用tomcat,请参考tomcat用法。

部署列表

GET repository/deployments

Table 15.10.URL查询参数

参数是否必须描述
nameString只返回指定名称的部署。
nameLikeString只返回名称与指定值相似的部署。
categoryString只返回指定分类的部署。
categoryNotEqualsString只返回与指定分类不同的部署。
tenantIdString只返回指定tenantId的部署。
tenantIdLikeString只返回与指定tenantId匹配的部署。
withoutTenantIdBoolean如果为 true,只返回没有设置tenantId的部署。如果为 false,忽略 withoutTenantId 参数。
sort'id'(默认),'name','deploytime'或'tenantId'排序属性,与'order'一起使用。

通用的分页和排序查询参数都可以使用。


Table 15.11.REST响应码

响应码描述
200表示请求成功。


成功响应体:

{
  "data": [
    {
      "id": "10",
      "name": "activiti-examples.bar",
      "deploymentTime": "2010-10-13T14:54:26.750+02:00",
      "category": "examples",
      "url": "http://localhost:8081/service/repository/deployments/10",
          "tenantId": null
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "id",
  "order": "asc",
  "size": 1
}

获得一个部署

GET repository/deployments/{deploymentId}

Table 15.12.获得一个部署 - URL参数

参数是否必须描述
deploymentIdString获取部署的id。


Table 15.13.获得一个部署 - 响应码

响应码描述
200表示找到了部署,并返回。
404表示找不到请求的部署。


成功响应体:

{
  "id": "10",
  "name": "activiti-examples.bar",
  "deploymentTime": "2010-10-13T14:54:26.750+02:00",
  "category": "examples",
  "url": "http://localhost:8081/service/repository/deployments/10",
  "tenantId" : null
}

创建新部署

POST repository/deployments

请求体:

请求体包含的数据类型应该是multipart/form-data。请求里应该只包含一个文件,其他额外的任务都会被忽略。 部署的名称就是文件域的名称。如果需要在一个部署中包含多个资源,把这些文件压缩成zip包,并要确认文件名是以.bar.zip结尾。

可以在请求体中传递一个额外的参数(表单域) tenantId。字段的值会用来设置部署的租户id。

Table 15.14.创建新部署 - 响应码

响应码描述
201表示部署已经创建了。
400表示请求内没有内容,或部署不支持内容的mime-type。在状态描述中包含更新信息。


成功响应体:

{
  "id": "10",
  "name": "activiti-examples.bar",
  "deploymentTime": "2010-10-13T14:54:26.750+02:00",
  "category": null,
  "url": "http://localhost:8081/service/repository/deployments/10",
  "tenantId" : "myTenant"
}

删除部署

DELETE repository/deployments/{deploymentId}

Table 15.15.删除部署 - URL参数

参数是否必须描述
deploymentIdString删除的部署id。


Table 15.16.删除部署 - 响应码

响应码描述
204表示找到了部署并已经删除。响应体为空。
404表示没有找到请求的部署。


列出部署内的资源

GET repository/deployments/{deploymentId}/resources

Table 15.17.列出部署内的资源 - URL参数

参数是否必须描述
deploymentIdString获取资源的部署id。


Table 15.18.列出部署内的资源 - 响应码

响应码描述
200表示找到了部署,并返回了资源列表。
404表示找不到请求的部署。


成功响应体:

[
  {
    "id": "diagrams/my-process.bpmn20.xml",
    "url": "http://localhost:8081/activiti-rest/service/repository/deployments/10/resources/diagrams%2Fmy-process.bpmn20.xml",
    "dataUrl": "http://localhost:8081/activiti-rest/service/repository/deployments/10/resourcedata/diagrams%2Fmy-process.bpmn20.xml",
    "mediaType": "text/xml",
    "type": "processDefinition"
  },
  {
    "id": "image.png",
    "url": "http://localhost:8081/activiti-rest/service/repository/deployments/10/resources/image.png",
    "dataUrl": "http://localhost:8081/activiti-rest/service/repository/deployments/10/resourcedata/image.png",
    "mediaType": "image/png",
    "type": "resource"
  }
]

  • mediaType:包含资源的media-type。这是使用(可插拔的)MediaTypeResolver处理的,默认已经支持了一些有限的mime-type映射。

  • type:资源类型,可能值为:

    • resource:原始资源。

    • processDefinition:包含一个或多个流程定义的资源。它会被发布器处理。

    • processImage:展示一个已发布流程定义的图形布局。

结果json中的dataUrl属性包含了用来获取二进制资源的真实URL。

获取部署资源

GET repository/deployments/{deploymentId}/resources/{resourceId}

Table 15.19.获取部署资源 - URL参数

参数是否必须描述
deploymentIdString部署ID是请求资源的一部分。
resourceIdString获取资源的ID 确保URL对资源ID进行编码的情况下,包含斜杠,例如:使用'diagrams%2Fmy-process.bpmn20.xml' 代替 'diagrams/Fmy-process.bpmn20.xml'。


Table 15.20.获取部署资源 - 响应码

响应码描述
200表示部署和资源都已经找到并且部署的资源已经成功返回。
404表示请求的部署并没有找到或者目前的部署对象并没有该资源ID。状态描述还包含一些额外信息。


成功响应体:

{
  "id": "diagrams/my-process.bpmn20.xml",
  "url": "http://localhost:8081/activiti-rest/service/repository/deployments/10/resources/diagrams%2Fmy-process.bpmn20.xml",
  "dataUrl": "http://localhost:8081/activiti-rest/service/repository/deployments/10/resourcedata/diagrams%2Fmy-process.bpmn20.xml",
  "mediaType": "text/xml",
  "type": "processDefinition"
}

  • mediaType:包含资源的media-type。这是使用(可插拔的)MediaTypeResolver处理的,默认已经支持了一些有限的mime-type映射。

  • type: 资源类型,可能的值

    • resource: 原始资源.

    • processDefinition: 包含一个或多个流程定义的资源。它会被发布器处理。

    • processImage: 展示一个已发布流程定义的图形布局。

获取部署资源的内容

GET repository/deployments/{deploymentId}/resourcedata/{resourceId}

Table 15.21.获取部署资源的内容 - URL参数

参数是否必须描述
deploymentIdString部署ID是请求资源的一部分。
resourceIdString资源ID获取数据 确保URL对资源ID进行编码的情况下,包含斜杠,例如:使用'diagrams%2Fmy-process.bpmn20.xml' 代替 'diagrams/Fmy-process.bpmn20.xml'


Table 15.22.获取部署资源的内容 - 响应码

响应码描述
200表示部署和资源都已经找到并且部署的资源已经成功返回。
404表示请求的部署并没有找到或者目前的部署对象并没有该资源ID。状态描述还包含一些额外信息。


成功响应体:

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

流程定义

流程定义列表

GET repository/process-definitions

Table 15.23.流程定义列表 - URL参数

参数是否必须描述
versioninteger只返回给定版本的流程定义。
nameString只返回给定名称的流程定义。
nameLikeString只返回与给定名称匹配的流程定义。
keyString只返回给定key的流程定义。
keyLikeString只返回与给定key匹配的流程定义。
resourceNameString只返回给定资源名称的流程定义。
resourceNameLikeString只返回与给定资源名称匹配的流程定义。
categoryString只返回给定分类的流程定义。
categoryLikeString只返回与给定分类匹配的流程定义。
categoryNotEqualsString只返回非给定分类的流程定义。
deploymentIdString只返回包含在与给定id一致的部署中的流程定义。
startableByUserString只返回给定用户可以启动的流程定义。
latestBoolean只返回最新的流程定义版本。只能与'key'或'keyLike'参数一起使用,如果使用了其他参数会返回400的响应。
suspendedBoolean如果为true,只返回挂起的流程定义。如果为false,只返回活动的(未挂起)的流程定义。
sort'name'(默认),'id','key','category','deploymentId'和'version'排序的属性,可以与'order'一起使用。

也可以使用通用的分页与排序查询参数。

   


Table 15.24.流程定义列表 - 响应码

响应码描述
200表示请求成功,流程定义已返回。
400表示传递的参数格式错误,或'latest'与'key','keyLike'之外的其他参数一起使用了。状态信息包含更多信息。


成功响应体:

{
  "data": [
    {
      "id" : "oneTaskProcess:1:4",
      "url" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
      "version" : 1,
      "key" : "oneTaskProcess",
      "category" : "Examples",
      "suspended" : false,
      "name" : "The One Task Process",
      "description" : "This is a process for testing purposes",
      "deploymentId" : "2",
      "deploymentUrl" : "http://localhost:8081/repository/deployments/2",
      "graphicalNotationDefined" : true,
      "resource" : "http://localhost:8182/repository/deployments/2/resources/testProcess.xml",
      "diagramResource" : "http://localhost:8182/repository/deployments/2/resources/testProcess.png",
      "startFormDefined" : false
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

  • graphicalNotationDefined:表示流程定义包含图形信息(BPMN DI)。

  • resource:包含实际部署的BPMN 2.0 xml。

  • diagramResource:包含流程的图形内容,如果没有图形就返回null。

获得一个流程定义

GET repository/process-definitions/{processDefinitionId}

Table 15.25.获得一个流程定义 - URL参数

参数是否必须描述
processDefinitionIdString希望获取的流程定义的id。


Table 15.26.获得一个流程定义 - 响应码

响应码描述
200表示找到了流程定义,并返回了结果。
404表示找不到请求的流程定义。


成功响应体:

{
  "id" : "oneTaskProcess:1:4",
  "url" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
  "version" : 1,
  "key" : "oneTaskProcess",
  "category" : "Examples",
  "suspended" : false,
  "name" : "The One Task Process",
  "description" : "This is a process for testing purposes",
  "deploymentId" : "2",
  "deploymentUrl" : "http://localhost:8081/repository/deployments/2",
  "graphicalNotationDefined" : true,
  "resource" : "http://localhost:8182/repository/deployments/2/resources/testProcess.xml",
  "diagramResource" : "http://localhost:8182/repository/deployments/2/resources/testProcess.png",
  "startFormDefined" : false
}

  • graphicalNotationDefined:表示流程定义包含图形信息(BPMN DI)。

  • resource:包含实际部署的BPMN 2.0 xml。

  • diagramResource:包含流程的图形内容,如果没有图形就返回null。

更新流程定义的分类

PUT repository/process-definitions/{processDefinitionId}

请求的JSON:

{
  "category" : "updatedcategory"
}

Table 15.27.更新流程定义的分类 - 响应码

响应码描述
200表示已经修改了流程的分类。
400表示请求体中没有传递分类。
404表示找不到请求的流程定义。


成功响应体:参考repository/process-definitions/{processDefinitionId}.

获得一个流程定义的资源内容

GET repository/process-definitions/{processDefinitionId}/resourcedata

Table 15.28.获得一个流程定义的资源内容 - URL参数

参数是否必须描述
processDefinitionIdString期望获得资源数据的流程定义的id。


响应:

GET repository/deployment/{deploymentId}/resourcedata/{resourceId}的响应码和响应体完全一致。

获得流程定义的BPMN模型

GET repository/process-definitions/{processDefinitionId}/model

Table 15.29.获得流程定义的BPMN模型 - URL参数

参数是否必须描述
processDefinitionIdString期望获得模型的流程定义的id。


Table 15.30.获得流程定义的BPMN模型 - 响应码

响应码描述
200表示已找到流程定义,并返回了模型。
404表示找不到请求的流程定义。


响应体: 响应体是一个转换为JSON格式的org.activiti.bpmn.model.BpmnModel,包含整个流程定义模型。

{
   "processes":[
      {
         "id":"oneTaskProcess",
         "xmlRowNumber":7,
         "xmlColumnNumber":60,
         "extensionElements":{

         },
         "name":"The One Task Process",
         "executable":true,
         "documentation":"One task process description",

         ...
    ],

    ...
}

暂停流程定义

PUT repository/process-definitions/{processDefinitionId}

请求JSON体:

{
  "action" : "suspend",
  "includeProcessInstances" : "false",
  "date" : "2013-04-15T00:42:12Z"
}

Table 15.31.暂停流程定义 - 请求的JSON参数

参数描述是否必须
action执行的动作。activatesuspend
includeProcessInstances是否把流程定义下正在运行的流程时也暂停或激活。如果忽略,就不改变流程实例的状态。
date执行暂停或激活的日期(ISO-8601格式)。如果忽略,会立即执行暂停或激活。


Table 15.32.暂停流程定义 - 响应码

响应码描述
200表示暂停流程成功。
404表示找不到请求的流程定义。
409表示请求的流程定义已经暂停了。


成功响应体: 参考 repository/process-definitions/{processDefinitionId}的响应。

激活流程定义

PUT repository/process-definitions/{processDefinitionId}

请求JSON体:

{
  "action" : "activate",
  "includeProcessInstances" : "true",
  "date" : "2013-04-15T00:42:12Z"
}

参考暂停流程定义的 JSON参数。

Table 15.33.激活流程定义 - 响应码

响应码描述
200表示激活流程成功。
404表示找不到请求的流程定义
409表示请求的流程定义已经激活了。


成功响应体: 参考 repository/process-definitions/{processDefinitionId}的响应。

获得流程定义的所有候选启动者

GET repository/process-definitions/{processDefinitionId}/identitylinks

Table 15.34.获得流程定义的所有候选启动者 - URL参数

参数是否必须描述
processDefinitionIdString期望获得IdentityLink的流程定义id。


Table 15.35.获得流程定义的所有候选启动者 - 响应码

响应码描述
200表示已找到流程定义,并返回了请求的IdentityLink。
404表示找不到请求的流程定义。


成功响应体:

[
   {
      "url":"http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4/identitylinks/groups/admin",
      "user":null,
      "group":"admin",
      "type":"candidate"
   },
   {
      "url":"http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4/identitylinks/users/kermit",
      "user":"kermit",
      "group":null,
      "type":"candidate"
   }
]

为流程定义添加一个候选启动者

POST repository/process-definitions/{processDefinitionId}/identitylinks

Table 15.36.为流程定义添加一个候选启动者 - URL参数

参数是否必填数据描述
processDefinitionIdString流程定义的id。


请求体(用户):

{
  "user" : "kermit"
}

请求体(组):

{
  "groupId" : "sales"
}

Table 15.37.为流程定义添加一个候选启动者 - 响应码

响应码描述
201表示找到了流程定义,并创建了IdentityLink。
404表示找不到请求的流程定义。


成功响应体:

{
  "url":"http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4/identitylinks/users/kermit",
  "user":"kermit",
  "group":null,
  "type":"candidate"
}

删除流程定义的候选启动者

DELETE repository/process-definitions/{processDefinitionId}/identitylinks/{family}/{identityId}

Table 15.38.删除流程定义的候选启动者 - URL参数

参数是否必填数据描述
processDefinitionIdString流程定义的id。
familyStringusersgroups,依赖IdentityLink的类型。
identityIdString需要删除的候选创建者的身份的userId 或 groupId。


Table 15.39.删除流程定义的候选启动者 - 响应码

响应码描述
204表示找到了流程定义,并删除了IdentityLink。响应体为空。
404表示找不到请求的流程定义,或者在流程定义中找不到与url匹配的IdentityLink。


成功响应体:

{
  "url":"http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4/identitylinks/users/kermit",
  "user":"kermit",
  "group":null,
  "type":"candidate"
}

获得流程定义的一个候选启动者

GET repository/process-definitions/{processDefinitionId}/identitylinks/{family}/{identityId}

Table 15.40.获得流程定义的一个候选启动者 - URL参数

参数是否必填数据描述
processDefinitionIdString流程定义的id。
familyStringusersgroups,依赖IdentityLink的类型。
identityIdString用来获得候选启动者的身份的userId 或 groupId。


Table 15.41.获得流程定义的一个候选启动者 - 响应码

响应码描述
200表示找到了流程定义,并返回了IdentityLink。
404表示找不到请求的流程定义,或者在流程定义中找不到与url匹配的IdentityLink。


成功响应体:

{
  "url":"http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4/identitylinks/users/kermit",
  "user":"kermit",
  "group":null,
  "type":"candidate"
}

模型

获得模型列表

GET repository/models

Table 15.42.获得模型列表 - URL参数

参数是否必须描述
idString指返回指定id的模型。
categoryString只返回指定分类的模型。
categoryLikeString只返回与给定分类匹配的模型。使用%作为通配符。
categoryNotEqualsString只返回非指定分类的模型。
nameString只返回指定名称的模型。
nameLikeString只返回与指定名称匹配的模型。使用%作为通配符。
keyString只返回指定key的模型。
deploymentIdString只返回包含在指定部署包中的模型。
versionInteger只返回指定版本的模型。
latestVersionBoolean如果为 true,只返回最新版本的模型。最好与key一起使用。如果为 false,就会返回所有版本。
deployedBoolean如果为 true,只返回已部署的模型。如果为 false,只返回未部署的模型(deploymentId为null)。
tenantIdString只返回指定tenantId的模型。
tenantIdLikeString只返回与指定tenantId匹配的模型。
withoutTenantIdBoolean如果为 true,只返回没有设置tenantId的模型。如果为 false,会忽略 withoutTenantId 参数。
sort'id' (默认), 'category', 'createTime', 'key', 'lastUpdateTime', 'name','version'或'tenantId'排序的字段,和'order'一起使用。

可以使用通用的 分页和排序查询参数。

   


Table 15.43.获得模型列表 - 响应码

响应码描述
200表示请求成功,并返回了模型
400表示传递的参数格式错误。状态信息中包含更多信息。


成功响应体:

{
   "data":[
      {
         "name":"Model name",
         "key":"Model key",
         "category":"Model category",
         "version":2,
         "metaInfo":"Model metainfo",
         "deploymentId":"7",
         "id":"10",
         "url":"http://localhost:8182/repository/models/10",
         "createTime":"2013-06-12T14:31:08.612+0000",
         "lastUpdateTime":"2013-06-12T14:31:08.612+0000",
         "deploymentUrl":"http://localhost:8182/repository/deployments/7",
                 "tenantId":null
      },

      ...

   ],
   "total":2,
   "start":0,
   "sort":"id",
   "order":"asc",
   "size":2
}

获得一个模型

GET repository/models/{modelId}

Table 15.44.获得一个模型 - URL参数

参数是否必须描述
modelIdString希望获得的模型id。


Table 15.45.获得一个模型 - 响应码

响应码描述
200表示找到了模型并成功返回了。
404表示找不到请求的模型。


成功响应体:

{
   "id":"5",
   "url":"http://localhost:8182/repository/models/5",
   "name":"Model name",
   "key":"Model key",
   "category":"Model category",
   "version":2,
   "metaInfo":"Model metainfo",
   "deploymentId":"2",
   "deploymentUrl":"http://localhost:8182/repository/deployments/2",
   "createTime":"2013-06-12T12:31:19.861+0000",
   "lastUpdateTime":"2013-06-12T12:31:19.861+0000",
   "tenantId":null
}

更新模型

PUT repository/models/{modelId}

请求体:

{
   "name":"Model name",
   "key":"Model key",
   "category":"Model category",
   "version":2,
   "metaInfo":"Model metainfo",
   "deploymentId":"2",
   "tenantId":"updatedTenant"
}

所有请求参数都是可选的。比如,你可以只在请求体的JSON对象中包含'name'属性,只更新模型的名称,这样其他的字段都不会受到影响。如果显示包含了一个属性,并设置为null,模型值会被更新为null。比如:{"metaInfo" : null}会清空模型的metaInfo。

Table 15.46.更新模型 - 响应码

响应码描述
200表示找到了模型,并成功更新。
404表示找不到请求的模型。


成功响应体:

{
   "id":"5",
   "url":"http://localhost:8182/repository/models/5",
   "name":"Model name",
   "key":"Model key",
   "category":"Model category",
   "version":2,
   "metaInfo":"Model metainfo",
   "deploymentId":"2",
   "deploymentUrl":"http://localhost:8182/repository/deployments/2",
   "createTime":"2013-06-12T12:31:19.861+0000",
   "lastUpdateTime":"2013-06-12T12:31:19.861+0000",
   "tenantId":""updatedTenant"
}

新建模型

POST repository/models

请求体:

{
   "name":"Model name",
   "key":"Model key",
   "category":"Model category",
   "version":1,
   "metaInfo":"Model metainfo",
   "deploymentId":"2",
   "tenantId":"tenant"
}

All request values are optional. For example, you can only include the 'name' attribute in the request body JSON-object, only setting the name of the model, leaving all other fields null.

Table 15.47.新建模型 - 响应码

响应码描述
201表示成功创建了模型。


成功响应体:

{
   "id":"5",
   "url":"http://localhost:8182/repository/models/5",
   "name":"Model name",
   "key":"Model key",
   "category":"Model category",
   "version":1,
   "metaInfo":"Model metainfo",
   "deploymentId":"2",
   "deploymentUrl":"http://localhost:8182/repository/deployments/2",
   "createTime":"2013-06-12T12:31:19.861+0000",
   "lastUpdateTime":"2013-06-12T12:31:19.861+0000",
   "tenantId":"tenant"
}

删除模型

DELETE repository/models/{modelId}

Table 15.48.删除模型 - URL参数

参数是否必须描述
modelIdString希望删除的模型id。


Table 15.49.删除模型 - 响应码

响应码描述
204表示找到了模型并成功删除。响应体为空。
404表示找不到请求的模型。


获得模型的可编译源码

GET repository/models/{modelId}/source

Table 15.50.获得模型的可编译源码 - URL参数

参数是否必须描述
modelIdString模型id。


Table 15.51.获得模型的可编译源码 - 响应码

响应码描述
200表示找到了模型并返回了源码。
404表示找不到请求的模型。


成功响应体: 响应体包含了模型的原始可编译源码。无论源码的内容是什么,响应的content-type都设置为application/octet-stream

设置模型的可编辑源码

PUT repository/models/{modelId}/source

Table 15.52.设置模型的可编辑源码 - URL参数

参数是否必填数据描述
modelIdString模型的id。


请求体: 请求应该是multipart/form-data类型。应该只有一个文件区域,包含源码的二进制内容。

Table 15.53.设置模型的可编辑源码 - 响应码

响应码描述
200表示找到了模型并更新了源码。
404表示找不到请求的模型。


成功响应体: 响应体包含了模型的原始可编译源码。无论源码的内容是什么,响应的content-type都设置为application/octet-stream

获得模型的附加可编辑源码

GET repository/models/{modelId}/source-extra

Table 15.54.获得模型的附加可编辑源码 - URL参数

参数是否必须描述
modelIdString模型id


Table 15.55.获得模型的附加可编辑源码 - 响应码

响应码描述
200表示找到了模型并返回了源码。
404表示找不到请求的模型。


成功响应体: 响应体包含了模型的原始可编译源码。无论附加源码的内容是什么,响应的content-type都设置为application/octet-stream

设置模型的附加可编辑源码

PUT repository/models/{modelId}/source-extra

Table 15.56.设置模型的附加可编辑源码 - URL参数

参数是否必填数据描述
modelIdString模型id


请求体: 请求应该是multipart/form-data类型。应该只有一个文件区域,包含源码的二进制内容

Table 15.57.设置模型的附加可编辑源码 - 响应码

响应码描述
200表示找到了模型并更新了附加源码。
404表示找不到请求的模型。


成功响应体: 响应体包含了模型的原始可编译源码。无论附加源码的内容是什么,响应的content-type都设置为application/octet-stream

流程实例

获得流程实例

GET runtime/process-instances/{processInstanceId}

Table 15.58.获得流程实例 - URL参数

参数是否必须描述
processInstanceIdString流程实例id


Table 15.59.获得流程实例 - 响应码

响应码描述
200表示找到了流程实例并成功返回。
404表示找不到请求的流程实例


成功响应体:

{
   "id":"7",
   "url":"http://localhost:8182/runtime/process-instances/7",
   "businessKey":"myBusinessKey",
   "suspended":false,
   "processDefinitionUrl":"http://localhost:8182/repository/process-definitions/processOne%3A1%3A4",
   "activityId":"processTask",
   "tenantId": null
}

删除流程实例

DELETE runtime/process-instances/{processInstanceId}

Table 15.60.删除流程实例 - URL参数

参数是否必须描述
processInstanceIdString希望删除的流程实例id


Table 15.61.删除流程实例 - 响应码

响应码描述
204表示找到了流程实例并已删除。响应内容为空。
404表示找不到请求的流程实例


激活或挂起流程实例

PUT runtime/process-instances/{processInstanceId}

Table 15.62.激活或挂起流程实例 - URL参数

参数是否必须描述
processInstanceIdString希望激活或挂起的流程实例id


请求响应体(挂起):

{
   "action":"suspend"
}

请求响应体(激活):

{
   "action":"activate"
}

Table 15.63.激活或挂起流程实例 - 响应码

响应码描述
200表示找到了流程实例并执行了对应操作。
400表示提供的操作不合法。
404表示找不到请求的流程实例
409表示无法执行请求的流程实例操作,因为流程实例已经激活或挂起了。


启动流程实例

POST runtime/process-instances

请求体(使用流程定义id启动):

{
   "processDefinitionId":"oneTaskProcess:1:158",
   "businessKey":"myBusinessKey",
   "variables": [
      {
        "name":"myVar",
        "value":"This is a variable",
      },

      ...
   ]
}

请求体(使用流程定义key启动):

{
   "processDefinitionKey":"oneTaskProcess",
   "businessKey":"myBusinessKey",
   "tenantId": "tenant1",
   "variables": [
      {
        "name":"myVar",
        "value":"This is a variable",
      },

      ...
   ]
}

请求体(使用message启动):

{
   "message":"newOrderMessage",
   "businessKey":"myBusinessKey",
   "tenantId": "tenant1",
   "variables": [
      {
        "name":"myVar",
        "value":"This is a variable",
      },

      ...
   ]
}

请求体中只能使用processDefinitionIdprocessDefinitionKeymessage三者之一。参数businessKeyvariablestenantId都是可选的。 可以在REST变量章节了解更多关于变量格式的信息。注意忽略变量作用域,流程变量总是local

Table 15.64.启动流程实例 - 响应码

响应码描述
201表示成功启动了流程实例。
400表示要么找到不到流程定义(基于id或key),要么指定的message不会启动流程,要么传递了非法的变量。状态描述中包含了错误相关的额外信息。


成功响应体:

{
   "id":"7",
   "url":"http://localhost:8182/runtime/process-instances/7",
   "businessKey":"myBusinessKey",
   "suspended":false,
   "processDefinitionUrl":"http://localhost:8182/repository/process-definitions/processOne%3A1%3A4",
   "activityId":"processTask",
   "tenantId" : null
}

显示流程实例列表

GET runtime/process-instances

Table 15.65.显示流程实例列表 - URL参数

参数是否必须描述
idString只返回指定id的流程实例。
processDefinitionKeyString只返回指定流程定义key的流程实例。
processDefinitionIdString只返回指定流程定义id的流程实例。
businessKeyString只返回指定businessKey的流程实例。
involvedUserString只返回指定用户参与过的流程实例。
suspendedBoolean如果为 true,只返回挂起的流程实例。如果为 false,只返回未挂起(激活)的流程实例。
superProcessInstanceIdString只返回指定上级流程实例id的流程实例(对应call-activity)。
subProcessInstanceIdString只返回指定子流程id的流程实例(对方call-activity)。
excludeSubprocessesBoolean只返回非子流程的流程实例。
includeProcessVariablesBoolean表示结果中包含流程变量。
tenantIdString只返回指定tenantId的流程实例。
tenantIdLikeString只返回与指定tenantId匹配的流程实例。
withoutTenantIdBoolean如果为 true,只返回未设置tenantId的流程实例。如果为 false,会忽略 withoutTenantId 参数。
sortString排序字段,应该为id(默认),processDefinitionIdtenantIdprocessDefinitionKey三者之一。

可以使用通用的分页和排序查询参数。

   


Table 15.66.显示流程实例列表 - 响应码

响应码描述
200表示请求成功,并返回了流程实例。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
   "data":[
      {
         "id":"7",
         "url":"http://localhost:8182/runtime/process-instances/7",
         "businessKey":"myBusinessKey",
         "suspended":false,
         "processDefinitionUrl":"http://localhost:8182/repository/process-definitions/processOne%3A1%3A4",
         "activityId":"processTask",
                 "tenantId" : null
      },

      ...
   ],
   "total":2,
   "start":0,
   "sort":"id",
   "order":"asc",
   "size":2
}

查询流程实例

POST query/process-instances

请求体:

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

请求体可以包含所有用于显示流程实例列表中的查询参数。除此之外,查询条件中也可以使用变量列表,格式在此。

可以使用通用的 分页和排序查询参数。

Table 15.67.查询流程实例 - 响应码

响应码描述
200表示请求成功,并返回了流程实例。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
   "data":[
      {
         "id":"7",
         "url":"http://localhost:8182/runtime/process-instances/7",
         "businessKey":"myBusinessKey",
         "suspended":false,
         "processDefinitionUrl":"http://localhost:8182/repository/process-definitions/processOne%3A1%3A4",
         "activityId":"processTask",
                 "tenantId" : null
      },

      ...
   ],
   "total":2,
   "start":0,
   "sort":"id",
   "order":"asc",
   "size":2
}

获得流程实例的流程图

GET runtime/process-instances/{processInstanceId}

Table 15.68.获得流程实例的流程图 - URL参数

参数是否必须描述
processInstanceIdString希望获得流程图的流程实例id。


Table 15.69.获得流程实例的流程图 - 响应码

响应码描述
200表示找到了流程实例,并返回了流程图。
400表示找不到请求的流程实例,流程不包含挺信息(BPMN:DI),所以没有创建图片。
404表示找不到请求的流程实例


成功响应体:

{
   "id":"7",
   "url":"http://localhost:8182/runtime/process-instances/7",
   "businessKey":"myBusinessKey",
   "suspended":false,
   "processDefinitionUrl":"http://localhost:8182/repository/process-definitions/processOne%3A1%3A4",
   "activityId":"processTask"
}

获得流程实例的参与者

GET runtime/process-instances/{processInstanceId}/identitylinks

Table 15.70.获得流程实例的参与者 - URL参数

参数是否必须描述
processInstanceIdString关联的流程实例id。


Table 15.71.获得流程实例的参与者 - 响应码

响应码描述
200表示找到了流程实例,并返回了IdentityLink。
404表示找不到请求的流程实例


成功响应体:

[
   {
      "url":"http://localhost:8182/runtime/process-instances/5/identitylinks/users/john/customType",
      "user":"john",
      "group":null,
      "type":"customType"
   },
   {
      "url":"http://localhost:8182/runtime/process-instances/5/identitylinks/users/paul/candidate",
      "user":"paul",
      "group":null,
      "type":"candidate"
   }
]

注意groupId总是null,因为只有用户才能实际参与到流程实例中。

为流程实例添加一个参与者

POST runtime/process-instances/{processInstanceId}/identitylinks

Table 15.72.为流程实例添加一个参与者 - URL参数

参数是否必须描述
processInstanceIdString关联的流程实例id。


请求体:

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

userIdtype 都是必填项。

Table 15.73.为流程实例添加一个参与者 - 响应码

响应码描述
201表示找到了流程实例,并创建了关联。
400表示请求体没有包含userId或type。
404表示找不到请求的流程实例


成功响应体:

{
   "url":"http://localhost:8182/runtime/process-instances/5/identitylinks/users/john/customType",
   "user":"john",
   "group":null,
   "type":"customType"
}

注意groupId总是null,因为只有用户才能实际参与到流程实例中。

删除一个流程实例的参与者

DELETE runtime/process-instances/{processInstanceId}/identitylinks/users/{userId}/{type}

Table 15.74.删除一个流程实例的参与者 - URL参数

参数是否必须描述
processInstanceIdString流程实例id
userIdString要删除关联的用户id
typeString删除的关联类型


Table 15.75.删除一个流程实例的参与者 - 响应码

响应码描述
204表示找到了流程实例,并删除了关联。响应体为空。
404表示找不到请求的流程实例,或找不到期望删除的关联。响应状态包含了错误的详细信息。


成功响应体:

{
   "url":"http://localhost:8182/runtime/process-instances/5/identitylinks/users/john/customType",
   "user":"john",
   "group":null,
   "type":"customType"
}

注意groupId总是null,因为只有用户才能实际参与到流程实例中。

列出流程实例的变量

GET runtime/process-instances/{processInstanceId}/variables

Table 15.76.列出流程实例的变量 - URL参数

参数是否必须描述
processInstanceIdString变量对应的流程实例id


Table 15.77.列出流程实例的变量 - 响应码

响应码描述
200表示找到了流程实例,并返回了变量。
404表示找不到请求的流程实例


成功响应体:

[
   {
      "name":"intProcVar",
      "type":"integer",
      "value":123,
      "scope":"local"
   },
   {
      "name":"byteArrayProcVar",
      "type":"binary",
      "value":null,
      "valueUrl":"http://localhost:8182/runtime/process-instances/5/variables/byteArrayProcVar/data",
      "scope":"local"
   },

   ...
]

当变量为二进制或序列化类型时,valueUrl给出了获得原始数据的URL。如果是普通变量,变量值就会直接包含在响应中。 注意只会返回local作用域的变量,因为流程实例变量没有global作用域。

获得流程实例的一个变量

GET runtime/process-instances/{processInstanceId}/variables/{variableName}

Table 15.78.获得流程实例的一个变量 - URL参数

参数是否必须描述
processInstanceIdString变量对应的流程实例id
variableNameString获取变量的名称


Table 15.79.获得流程实例的一个变量 - 响应码

响应码描述
200表示找到了流程实例和变量,并返回了变量。
400表示请求体不完全,或包含非法值。状态描述包含对应错误的详细信息。
404表示找不到请求的流程实例,或流程实例中不包含指定名称的变量。状态描述中包含对应错误的详细信息。


成功响应体:

   {
      "name":"intProcVar",
      "type":"integer",
      "value":123,
      "scope":"local"
   }

当变量为二进制或序列化类型时,valueUrl给出了获得原始数据的URL。如果是普通变量,变量值就会直接包含在响应中。 注意只会返回local作用域的变量,因为流程实例变量没有global作用域。

创建(或更新)流程实例变量

POST runtime/process-instances/{processInstanceId}/variables

PUT runtime/process-instances/{processInstanceId}/variables

使用POST时,会创建所有传递的变量。如果流程实例中已经存在了其中一个变量,就会返回一个错误(409 - CONFLICT)。使用PUT时, 流程实例中不存在的变量会被创建,已存在的变量会被更新,不会有任何错误。

Table 15.80.创建(或更新)流程实例变量 - URL参数

参数是否必须描述
processInstanceIdString变量对应的流程实例id


请求体:

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

   ...
]

请求体的数组中可以包含任意多个变量。关于变量格式的更多信息可以参考REST变量章节。注意此处忽略作用域,流程实例只能设置local作用域。

Table 15.81.创建(或更新)流程实例变量 - 响应码

响应码描述
201表示找到了流程实例,并创建了变量。
400表示请求体不完整,或包含非法值。状态描述包含对应错误的详细信息。
404表示找不到请求的流程实例
409表示找到了流程实例,但是已经存在一个相同名称的变量(只在使用POST方法时抛出)。可以使用更新方法替代。


成功响应体:

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

   ...

]

更新一个流程实例变量

PUT runtime/process-instances/{processInstanceId}/variables/{variableName}

Table 15.82.更新一个流程实例变量 - URL参数

参数是否必须描述
processInstanceIdString变量对应的流程实例id
variableNameString希望获得的变量名称


请求体:

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

请求体的数组中可以包含任意多个变量。关于变量格式的更多信息可以参考REST变量章节。注意此处忽略作用域,流程实例只能设置local作用域。

Table 15.83.更新一个流程实例变量 - 响应码

响应码描述
200表示找到了流程实例和变量,并更新了变量。
404表示找不到请求的流程实例,或找不到给定名称的流程实例变量。状态描述包含对应错误的详细信息。


成功响应体:

   {
      "name":"intProcVar",
      "type":"integer",
      "value":123,
      "scope":"local"
   }

当变量为二进制或序列化类型时,valueUrl给出了获得原始数据的URL。如果是普通变量,变量值就会直接包含在响应中。 注意只会返回local作用域的变量,因为流程实例变量没有global作用域。

创建一个新的二进制流程变量

POST runtime/process-instances/{processInstanceId}/variables

Table 15.84.创建一个新的二进制流程变量 - URL参数

参数是否必须描述
processInstanceIdString创建新变量对应的流程实例id


请求体: 请求应该是multipart/form-data类型。应该只有一个文件区域,包含源码的二进制内容。除此之外,需要提供以下表单域:

  • name:必须的变量名称。

  • type:创建的变量类型。如果忽略,会假设使用binary,请求的二进制数据会当做二进制数组保存起来。

成功响应体:

{
  "name" : "binaryVariable",
  "scope" : "local",
  "type" : "binary",
  "value" : null,
  "valueUrl" : "http://.../runtime/process-instances/123/variables/binaryVariable/data"
}

Table 15.85.创建一个新的二进制流程变量 - 响应码

响应码描述
201表示成功创建了变量,并返回了结果
400表示没有提供希望创建的变量名称。状态消息包含详细信息。
404表示找不到请求的流程实例
409表示流程实例中已经包含了给定名称的变量。可以使用PUT方法来更新变量。
415表示序列化数据包含的对象的类并不在运行Activiti引擎的JVM中,所以无法反序列化。


更新一个二进制的流程实例变量

PUT runtime/process-instances/{processInstanceId}/variables

Table 15.86.更新一个二进制的流程实例变量 - URL参数

参数是否必须描述
processInstanceIdString创建新变量对应的流程实例id


请求体: 请求应该是multipart/form-data类型。应该只有一个文件区域,包含源码的二进制内容。除此之外,需要提供以下表单域:

  • name:必须的变量名称。

  • type:创建的变量类型。如果忽略,会假设使用binary,请求的二进制数据会当做二进制数组保存起来。

成功响应体:

{
  "name" : "binaryVariable",
  "scope" : "local",
  "type" : "binary",
  "value" : null,
  "valueUrl" : "http://.../runtime/process-instances/123/variables/binaryVariable/data"
}

Table 15.87.更新一个二进制的流程实例变量 - 响应码

响应码描述
200表示成功更新了变量,并返回了结果。
400表示未提供希望更新的变量名称。状态消息包含了详细信息。
404表示找不到请求的流程实例id,或找不到指定名称的流程实例变量。
415表示序列化数据包含的对象的类并不在运行Activiti引擎的JVM中,所以无法反序列化。


分支

获取一个分支

GET runtime/executions/{executionId}

Table 15.88.获取一个分支 - URL参数

参数是否必须描述
executionIdString获取分支的id


Table 15.89.获取一个分支 - 响应码

响应码描述
200表示找到了分支,并成功返回。
404表示找不到分支


成功响应体:

{
   "id":"5",
   "url":"http://localhost:8182/runtime/executions/5",
   "parentId":null,
   "parentUrl":null,
   "processInstanceId":"5",
   "processInstanceUrl":"http://localhost:8182/runtime/process-instances/5",
   "suspended":false,
   "activityId":null,
   "tenantId": null
}

对分支执行操作

PUT runtime/executions/{executionId}

Table 15.90.对分支执行操作 - URL参数

参数是否必须描述
executionIdString希望执行操作的分支id


请求体(继续执行分支):

{
  "action":"signal"
}

请求体(分支接收了信号事件):

{
  "action":"signalEventReceived",
  "signalName":"mySignal"
  "variables": [ ... ]
}

提醒分支接收了一个信号事件,要使用一个signalName参数。还可以传递variables参数,它会在执行操作之前设置到分支中。

请求体(分支接收了消息事件):

{
  "action":"messageEventReceived",
  "messageName":"myMessage"
  "variables": [ ... ]
}

提醒分支接收了一个消息事件,要使用一个messageName参数。还可以传递variables参数,它会在执行操作之前设置到分支中。

Table 15.91.对分支执行操作 - 响应码

响应码描述
200表示找到了分支,并执行了操作。
204表示找到了分支,执行了操作,并且操作导致分支结束了。
400表示请求的操作不合法,请求中缺少必须的参数,或传递了非法的变量。状态描述中包含了错误相关的详细信息。
404表示找不到分支


成功响应体(当操作没有导致分支结束的情况):

{
   "id":"5",
   "url":"http://localhost:8182/runtime/executions/5",
   "parentId":null,
   "parentUrl":null,
   "processInstanceId":"5",
   "processInstanceUrl":"http://localhost:8182/runtime/process-instances/5",
   "suspended":false,
   "activityId":null,
   "tenantId" : null
}

获得一个分支的所有活动节点

GET runtime/executions/{executionId}/activities

返回分支以及子分支当前所有活动的节点(递归所有下级)。

Table 15.92.获得一个分支的所有活动节点 - URL参数

参数是否必须描述
executionIdString获取节点对应的分支id。


Table 15.93.获得一个分支的所有活动节点 - 响应码

响应码描述
200表示找到了分支,并返回了节点。
404表示找不到分支


成功响应体:

[
  "userTaskForManager",
  "receiveTask"
]

获取分支列表

GET repository/executions

Table 15.94.获取分支列表 - URL参数

参数是否必须描述
idString只返回指定id的分支。
processDefinitionKeyString只返回指定流程定义key的分支。
processDefinitionIdString只返回指定流程定义id的分支。
processInstanceIdString只返回作为指定流程实例id一部分的分支。
messageEventSubscriptionNameString只返回订阅了指定名称消息的分支。
signalEventSubscriptionNameString只返回订阅了指定名称信号的分支。
parentIdString只返回指定分支直接下级的分支。
tenantIdString只返回指定tenantId的分支。
tenantIdLikeString只返回与指定tenantId匹配的分支。
withoutTenantIdBoolean如果为 true,只返回未设置tenantId的分支。如果为 false,会忽略 withoutTenantId 参数。
sortString排序字段,应该和processInstanceId(默认), processDefinitionIdprocessDefinitionKeytenantId之一一起使用。

可以使用通用的 分页和排序查询参数 。

   


Table 15.95.获取分支列表 - 响应码

响应码描述
200表示请求成功,并返回了分支。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
   "data":[
      {
         "id":"5",
         "url":"http://localhost:8182/runtime/executions/5",
         "parentId":null,
         "parentUrl":null,
         "processInstanceId":"5",
         "processInstanceUrl":"http://localhost:8182/runtime/process-instances/5",
         "suspended":false,
         "activityId":null,
                 "tenantId":null
      },
      {
         "id":"7",
         "url":"http://localhost:8182/runtime/executions/7",
         "parentId":"5",
         "parentUrl":"http://localhost:8182/runtime/executions/5",
         "processInstanceId":"5",
         "processInstanceUrl":"http://localhost:8182/runtime/process-instances/5",
         "suspended":false,
         "activityId":"processTask",
                 "tenantId":null
      }
   ],
   "total":2,
   "start":0,
   "sort":"processInstanceId",
   "order":"asc",
   "size":2
}

查询分支

POST query/executions

请求体:

{
  "processDefinitionKey":"oneTaskProcess",
  "variables":
  [
    {
        "name" : "myVariable",
        "value" : 1234,
        "operation" : "equals",
        "type" : "long"
    },
    ...
  ],
  "processInstanceVariables":
  [
    {
        "name" : "processVariable",
        "value" : "some string",
        "operation" : "equals",
        "type" : "string"
    },
    ...
  ],
  ...
}

请求体可以包含在获取分支列表中可以使用的查询条件。除此之外,也可以在查询中提供variablesprocessInstanceVariables列表,关于变量的格式可以参考此处。

可以使用通用的 分页和排序查询参数 。

Table 15.96.查询分支 - 响应码

响应码描述
200表示请求成功,并返回了分支。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
   "data":[
      {
         "id":"5",
         "url":"http://localhost:8182/runtime/executions/5",
         "parentId":null,
         "parentUrl":null,
         "processInstanceId":"5",
         "processInstanceUrl":"http://localhost:8182/runtime/process-instances/5",
         "suspended":false,
         "activityId":null,
                 "tenantId":null
      },
      {
         "id":"7",
         "url":"http://localhost:8182/runtime/executions/7",
         "parentId":"5",
         "parentUrl":"http://localhost:8182/runtime/executions/5",
         "processInstanceId":"5",
         "processInstanceUrl":"http://localhost:8182/runtime/process-instances/5",
         "suspended":false,
         "activityId":"processTask",
                 "tenantId":null
      }
   ],
   "total":2,
   "start":0,
   "sort":"processInstanceId",
   "order":"asc",
   "size":2
}

获取分支的变量列表

GET runtime/executions/{executionId}/variables?scope={scope}

Table 15.97.获取分支的变量列表 - URL参数

参数是否必须描述
executionIdString变量对应的分支id。
scopeStringlocalglobal。如果忽略,会返回local和global作用域下的所有变量。


Table 15.98.获取分支的变量列表 - 响应码

响应码描述
200表示找到了分支,并返回了变量。
404表示找不到请求的分支。


成功响应体:

[
   {
      "name":"intProcVar",
      "type":"integer",
      "value":123,
      "scope":"global"
   },
   {
      "name":"byteArrayProcVar",
      "type":"binary",
      "value":null,
      "valueUrl":"http://localhost:8182/runtime/process-instances/5/variables/byteArrayProcVar/data",
      "scope":"local"
   },

   ...
]

当变量为二进制或序列化类型时,valueUrl给出了获得原始数据的URL。如果是普通变量,变量值就会直接包含在响应中。

获得分支的一个变量

GET runtime/executions/{executionId}/variables/{variableName}?scope={scope}

Table 15.99.获得分支的一个变量 - URL参数

参数是否必须描述
executionIdString变量对应的分支id
variableNameString获取的变量名称。
scopeStringlocalglobal。如果忽略,返回local变量(如果存在)。如果不存在局部变量,返回global变量(如果存在)。


Table 15.100.获得分支的一个变量 - 响应码

响应码描述
200表示找到了分支和变量,并返回了变量。
400表示请求体不完全,或包含非法数值。状态描述中包含了错误相关的详细信息。
404表示找不到请求的分支,或分支在请求作用域中不包含指定名称的变量(如果忽略scope参数,既不存在local变量也不存在global变量)。状态描述中包含了错误相关的详细信息。


成功响应体:

   {
      "name":"intProcVar",
      "type":"integer",
      "value":123,
      "scope":"local"
   }

当变量为二进制或序列化类型时,valueUrl给出了获得原始数据的URL。如果是普通变量,变量值就会直接包含在响应中。

新建(或更新)分支变量

POST runtime/executions/{executionId}/variables

PUT runtime/executions/{executionId}/variables

使用POST时,会创建所有传递的变量。如果流程实例中已经存在了其中一个变量,就会返回一个错误(409 - CONFLICT)。使用PUT时, 流程实例中不存在的变量会被创建,已存在的变量会被更新,不会有任何错误。

Table 15.101.新建(或更新)分支变量 - URL参数

参数是否必须描述
executionIdString变量对应的分支id


请求体:

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

   ...
]

注意你只能提供作用域相同的变量。如果请求体数组中包含了不同作用域的变量,请求会返回一个错误(400 - BAD REQUEST)。请求体数据中可以传递任意个数的变量。关于变量格式的详细信息可以参考REST变量章节。注意,如果忽略了作用域,只有local作用域的比那两可以设置到流程实例中。

Table 15.102.新建(或更新)分支变量 - 响应码

响应码描述
201表示找到了分支,并成功创建了变量。
400表示请求体不完全或包含了非法数据。状态描述中包含了错误相关的详细信息。
404表示找不到请求的分支。
409表示找到了流程实例,但是已经存在一个相同名称的变量(只在使用POST方法时抛出)。可以使用更新方法替代。


成功响应体:

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

   ...

]

更新分支变量

PUT runtime/executions/{executionId}/variables/{variableName}

Table 15.103.更新分支变量 - URL参数

参数是否必须描述
executionIdString希望更新的变量对应的分支id。
variableNameString希望更新的变量名称。


请求体:

 {
    "name":"intProcVar"
    "type":"integer"
    "value":123,
    "scope":"global"
 }

关于变量格式的详细信息可以参考REST变量章节。

Table 15.104.更新分支变量 - 响应码

响应码描述
200表示找到了分支和变量,并成功更新了变量。
404表示找不到请求的分支,或分支不包含指定名称的变量。状态描述中包含了错误相关的详细信息。


成功响应体:

   {
      "name":"intProcVar",
      "type":"integer",
      "value":123,
      "scope":"global"
   }

当变量为二进制或序列化类型时,valueUrl给出了获得原始数据的URL。如果是普通变量,变量值就会直接包含在响应中。

创建一个二进制变量

POST runtime/executions/{executionId}/variables

Table 15.105.创建一个二进制变量 - URL参数

参数是否必须描述
executionIdString希望创建的新变量对应的分支id。


请求体: 请求应该是multipart/form-data类型。应该只有一个文件区域,包含源码的二进制内容。除此之外,需要提供以下表单域:

  • name:必须的变量名称。

  • type:创建的变量类型。如果忽略,会假设使用binary,请求的二进制数据会当做二进制数组保存起来。

成功响应体:

{
  "name" : "binaryVariable",
  "scope" : "local",
  "type" : "binary",
  "value" : null,
  "valueUrl" : "http://.../runtime/executions/123/variables/binaryVariable/data"
}

Table 15.106.创建一个二进制变量 - 响应码

响应码描述
201表示成功创建了变量,并返回了结果。
400表示没有提供希望创建的变量名称。状态信息包含了详细信息。
404表示找不到请求的分支。
409表示分支已经拥有了一个与指定名称相关的变量。使用PUT方法来代替更新分支变量。
415表示序列化数据包含的对象的类并不在运行Activiti引擎的JVM中,所以无法反序列化。


更新已经已存在的二进制分支变量

PUT runtime/executions/{executionId}/variables/{variableName}

Table 15.107.更新已经已存在的二进制分支变量 - URL参数

参数是否必须描述
executionIdString希望更新的变量对应的分支id。
variableNameString希望更新的变量名称。


请求体: 请求应该是multipart/form-data类型。应该只有一个文件区域,包含源码的二进制内容。除此之外,需要提供以下表单域:

  • name:必须的变量名称。

  • type:创建的变量类型。如果忽略,会假设使用binary,请求的二进制数据会当做二进制数组保存起来。

  • scope:创建的变量作用于。如果忽略,假设是local

成功响应体:

{
  "name" : "binaryVariable",
  "scope" : "local",
  "type" : "binary",
  "value" : null,
  "valueUrl" : "http://.../runtime/executions/123/variables/binaryVariable/data"
}

Table 15.108.更新已经已存在的二进制分支变量 - 响应码

响应码描述
200表示变量已成功工薪,并返回了结果。
400表示没有提供希望更新的变量名称。状态信息包含了详细信息。
404表示没有找到分支,或分支不包含指定名称的变量。
415表示序列化数据包含的对象的类并不在运行Activiti引擎的JVM中,所以无法反序列化。


任务

获取任务

GET runtime/tasks/{taskId}

Table 15.109.获取任务 - URL参数

参数是否必须描述
taskIdString希望获得的任务id。


Table 15.110.获取任务 - 响应码

响应码描述
200表示找到了任务并返回。
404表示找不到任务。


成功响应体:

{
  "assignee" : "kermit",
  "createTime" : "2013-04-17T10:17:43.902+0000",
  "delegationState" : "pending",
  "description" : "Task description",
  "dueDate" : "2013-04-17T10:17:43.902+0000",
  "execution" : "http://localhost:8182/runtime/executions/5",
  "id" : "8",
  "name" : "My task",
  "owner" : "owner",
  "parentTask" : "http://localhost:8182/runtime/tasks/9",
  "priority" : 50,
  "processDefinition" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
  "processInstance" : "http://localhost:8182/runtime/process-instances/5",
  "suspended" : false,
  "taskDefinitionKey" : "theTask",
  "url" : "http://localhost:8182/runtime/tasks/8",
  "tenantId" : null
}

  • delegationState:任务的代理状态。可以为null"pending""resolved"

任务列表

GET runtime/tasks

Table 15.111.任务列表 - URL参数

参数是否必须描述
nameString只返回指定的名称。
nameLikeString只返回与指定名称匹配的任务。
descriptionString只返回指定描述的任务。
priorityInteger只返回指定优先级的任务。
minimumPriorityInteger只返回比指定优先级大的任务。
maximumPriorityInteger只返回比指定优先级小的任务。
assigneeString只返回分配给指定用户的任务。
assigneeLikeString只返回负责人与指定值匹配的任务。
ownerString只返回原拥有人为指定用户的任务。
ownerLikeString只返回原拥有人与指定值匹配的任务。
unassignedBoolean只返回没有分配给任何人的任务。如果传递false,这个值就会被忽略。
delegationStateString只返回指定代理状态的任务。可选值为pendingresolved
candidateUserString只返回可以被指定用户领取的任务。这包含将用户设置为直接候选人和用户作为候选群组一员的情况。
candidateGroupString只返回可以被指定群组中用户领取的任务。
involvedUserString只返回指定用户参与过的任务。
taskDefinitionKeyString只返回指定任务定义id的任务。
taskDefinitionKeyLikeString只返回任务定义id与指定值匹配的任务。
processInstanceIdString只返回作为指定id的流程实例的一部分的任务。
processInstanceBusinessKeyString只返回作为指定key的流程实例的一部分的任务。
processInstanceBusinessKeyLikeString只返回业务key与指定值匹配的流程实例的一部分的任务。
processDefinitionKeyString只返回作为指定流程定义key的流程实例的一部分的任务。
processDefinitionKeyLikeString只返回指定流程定义key与指定值匹配的流程实例的一部分的任务。
processDefinitionNameString只返回作为指定流程定义名称的流程实例的一部分的任务。
processDefinitionNameLikeString只返回流程定义名称与指定值匹配的流程实例的一部分的任务。
executionIdString只返回作为指定id分支的一部分的任务。
createdOnISO Date只返回指定创建时间的任务。
createdBeforeISO Date只返回在指定时间之前创建的任务。
createdAfterISO Date只返回在指定时间之后创建的任务。
dueOnISO Date只返回指定持续时间的任务。
dueBeforeISO Date只返回持续时间在指定时间之前的任务。
dueAfterISO Date只返回持续时间在指定时间之后的任务。
withoutDueDateboolean只返回没有设置持续时间的任务。如果值为false就会忽略这个属性。
excludeSubTasksBoolean只返回非子任务的任务。
activeBoolean如果为 true,只返回未挂起的任务(作为未挂起流程的一部分,或者不属于任何流程)。如果为false,只返回作为挂起流程一部分的任务。
includeTaskLocalVariablesBooleanIndication to include task local variables in the result.
includeProcessVariablesBoolean表示在结果中包含变量。
tenantIdString只返回指定tenantId的任务。
tenantIdLikeString只返回与指定tenantId匹配的任务。
withoutTenantIdBoolean如果为 true,只返回未设置tenantId的任务。如果为 false,会忽略 withoutTenantId 参数。

可以使用通用的 分页和排序查询参数 。

   


Table 15.112.任务列表 - 响应码

响应码描述
200表示请求成功,并返回任务。
400表示传递的参数格式错误,或'delegationState'使用了不合法的数据('pending' 和 'resolved'以外的数据)。状态信息包含了详细信息。


成功响应体:

{
  "data": [
    {
      "assignee" : "kermit",
      "createTime" : "2013-04-17T10:17:43.902+0000",
      "delegationState" : "pending",
      "description" : "Task description",
      "dueDate" : "2013-04-17T10:17:43.902+0000",
      "execution" : "http://localhost:8182/runtime/executions/5",
      "id" : "8",
      "name" : "My task",
      "owner" : "owner",
      "parentTask" : "http://localhost:8182/runtime/tasks/9",
      "priority" : 50,
      "processDefinition" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
      "processInstance" : "http://localhost:8182/runtime/process-instances/5",
      "suspended" : false,
      "taskDefinitionKey" : "theTask",
      "url" : "http://localhost:8182/runtime/tasks/8",
          "tenantId" : null
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

查询任务

POST query/tasks

请求体:

{
  "name" : "My task",
  "description" : "The task description",

  ...

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

    "processInstanceVariables" : [
      {
         ...
      }
    ]
  ]
}

此处所有被支持的JSON参数都和获得任务集合完全一样,只是使用JSON体参数的方式替代URL参数,这样就可以使用更加高级的查询方式,并能预防请求uri过长导致的问题。除此之外,可以基于任务和流程变量进行查询。taskVariablesprocessInstanceVariables 都可以包含 此处描述的json数组。

Table 15.113.查询任务 - 响应码

响应码描述
200表示请求成功,并返回任务。
400表示传递了格式错误的参数,或'delegationState'传递了非法数据 ( 'pending' 和 'resolved'之外的值)。状态信息包含了详细信息。


成功响应体:

{
  "data": [
    {
      "assignee" : "kermit",
      "createTime" : "2013-04-17T10:17:43.902+0000",
      "delegationState" : "pending",
      "description" : "Task description",
      "dueDate" : "2013-04-17T10:17:43.902+0000",
      "execution" : "http://localhost:8182/runtime/executions/5",
      "id" : "8",
      "name" : "My task",
      "owner" : "owner",
      "parentTask" : "http://localhost:8182/runtime/tasks/9",
      "priority" : 50,
      "processDefinition" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
      "processInstance" : "http://localhost:8182/runtime/process-instances/5",
      "suspended" : false,
      "taskDefinitionKey" : "theTask",
      "url" : "http://localhost:8182/runtime/tasks/8",
          "tenantId" : null
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

更新任务

PUT runtime/tasks/{taskId}

请求JSON体:

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

所有请求参数都是可选的。比如,你可以在请求体的JSON对象中只包含'assignee'属性,只更新任务的负责人,其他字段都不填。当包含的字段值为null时,任务的对应属性会被更新为null。比如:{"dueDate" : null}会清空任务的持续时间。

Table 15.114.更新任务 - 响应码

响应码描述
200表示成功更新了任务。
404表示找不到任务。
409表示请求的任务正在被更新。


成功响应体: 参考runtime/tasks/{taskId}的响应。

操作任务

POST runtime/tasks/{taskId}

完成任务 - JSON体:

{
  "action" : "complete",
  "variables" : ...
}

完成任务。可以使用variables参数传递可选的variable数组。关于变量格式的详细信息可以参考REST变量章节。注意,此处忽略变量作用域,变量会设置到上级作用域,除非本地作用域应包含了同名变量。这与TaskService.completeTask(taskId, variables) 的行为是相同的。

认领任务 - JSON体:

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

根据指定的assignee认领任务。如果assignee为null,任务的执行人会变成空,又可以重新认领了。

代理任务 - JSON体:

{
  "action" : "delegate",
  "assignee" : "userToDelegateTo"
}

指定assignee代理任务。assignee是必填项。

处理任务 - JSON体:

{
  "action" : "resolve"
}

处理任务代理。任务会返回给任务的原负责人(如果存在)。

Table 15.115.操作任务 - 响应码

响应码描述
200表示操作成功执行。
400当请求包含了非法数据或当操作需要assignee参数时,却没有传。
404表示找不到任务。
409表示因为冲突导致无法执行操作。可能任务正在被更新,或者,在'claim'认清任务时,任务已经被其他用户认领了。


成功响应体: 参考runtime/tasks/{taskId}的响应。

删除任务

DELETE runtime/tasks/{taskId}?cascadeHistory={cascadeHistory}&deleteReason={deleteReason}

Table 15.116.>删除任务 - URL参数

参数是否必须描述
taskIdString希望删除的任务id。
cascadeHistoryFalseBoolean删除任务时是否删除对应的任务历史(如果存在)。如果没有设置这个参数,默认为false。
deleteReasonFalseString删除任务的原因。cascadeHistory为true时,忽略此参数。


Table 15.117.>删除任务 - 响应码

响应码描述
204表示找到任务,并成功删除。响应体为空。
403表示无法删除任务,因为它是流程的一部分。
404表示找不到任务。


获得任务的变量

GET runtime/tasks/{taskId}/variables?scope={scope}

Table 15.118.获得任务的变量 - URL参数

参数是否必须描述
taskIdString变量对应的任务id。
scopeFalseString返回的变量作用于。如果为 'local',只返回任务本身的变量。如果为 'global',只返回任务上级分支的变量。如果不指定这个变量,会返回所有局部和全局的变量。


Table 15.119.获得任务的变量 - 响应码

响应码描述
200表示找到了任务并返回了请求的变量。
404表示找不到任务。


成功响应体:

[
  {
    "name" : "doubleTaskVar",
    "scope" : "local",
    "type" : "double",
    "value" : 99.99
  },
  {
    "name" : "stringProcVar",
    "scope" : "global",
    "type" : "string",
    "value" : "This is a ProcVariable"
  },

  ...

]

返回JSON数组型的变量。对响应的详细介绍可以参考REST变量章节。

获取任务的一个变量

GET runtime/tasks/{taskId}/variables/{variableName}?scope={scope}

Table 15.120.获取任务的一个变量 - URL参数

参数是否必须描述
taskIdString获取变量对应的任务id。
variableNameString获取变量对应的名称。
scopeFalseString返回的变量作用于。如果为 'local',只返回任务本身的变量。如果为 'global',只返回任务上级分支的变量。如果不指定这个变量,会返回所有局部和全局的变量。


Table 15.121.获取任务的一个变量 - 响应码

响应码描述
200表示找到了任务并返回了请求的变量。
404表示找不到任务,或者任务不包含指定名称的变量(在指定作用域下)。状态信息包含了详细信息。


成功响应体:

{
  "name" : "myTaskVariable",
  "scope" : "local",
  "type" : "string",
  "value" : "Hello my friend"
}

对响应的详细介绍可以参考REST变量章节。

获取变量的二进制数据

GET runtime/tasks/{taskId}/variables/{variableName}/data?scope={scope}

Table 15.122.获取变量的二进制数据 - URL参数

参数是否必须描述
taskIdString获取变量数据对应的任务id。
variableNameString获取数据对应的变量名称。只能使用 binaryserializable 类型的变量。如果使用了其他类型的变量,会返回 404
scopeFalseString返回的变量作用于。如果为 'local',只返回任务本身的变量。如果为 'global',只返回任务上级分支的变量。如果不指定这个变量,会返回所有局部和全局的变量。


Table 15.123.获取变量的二进制数据 - 响应码

响应码描述
200表示找到了任务并返回了请求的变量。
404表示找不到任务,或者任务不包含指定名称的变量(在指定作用域下),或变量的二进制流不可用。状态信息包含了详细信息。


成功响应体: 响应体包含了变量的二进制值。当类型为 binary时,无论请求的accept-type头部设置了什么值,响应的content-type都为application/octet-stream。当类型为 serializable时, content-type为application/x-java-serialized-object

创建任务变量

POST runtime/tasks/{taskId}/variables

Table 15.124.创建任务变量 - URL参数

参数是否必须描述
taskIdString创建新变量对应的任务id。


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

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

请求体应该是包含一个或多个JSON对象的数组,对应应该创建的变量。

  • name:必须的变量名称。

  • scope:创建的变量的作用域。如果忽略,假设为local

  • type:创建的变量的类型。如果忽略,转换为对应的JSON的类型 (string, boolean, integer 或 double)。

  • value:变量值。

关于变量格式的详细信息可以参考REST变量章节。

成功响应体:

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

Table 15.125.创建任务变量 - 响应码

响应码描述
201表示创建了变量,并返回了结果。
400表示没有传变量名,或尝试使用global作用域为独立任务(没有关联到流程)创建变量,或请求中的变量为空,或请求没有包含变量数组。状态信息包含了详细信息。
404表示找不到任务。
409表示任务已经存在指定名称的变量了。可以使用PUT方法来更新任务变量。


创建二进制任务变量

POST runtime/tasks/{taskId}/variables

Table 15.126.创建二进制任务变量 - URL参数

参数是否必须描述
taskIdString创建新变量对应的任务id。


请求体: 请求应该是multipart/form-data类型。应该只有一个文件区域,包含源码的二进制内容。除此之外,需要提供以下表单域:

  • name:必须的变量名称。

  • scope:创建的变量的作用域。如果忽略,假设使用 local

  • type:创建的变量类型。如果忽略,会假设使用binary,请求的二进制数据会当做二进制数组保存起来。

成功响应体:

{
  "name" : "binaryVariable",
  "scope" : "local",
  "type" : "binary",
  "value" : null,
  "valueUrl" : "http://.../runtime/tasks/123/variables/binaryVariable/data"
}

Table 15.127.创建二进制任务变量 - 响应码

响应码描述
201表示创建了变量,并返回了结果。
400表示没有传变量名,或尝试使用global作用域为独立任务(没有关联到流程)创建变量。状态信息包含了详细信息。
404表示找不到任务。
409表示任务已经存在指定名称的变量了。可以使用PUT方法来更新任务变量。
415表示序列化数据包含的对象的类并不在运行Activiti引擎的JVM中,所以无法反序列化。


更新任务的一个已有变量

PUT runtime/tasks/{taskId}/variables/{variableName}

Table 15.128.更新任务的一个已有变量 - URL参数

参数是否必须描述
taskIdString希望更新的变量对应的任务id。
variableNameString希望更新的变量名称。


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

{
  "name" : "myTaskVariable",
  "scope" : "local",
  "type" : "string",
  "value" : "Hello my friend"
}

  • name:必须的变量名称。

  • scope:更新的变量的作用域。如果忽略,假设为local

  • type:更新的变量的类型。如果忽略,转换为对应的JSON的类型 (string, boolean, integer 或 double)。

  • value:变量值。

关于变量格式的详细信息可以参考REST变量章节。

成功响应体:

{
  "name" : "myTaskVariable",
  "scope" : "local",
  "type" : "string",
  "value" : "Hello my friend"
}

Table 15.129.更新任务的一个已有变量 - 响应码

响应码描述
200表示成功更新了变量并返回了结果。
400表示没有传变量名,或尝试使用global作用域为独立任务(没有关联到流程)创建变量。状态信息包含了详细信息。
404表示找不到任务,或任务在指定作用域不包含指定名称的变量。状态信息包含错误的详细信息。


更新一个二进制任务变量

PUT runtime/tasks/{taskId}/variables/{variableName}

Table 15.130.更新一个二进制任务变量 - URL参数

参数是否必须描述
taskIdString希望更新的变量对应的任务id。
variableNameString希望更新的变量名称。


请求体: 请求应该是multipart/form-data类型。应该只有一个文件区域,包含源码的二进制内容。除此之外,需要提供以下表单域:

  • name:必须的变量名称。

  • scope:创建的变量的作用域。如果忽略,假设使用 local

  • type:创建的变量类型。如果忽略,会假设使用binary,请求的二进制数据会当做二进制数组保存起来。

成功响应体:

{
  "name" : "binaryVariable",
  "scope" : "local",
  "type" : "binary",
  "value" : null,
  "valueUrl" : "http://.../runtime/tasks/123/variables/binaryVariable/data"
}

Table 15.131.更新一个二进制任务变量 - 响应码

响应码描述
200表示更新了变量,并返回了结果。
400表示没有传变量名,或尝试使用global作用域为独立任务(没有关联到流程)创建变量。状态信息包含了详细信息。
404表示找不到任务,或任务在指定作用域不包含指定名称的变量。
415表示序列化数据包含的对象的类并不在运行Activiti引擎的JVM中,所以无法反序列化。


删除任务变量

DELETE runtime/tasks/{taskId}/variables/{variableName}?scope={scope}

Table 15.132.删除任务变量 - URL参数

参数是否必须描述
taskIdString希望删除的变量对应的任务id。
variableNameString希望删除的变量名称。
scopeString希望删除的变量的作用域。可以是localglobal。如果忽略,假设为local


Table 15.133.删除任务变量 - 响应码

响应码描述
204表示找到了任务变量,并成功删除。响应体为空。
404表示找不到任务,或任务不包含指定名称的变量。状态信息包含错误的详细信息。


删除任务的所有局部变量

DELETE runtime/tasks/{taskId}/variables

Table 15.134.删除任务的所有局部变量 - URL参数

参数是否必须描述
taskIdString希望删除的变量对应的任务id。


Table 15.135.删除任务的所有局部变量 - 响应码

响应码描述
204表示已经删除了任务的所有局部变量。响应体为空。
404表示找不到任务。


获得任务的所有IdentityLink

GET runtime/tasks/{taskId}/identitylinks

Table 15.136.获得任务的所有IdentityLink - URL参数

参数是否必须描述
taskIdString希望获得IdentityLink对应的任务id。


Table 15.137.获得任务的所有IdentityLink - 响应码

响应码描述
200表示找到了任务,并返回了IdentityLink。
404表示找不到任务。


成功响应体:

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

  ...
]

获得一个任务的所有组或用户的IdentityLink

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

返回对应于用户或组的IdentityLink。响应体与状态码与获得一个任务的所有IdentityLink完全一样。

获得一个任务的一个IdentityLink

GET runtime/tasks/{taskId}/identitylinks/{family}/{identityId}/{type}

Table 15.138.获得一个任务的所有组或用户的IdentityLink - URL参数

参数是否必填数据描述
taskIdString任务的id。
familyStringgroupsusers,对应期望获得哪种IdentityLink。
identityIdStringIdentityLink的id。
typeStringIdentityLink的类型。


Table 15.139.获得一个任务的所有组或用户的IdentityLink - 响应码

响应码描述
200表示找到了任务和IdentityLink,并成功返回。
404表示找不到任务,或任务不包含请求的IdentityLink。状态包含了错误的详细信息。


成功响应体:

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

为任务创建一个IdentityLink

POST runtime/tasks/{taskId}/identitylinks

Table 15.140.为任务创建一个IdentityLink - URL参数

参数是否必填数据描述
taskIdString任务的id。


请求体(用户):

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

请求体(组):

{
  "groupId" : "sales",
  "type" : "candidate",
}

Table 15.141.为任务创建一个IdentityLink - 响应码

响应码描述
201表示找到了任务,并创建了IdentityLink。
404表示找不到任务,或任务不包含请求的IdentityLink。状态包含了错误的详细信息。


成功响应体:

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

删除任务的一个IdentityLink

DELETE runtime/tasks/{taskId}/identitylinks/{family}/{identityId}/{type}

Table 15.142.删除任务的一个IdentityLink - URL参数

参数是否必填数据描述
taskIdString任务的id。
familyStringgroupsusers,对应IdentityLink的种类。
identityIdStringIdentityLink的id。
typeStringIdentityLink的类型。


Table 15.143.删除任务的一个IdentityLink - 响应码

响应码描述
204表示找到了任务和IdentityLInk,并成功删除了IdentityLink。响应体为空。
404表示找不到任务,或任务不包含请求的IdentityLink。状态包含了错误的详细信息。


为任务创建评论

POST runtime/tasks/{taskId}/comments

Table 15.144.为任务创建评论 - URL参数

参数是否必须描述
taskIdString创建评论对应的任务id。


请求体:

{
  "message" : "This is a comment on the task."
}

成功响应体:

{
  "id" : "123",
  "url" : "http://localhost:8081/activiti-rest/service/runtime/tasks/100/comments/123",
  "message" : "This is a comment on the task.",
  "author" : "kermit"
}

Table 15.145.为任务创建评论 - 响应码

响应码描述
201表示创建了评论,并返回了结果。
400表示请求不包含评论。
404表示找不到任务。


获得任务的所有评论

GET runtime/tasks/{taskId}/comments

Table 15.146.获得任务的所有评论 - URL参数

参数是否必须描述
taskIdString获取评论对应的任务id。


成功响应体:

[
  {
    "id" : "123",
    "url" : "http://localhost:8081/activiti-rest/service/runtime/tasks/100/comments/123",
    "message" : "This is a comment on the task.",
    "author" : "kermit"
  },
  {
    "id" : "456",
    "url" : "http://localhost:8081/activiti-rest/service/runtime/tasks/100/comments/456",
    "message" : "This is another comment on the task.",
    "author" : "gonzo"
  }
]

Table 15.147.获得任务的所有评论 - 响应码

响应码描述
200表示找到了任务,并返回了评论。
404表示找不到任务。


获得任务的一个评论

GET runtime/tasks/{taskId}/comments/{commentId}

Table 15.148.获得任务的一个评论 - URL参数

参数是否必须描述
taskIdString获取评论对应的任务id。
commentIdString评论的id。


成功响应体:

{
  "id" : "123",
  "url" : "http://localhost:8081/activiti-rest/service/runtime/tasks/100/comments/123",
  "message" : "This is a comment on the task.",
  "author" : "kermit"
}

Table 15.149.获得任务的一个评论 - 响应码

响应码描述
200表示找到了任务和评论,并返回了评论。
404表示找不到任务,或任务不包含指定id的评论。


删除任务的一条评论

DELETE runtime/tasks/{taskId}/comments/{commentId}

Table 15.150.删除任务的一条评论 - URL参数

参数是否必须描述
taskIdString删除评论对应的任务id。
commentIdString评论的id。


Table 15.151.删除任务的一条评论 - 响应码

响应码描述
204表示找到了任务和评论,并删除了评论。响应体为空。
404表示找不到任务,或任务不包含id的评论。

获得任务的所有事件

GET runtime/tasks/{taskId}/events

Table 15.152.获得任务的所有事件 - URL参数

参数是否必须描述
taskIdString获得事件对应的任务id。


成功响应体:

[
  {
    "action" : "AddUserLink",
    "id" : "4",
    "message" : [ "gonzo", "contributor" ],
    "taskUrl" : "http://localhost:8182/runtime/tasks/2",
    "time" : "2013-05-17T11:50:50.000+0000",
    "url" : "http://localhost:8182/runtime/tasks/2/events/4",
    "userId" : null
  },

  ...

]

Table 15.153.获得任务的所有事件 - 响应码

响应码描述
200表示找到了任务,并返回了事件。
404表示找不到任务。


获得任务的一个事件

GET runtime/tasks/{taskId}/events/{eventId}

Table 15.154.获得任务的一个事件 - URL参数

参数是否必须描述
taskIdString获得事件对应的任务id。
eventIdString事件的id。


成功响应体:

{
  "action" : "AddUserLink",
  "id" : "4",
  "message" : [ "gonzo", "contributor" ],
  "taskUrl" : "http://localhost:8182/runtime/tasks/2",
  "time" : "2013-05-17T11:50:50.000+0000",
  "url" : "http://localhost:8182/runtime/tasks/2/events/4",
  "userId" : null
}

Table 15.155.获得任务的一个事件 - 响应码

响应码描述
200表示找到了任务和事件,并返回了事件。
404表示找不到任务,或任务不包含对应id的事件。


为任务创建一个附件,包含外部资源的链接

POST runtime/tasks/{taskId}/attachments

Table 15.156.为任务创建一个附件,包含外部资源的链接 - URL参数

参数是否必须描述
taskIdString创建附件对应的任务id。


请求体:

{
  "name":"Simple attachment",
  "description":"Simple attachment description",
  "type":"simpleType",
  "externalUrl":"http://activiti.org"
}

创建附件只有name是必填的。

成功响应体:

{
  "id":"3",
  "url":"http://localhost:8182/runtime/tasks/2/attachments/3",
  "name":"Simple attachment",
  "description":"Simple attachment description",
  "type":"simpleType",
  "taskUrl":"http://localhost:8182/runtime/tasks/2",
  "processInstanceUrl":null,
  "externalUrl":"http://activiti.org",
  "contentUrl":null
}

Table 15.157.为任务创建一个附件,包含外部资源的链接 - 响应码

响应码描述
201表示创建了附件,并返回了结果。
400表示请求中缺少了附件名称。
404表示找不到任务。


为任务创建一个附件,包含附件文件

POST runtime/tasks/{taskId}/attachments

Table 15.158.为任务创建一个附件,包含附件文件 - URL参数

参数是否必须描述
taskIdString创建附件对应的任务id。


请求体: 请求应该是multipart/form-data类型。应该只有一个文件区域,包含源码的二进制内容。除此之外,需要提供以下表单域:

  • name:必须的变量名称。

  • description:附件的描述,可选。

  • type:创建的变量类型。如果忽略,会假设使用binary,请求的二进制数据会当做二进制数组保存起来。

成功响应体:

{
      "id":"5",
      "url":"http://localhost:8182/runtime/tasks/2/attachments/5",
      "name":"Binary attachment",
      "description":"Binary attachment description",
      "type":"binaryType",
      "taskUrl":"http://localhost:8182/runtime/tasks/2",
      "processInstanceUrl":null,
      "externalUrl":null,
      "contentUrl":"http://localhost:8182/runtime/tasks/2/attachments/5/content"
   }

Table 15.159.为任务创建一个附件,包含附件文件 - 响应码

响应码描述
201表示创建了附件,并返回了结果。
400表示请求中缺少附件名称,或请求中未包含文件。错误信息中包含了详细信息。
404表示找不到任务。


获得任务的所有附件

GET runtime/tasks/{taskId}/attachments

Table 15.160.获得任务的所有附件 - URL参数

参数是否必须描述
taskIdString获取附件对应的任务id。


成功响应体:

[
  {
    "id":"3",
    "url":"http://localhost:8182/runtime/tasks/2/attachments/3",
    "name":"Simple attachment",
    "description":"Simple attachment description",
    "type":"simpleType",
    "taskUrl":"http://localhost:8182/runtime/tasks/2",
    "processInstanceUrl":null,
    "externalUrl":"http://activiti.org",
    "contentUrl":null
  },
  {
    "id":"5",
    "url":"http://localhost:8182/runtime/tasks/2/attachments/5",
    "name":"Binary attachment",
    "description":"Binary attachment description",
    "type":"binaryType",
    "taskUrl":"http://localhost:8182/runtime/tasks/2",
    "processInstanceUrl":null,
    "externalUrl":null,
    "contentUrl":"http://localhost:8182/runtime/tasks/2/attachments/5/content"
  }
]

Table 15.161.获得任务的所有附件 - 响应码

响应码描述
200表示找到了任务,并返回了附件。
404表示找不到任务。


获得任务的一个附件

GET runtime/tasks/{taskId}/attachments/{attachmentId}

Table 15.162.获得任务的一个附件 - URL参数

参数是否必须描述
taskIdString获取附件对应的任务id。
attachmentIdString附件的id。


成功响应体:

  {
    "id":"5",
    "url":"http://localhost:8182/runtime/tasks/2/attachments/5",
    "name":"Binary attachment",
    "description":"Binary attachment description",
    "type":"binaryType",
    "taskUrl":"http://localhost:8182/runtime/tasks/2",
    "processInstanceUrl":null,
    "externalUrl":null,
    "contentUrl":"http://localhost:8182/runtime/tasks/2/attachments/5/content"
  }

  • externalUrl - contentUrl:如果附件是一个外部资源链接,externalUrl包含外部内容的URL。如果附件内容保存在Activiti引擎中,contentUrl会包含获取二进制流内容的URL。

  • type:可以是任何有效值。包含一个格式合法的media-type时(比如application/xml, text/plain),二进制HTTP响应的content-type会被设置为对应值。

Table 15.163.获得任务的一个附件 - 响应码

响应码描述
200表示找到了任务和附件,并返回了附件。
404表示找不到任务,或任务不包含对应id的附件。


获取附件的内容

GET runtime/tasks/{taskId}/attachment/{attachmentId}/content

Table 15.164.获取附件的内容 - URL参数

参数是否必须描述
taskIdString获取附件数据对应的任务id。
attachmentIdString附件的id,当附件指向外部URL,而不是Activiti中的内容,就会返回404


Table 15.165.获取附件的内容 - 响应码

响应码描述
200表示找到了任务和附件,并返回了请求的内容。
404表示找不到任务,或任务不包含对应id的任务,或附件不包含二进制流。状态信息包含了详细信息。


成功响应体: 响应体包含了二进制内容。默认,响应的content-type设置为application/octet-stream,除非附件类型包含了合法的Content-Type。

删除任务的一个附件

DELETE runtime/tasks/{taskId}/attachments/{attachmentId}

Table 15.166.删除任务的一个附件 - URL参数

参数是否必须描述
taskIdString希望删除附件对应的任务id。
attachmentIdString附件的id。


Table 15.167.删除任务的一个附件 - 响应码

响应码描述
204表示找到了任务和附件,并删除了附件。响应体为空。
404表示找不到任务,或任务不包含对应id的附件。

历史

获得历史流程实例

GET history/historic-process-instances/{processInstanceId}

Table 15.168.获得历史流程实例 - 响应码

响应码描述
200表示找到了历史流程实例。
404表示找不到历史流程实例。


成功响应体:

{
  "data": [
    {
      "id" : "5",
      "businessKey" : "myKey",
      "processDefinitionId" : "oneTaskProcess%3A1%3A4",
      "processDefinitionUrl" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
      "startTime" : "2013-04-17T10:17:43.902+0000",
      "endTime" : "2013-04-18T14:06:32.715+0000",
      "durationInMillis" : 86400056,
      "startUserId" : "kermit",
      "startActivityId" : "startEvent",
      "endActivityId" : "endEvent",
      "deleteReason" : null,
      "superProcessInstanceId" : "3",
      "url" : "http://localhost:8182/history/historic-process-instances/5",
      "variables": null,
          "tenantId":null
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

历史流程实例列表

GET history/historic-process-instances

Table 15.169.历史流程实例列表 - URL参数

参数是否必填数据描述
processInstanceIdString历史流程实例id。
processDefinitionKeyString历史流程实例的流程定义key。
processDefinitionIdString历史流程实例的流程定义id。
businessKeyString历史流程实例的businessKey。
involvedUserString历史流程实例的参与者。
finishedBoolean表示历史流程实例是否结束了。
superProcessInstanceIdString历史流程实例的上级流程实例id。
excludeSubprocessesBoolean只返回非子流程的历史流程实例。
finishedAfterDate只返回指定时间之后结束的历史流程实例。
finishedBeforeDate只返回指定时间之前结束的历史流程实例。
startedAfterDate只返回指定时间之后开始的历史流程实例。
startedBeforeDate只返回指定时间之前开始的历史流程实例。
startedByString只返回由指定用户启动的历史流程实例。
includeProcessVariablesBoolean表示是否应该返回历史流程实例变量。
tenantIdString只返回指定tenantId的实例。
tenantIdLikeString只返回与指定tenantId匹配的实例。
withoutTenantIdBoolean如果为 true,只返回未设置tenantId的实例。如果为 false,会忽略 withoutTenantId 参数。

可以使用通用的 分页和排序查询参数 。

   


Table 15.170.历史流程实例列表 - 响应码

响应码描述
200表示成功返回了历史流程实例。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
  "data": [
    {
      "id" : "5",
      "businessKey" : "myKey",
      "processDefinitionId" : "oneTaskProcess%3A1%3A4",
      "processDefinitionUrl" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
      "startTime" : "2013-04-17T10:17:43.902+0000",
      "endTime" : "2013-04-18T14:06:32.715+0000",
      "durationInMillis" : 86400056,
      "startUserId" : "kermit",
      "startActivityId" : "startEvent",
      "endActivityId" : "endEvent",
      "deleteReason" : null,
      "superProcessInstanceId" : "3",
      "url" : "http://localhost:8182/history/historic-process-instances/5",
      "variables": [
        {
          "name": "test",
          "variableScope": "local",
          "value": "myTest"
        }
      ],
          "tenantId":null
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

查询历史流程实例

POST query/historic-process-instances

请求体:

{
  "processDefinitionId" : "oneTaskProcess%3A1%3A4",
  ...

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

所有支持的JSON参数字段和获得历史流程实例集合完全一样,但是传递的是JSON参数,而不是URL参数,这样可以支持更高级的参数,同时避免请求uri过长。除此之外,查询支持基于流程变量查询。 variables属性是一个json数组,包含此处描述的格式。

Table 15.171.查询历史流程实例 - 响应码

响应码描述
200表示请求成功,并返回结果。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
  "data": [
    {
      "id" : "5",
      "businessKey" : "myKey",
      "processDefinitionId" : "oneTaskProcess%3A1%3A4",
      "processDefinitionUrl" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
      "startTime" : "2013-04-17T10:17:43.902+0000",
      "endTime" : "2013-04-18T14:06:32.715+0000",
      "durationInMillis" : 86400056,
      "startUserId" : "kermit",
      "startActivityId" : "startEvent",
      "endActivityId" : "endEvent",
      "deleteReason" : null,
      "superProcessInstanceId" : "3",
      "url" : "http://localhost:8182/history/historic-process-instances/5",
      "variables": [
        {
          "name": "test",
          "variableScope": "local",
          "value": "myTest"
        }
      ],
          "tenantId":null
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

删除历史流程实例

DELETE history/historic-process-instances/{processInstanceId}

Table 15.172.响应码

响应码描述
200表示成功删除了历史流程实例。
404表示找不到历史流程实例。


获取历史流程实例的IdentityLink

GET history/historic-process-instance/{processInstanceId}/identitylinks

Table 15.173.响应码

响应码描述
200表示请求成功,并返回了IdentityLink。
404表示找不到历史流程实例。


成功响应体:

[
 {
  "type" : "participant",
  "userId" : "kermit",
  "groupId" : null,
  "taskId" : null,
  "taskUrl" : null,
  "processInstanceId" : "5",
  "processInstanceUrl" : "http://localhost:8182/history/historic-process-instances/5"
 }
]

获取历史流程实例变量的二进制数据

GET history/historic-process-instances/{processInstanceId}/variables/{variableName}/data

Table 15.174.获取历史流程实例变量的二进制数据 - 响应码

响应码描述
200表示找到了历史流程实例,并返回了请求的变量数据。
404表示找不到请求的历史流程实例,或流程实例不包含指定名称的变量,或变量不是二进制流。状态信息包含了详细信息。


成功响应体: 响应体包含了变量的二进制值。当类型为 binary时,无论请求的accept-type头部设置了什么值,响应的content-type都为application/octet-stream。当类型为 serializable时, content-type为application/x-java-serialized-object

为历史流程实例创建一条新评论

POST history/historic-process-instances/{processInstanceId}/comments

Table 15.175.为历史流程实例创建一条新评论 - URL参数

参数必须描述
processInstanceIdString需要创建评论的流程实例id。


请求体:

{
  "message" : "This is a comment."
}

成功响应体:

{
  "id" : "123",
  "url" : "http://localhost:8081/activiti-rest/history/historic-process-instances/100/comments/123",
  "message" : "This is a comment.",
  "author" : "kermit"
}

Table 15.176.为历史流程实例创建一条新评论 - 响应码

响应码描述
201表示创建了评论,并返回了结果。
400表示请求中未包含评论。
404表示找不到请求的历史流程实例。


获得一个历史流程实例的所有评论

GET history/historic-process-instances/{processInstanceId}/comments

Table 15.177.获得流程实例的所有评论 - URL参数

参数必填描述
processInstanceIdString获取评论对应的流程实例id。


成功响应体:

[
  {
    "id" : "123",
    "url" : "http://localhost:8081/activiti-rest/service/history/historic-process-instances/100/comments/123",
    "message" : "This is a comment",
    "author" : "kermit"
  },
  {
    "id" : "456",
    "url" : "http://localhost:8081/activiti-rest/service/history/historic-process-instances/100/comments/456",
    "message" : "This is a否ther comment.",
    "author" : "gonzo"
  }
]

Table 15.178.获得流程实例的所有评论 - 响应码

响应码描述
200表示找到了流程实例,并返回了评论。
404表示找不到请求的流程实例。


获得历史流程实例的一条评论

GET history/historic-process-instances/{processInstanceId}/comments/{commentId}

Table 15.179.获得历史流程的一条评论 - URL参数

参数必填描述
processInstanceIdString获得评论对应的历史流程实例。
commentIdYesString评论的id。


成功响应体:

{
  "id" : "123",
  "url" : "http://localhost:8081/activiti-rest/history/historic-process-instances/100/comments/123",
  "message" : "This is a comment.",
  "author" : "kermit"
}

Table 15.180.获得历史流程的一条评论 - 响应码

响应码描述
200表示找到了历史流程实例和评论,并返回了评论。
404表示找不到请求的历史流程实例,或历史流程实例不包含指定id的评论。


删除历史流程实例的一条评论

DELETE history/historic-process-instances/{processInstanceId}/comments/{commentId}

Table 15.181.删除历史流程实例的一条评论 - URL参数

参数必填描述
processInstanceIdString需要删除的评论对应的历史流程实例的id。
commentIdYesString评论的id。


Table 15.182.删除历史流程实例的一条评论 - 响应码

响应码描述
204表示找到了历史流程实例,并删除了评论。响应体为空。
404表示找不到请求的历史流程实例,或历史流程实例不包含指定id的评论。

获得单独历史任务实例

GET history/historic-task-instances/{taskId}

Table 15.183.获得单独历史任务实例 - 响应码

响应码描述
200表示找到了历史任务实例。
404表示找不到历史任务实例。


成功响应体:

{
  "id" : "5",
  "processDefinitionId" : "oneTaskProcess%3A1%3A4",
  "processDefinitionUrl" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
  "processInstanceId" : "3",
  "processInstanceUrl" : "http://localhost:8182/history/historic-process-instances/3",
  "executionId" : "4",
  "name" : "My task name",
  "description" : "My task description",
  "deleteReason" : null,
  "owner" : "kermit",
  "assignee" : "fozzie",
  "startTime" : "2013-04-17T10:17:43.902+0000",
  "endTime" : "2013-04-18T14:06:32.715+0000",
  "durationInMillis" : 86400056,
  "workTimeInMillis" : 234890,
  "claimTime" : "2013-04-18T11:01:54.715+0000",
  "taskDefinitionKey" : "taskKey",
  "formKey" : null,
  "priority" : 50,
  "dueDate" : "2013-04-20T12:11:13.134+0000",
  "parentTaskId" : null,
  "url" : "http://localhost:8182/history/historic-task-instances/5",
  "variables": null,
  "tenantId":null
}

获取历史任务实例

GET history/historic-task-instances

Table 15.184.获取历史任务实例 - URL参数

参数是否必填数据描述
taskIdString历史任务实例id。
processInstanceIdString历史任务实例的流程实例id。
processDefinitionKeyString历史任务实例的流程定义key。
processDefinitionKeyLikeString历史任务实例的流程定义key与指定值匹配。
processDefinitionIdString历史任务实例的流程定义id。
processDefinitionNameString历史任务实例的流程定义名称。
processDefinitionNameLikeString历史任务实例的流程定义名称与指定值匹配。
processBusinessKeyString历史任务实例的流程实例businessKey。
processBusinessKeyLikeString历史任务实例的流程实例业务key与指定值匹配。
executionIdString历史任务实例的分支id。
taskDefinitionKeyString流程的任务部分的流程定义key。
taskNameString历史任务实例的任务名称。
taskNameLikeString对任务名称使用'like'查询历史任务实例。
taskDescriptionString历史任务实例的任务描述。
taskDescriptionLikeString对任务描述使用'like'查询历史任务实例。
taskDefinitionKeyString历史任务实例对应的流程定义的任务定义key。
taskDeleteReasonString历史任务实例的删除任务原因。
taskDeleteReasonLikeString对删除任务原因使用'like'查询历史任务实例。
taskAssigneeString历史任务实例的负责人。
taskAssigneeLikeString对负责人使用'like'查询历史任务实例。
taskOwnerString历史任务实例的原拥有者。
taskOwnerLikeString对原拥有者使用'like'查询历史任务实例。
taskInvolvedUserString历史任务实例的参与者。
taskPriorityString历史任务实例的优先级。
finishedBoolean表示是否历史任务实例已经结束了。
processFinishedBoolean表示历史任务实例的流程实例是否已经结束了。
parentTaskIdString历史任务实例的可能的上级任务id。
dueDateDate只返回指定持续时间的历史任务实例。
dueDateAfterDate只返回指定持续时间之后的历史任务实例。
dueDateBeforeDate只返回指定持续时间之前的历史任务实例。
withoutDueDateBoolean只返回没有设置持续时间的历史任务实例。当设置为false时会忽略这个参数。
taskCompletedOnDate只返回在指定时间完成的历史任务实例。
taskCompletedAfterDate只返回在指定时间之后完成的历史任务实例。
taskCompletedBeforeDate只返回在指定时间之前完成的历史任务实例。
taskCreatedOnDate只返回指定创建时间的历史任务实例。
taskCreatedBeforeDate只返回在指定时间前创建的历史任务实例。
taskCreatedAfterDate只返回在指定时间后创建的历史任务实例。
includeTaskLocalVariablesBoolean表示是否应该返回历史任务实例局部变量。
includeProcessVariablesBoolean表示是否应该返回历史任务实例全局变量。
tenantIdString只返回指定tenantId的历史任务。
tenantIdLikeString只返回与指定tenantId匹配的历史任务。
withoutTenantIdBoolean如果为 true,只返回未设置tenantId的历史任务。如果为 false,会忽略 withoutTenantId 参数。

可以使用通用的 分页和排序查询参数 。

   


Table 15.185.获取历史任务实例 - 响应码

响应码描述
200表示可以查询的历史任务实例。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
  "data": [
    {
      "id" : "5",
      "processDefinitionId" : "oneTaskProcess%3A1%3A4",
      "processDefinitionUrl" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
      "processInstanceId" : "3",
      "processInstanceUrl" : "http://localhost:8182/history/historic-process-instances/3",
      "executionId" : "4",
      "name" : "My task name",
      "description" : "My task description",
      "deleteReason" : null,
      "owner" : "kermit",
      "assignee" : "fozzie",
      "startTime" : "2013-04-17T10:17:43.902+0000",
      "endTime" : "2013-04-18T14:06:32.715+0000",
      "durationInMillis" : 86400056,
      "workTimeInMillis" : 234890,
      "claimTime" : "2013-04-18T11:01:54.715+0000",
      "taskDefinitionKey" : "taskKey",
      "formKey" : null,
      "priority" : 50,
      "dueDate" : "2013-04-20T12:11:13.134+0000",
      "parentTaskId" : null,
      "url" : "http://localhost:8182/history/historic-task-instances/5",
      "taskVariables": [
        {
          "name": "test",
          "variableScope": "local",
          "value": "myTest"
        }
      ],
      "processVariables": [
        {
          "name": "processTest",
          "variableScope": "global",
          "value": "myProcessTest"
        }
      ],
          "tenantId":null
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

查询历史任务实例

POST query/historic-task-instances

查询历史任务实例 - 请求体:

{
  "processDefinitionId" : "oneTaskProcess%3A1%3A4",
  ...

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

所有支持的JSON参数字段和获得历史任务实例集合完全一样,但是传递的是JSON参数,而不是URL参数,这样可以支持更高级的参数,同时避免请求uri过长。除此之外,查询支持基于流程变量查询。 taskVariablesprocessVariables属性是一个json数组,包含此处描述的格式。

Table 15.186.查询历史任务实例 - 响应码

响应码描述
200表示请求成功,并返回任务。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
  "data": [
    {
      "id" : "5",
      "processDefinitionId" : "oneTaskProcess%3A1%3A4",
      "processDefinitionUrl" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
      "processInstanceId" : "3",
      "processInstanceUrl" : "http://localhost:8182/history/historic-process-instances/3",
      "executionId" : "4",
      "name" : "My task name",
      "description" : "My task description",
      "deleteReason" : null,
      "owner" : "kermit",
      "assignee" : "fozzie",
      "startTime" : "2013-04-17T10:17:43.902+0000",
      "endTime" : "2013-04-18T14:06:32.715+0000",
      "durationInMillis" : 86400056,
      "workTimeInMillis" : 234890,
      "claimTime" : "2013-04-18T11:01:54.715+0000",
      "taskDefinitionKey" : "taskKey",
      "formKey" : null,
      "priority" : 50,
      "dueDate" : "2013-04-20T12:11:13.134+0000",
      "parentTaskId" : null,
      "url" : "http://localhost:8182/history/historic-task-instances/5",
      "taskVariables": [
        {
          "name": "test",
          "variableScope": "local",
          "value": "myTest"
        }
      ],
      "processVariables": [
        {
          "name": "processTest",
          "variableScope": "global",
          "value": "myProcessTest"
        }
      ]
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

删除历史任务实例

DELETE history/historic-task-instances/{taskId}

Table 15.187.响应码

响应码描述
200表似乎删除了历史任务实例。
404表示找不到历史任务实例。


获得历史任务实例的IdentityLink

GET history/historic-task-instance/{taskId}/identitylinks

Table 15.188.响应码

响应码描述
200表示请求成功,并返回了IdentityLink。
404表示找不到任务实例。


成功响应体:

[
 {
  "type" : "assignee",
  "userId" : "kermit",
  "groupId" : null,
  "taskId" : "6",
  "taskUrl" : "http://localhost:8182/history/historic-task-instances/5",
  "processInstanceId" : null,
  "processInstanceUrl" : null
 }
]

获取历史任务实例变量的二进制值

GET history/historic-task-instances/{taskId}/variables/{variableName}/data

Table 15.189.获取历史任务实例变量的二进制值 - 响应码

响应码描述
200表示找到了任务实例,并返回了请求的变量数据。
404表示找不到任务实例,或任务实例不包含指定名称的变量,或变量没有有效的二进制流。状态信息包含了详细信息。


成功响应体: 响应体包含了变量的二进制值。当类型为 binary时,无论请求的accept-type头部设置了什么值,响应的content-type都为application/octet-stream。当类型为 serializable时, content-type为application/x-java-serialized-object

获取历史活动实例

GET history/historic-activity-instances

Table 15.190.获取历史活动实例 - URL参数

参数是否必填数据描述
activityIdString活动实例id。
activityInstanceIdString历史活动实例id。
activityNameString历史活动实例的名称。
activityTypeString历史活动实例的元素类型。
executionIdString历史活动实例的分支id。
finishedBoolean表示历史活动实例是否完成。
taskAssigneeString历史活动实例的负责人。
processInstanceIdString历史活动实例的流程实例id。
processDefinitionIdString历史活动实例的流程定义id。
tenantIdString只返回指定tenantId的实例。
tenantIdLikeString只返回与指定tenantId匹配的实例
withoutTenantIdBoolean如果为 true,只返回未设置tenantId的历史。如果为 false,会忽略 withoutTenantId 参数。

可以使用通用的 分页和排序查询参数 。

   


Table 15.191.获取历史活动实例 - 响应码

响应码描述
200表示反悔了查询的历史活动实例。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
  "data": [
    {
      "id" : "5",
      "activityId" : "4",
      "activityName" : "My user task",
      "activityType" : "userTask",
      "processDefinitionId" : "oneTaskProcess%3A1%3A4",
      "processDefinitionUrl" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
      "processInstanceId" : "3",
      "processInstanceUrl" : "http://localhost:8182/history/historic-process-instances/3",
      "executionId" : "4",
      "taskId" : "4",
      "calledProcessInstanceId" : null,
      "assignee" : "fozzie",
      "startTime" : "2013-04-17T10:17:43.902+0000",
      "endTime" : "2013-04-18T14:06:32.715+0000",
      "durationInMillis" : 86400056,
          "tenantId":null
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

查询历史活动实例

POST query/historic-activity-instances

请求体:

{
  "processDefinitionId" : "oneTaskProcess%3A1%3A4"
}

所有支持的JSON参数字段和获得历史任务实例集合完全一样,但是传递的是JSON参数,而不是URL参数,这样可以支持更高级的参数,同时避免请求uri过长。

Table 15.192.查询历史活动实例 - 响应码

响应码描述
200表示请求充公,并返回了活动。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
  "data": [
    {
      "id" : "5",
      "activityId" : "4",
      "activityName" : "My user task",
      "activityType" : "userTask",
      "processDefinitionId" : "oneTaskProcess%3A1%3A4",
      "processDefinitionUrl" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
      "processInstanceId" : "3",
      "processInstanceUrl" : "http://localhost:8182/history/historic-process-instances/3",
      "executionId" : "4",
      "taskId" : "4",
      "calledProcessInstanceId" : null,
      "assignee" : "fozzie",
      "startTime" : "2013-04-17T10:17:43.902+0000",
      "endTime" : "2013-04-18T14:06:32.715+0000",
      "durationInMillis" : 86400056,
          "tenantId":null
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

列出历史变量实例

GET history/historic-variable-instances

Table 15.193.列出历史变量实例 - URL参数

参数是否必填数据描述
processInstanceIdString历史变量实例的流程实例id。
taskIdString历史变量实例的任务id。
excludeTaskVariablesBoolean表示从结果中排除任务变量。
variableNameString历史变量实例的变量名称。
variableNameLikeString对变量名称使用'like'操作历史变量实例。

可以使用通用的 分页和排序查询参数 。

   


Table 15.194.列出历史变量实例 - 响应码

响应码描述
200表示获得了历史变量实例。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
  "data": [
    {
      "id" : "14",
      "processInstanceId" : "5",
      "processInstanceUrl" : "http://localhost:8182/history/historic-process-instances/5",
      "taskId" : "6",
      "variable" : {
        "name" : "myVariable",
        "variableScope", "global",
        "value" : "test"
      }
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

查询历史变量实例

POST query/historic-variable-instances

请求体:

{
  "processDefinitionId" : "oneTaskProcess%3A1%3A4",
  ...

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

所有支持的JSON参数字段和获得历史变量实例集合完全一样,但是传递的是JSON参数,而不是URL参数,这样可以支持更高级的参数,同时避免请求uri过长。除此之外,查询支持基于流程变量查询。 variables属性是一个json数组,包含此处描述的格式。

Table 15.195.查询历史变量实例 - 响应码

响应码描述
200表示请求成功,并返回任务。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
  "data": [
    {
      "id" : "14",
      "processInstanceId" : "5",
      "processInstanceUrl" : "http://localhost:8182/history/historic-process-instances/5",
      "taskId" : "6",
      "variable" : {
        "name" : "myVariable",
        "variableScope", "global",
        "value" : "test"
      }
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

获取历史任务实例变量的二进制值

GET history/historic-variable-instances/{varInstanceId}/data

Table 15.196.获取历史任务实例变量的二进制值 - 响应码

响应码描述
200表示找到了变量实例,并返回了请求的变量数据。
404表示找不到变量实例,或找不到对应名称的变量实例,或变量不包含合法的二进制流。状态信息包含了详细信息。


成功响应体: 响应体包含了变量的二进制值。当类型为 binary时,无论请求的accept-type头部设置了什么值,响应的content-type都为application/octet-stream。当类型为 serializable时, content-type为application/x-java-serialized-object

获取历史细节

GET history/historic-detail

Table 15.197.获取历史细节 - URL参数

参数是否必填数据描述
idString历史细节的id。
processInstanceIdString历史细节的流程实例id。
executionIdString历史细节的分支id。
activityInstanceIdString历史细节的活动实例id。
taskIdString历史细节的任务id。
selectOnlyFormPropertiesBoolean表示结果中只返回FormProperties。
selectOnlyVariableUpdatesBoolean表示结果中只返回变量更新信息。

可以使用通用的 分页和排序查询参数 。

   


Table 15.198.获取历史细节 - 响应码

响应码描述
200表示返回了查询的历史细节。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
  "data": [
    {
      "id" : "26",
      "processInstanceId" : "5",
      "processInstanceUrl" : "http://localhost:8182/history/historic-process-instances/5",
      "executionId" : "6",
      "activityInstanceId", "10",
      "taskId" : "6",
      "taskUrl" : "http://localhost:8182/history/historic-task-instances/6",
      "time" : "2013-04-17T10:17:43.902+0000",
      "detailType" : "variableUpdate",
      "revision" : 2,
      "variable" : {
        "name" : "myVariable",
        "variableScope", "global",
        "value" : "test"
      },
      "propertyId", null,
      "propertyValue", null
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

查询历史细节

POST query/historic-detail

请求体:

{
  "processInstanceId" : "5",
}

所有支持的JSON参数字段和获得历史变量实例集合完全一样,但是传递的是JSON参数,而不是URL参数,这样可以支持更高级的参数,同时避免请求uri过长。

Table 15.199.查询历史细节 - 响应码

响应码描述
200表示请求成功,并返回了历史细节。
400表示传递了错误格式的参数。状态信息包含了详细信息。


成功响应体:

{
  "data": [
    {
      "id" : "26",
      "processInstanceId" : "5",
      "processInstanceUrl" : "http://localhost:8182/history/historic-process-instances/5",
      "executionId" : "6",
      "activityInstanceId", "10",
      "taskId" : "6",
      "taskUrl" : "http://localhost:8182/history/historic-task-instances/6",
      "time" : "2013-04-17T10:17:43.902+0000",
      "detailType" : "variableUpdate",
      "revision" : 2,
      "variable" : {
        "name" : "myVariable",
        "variableScope", "global",
        "value" : "test"
      },
      "propertyId", null,
      "propertyValue", null
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

获取历史细节变量的二进制数据

GET history/historic-detail/{detailId}/data

Table 15.200.获取历史细节变量的二进制数据 - 响应码

响应码描述
200表示找到了历史细节实例,并返回了请求的变量数据。
404表示找不到历史细节实例,或历史细节实例不包含指定名称的变量,或变量不包含合法的二进制流。状态信息包含了详细信息。


成功响应体: 响应体包含了变量的二进制值。当类型为 binary时,无论请求的accept-type头部设置了什么值,响应的content-type都为application/octet-stream。当类型为 serializable时, content-type为application/x-java-serialized-object

表单

获取表单数据

GET form/form-data

Table 15.201.获取表单数据 - URL参数

参数是否必填数据描述
taskId是(如果没有processDefinitionId)String获取表单数据需要对应的任务id。
processDefinitionId是(如果没有taskId)String获取startEvent表单数据需要对应的流程定义id。


Table 15.202.获取表单数据 - 响应码

响应码描述
200表示返回了查询的表单数据。
404表示找不到表单数据。


成功响应体:

{
  "data": [
    {
      "formKey" : null,
      "deploymentId" : "2",
      "processDefinitionId" : "3",
      "processDefinitionUrl" : "http://localhost:8182/repository/process-definition/3",
      "taskId" : "6",
      "taskUrl" : "http://localhost:8182/runtime/task/6",
      "formProperties" : [
        {
          "id" : "room",
          "name" : "Room",
          "type" : "string",
          "value" : null,
          "readable" : true,
          "writable" : true,
          "required" : true,
          "datePattern" : null,
          "enumValues" : [
            {
              "id" : "normal",
              "name" : "Normal bed"
            },
            {
              "id" : "kingsize",
              "name" : "Kingsize bed"
            },
          ]
        }
      ]
    }
  ],
  "total": 1,
  "start": 0,
  "sort": "name",
  "order": "asc",
  "size": 1
}

提交任务表单数据

POST form/form-data

任务表单的请求体:

{
  "taskId" : "5",
  "properties" : [
    {
      "id" : "room",
      "value" : "normal"
    }
  ]
}

startEvent表单的请求体:

{
  "processDefinitionId" : "5",
  "businessKey" : "myKey", (optional)
  "properties" : [
    {
      "id" : "room",
      "value" : "normal"
    }
  ]
}

Table 15.203.提交任务表单数据 - 响应码

响应码描述
200表示请求成功,并提交了表单数据。
400表示传递了错误格式的参数。状态信息包含了详细信息。


startEvent表单数据的成功响应体(任务表单数据没有响应):

{
  "id" : "5",
  "url" : "http://localhost:8182/history/historic-process-instances/5",
  "businessKey" : "myKey",
  "suspended", false,
  "processDefinitionId" : "3",
  "processDefinitionUrl" : "http://localhost:8182/repository/process-definition/3",
  "activityId" : "myTask"
}

数据库表

表列表

GET management/tables

Table 15.204.表列表 - 响应码

响应码描述
200表示请求成功。


成功响应体:

[
   {
      "name":"ACT_RU_VARIABLE",
      "url":"http://localhost:8182/management/tables/ACT_RU_VARIABLE",
      "count":4528
   },
   {
      "name":"ACT_RU_EVENT_SUBSCR",
      "url":"http://localhost:8182/management/tables/ACT_RU_EVENT_SUBSCR",
      "count":3
   },

   ...

]

获得一张表

GET management/tables/{tableName}

Table 15.205.获得一张表 - URL参数

参数是否必须描述
tableNameString获取表的名称。


成功响应体:

{
      "name":"ACT_RE_PROCDEF",
      "url":"http://localhost:8182/management/tables/ACT_RE_PROCDEF",
      "count":60
}

Table 15.206.获得一张表 - 响应码

响应码描述
200表示表存在,并返回了表的记录数。
404表示表不存在。


获得表的列信息

GET management/tables/{tableName}/columns

Table 15.207.获得表的列信息 - URL参数

参数是否必须描述
tableNameString获取表的名称。


成功响应体:

{
   "tableName":"ACT_RU_VARIABLE",
   "columnNames":[
      "ID_",
      "REV_",
      "TYPE_",
      "NAME_",
      ...
   ],
   "columnTypes":[
      "VARCHAR",
      "INTEGER",
      "VARCHAR",
      "VARCHAR",
      ...
   ]
}

Table 15.208.获得表的列信息 - 响应码

响应码描述
200表示表存在,并返回了表的列信息。
404表示表不存在。


获得表的行数据

GET management/tables/{tableName}/data

Table 15.209.获得表的行数据 - URL参数

参数是否必须描述
tableNameString获取表的名称。


Table 15.210.获得表的行数据 - URL参数

参数是否必须描述
startInteger从哪一行开始获取。默认为0。
sizeInteger获取行数,从start开始。默认为10。
orderAscendingColumnString对结果行进行排序的字段,正序。
orderDescendingColumnString对结果行进行排序的字段,倒序。


成功响应体:

{
  "total":3,
   "start":0,
   "sort":null,
   "order":null,
   "size":3,

   "data":[
      {
         "TASK_ID_":"2",
         "NAME_":"var1",
         "REV_":1,
         "TEXT_":"123",
         "LONG_":123,
         "ID_":"3",
         "TYPE_":"integer"
      },
      ...
   ]

}

Table 15.211.获得表的行数据 - 响应码

响应码描述
200表示表存在,并返回了行数据。
404表示表不存在。


引擎

获得引擎属性

GET management/properties

返回引擎内部使用的只读属性。

成功响应体:

{
   "next.dbid":"101",
   "schema.history":"create(5.14)",
   "schema.version":"5.14"
}

Table 15.212.获得引擎属性 - 响应码

响应码描述
200表示返回了属性。


获得引擎信息

GET management/engine

获得REST服务使用的引擎的只读信息。

成功响应体:

{
   "name":"default",
   "version":"5.14",
   "resourceUrl":"file://activiti/activiti.cfg.xml",
   "exception":null
}

Table 15.213.获得引擎信息 - 响应码

响应码描述
200表示返回了引擎信息。


运行时

接收信号事件

POST runtime/signals

提醒引擎,接收了一个信号事件,不会特别针对某个流程。

JSON体:

{
  "signalName": "My Signal",
  "tenantId" : "execute",
  "async": true,
  "variables": [
      {"name": "testVar", "value": "This is a string"},
      ...
  ]
}

Table 15.214.接收信号事件 - JSON体参数

参数描述必填
signalNamesignal的名称
tenantId信号事件应该执行在的tenantId
async如果为 true,处理信号应该是异步的。返回码为 202 - Accepted 表示请求已接受,但尚未执行。如果为 false,会立即处理信号,结果为 (200 - OK) 会在成功完成后返回。如果忽略,默认为 false
variables变量数组(通用的参数格式)用来向信号传递载荷。不能把 async 设置为 true,它会导致返回错误。


成功响应体:

Table 15.215.接收信号事件 - 响应码

响应码描述
200表示已经处理了信号,没有发生错误。
202表示信号处理已经进入一个异步作业的队列,准备执行了。
400信号没有处理。缺少信号名,或同时使用了变量和异步,这是不允许的。响应体包含了错误的额外信息。


作业

获取一个作业

GET management/jobs/{jobId}

Table 15.216.获取一个作业 - URL参数

参数是否必须描述
jobIdString获取的作业id。


成功响应体:

{
   "id":"8",
   "url":"http://localhost:8182/management/jobs/8",
   "processInstanceId":"5",
   "processInstanceUrl":"http://localhost:8182/runtime/process-instances/5",
   "processDefinitionId":"timerProcess:1:4",
   "processDefinitionUrl":"http://localhost:8182/repository/process-definitions/timerProcess%3A1%3A4",
   "executionId":"7",
   "executionUrl":"http://localhost:8182/runtime/executions/7",
   "retries":3,
   "exceptionMessage":null,
   "dueDate":"2013-06-04T22:05:05.474+0000",
   "tenantId":null
}

Table 15.217.获取一个作业 - 响应码

响应码描述
200表示作业存在,并成功返回。
404表示作业不存在。


删除作业

DELETE management/jobs/{jobId}

Table 15.218.删除作业 - URL参数

参数是否必须描述
jobIdString期望删除的作业id。.


Table 15.219.删除作业 - 响应码

响应码描述
204表示找到了作业,并成功删除。响应体为空。
404表示找不到作业。


执行作业

POST management/jobs/{jobId}

请求JSON体:

{
  "action" : "execute"
}

Table 15.220.执行作业 - 请求的JSON参数

参数描述是否必填
action执行的操作。只支持execute


Table 15.221.执行作业 - 响应码

响应码描述
204表示成功执行了操作。响应体为空。
404表示找不到作业。
500表示执行作业时出现了异常。状态描述包含了错误的详细信息。如果需要可以后续获取错误堆栈。


获得作业的异常堆栈

GET management/jobs/{jobId}/exception-stracktrace

Table 15.222.获得作业的异常堆栈 - URL参数

参数描述是否必填
jobId获取堆栈的作业id。


Table 15.223.获得作业的异常堆栈 - 响应码

响应码描述
200表示找到了作业,并返回了堆栈。响应包含了原始堆栈,Content-Type永远是text/plain
404表示找不到作业,或作业不包含错误堆栈。状态描述包含错误的详细信息。


获得作业列表

GET management/jobs

Table 15.224.获得作业列表 - URL参数

参数描述类型
id只返回指定id的作业。String
processInstanceId只返回指定id流程一部分的作业。String
executionId只返回指定id分支一部分的作业。String
processDefinitionId只返回指定流程定义id的作业。String
withRetriesLeft如果为 true,只返回尝试剩下的。如果为false,会忽略此参数。Boolean
executable如果为 true,只返回可执行的作业。如果为false,会忽略此参数。Boolean
timersOnly如果为 true,只返回类型为定时器的作业。如果为false,会忽略此参数。不能与'messagesOnly'一起使用。Boolean
messagesOnly如果为 true,只返回类型为消息的作业。如果为false,会忽略此参数。不能与'timersOnly'一起使用。Boolean
withException如果为 true,只返回执行时出现了异常的作业。如果为false,会忽略此参数。Boolean
dueBefore只返回在指定时间前到期的作业。如果使用了这个参数,就不会返回没有设置持续时间的作业。Date
dueAfter只返回在指定时间后到期的作业。如果使用了这个参数,就不会返回没有设置持续时间的作业。Date
exceptionMessageOnly return jobs with the given exception messageString
tenantIdString只返回指定tenantId的作业。
tenantIdLikeString只返回与指定tenantId匹配的作业。
withoutTenantIdBoolean如果为 true,只返回未设置tenantId的作业。如果为 false,会忽略 withoutTenantId 参数。
sort对结果进行排序的字段,可以是 id, dueDate, executionId, processInstanceIdretriestenantId其中之一。String 

可以使用通用的 分页和排序查询参数 。

   


成功响应体:

{
   "data":[
      {
         "id":"13",
         "url":"http://localhost:8182/management/jobs/13",
         "processInstanceId":"5",
         "processInstanceUrl":"http://localhost:8182/runtime/process-instances/5",
         "processDefinitionId":"timerProcess:1:4",
         "processDefinitionUrl":"http://localhost:8182/repository/process-definitions/timerProcess%3A1%3A4",
         "executionId":"12",
         "executionUrl":"http://localhost:8182/runtime/executions/12",
         "retries":0,
         "exceptionMessage":"Can't find scripting engine for 'unexistinglanguage'",
         "dueDate":"2013-06-07T10:00:24.653+0000"
      },

      ...
   ],
   "total":2,
   "start":0,
   "sort":"id",
   "order":"asc",
   "size":2
}

Table 15.225.获得作业列表 - 响应码

响应码描述
200表示返回了作业。
400表示在url参数中使用了非法的值,或参数中同时使用了'messagesOnly''timersOnly'。状态描述包含了错误的详细信息。


用户

获得一个用户

GET identity/users/{userId}

Table 15.226.获得一个用户 - URL参数

参数是否必须描述
userIdString获取用户的id。


成功响应体:

{
   "id":"testuser",
   "firstName":"Fred",
   "lastName":"McDonald",
   "url":"http://localhost:8182/identity/users/testuser",
   "email":"no-reply@activiti.org"
}

Table 15.227.获得一个用户 - 响应码

响应码描述
200表示用户存在,并成功返回。
404表示用户不存在。


获取用户列表

GET identity/users

Table 15.228.获取用户列表 - URL参数

参数描述类型
id只返回指定id的用户。String
firstName只返回指定firstname的用户。String
lastName只返回指定lastname的用户。String
email只返回指定email的用户。String
firstNameLike只返回firstname与指定值匹配的用户。使用%通配符。String
lastNameLike只返回lastname与指定值匹配的用户。使用%通配符。String
emailLike只返回email与指定值匹配的用户。使用%通配符。String
memberOfGroup只返回指定组成员的用户。String
potentialStarter只返回指定流程定义id的默认启动人。String
sort结果排序的字段,应该是id, firstName, lastnameemail其中之一。String

可以使用通用的 分页和排序查询参数 。

  


成功响应体:

{
   "data":[
      {
         "id":"anotherUser",
         "firstName":"Tijs",
         "lastName":"Barrez",
         "url":"http://localhost:8182/identity/users/anotherUser",
         "email":"no-reply@alfresco.org"
      },
      {
         "id":"kermit",
         "firstName":"Kermit",
         "lastName":"the Frog",
         "url":"http://localhost:8182/identity/users/kermit",
         "email":null
      },
      {
         "id":"testuser",
         "firstName":"Fred",
         "lastName":"McDonald",
         "url":"http://localhost:8182/identity/users/testuser",
         "email":"no-reply@activiti.org"
      }
   ],
   "total":3,
   "start":0,
   "sort":"id",
   "order":"asc",
   "size":3
}

Table 15.229.获取用户列表 - 响应码

响应码描述
200表示成功返回了请求的用户。


更新用户

PUT identity/users/{userId}

请求JSON体:

{
  "firstName":"Tijs",
  "lastName":"Barrez",
  "email":"no-reply@alfresco.org",
  "password":"pass123"
}

所有请求值都是可选的。比如,你可以在请求体JSON对象中只包含'firstName'属性,只更新用户的firstName,其他值都不受影响。当包含的属性设置为null,用户的属性会被更新为null,比如:{"firstName" : null}会清空用户的firstName。

Table 15.230.更新用户 - 响应码

响应码描述
200表示成功更新了用户。
404表示找不到用户。
409表示请求的用户被其他地方更新了。


成功响应体: 参考 identity/users/{userId}的响应。

创建用户

POST identity/users

请求JSON体:

{
  "id":"tijs",
  "firstName":"Tijs",
  "lastName":"Barrez",
  "email":"no-reply@alfresco.org",
  "password":"pass123"
}

Table 15.231.创建用户 - 响应码

响应码描述
201表示成功创建了用户。
400表示没有传用户的id。


成功响应体: 参考 identity/users/{userId}的响应。

删除用户

DELETE identity/users/{userId}

Table 15.232.删除用户 - URL参数

参数是否必填数据描述
userIdString期望删除的用户id。


Table 15.233.删除用户 - 响应码

响应码描述
204表示找到了用户,并成功删除了。响应体为空。
404表示找不到用户。


获取用户图片

GET identity/users/{userId}/picture

Table 15.234.获取用户图片 - URL参数

参数是否必填数据描述
userIdString期望获得图片的用户id。


响应体: 响应体包含了演示图片数据,展示用户的图片。响应的Content-Type对应着创建图片时设置的mimeType。

Table 15.235.获取用户图片 - 响应码

响应码描述
200表示找到了用户和图片,图片在响应体中返回。
404表示找不到用户,或用户没有图片。状态描述包含错误的详细信息。


更新用户图片

GET identity/users/{userId}/picture

Table 15.236.更新用户图片 - URL参数

参数是否必填数据描述
userIdString获得图片对应的用户id。


请求体: 请求应该是multipart/form-data类型。应该只有一个文件区域,包含源码的二进制内容。除此之外,需要提供以下表单域:

  • mimeType:上传的图片的mime-type。如果省略,默认会使用 image/jpeg 作为图片的mime-type。

Table 15.237.更新用户图片 - 响应码

响应码描述
200表示找到了用户,并更新了图片。响应体为空。
404表示找不到用户。


列出用户列表

PUT identity/users/{userId}/info

Table 15.238.列出用户列表 - URL参数

参数是否必填数据描述
userIdString获取信息的用户id。


响应体:

[
   {
      "key":"key1",
      "url":"http://localhost:8182/identity/users/testuser/info/key1"
   },
   {
      "key":"key2",
      "url":"http://localhost:8182/identity/users/testuser/info/key2"
   }
]

Table 15.239.列出用户列表 - 响应码

响应码描述
200表示找到了用户,并返回了信息列表(key和url)。
404表示找不到用户。


获取用户信息

GET identity/users/{userId}/info/{key}

Table 15.240.获取用户信息 - URL参数

参数是否必填数据描述
userIdString获取信息的用户id。
keyString希望获取的用户信息的key。


响应体:

{
   "key":"key1",
   "value":"Value 1",
   "url":"http://localhost:8182/identity/users/testuser/info/key1"
}

Table 15.241.获取用户信息 - 响应码

响应码描述
200表示找到了用户和指定key的用户信息。
404表示找不到用户,并用户没有指定key的信息。状态描述中包含了错误相关的详细信息。


更新用户的信息

PUT identity/users/{userId}/info/{key}

Table 15.242.更新用户的信息 - URL参数

参数是否必填数据描述
userIdString期望更新的信息对应的用户id。
keyString期望更新的用户信息的key。


请求体:

{
   "value":"The updated value"
}

响应体:

{
   "key":"key1",
   "value":"The updated value",
   "url":"http://localhost:8182/identity/users/testuser/info/key1"
}

Table 15.243.更新用户的信息 - 响应码

响应码描述
200表示找到了用户,并更新了信息。
400表示请求体中缺少数据。
404表示找到用户,或找不到指定key的用户信息。状态描述中包含了错误相关的详细信息。


创建用户信息条目

POST identity/users/{userId}/info

Table 15.244.创建用户信息条目 - URL参数

参数是否必填数据描述
userIdString期望创建信息的用户id。


请求体:

{
   "key":"key1",
   "value":"The value"
}

响应体:

{
   "key":"key1",
   "value":"The value",
   "url":"http://localhost:8182/identity/users/testuser/info/key1"
}

Table 15.245.创建用户信息条目 - 响应码

响应码描述
201表示找到了用户,并创建了信息。
400表示请求体中缺少key或value。状态描述中包含了错误相关的详细信息。
404表示找不到用户。
409表示用户已经有了一条指定key的信息条目,可以更新资源实例(PUT)。


删除用户的信息

DELETE identity/users/{userId}/info/{key}

Table 15.246.删除用户的信息 - URL参数

参数是否必填数据描述
userIdString希望删除信息的用户id。
keyString期望删除的用户信息的key。


Table 15.247.删除用户的信息 - 响应码

响应码描述
204表示找到了用户和信息,并删除了指定key的条目。响应体为空。
404表示找不到用户,或用户不包含指定key的信息。状态描述中包含了错误相关的详细信息。


群组

获得群组

GET identity/groups/{groupId}

Table 15.248.获得群组 - URL参数

参数是否必须描述
groupIdString希望获得的群组id。


成功响应体:

{
   "id":"testgroup",
   "url":"http://localhost:8182/identity/groups/testgroup",
   "name":"Test group",
   "type":"Test type"
}

Table 15.249.获得群组 - 响应码

响应码描述
200表示群组存在,并成功返回。
404表示群组不存在。


获取群组列表

GET identity/groups

Table 15.250.获取群组列表 - URL参数

参数描述类型
id只返回指定id的群组。String
name只返回指定名称的群组。String
type只返回指定类型的群组。String
nameLike只返回名称与指定值匹配的群组使用%作为通配符。String
member只返回成员与指定用户ing相同的群组。String
potentialStarter只返回成员作为指定id流程定义的潜在启动者的劝阻。String
sort结果排序的字段。应该是 id, nametype其中之一。String

可以使用通用的 分页和排序查询参数 。

  


成功响应体:

{
   "data":[
     {
        "id":"testgroup",
        "url":"http://localhost:8182/identity/groups/testgroup",
        "name":"Test group",
        "type":"Test type"
     },

      ...
   ],
   "total":3,
   "start":0,
   "sort":"id",
   "order":"asc",
   "size":3
}

Table 15.251.获取群组列表 - 响应码

响应码描述
200表示返回了请求的群组。


更新群组

PUT identity/groups/{groupId}

请求JSON体:

{
   "name":"Test group",
   "type":"Test type"
}

所有请求值都是可选的。比如,你可以在请求体JSON对象中只包含'name'属性,只更新群组的名称,其他属性都不会受到英系那个。如果把一个属性设置为null,群组的数据就会更新为null。

Table 15.252.更新群组 - 响应码

响应码描述
200表示成功更新了群组。
404表示找不到请求的群组。
409表示请求的群组正在被其他地方更新。


成功响应体: 参考identity/groups/{groupId}的响应。

创建群组

POST identity/groups

请求JSON体:

{
   "id":"testgroup",
   "name":"Test group",
   "type":"Test type"
}

Table 15.253.创建群组 - 响应码

响应码描述
201表示创建了群组。
400表示丢失了群组的id。


成功响应体: 参考 identity/groups/{groupId}的响应。

删除群组

DELETE identity/groups/{groupId}

Table 15.254.删除群组 - URL参数

参数是否必填数据描述
groupIdString期望删除的群组id。


Table 15.255.删除群组 - 响应码

响应码描述
204表示找到了群组,并成功删除了。响应体为空。
404表示找不到请求的群组。


获取群组的成员

identity/groups/members不允许使用GET。使用 identity/users?memberOfGroup=sales URL来获得某个群组下的所有成员。

为群组添加一个成员

POST identity/groups/{groupId}/members

Table 15.256.为群组添加一个成员 - URL参数

参数是否必填数据描述
groupIdString期望添加成员的群组id。


请求JSON体:

{
   "userId":"kermit"
}

Table 15.257.为群组添加一个成员 - 响应码

响应码描述
201表示找到了群组,并添加了成员。
404表示请求体中未包含userId。
404表示找不到请求的群组。
409表示请求的用户已经是群组的一员了。


响应体:

{
   "userId":"kermit",
   "groupId":"sales",
    "url":"http://localhost:8182/identity/groups/sales/members/kermit"
}

删除群组的成员

DELETE identity/groups/{groupId}/members/{userId}

Table 15.258.删除群组的成员 - URL参数

参数是否必填数据描述
groupIdString期望删除成员的群组id。
userIdString期望删除的用户id。


Table 15.259.删除群组的成员 - 响应码

响应码描述
204表示找到了群组,并删除了成员。响应体为空。
404表示找不到请求的群组,或用户不是群组的成员。状态描述中包含了错误相关的详细信息。


响应体:

{
   "userId":"kermit",
   "groupId":"sales",
    "url":"http://localhost:8182/identity/groups/sales/members/kermit"
}

传统REST - 通用方法

下面的章节中包含了传统的REST-api,它们在5.14版本中已经废弃了。REST url不会在未来删除,但是也不会维护了。未来的所有改进都会放到新REST API中。

Activiti包含了一套引擎的REST API,可以把activiti-rest.war部署到像Apache Tomcat一样的Servlet容器里。 默认Activiti引擎会连接一个单独运行的h2数据库。你可以修改WEB-INF/classes目录下的db.properties文件来修改数据库配置。 REST API使用JSON格式(http://www.json.org),内部使用Restlet构建(http://www.restlet.org)。

每个REST API调用都会使用单独的校验级别,你必须登录到系统中,来调用REST API(除了/login服务)。 认证是通过Basic HTTP认证实现的,如果你登录为管理员(比如kermit), 你应该可以访问下面介绍的所有接口。

API遵守着通常的REST API约定,对读取操作使用GET,对创建对象使用POST, 对更新和执行操作使用PUT,对删除对象使用DELETE。在执行应先过很多次对象的操作时, 使用POST来执行这些操作来保证传递的参数不受限制。 使用POST的原因是HTTP DELETE方法不允许使用请求体。 使用DELETE的调用,理论上,它的请求体会被代理剔除。 为了保证不发生这种事情,我们使用了POST,虽然PUT也可以更新多个对象, 为了保持一致。

所有rest调用都使用"application/json"作为Content-Type(除了上传请求使用"multipart/form-data")。

执行REST调用的url基础地址是http://localhost:8080/activiti-rest/service/。 比如,列出引擎中流程定义的方法,在你的浏览器中应该是: http://localhost:8080/activiti-rest/service/process-definitions

你就也可以使用curl来通过REST API执行查询,比如:

curl --basic --user kermit:kermit http://localhost:8080/activiti-rest/service/tasks?assignee=kermit

请参考下面的描述,来了解哪些REST API是目前可用的。 请参考"API"章节作为,“一行的注释”,来了解核心API的功能,实现REST API的调用。

资源

上传发布

上传并安装发布.bpmn20.xml, .bpmn, .bar 或 .zip格式,使用普通的“html表单上传”(enctype=multipart/form-data) 换句话说不是json请求。如果发布操作成功,发布信息会包含在返回的响应中。

  • 请求: POST /deployment

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getRepositoryService().createDeployment().name(fileName).deploymentBuilder.deploy()

  • 响应:

    {
      "id": "10",
      "name": "activiti-examples.bar",
      "deploymentTime": "2010-10-13T14:54:26.750+02:00",
      "category": "examples"
    }

获取发布

返回分页发布列表,可以通过"id", "name" 或 "deploymentTime"排序。

  • 请求: GET /deployments?start={start=0}&size={size=10}&sort={sort=id}&order={order=asc}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getRepositoryService().createDeploymentQuery().listPage()

  • 响应:

    {
      "data": [
        {
          "id": "10",
          "name": "activiti-examples.bar",
          "deploymentTime": "2010-10-13T14:54:26.750+02:00",
          "category": "examples"
        }
      ],
      "total": 1,
      "start": 0,
      "sort": "id",
      "order": "asc",
      "size": 1
    }

获取发布资源

返回发布的所有资源。 实例: /deployment/10/resources

  • 请求: GET /deployment/{deploymentId}/resources

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getRepositoryService().getDeploymentResourceNames(deploymentId)

  • 响应:

    {
      "id": "10",
      "name": "activiti-examples.bar",
      "deploymentTime": "2010-10-13T14:54:26.750+02:00",
      "category": "examples",
      "resources": ["resource1", "resource2"]
    }

获取发布的一个资源

获取发布的一个资源。 实例: /deployment/10/resource/org/activiti/examples/bpmn/usertask/FinancialReportProcess.bpmn20.xml

  • 请求: GET /deployment/{deploymentId}/resource/{resourceName}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getRepositoryService().getResourceAsStream(deploymentId, resourceName)

  • 响应:

    比如,一个.bpmn20.xml文件,一个图片或其他发布资源包含的文件类型。

删除发布

删除一个发布。

  • 请求: DELETE /deployment/{deploymentId}?cascade={cascade?}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getRepositoryService().deleteDeployment(deploymentId)

  • 响应:

    {
      "success": true
    }

删除发布

删除多个发布。

  • 请求: POST /deployments/delete?cascade={cascade?}

    {
    "deploymentIds": [ "10", "11" ]
    }

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getRepositoryService().deleteDeployment(deploymentId)

  • 响应:

    {
      "success": true
    }

引擎

获取流程引擎

返回流程引擎安装细节。如果启动时出现了问题, 错误的细节会包含在响应的"exception"属性中。

  • 请求: GET /process-engine

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName)

  • 响应:

    {
      "name": "default",
      "resourceUrl": "jar:file:\//<path-to-deployment>\/activiti-cfg.jar!\/activiti.properties",
      "exception": null,
      "version": "5.11"
    }

流程

流程定义列表

返回发布的流程定义的信息,可以通过"id", "name", "version" 或 "deploymentId"排序。BPMN2.0 XML的流程图的名字包含在"resourceName"属性中, 结合"deploymentId"属性,可以通过上面的获取发布资源REST API调用获得。

  • 分页请求: GET /process-definitions?start={start=0}&size={size=10}&sort={sort=id}&order={order=asc}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getRepositoryService().createProcessDefinitionQuery().listPage()

  • 分页响应:

    {
      "data": [
        {
          "id": "financialReport:1",
          "key": "financialReport",
          "version": 1,
          "name": "Monthly financial report",
          "resourceName": "org/activiti/examples/bpmn/usertask/FinancialReportProcess.bpmn20.xml",
          "diagramResourceName": "org/activiti/examples/bpmn/usertask/FinancialReportProcess.png",
          "deploymentId": "10",
          "startFormResourceKey": null,
          "isGraphicNotationDefined": true
        }
      ],
      "total": 1,
      "start": 0,
      "sort": "id",
      "order": "asc",
      "size": 1
    }

获得流程定义表单属性

返回流程定义表单属性。

  • 请求: GET /process-definition/{processDefinitionId}/properties

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getFormService().getStartFormData(processDefinitionId)

  • 响应:

                    "data": [
        {
          "id": "fullName",
          "name": "Full name",
          "value": "${name}",
          "type": "String",
          "required": false,
          "readable": true,
          "writeable": true
        }
      ]
                 

获得流程定义表单资源

返回流程定义表单。

  • 请求: GET /process-definition/{processDefinitionId}/form

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getTaskService().getRenderedStartFormById(processDefinitionId)

  • 响应:

    <user-defined-response>

获取流程定义图

如果存在,就返回一个流程定义的PNG图。

  • 请求: GET /process-definition/{processDefinitionId}/diagram

  • API: repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), processDefinition.getDiagramResourceName());

  • 响应:

    流程定义的PNG图。

启动流程实例

根据流程定义创建流程实例,返回新创建流程实例的细节信息。 可以使用请求体对象传递额外的变量(通过表单)。换句话说, 就是"processDefinitionId"属性旁边的属性。

注意如果提交的值为true(不是"true"),会被当做Boolean,即使没有使用描述符。 这与数字的处理方式相同。比如,123会当做整数。 "123"会当做字符串(除非使用描述符定义)。

  • 请求: POST /process-instance

    {
      "processDefinitionId":"financialReport:1:1700",
      "businessKey":"order-4711"
    }

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getRuntimeService().startProcessInstanceById(processDefinitionId[, businessKey][, variables])

  • 响应:

    {
      "id": "217",
      "processDefinitionId": "financialReport:1:1700",
      "businessKey": "order-4711",
      "processInstanceId": "217"
    }

流程实例列表

返回活动的流程实例细节,可以通过"id", "startTime", "businessKey" 或 "processDefinitionId"排序。你可以使用"processDefinitionId" and "businessKey"进行查询。

  • 分页请求: GET /process-instances?start={start=0}&size={size=10}&sort={sort=id}&order={order=asc}&businessKey={businessKey}&processDefinitionId={processDefinitionId}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getHistoryService().createHistoricProcessInstanceQuery().xxx.listPages()

  • 分页响应:

      {
        "data": [
          {
            "id": "2",
            "processDefinitionId": "financialReport:1",
            "businessKey": "55",
            "startTime": "2010-10-13T14:54:26.750+02:00",
            "startUserId": "kermit"
          }
        ],
        "total": 1,
        "start": 0,
        "sort": "id",
        "order": "asc",
        "size": 1
      }

获得流程实例细节

返回指定流程实例的所有细节。可以是运行中或已结束的流程实例。

  • 请求: GET /process-instance/{processInstanceId}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getHistoryService().createHistoricProcessInstanceQuery().processInstanceId(..).singleResult()

  • 响应:

      {
        "id": "2",
        "processDefinitionId": "financialReport:1",
        "businessKey": "55",
        "startTime": "2010-10-13T14:54:26.750+02:00",
        "startActivityId": "startFinancialAnalysis",
        "startUserId": "kermit",
        "completed": false,
        "tasks": [
          {
            "taskId": "3",
            "taskName": "Analyze report",
            "owner": null,
            "assignee": "Kermit",
            "startTime": "2010-10-13T14:53:26.750+02:00",
            "completed": false
          }
        ],
        "activities": [
          {
            "activityId": "4",
            "activityName": "Get report",
            "activityType": "ServiceTask",
            "startTime": "2010-10-13T14:53:25.750+02:00",
            "completed": true,
            "startTime": "2010-10-13T14:53:25.950+02:00",
            "duration": 200
          }
        ],
        "variables": [
          {
            "variableName": "reportName",
            "variableValue": "classified.pdf",
          }
        ]
        "historyVariables": [
          {
            "variableName": "reportName",
            "variableValue": "classified.pdf",
            "variableType": "String",
            "revision": 1,
            "time": "2010-10-13T14:53:26.750+02:00"
          }
        ]

      }

获得流程实例图

返回高亮的活动流程PNG图。如果流程定义未包含DI信息就会返回404。

  • 请求: GET /process-instance/{processInstanceId}/diagram

  • API: ProcessDiagramGenerator.generateDiagram(pde, "png", getRuntimeService().getActiveActivityIds(processInstanceId));

  • 响应:

    返回高亮的活动流程PNG图。

获得流程实例的任务

返回运行中流程实例的任务列表。

  • 请求: GET /process-instance/{processInstanceId}/tasks

  • API: taskService.createTaskQuery().processInstanceId(processInstanceId);

  • 分页响应:

    {
      "data": [
        {
          "id": "127",
          "name": "Handle vacation request",
          "description": "Vacation request by Kermit",
          "delegationState": "pending",
          "dueDate": "2010-10-13T14:54:26.750+02:00",
          "priority": 50,
          "assignee": null,
          "executionId": "118",
          "formResourceKey": "org/activiti/examples/taskforms/approve.form",
          "owner": "Kermit",
          "parentTaskId": "120",
          "processDefinitionId": "financialReport:1",
          "processInstanceId": "123",
          "taskDefinitionKey": "125"
        }
      ],
      "total": 1,
      "start": 0,
      "sort": "id",
      "order": "asc",
      "size": 1
    }

继续特定流程实例的活动(receiveTask)

继续一个活动分支(receiveTask)。

  • 请求: POST /process-instance/{processInstanceId}/signal

    {
      "activityId":"receiveTask",
      "variable1":"value",
      "variable2":"value"
    }

  • API: runtimeService.signal(execution.getId(), variables);

  • 响应:

    {
      "success": true
    }

触发特定流程实例的信号

向特定流程实例发送一个信号,会触发所有订阅的信号事件。可以通过请求体发送额外的变量。 如果你不想发送任何变量,可以使用空的请求体。

  • 请求: POST /process-instance/{processInstanceId}/event/{signalName}

    {
      "variable1":"value",
      "variable2":"value"
    }

  • API: runtimeService.signalEventReceived(signalName, execution.getId()[, variables]);

  • 响应:

    {
      "success": true
    }

任务

获得任务简介

为特定用户返回任务简介:分配给用户的任务数量,用户可以认领的未分配任务的数量, 用户作为成员的群组可以认领的未分配任务。

  • 请求: GET /tasks-summary?user={userId}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getTaskService().createTaskQuery().xxx().count()

  • 响应:

    {
      "assigned": {
        "total": 0
      },
      "unassigned": {
        "total": 1,
        "groups":
        {
          "accountancy": 1,
          "sales": 0,
          "engineering": 0,
          "management": 0
        }
      }
    }

任务列表

返回分页的任务列表,可以同构"id", "name", "description", "priority", "assignee", "executionId" 或 "processInstanceId"排序。列表必须基于特定角色的用户:负责人 (分配给用户的任务列表)或候选人(用户可以领取的任务列表)或候选群组 (用户作为成员的群组可以认领的任务列表)。如果任务通过"formResourceKey"属性指定了一个表单。 任务的表单可以通过获取任务表单REST API获得。

  • 分页请求: GET /tasks?[assignee={userId}|candidate={userId}|candidate-group={groupId}]&start={start=0}&size={size=10}&sort={sort=id}&order={order=asc}

  • 实例:

    curl --basic --user kermit:kermit http://localhost:8080/activiti-rest/service/tasks?assignee=kermit

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getTaskService().createTaskQuery().xxx().listPage()

  • 分页响应:

    {
      "data": [
        {
          "id": "127",
          "name": "Handle vacation request",
          "description": "Vacation request by Kermit",
          "delegationState": "pending",
          "dueDate": "2010-10-13T14:54:26.750+02:00",
          "priority": 50,
          "assignee": null,
          "executionId": "118",
          "formResourceKey": "org/activiti/examples/taskforms/approve.form",
          "owner": "Kermit",
          "parentTaskId": "120",
          "processDefinitionId": "financialReport:1",
          "processInstanceId": "123",
          "taskDefinitionKey": "125"
        }
      ],
      "total": 1,
      "start": 0,
      "sort": "id",
      "order": "asc",
      "size": 1
    }

获取任务

通过任务id获取任务的细节。

  • 请求: GET /task/{taskId}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getTaskService().createTaskQuery().taskId(taskId).singleResult()

  • 响应:

    {
          "id": "127",
          "name": "Handle vacation request",
          "description": "Vacation request by Kermit",
          "delegationState": "pending",
          "dueDate": "2010-10-13T14:54:26.750+02:00",
          "priority": 50,
          "assignee": null,
          "executionId": "118",
          "formResourceKey": "org/activiti/examples/taskforms/approve.form",
          "owner": "Kermit",
          "parentTaskId": "120",
          "processDefinitionId": "financialReport:1",
          "processInstanceId": "123",
          "taskDefinitionKey": "125",
          "subTaskList": [
            {
              "id": "129",
              "name": "Analyze request",
              "description": "Analyze request",
              "delegationState": "pending",
              "dueDate": "2010-10-13T14:54:26.750+02:00",
              "priority": 50,
              "assignee": null,
              "executionId": "118",
              "owner": "Kermit",
              "parentTaskId": "127"
            }
          ],
          "identityLinkList" : [
            {
              "type": "candidate",
              "userId": "Fozzie",
              "groupId": null
            }
          ],
          "attachmentList" : [
            {
              "id": "130",
              "name": "vacation_request.xls",
              "description": "Vacation request",
              "type": "application/pdf",
              "url": null
            }
          ]
    }

获取任务表单

获取任务表单。

  • 请求: GET /task/{taskId}/form

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getTaskService().getRenderedTaskForm(taskId)

  • 响应:

    <user-defined-response>

执行任务操作

对任务执行操作(认领,释放,分配或完成)。 对于“完成”操作的额外变量(通过表单)可以通过请求体传递。 要从表单读取更多变量,可以参考启动流程实例章节。

  • 请求: PUT /task/{taskId}/[claim|unclaim|complete|assign] 认领和释放不需要JSON体,对于完成你可以提供一些变量,分配必须使用userId。 例如,完成操作的请求体:

    {
          "variableName1": "variableValue1",
          "variableName2": "variableValue2"
    }

    例如,分配操作的请求体:

    {
          "userId": "newAssignee"
    }

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getTaskService().xxx(taskId ...)

  • 响应:

    {
      "success": true
    }

表单属性列表

返回运行中任务的表单的属性列表,由流程定义。

  • 请求: GET /form/{taskId}/properties

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getFormService().getTaskFormData(taskId).getFormProperties()

  • 响应:

    {
      "data": [
        {
          "id": "userName",
          "name": "User",
          "value": "foobar",
          "type": "string",
          "required": "true",
          "readable": "true",
          "writable": "true"
        }
    ]
    }

为任务添加一个附件

为任务实例添加一个附件。

  • 请求: PUT /task/{taskId}/attachment

    {}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getTaskService().createAttachment(...)

  • 响应:

            {
              "id": "130",
              "name": "vacation_request.xls",
              "description": "Vacation request",
              "type": "application/pdf",
              "url": null
            }

获得任务附件

返回任务附件

  • 请求: GET /attachment/{attachmentId}

  • API: taskService.getAttachment(attachmentId);

  • 响应:

    附件。

为任务添加一个url

为任务实例添加一个url

  • 请求: PUT /task/{taskId}/url

    {}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getTaskService().createAttachment(...)

  • 响应:

            {
              "id": "130",
              "name": "google.com",
              "description": "Good search sitet",
              "type": null,
              "url": "http://www.google.com"
            }

身份

登录

认证一个用户。如果用户和密码不匹配,会返回403. 如果认证成功,会返回200响应状态。

  • 请求: POST /login

    {
      "userId": "kermit",
      "password": "kermit"
    }

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getIdentityService().checkPassword(userId, password)

  • 响应:

    {
      "success": true
    }

获得用户

返回用户的细节。

  • 请求: GET /user/{userId}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getIdentityService().createUserQuery().userId(userId).singleResult();

  • 响应:

    {
      "id": "kermit",
      "firstName": "Kermit",
      "lastName": "the Frog",
      "email": "kermit@server.com"
    }

列出用户的群组

返回用户对应的群组分页列表,可以使用"id", "name" 或 "type"排序。

  • 分页请求: GET /user/{userId}/groups?start={start=0}&size={size=10}&sort={sort=id}&order={order=asc}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getIdentityService().xxx(userId)

  • 分页响应:

    {
      data: [
        {
          "id": "admin",
          "name": "System administrator",
          "type": "security-role"
        }
      ],
      "total": 1,
      "start": 0,
      "sort": "id",
      "order": "asc",
      "size": 1
    }

查询用户

返回用户列表,通过查询的文本搜索firstname和lastname。

  • 分页请求: GET /users?searchText=ker

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getIdentityService().createUserQuery().userFirstNameLike(searchText).list() ProcessEngines.getProcessEngine(configuredProcessEngineName).getIdentityService().createUserQuery().userLastNameLike(searchText).list()

  • 响应:

    {
      data: [
        {
          "id": "kermit",
          "firstName": "Kermit",
          "lastName": "the Frog",
          "email": "kermit@server.com"
        }
      ],
      "total": 1,
      "start": 0,
      "sort": "id",
      "order": "asc",
      "size": 1
    }

创建用户

创建一个新用户。

  • 请求: PUT /user

    {
      "id": "kermit",
      "firstName": "Kermit",
      "lastName": "the Frog",
      "email": "kermit@server.com",
      "password": "kermit"
    }

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getIdentityService().newUser(); ProcessEngines.getProcessEngine(configuredProcessEngineName).getIdentityService().saveUser();

  • 响应:

    {
      "success": true
    }

为群组添加用户

为群组添加用户,通过这个REST服务。

  • 请求: POST /user/{userId}/groups

    ["management", "sales"]

  • API: identityService().createMembership(userId, groupId);

  • 响应:

    {
      "success": true
    }

从群组删除用户

从群组删除用户。

  • 请求: DELETE /user/{userId}/groups/{groupId}

  • API: identityService().deleteMembership(userId, groupId);

  • 响应:

    {
      "success": true
    }

获得用户图片

返回用户图片

  • 请求: GET /user/{userId}/picture

  • API: identityService.getUserPicture(userId);

  • 响应:

    The user picture.

获得群组

返回群组细节。

  • 请求: GET /group/{groupId}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getIdentityService().createGroupQuery().groupId(groupId).singleResult();

  • 响应:

    {
      "id": "admin",
      "name": "System administrator",
      "type": "security-role"
    }

群组用户列表

返回一个群组的用户细节,可以通过"id", "firstName", "lastName" 或 "email"排序。

  • 分页请求: GET /group/{groupId}/users

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getIdentityService().createUserQuery().memberOfGroup(groupId).list()

  • 分页响应:

    {
      data: [
        {
          "id": "kermit",
          "firstName": "Kermit",
          "lastName": "the Frog",
          "email": "kermit@server.com"
        }
      ],
      "total": 1,
      "start": 0,
      "sort": "id",
      "order": "asc",
      "size": 1
    }

查询群组

返回群组列表,通过查询的文本搜索id或name。

  • 分页请求: GET /groups?searchText=ad

  • API: identityService.createGroupQuery().list()

  • 响应:

    {
      data: [
        {
          "id": "admin",
          "name": "System administrator",
          "type": "security-role"
        }
      ],
      "total": 1,
      "start": 0,
      "sort": "id",
      "order": "asc",
      "size": 1
    }

创建群组

创建新群组。

  • 请求: PUT /group

    {
      "id": "admin",
      "name": "System administrator",
      "type": "security-role"
    }

  • API: identityService.newGroup(); identityService.saveGroup();

  • 响应:

    {
      "success": true
    }

为群组添加用户

为群组添加用户。

  • 请求: POST /group/{groupId}/users

    ["kermit", "fozzie"]

  • API: identityService().createMembership(userId, groupId);

  • 响应:

    {
      "success": true
    }

为群组删除用户

为群组删除用户。

  • 请求: DELETE /group/{groupId}/users/{userId}

  • API: identityService().deleteMembership(userId, groupId);

  • 响应:

    {
      "success": true
    }

管理

作业列表

返回分页的作业列表,可以通过"id", "process-instance-id", "execution-id", "due-date", "retries" 或一些自定义的属性id排序。列表可以通过 process instance id, due date 或作业是否重试,是否可执行,只是消息或定时器来查询。

  • 分页请求: GET /management/jobs?process-instance={processInstanceId?}&with-retries-left={withRetriesLeft=false}&executable={axecutable=false}&only-timers={onlyTimers=false}&only-messages={onlyMessage=false}&duedate-lt={iso8601Date}&duedate-ltoe={iso8601Date}&duedate-ht={iso8601Date}&duedate-htoe={iso8601Date}&start={start=0}&size={size=10}&sort={sort=id}&order={order=asc}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).createJobQuery().xxx().listPage()

  • 分页响应:

    {
      "data": [
        {
          "id": "212",
          "executionId": "211",
          "retries": -1,
          "processInstanceId": "210",
          "dueDate": null,
          "assignee": null,
          "exceptionMessage": "Can\'t find scripting engine for \'groovy\'"
        }
      ],
      "total": 1,
      "start": 0,
      "sort": "id",
      "order": "asc",
      "size": 1
    }

获得作业

返回作业的细节。

  • 请求: GET /management/job({jobId}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).createJobQuery().id(jobId).singleResult()

  • 响应:

    {
      "id": "212",
      "executionId": "211",
      "retries": -1,
      "processInstanceId": "210",
      "dueDate": null,
      "assignee": null,
      "exceptionMessage": "Can\'t find scripting engine for \'groovy\'",
      "stacktrace": "org.activiti.engine.ActivitiException: Can't find scripting engine for 'groovy'\n\tat ..."
    }

执行一个作业

执行一个作业。

  • 请求: PUT /management/job/{jobId}/execute

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getManagementService().executeJob(jobId)

  • 响应:

    {
      "success": true
    }

执行多个作业

执行多个作业。

  • 请求: POST /management/jobs/execute

    {
      "jobIds": [ "212" ]
    }

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getManagementService().executeJob(jobId)

  • 响应:

    {
      "success": true
    }

数据库表列表

返回引擎中的所有数据库表的元数据。

  • 请求: GET /management/tables

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getManagementService().getTableCount()

  • 响应:

    {
      "data": [
        {
          "tableName": "ACT_GE_PROPERTY",
          "noOfResults": 2
        }
      ]
    }

获得表元数据

返回一个数据库表的元数据。

  • 请求: GET /management/table/{tableName}

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getManagementService().getTableMetaData(tableName))

  • 响应:

    {
      "tableName": "ACT_GE_PROPERTY",
      "columnNames": ["REV_","NAME_","VALUE_"],
      "columnNames": ["class java.lang.Integer", "class java.lang.String", "class java.lang.String"]
    }

获得表数据

返回分页的数据库表数据列表。

  • 分页请求: GET /management/table/{tableName}/data

  • API: ProcessEngines.getProcessEngine(configuredProcessEngineName).getManagementService().createTablePageQuery().tableName(tableName).start(start).size(size).orderXXX(sort).singleResult();

  • 分页响应:

    {
      "data": [
        {
          "NAME_": "schema.version",
          "REV_": "1",
          "VALUE_": "5.10"
        },
        {
          "NAME_": "next.dbid",
          "REV_": "4",
          "VALUE_": "310"
        }
      ],
      "total": 2,
      "start": 0,
      "sort": "NAME_",
      "order": "asc",
      "size": 2
    }