A Zeebe worker to make HTTP calls (e.g. invoking a REST service). It is based on the built-in Java HttpClient.
Requirements: Java 11
Example BPMN with service task:
<bpmn:serviceTask id="http-get" name="stargazers check">
<bpmn:extensionElements>
<zeebe:taskDefinition type="http" />
<zeebe:taskHeaders>
<zeebe:header key="url" value="https://api.github.com/user/starred/zeebe-io/zeebe-http-worker" />
</zeebe:taskHeaders>
</bpmn:extensionElements>
</bpmn:serviceTask>
httpurl - the url to invokemethod - the HTTP method to use (default: GET, allowed: post | get | put | delete | patch)statusCodeCompletion - Status codes that lead to completion of the service task (default: 1xx,2xx, allowed: comma separated list of codes including 1xx, 2xx, 3xx, 4xx and 5xx)statusCodeFailure - Status codes that lead to the job failing (default: 3xx,4xx,5xx, allowed: comma separated list of codes including 1xx, 2xx, 3xx, 4xx and 5xx)errorCodePath - path expression (dot notation) to extract the error code of a failed response body (e.g. error.code). If the error code is present then a BPMN error is thrown with this code instead of failing the job. Otherwise, that leads to the job failing.errorMessagePath - path expression (dot notation) to extract the error message of a failed response body (e.g. error.message). If the error message is present then it is used as the error message of the BPMN error. Otherwise, a default error message is used.body - the request body as JSONauthorization - the value of the authorization header (e.g. token 6bac4..)statusCode - the response status codebody - the response body, if presentPlease note that the current way of handling placeholders is subject to change in the future, especially with https://github.com/zeebe-io/zeebe/issues/3417.
You can use placeholders in the form of {{PLACEHOLDER}} at all places, they will be replaced by
Mustache is used for replacing the placeholders, refer to their docs to check possibilities.
Example:
<bpmn:serviceTask id="http-get" name="stargazers check">
<bpmn:extensionElements>
<zeebe:taskDefinition type="http" />
<zeebe:taskHeaders>
<zeebe:header key="url" value="https://{{BASE_URL}}/order?id={{orderId}}" />
<zeebe:header key="method" value="GET" />
</zeebe:taskHeaders>
</bpmn:extensionElements>
</bpmn:serviceTask>
BASE_URL could be configured by the configuration variables from the URL and the orderId might be a workflow variable.
To support some legacy scenarios the worker at the moment still also understands placeholders in the form of ${PLACEHOLDER}. This is subject to be removed in later releases.
As described you can set the statusCodeCompletion and statusCodeFailure header to control the behavior depending on the HTTP Status. If the status code is in neither of the lists Zeebe will just keep waiting in the service task, allowing for asynchronous callbacks.
A common example is
To allow this, the jobKey can be passed to the external service.
Download the JAR file
Execute the JAR via
java -jar target/zeebe-http-worker-{VERSION}.jar
`docker run camunda/zeebe-http-worker`
You can check health of the worker:
http://localhost:8080/actuator/health
This uses the Spring Actuator, so other metrics are available as well
The connection to the broker Zeebe can be changed by setting the environment variables
ZEEBE_CLIENT_BROKER_CONTACTPOINT (default: 127.0.0.1:26500).ZEEBE_CLIENT_SECURITY_PLAINTEXT (default: true).ZEEBE_WORKER_DEFAULTNAME (default: http-worker)ZEEBE_WORKER_DEFAULTTYPE (default: http)f9171117bca24e2eeffaf57c1c32ceb570b36bfb
This worker uses Spring Zeebe underneath, so all configuration options available there are also available here.
You can load additional configuration values used to substitute placeholders:
ENV_VARS_URL)ENV_VARS_URL isn't set)If ENV_VARS_URL is configured, the worker will query an HTTP endpoint and expects a JSON back:
[
{
"key": "someValue",
"value": 42
},
{
"key": "anotherValue",
"value": 42
}
]
To load additional config variables from an URL set these environment variables:
ENV_VARS_URL (e.g. http://someUrl/config, default: null)ENV_VARS_RELOAD_RATE (default 15000)ENV_VARS_M2M_BASE_URLENV_VARS_M2M_CLIENT_IDENV_VARS_M2M_CLIENT_SECRETENV_VARS_M2M_AUDIENCETo avoid exposing sensitive information, a prefix can be used to filter environment variables.
To change the prefix set these environment variables:
LOCAL_ENV_VARS_PREFIX (default: "ZEEBE_ENV_")LOCAL_ENV_VARS_REMOVE_PREFIX (default: true)This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].
Content type
Image
Digest
Size
175.8 MB
Last updated
about 6 years ago
docker pull livspaceeng/zeebe-http-worker