Start Process Instance

Start a new process instance.

Request Format

POST https://{apigw-address}/enos-bpm-service/v2.0/work/process-instances

Request Parameters (Header)

Name Location Mandatory/Optional Data Type Description
Authorization Header Mandatory String The access token, which is represented by the bearer token. It can be obtained by invoking the Log In or Refresh Access Token API.

Request Parameters (Body)

Name Mandatory/Optional Data Type Description
processDefinitionId Mandatory String The process definition ID.
name Optional String The process name.
formId Optional String The ID of the submitted form.
values Mandatory Map (String for key, Object for value) The data in the submitted form, where the key is the form variable name, and the value is the submitted form value.
outcome Optional String The form result string.

Response Parameters

Name Data Type Description
data Data Struct The details of the process instance.

Data Struct

Name Data Type Description
id String The process instance ID.
name String The process name.
businessKey String The key of the process instance.
processDefinitionId String The process definition ID.
processDefinitionName String The process definition name.
processDefinitionDescription String The process definition description.
processDefinitionKey String The process definition key.
processDefinitionCategory String The process definition type.
processDefinitionVersion Integer The process definition version number.
processDefinitionDeploymentId String The deployment resource ID corresponding to the process definition.
graphicalNotationDefined Boolean Whether to define the process icon.
startFormDefined Boolean Whether to define the process start form.
tenantId String The organization ID.
createdTime Timestamp The creation time of the process instance.
completedTime Timestamp The end time of the process instance.
terminable Boolean Whether the current process can be terminated by the current user.
terminatedTime Timestamp The termination time of the process instance.
terminateReason String The reason for terminating the process instance.
startedBy UserRepresentation Struct Information about the process starter.
terminatedBy UserRepresentation Struct Information about the process terminator.
assignee UserRepresentation Struct Information about the current task assignee.
taskName String The name of current task.
url String The URL of the process details in the BPM application.

UserRepresentation Struct

Name Data Type Description
id String The user ID.
firstName String The user’s first name.
lastName String The user’s last name.
email String The user’s email.
fullName String The user’s full name.
tenantId String The organization ID.
groups UserRepresentation Struct Array The user group.
privileges String array The user permissions.

GroupRepresentation Struct

Name Data Type Description
id String The user group ID.
name String The user group name.
type String The user group type.

Error Codes

Code Description
33400 The process definition ID is empty.
33403 The user does not have the permission to create this process instance.
33500 The required fields are empty.

Samples

Request Sample

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"
  }
}

Return Sample

{
  "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@envision-digital.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 Sample

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);
    }
}