{"id":19816294,"url":"https://github.com/cronn/camunda-etc-extension","last_synced_at":"2026-07-05T02:31:11.692Z","repository":{"id":57730350,"uuid":"444383618","full_name":"cronn/camunda-etc-extension","owner":"cronn","description":"Camunda External Task Handler Extension","archived":false,"fork":false,"pushed_at":"2022-04-19T12:57:20.000Z","size":99,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-01-11T07:50:21.565Z","etag":null,"topics":["camunda","external-task-handler"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cronn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-04T10:52:22.000Z","updated_at":"2022-01-10T17:35:22.000Z","dependencies_parsed_at":"2022-09-26T22:01:22.980Z","dependency_job_id":null,"html_url":"https://github.com/cronn/camunda-etc-extension","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cronn%2Fcamunda-etc-extension","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cronn%2Fcamunda-etc-extension/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cronn%2Fcamunda-etc-extension/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cronn%2Fcamunda-etc-extension/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cronn","download_url":"https://codeload.github.com/cronn/camunda-etc-extension/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241170223,"owners_count":19921571,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["camunda","external-task-handler"],"created_at":"2024-11-12T10:09:05.795Z","updated_at":"2025-10-27T22:32:24.646Z","avatar_url":"https://github.com/cronn.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI](https://github.com/cronn/camunda-etc-extension/workflows/CI/badge.svg)](https://github.com/cronn/camunda-etc-extension/actions)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/de.cronn/camunda-etc-extension/badge.svg)](http://maven-badges.herokuapp.com/maven-central/de.cronn/camunda-etc-extension)\n[![Apache 2.0](https://img.shields.io/github/license/cronn/camunda-etc-extension.svg)](http://www.apache.org/licenses/LICENSE-2.0)\n\n[![Valid Gradle Wrapper](https://github.com/cronn/camunda-etc-extension/workflows/Validate%20Gradle%20Wrapper/badge.svg)](https://github.com/cronn/camunda-etc-extension/actions/workflows/gradle-wrapper-validation.yml)\n[![Gradle Status](https://gradleupdate.appspot.com/cronn/camunda-etc-extension/status.svg)](https://gradleupdate.appspot.com/cronn/camunda-etc-extension/status)\n# Cronn Camunda External Task Handler Extension\n\nExtension of https://github.com/camunda/camunda-bpm-platform/tree/master/clients/java\n\n## Features\n\n - easy extraction of process variables as java method arguments\n - less verbosity when executing external task actions\n\n### 30 seconds tutorial\n\nInstead of\n\n```java\nimport org.camunda.bpm.client.task.ExternalTask;\nimport org.camunda.bpm.client.task.ExternalTaskHandler;\nimport org.camunda.bpm.client.task.ExternalTaskService;\n\nclass SampleHandler implements ExternalTaskHandler {\n    @Override\n    public void execute(ExternalTask externalTask, ExternalTaskService externalTaskService) {\n        String myVariable = externalTask.getVariable(\"myVariable\");\n        // ...\n        externalTaskService.complete(externalTask);\n    }\n}\n```\n\nwrite this\n\n```java\nimport de.cronn.camunda.CurrentExternalTask;\nimport de.cronn.camunda.ExternalTaskHandler;\nimport de.cronn.camunda.HandlerMethod;\nimport de.cronn.camunda.SimpleVariable;\n\nclass SampleHandler extends ExternalTaskHandler {\n    public SampleHandler() {\n        super(null);\n    }\n\n    @HandlerMethod\n    public void handle(CurrentExternalTask currentExternalTask, \n                       @SimpleVariable(\"myVariable\") String myVariable) {\n        // ...\n        currentExternalTask.complete();\n    }\n}\n```\n\nEach handler is expected to have exactly one method annotated with `@HandlerMethod`. This method has dynamic signature:\n\n - returns `void`\n - accepts multiple supported arguments:\n     - `org.camunda.bpm.client.task.ExternalTask`\n     - `org.camunda.bpm.client.task.ExternalTaskService`\n     - `de.cronn.camunda.CurrentExternalTask`\n     - process variables as simple values supported by Camunda (annotated with `@SimpleVariable`)\n     - json process variables as object (annotated with `@JsonVariable`; this requires passing `ObjectMapper` in handler constructor)\n\n\n## Usage\nAdd the following Maven dependency to your project:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ede.cronn\u003c/groupId\u003e\n    \u003cartifactId\u003ecamunda-etc-extension\u003c/artifactId\u003e\n    \u003cversion\u003e0.4.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Bonus\n\nThere are two more artifacts: `de.cronn:camunda-etc-extension-test`\nand `de.cronn:camunda-etc-extension-test-spring-boot`. They provide infrastructure for easy `ExternalTaskHandler` integration\ntesting. \nSee:\n - for non Spring usage: [`EmbeddedCamundaTest`](test/src/main/java/de/cronn/camunda/testserver/EmbeddedCamundaTest.java)\nand [`SampleEmbeddedCamundaTest`](test/src/test/java/de/cronn/camunda/testserver/SampleEmbeddedCamundaTest.java)\n - for Spring Boot use case: [`SpringEmbeddedCamundaTest`](test-spring-boot/src/main/java/de/cronn/camunda/testserver/spring/SpringEmbeddedCamundaTest.java)\nand [`SampleSpringEmbeddedCamundaTest`](test-spring-boot/src/test/java/de/cronn/camunda/testserver/spring/SampleSpringEmbeddedCamundaTest.java)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcronn%2Fcamunda-etc-extension","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcronn%2Fcamunda-etc-extension","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcronn%2Fcamunda-etc-extension/lists"}