https://github.com/cronn/camunda-etc-extension
Camunda External Task Handler Extension
https://github.com/cronn/camunda-etc-extension
camunda external-task-handler
Last synced: 8 months ago
JSON representation
Camunda External Task Handler Extension
- Host: GitHub
- URL: https://github.com/cronn/camunda-etc-extension
- Owner: cronn
- License: apache-2.0
- Created: 2022-01-04T10:52:22.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-04-19T12:57:20.000Z (about 4 years ago)
- Last Synced: 2025-01-11T07:50:21.565Z (over 1 year ago)
- Topics: camunda, external-task-handler
- Language: Java
- Homepage:
- Size: 96.7 KB
- Stars: 0
- Watchers: 8
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://github.com/cronn/camunda-etc-extension/actions)
[](http://maven-badges.herokuapp.com/maven-central/de.cronn/camunda-etc-extension)
[](http://www.apache.org/licenses/LICENSE-2.0)
[](https://github.com/cronn/camunda-etc-extension/actions/workflows/gradle-wrapper-validation.yml)
[](https://gradleupdate.appspot.com/cronn/camunda-etc-extension/status)
# Cronn Camunda External Task Handler Extension
Extension of https://github.com/camunda/camunda-bpm-platform/tree/master/clients/java
## Features
- easy extraction of process variables as java method arguments
- less verbosity when executing external task actions
### 30 seconds tutorial
Instead of
```java
import org.camunda.bpm.client.task.ExternalTask;
import org.camunda.bpm.client.task.ExternalTaskHandler;
import org.camunda.bpm.client.task.ExternalTaskService;
class SampleHandler implements ExternalTaskHandler {
@Override
public void execute(ExternalTask externalTask, ExternalTaskService externalTaskService) {
String myVariable = externalTask.getVariable("myVariable");
// ...
externalTaskService.complete(externalTask);
}
}
```
write this
```java
import de.cronn.camunda.CurrentExternalTask;
import de.cronn.camunda.ExternalTaskHandler;
import de.cronn.camunda.HandlerMethod;
import de.cronn.camunda.SimpleVariable;
class SampleHandler extends ExternalTaskHandler {
public SampleHandler() {
super(null);
}
@HandlerMethod
public void handle(CurrentExternalTask currentExternalTask,
@SimpleVariable("myVariable") String myVariable) {
// ...
currentExternalTask.complete();
}
}
```
Each handler is expected to have exactly one method annotated with `@HandlerMethod`. This method has dynamic signature:
- returns `void`
- accepts multiple supported arguments:
- `org.camunda.bpm.client.task.ExternalTask`
- `org.camunda.bpm.client.task.ExternalTaskService`
- `de.cronn.camunda.CurrentExternalTask`
- process variables as simple values supported by Camunda (annotated with `@SimpleVariable`)
- json process variables as object (annotated with `@JsonVariable`; this requires passing `ObjectMapper` in handler constructor)
## Usage
Add the following Maven dependency to your project:
```xml
de.cronn
camunda-etc-extension
0.4.0
```
## Bonus
There are two more artifacts: `de.cronn:camunda-etc-extension-test`
and `de.cronn:camunda-etc-extension-test-spring-boot`. They provide infrastructure for easy `ExternalTaskHandler` integration
testing.
See:
- for non Spring usage: [`EmbeddedCamundaTest`](test/src/main/java/de/cronn/camunda/testserver/EmbeddedCamundaTest.java)
and [`SampleEmbeddedCamundaTest`](test/src/test/java/de/cronn/camunda/testserver/SampleEmbeddedCamundaTest.java)
- for Spring Boot use case: [`SpringEmbeddedCamundaTest`](test-spring-boot/src/main/java/de/cronn/camunda/testserver/spring/SpringEmbeddedCamundaTest.java)
and [`SampleSpringEmbeddedCamundaTest`](test-spring-boot/src/test/java/de/cronn/camunda/testserver/spring/SampleSpringEmbeddedCamundaTest.java)