org.camunda.bpm.engine
Interface ExternalTaskService

All Known Implementing Classes:
ExternalTaskServiceImpl

public interface ExternalTaskService

Service that provides access to ExternalTask instances. External tasks represent work items that are processed externally and independently of the process engine.

Author:
Thorben Lindhauer

Method Summary
 void complete(String externalTaskId, String workerId)
          Completes an external task on behalf of a worker.
 void complete(String externalTaskId, String workerId, Map<String,Object> variables)
          Completes an external task on behalf of a worker and submits variables to the process instance before continuing execution.
 ExternalTaskQuery createExternalTaskQuery()
           Queries for tasks that the currently authenticated user has at least one of the following permissions for: Permissions.READ on Resources.PROCESS_INSTANCE Permissions.READ_INSTANCE on Resources.PROCESS_DEFINITION
 ExternalTaskQueryBuilder fetchAndLock(int maxTasks, String workerId)
          Defines fetching of external tasks by using a fluent builder.
 void handleFailure(String externalTaskId, String workerId, String errorMessage, int retries, long retryTimeout)
          Signals that an external task could not be successfully executed.
 void setRetries(String externalTaskId, int retries)
          Sets the retries for an external task.
 void unlock(String externalTaskId)
          Unlocks an external task instance.
 

Method Detail

fetchAndLock

ExternalTaskQueryBuilder fetchAndLock(int maxTasks,
                                      String workerId)

Defines fetching of external tasks by using a fluent builder. A worker id and a maximum number of tasks to fetch must be specified. The builder allows to specify multiple topics to fetch tasks for and individual lock durations. For every topic, variables can be fetched in addition.

Returned tasks are locked for the given worker until now + lockDuration expires. Locked tasks cannot be fetched or completed by other workers. When the lock time has expired, a task may be fetched and locked by other workers.

Returns at most maxTasks tasks. The tasks are arbitrarily distributed among the specified topics. Example: Fetching 10 tasks of topics "a"/"b"/"c" may return 3/3/4 tasks, or 10/0/0 tasks, etc.

May return less than maxTasks tasks, if there exist not enough unlocked tasks matching the provided topics or if parallel fetching by other workers results in locking failures.

Returns only tasks that the currently authenticated user has at least one permission out of all of the following groups for:

Parameters:
maxTasks - the maximum number of tasks to return
workerId - the id of the worker to lock the tasks for
Returns:
a builder to define and execute an external task fetching operation

complete

void complete(String externalTaskId,
              String workerId)

Completes an external task on behalf of a worker. The given task must be assigned to the worker.

Parameters:
externalTaskId - the id of the external to complete
workerId - the id of the worker that completes the task
Throws:
NotFoundException - if no external task with the given id exists
BadUserRequestException - if the task is assigned to a different worker
AuthorizationException - thrown if the current user does not possess any of the following permissions:

complete

void complete(String externalTaskId,
              String workerId,
              Map<String,Object> variables)

Completes an external task on behalf of a worker and submits variables to the process instance before continuing execution. The given task must be assigned to the worker.

Parameters:
externalTaskId - the id of the external to complete
workerId - the id of the worker that completes the task
variables - a map of variables to set on the execution (non-local) the external task is assigned to
Throws:
NotFoundException - if no external task with the given id exists
BadUserRequestException - if the task is assigned to a different worker
AuthorizationException - thrown if the current user does not possess any of the following permissions:

handleFailure

void handleFailure(String externalTaskId,
                   String workerId,
                   String errorMessage,
                   int retries,
                   long retryTimeout)

Signals that an external task could not be successfully executed. The task must be assigned to the given worker. The number of retries left can be specified. In addition, a timeout can be provided, such that the task cannot be fetched before now + retryTimeout again.

If retries is 0, an incident with the given error message is created. The incident gets resolved, once the number of retries is increased again.

Parameters:
externalTaskId - the id of the external task to report a failure for
workerId - the id of the worker that reports the failure
errorMessage - the error message related to this failure. This message can be retrieved via ExternalTask.getErrorMessage() and is used as the incident message in case retries is null. May be null.
retries - the number of retries left. External tasks with 0 retries cannot be fetched anymore unless the number of retries is increased via API. Must be >= 0.
retryTimeout - the timeout before the task can be fetched again. Must be >= 0.
Throws:
NotFoundException - if no external task with the given id exists
BadUserRequestException - if the task is assigned to a different worker
AuthorizationException - thrown if the current user does not possess any of the following permissions:

unlock

void unlock(String externalTaskId)
Unlocks an external task instance.

Parameters:
externalTaskId - the id of the task to unlock
Throws:
NotFoundException - if no external task with the given id exists
AuthorizationException - thrown if the current user does not possess any of the following permissions:

setRetries

void setRetries(String externalTaskId,
                int retries)
Sets the retries for an external task. If the new value is 0, a new incident with a null message is created. If the old value is 0 and the new value is greater than 0, an existing incident is resolved.

Parameters:
externalTaskId - the id of the task to set the
retries -
Throws:
NotFoundException - if no external task with the given id exists
AuthorizationException - thrown if the current user does not possess any of the following permissions:

createExternalTaskQuery

ExternalTaskQuery createExternalTaskQuery()

Queries for tasks that the currently authenticated user has at least one of the following permissions for:

Returns:
a new ExternalTaskQuery that can be used to dynamically query for external tasks.


Copyright © 2016 camunda services GmbH. All rights reserved.