Start Process Instance¶
发起一个新的流程实例。
请求格式¶
POST https://{apigw-address}/enos-bpm-service/v2.0/work/process-instances
请求参数(Header)¶
名称 | 位置 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|---|
Authorization | Header | 必需 | String | Access Token,以 Bearer Token 表示,需要通过调用 Log In 或 Refresh Access Token 接口后获取。 |
请求参数(Body)¶
名称 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|
processDefinitionId | 必需 | String | 流程定义 ID。 |
name | 可选 | String | 流程名称。 |
formId | 可选 | String | 提交的表单 ID。 |
values | 必需 | Map(键为 String,值为 Object) | 表单的提交数据,键为表单变量名,值为表单提交值。 |
outcome | 可选 | String | 表单结果字符串。 |
响应参数¶
名称 | 数据类型 | 描述 |
---|---|---|
data | data 结构体 | 流程实例详细信息。 |
data 结构体¶
名称 | 数据类型 | 描述 |
---|---|---|
id | String | 流程实例 ID。 |
name | String | 流程名称。 |
businessKey | String | 流程实例的键。 |
processDefinitionId | String | 流程定义 ID。 |
processDefinitionName | String | 流程定义名称。 |
processDefinitionDescription | String | 流程定义描述。 |
processDefinitionKey | String | 流程定义的键。 |
processDefinitionCategory | String | 流程定义类型。 |
processDefinitionVersion | Integer | 流程定义版本号。 |
processDefinitionDeploymentId | String | 流程定义对应的部署资源 ID。 |
graphicalNotationDefined | Boolean | 是否定义流程图标。 |
startFormDefined | Boolean | 是否定义流程启动表单。 |
tenantId | String | 组织 ID。 |
createdTime | Timestamp | 流程实例创建时间。 |
completedTime | Timestamp | 流程实例结束时间。 |
terminable | Boolean | 当前用户是否可以终止当前流程。 |
terminatedTime | Timestamp | 流程实例终止时间。 |
terminateReason | String | 流程实例终止原因。 |
startedBy | UserRepresentation 结构体 | 流程发起人的信息。 |
terminatedBy | UserRepresentation 结构体 | 流程终止人的信息。 |
assignee | UserRepresentation 结构体 | 当前任务处理人的信息。 |
taskName | String | 当前任务名称。 |
url | String | 流程详情在 BPM 应用中的 URL。 |
UserRepresentation 结构体¶
名称 | 数据类型 | 描述 |
---|---|---|
id | String | 用户 ID。 |
firstName | String | 用户名字。 |
lastName | String | 用户姓氏。 |
String | 用户邮箱。 | |
fullName | String | 用户全名。 |
tenantId | String | 组织 ID。 |
groups | GroupRepresentation 结构体数组 | 用户组。 |
privileges | String 数组 | 用户权限。 |
GroupRepresentation 结构体¶
名称 | 数据类型 | 描述 |
---|---|---|
id | String | 用户组 ID。 |
name | String | 用户组名称。 |
type | String | 用户组类型。 |
错误码¶
代码 | 描述 |
---|---|
33400 | 流程定义 ID 为空。 |
33403 | 用户没有权限创建该流程实例。 |
33500 | 必填字段不存在。 |
示例¶
请求示例¶
url: https://{apigw-address}/enos-bpm-service/v2.0/work/process-instances
method: POST
headers: {"Authorization":"Bearer {your_access_token}"}
requestBody:
{
"processDefinitionId": "your_process_definition_id",
"name": "your_process_definition_name",
"formId": "task_form_id",
"outcome": "form_outcome",
"values": {
"field1": "value1",
"field2": "value2"
}
}
返回示例¶
{
"code": 0,
"msg": "",
"data": {
"id": "43560586-e629-11ea-b8f9-02420a05d432",
"name": "c10sProcessTerminationTest",
"businessKey": "a43551b25e62911eab8f902420a05d432",
"processDefinitionId": "c9389796-e396-11ea-befd-92ab641570c6",
"tenantId": "o15874765326651",
"started": null,
"ended": null,
"startedBy": {
"id": "u15916978791551",
"firstName": null,
"lastName": null,
"email": "john.smith@univers.com",
"fullName": "john.smith",
"tenantId": "o15874765326651",
"groups": [],
"privileges": []
},
"processDefinitionName": "c10sProcessTerminationTest",
"processDefinitionDescription": null,
"processDefinitionKey": "ab448ac59d7b711eab60886111ce5630f",
"processDefinitionCategory": "http://flowable.org/test",
"processDefinitionVersion": 4,
"processDefinitionDeploymentId": "c8d82813-e396-11ea-befd-92ab641570c6",
"graphicalNotationDefined": true,
"startFormDefined": false,
"assignee": null,
"taskName": null,
"url": null,
"terminable": null,
"terminatedBy": null,
"terminateReason": null,
"variables": [],
"processInstanceId": "43560586-e629-11ea-b8f9-02420a05d432",
"completedTime": null,
"terminatedTime": null,
"processName": "c10sProcessTerminationTest",
"createdTime": null,
"processStatus": "inProgress"
}
}
Java SDK 调用示例¶
public class BpmSdkTest{
@Test
public void startProcessInstanceTest() {
String bearerToken = "your_bearer_token";
CreateProcessInstanceRepresentation createProcessInstanceRepresentation = new CreateProcessInstanceRepresentation();
createProcessInstanceRepresentation.setName("your_process_definition_name");
createProcessInstanceRepresentation.setProcessDefinitionId("your_process_definition_id");
createProcessInstanceRepresentation.setFormId("form_id");
createProcessInstanceRepresentation.setOutcome("the_outcome_of_form");
Map<String, Object> values = new HashMap<>();
values.put("field1", "value1");
values.put("field2", "value2");
createProcessInstanceRepresentation.setValues(values);
ProcessInstanceStartRequest request = new ProcessInstanceStartRequest(createProcessInstanceRepresentation,
bearerToken);
ProcessInstanceStartResponse response = Poseidon.config(PConfig.init().appKey("your_access_key")
.appSecret("your_secret_key").debug()).url("https://{apigw-address}")
.getResponse(request, ProcessInstanceStartResponse.class);
assertNotNull("response cannot be null", response);
}
}