This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 386adee107f Added header for job key in worker and completeJob and failJob to simplify routes. Fixed and improved documentation (#9852) 386adee107f is described below commit 386adee107f51674c02f4cc83fab4606031b2ccc Author: LoRez <karstenreu...@me.com> AuthorDate: Wed Apr 12 14:57:20 2023 +0200 Added header for job key in worker and completeJob and failJob to simplify routes. Fixed and improved documentation (#9852) --- .../org/apache/camel/component/zeebe/zeebe.json | 15 +++++----- .../camel-zeebe/src/main/docs/zeebe-component.adoc | 34 +++++++++++----------- .../camel/component/zeebe/ZeebeConstants.java | 21 ++++++++----- .../camel/component/zeebe/ZeebeConsumer.java | 1 + .../component/zeebe/processor/JobProcessor.java | 11 +++++++ 5 files changed, 51 insertions(+), 31 deletions(-) diff --git a/components/camel-zeebe/src/generated/resources/org/apache/camel/component/zeebe/zeebe.json b/components/camel-zeebe/src/generated/resources/org/apache/camel/component/zeebe/zeebe.json index e9cd2dcf0c2..8928eb92ff0 100644 --- a/components/camel-zeebe/src/generated/resources/org/apache/camel/component/zeebe/zeebe.json +++ b/components/camel-zeebe/src/generated/resources/org/apache/camel/component/zeebe/zeebe.json @@ -32,13 +32,14 @@ "gatewayPort": { "kind": "property", "displayName": "Gateway Port", "group": "security", "label": "security", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 26500, "description": "The gateway server port to connect to the Zeebe cluster." } }, "headers": { - "CamelZeebeResourceName": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the resource.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#RESOURCE_NAME" }, - "CamelZeebeIsSuccess": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "True if the operation was successful.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#IS_SUCCESS" }, - "CamelZeebeErrorMessage": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "In case of an error, the error message.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#ERROR_MESSAGE" }, - "CamelZeebeErrorCode": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "In case of an error, the error code if available.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#ERROR_CODE" }, - "CamelZeebeBPMNProcessId": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The process ID of a deployed process.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#BPMN_PROCESS_ID" }, - "CamelZeebeVersion": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The version of a deployed process.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#VERSION" }, - "CamelZeebeProcessDefinitionKey": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The process definition key of a deployed process.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#PROCESS_DEFINITION_KEY" } + "CamelZeebeResourceName": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the resource.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#RESOURCE_NAME" }, + "CamelZeebeIsSuccess": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "True if the operation was successful.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#IS_SUCCESS" }, + "CamelZeebeErrorMessage": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "In case of an error, the error message.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#ERROR_MESSAGE" }, + "CamelZeebeErrorCode": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "In case of an error, the error code if available.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#ERROR_CODE" }, + "CamelZeebeBPMNProcessId": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The process ID of a deployed process.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#BPMN_PROCESS_ID" }, + "CamelZeebeVersion": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The version of a deployed process.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#VERSION" }, + "CamelZeebeProcessDefinitionKey": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The process definition key of a deployed process.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants#PROCESS_DEFINITION_KEY" }, + "CamelZeebeJobKey": { "kind": "header", "displayName": "", "group": "common", "label": "common", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The key of a job. The worker consumer adds the job key to the headers and the operations completeJob and failJob accept the job key in the header if no JobRequest is provided in the body.", "constantName": "org.apache.camel.component.zeebe.ZeebeConstants# [...] }, "properties": { "operationName": { "kind": "path", "displayName": "Operation Name", "group": "common", "label": "common", "required": true, "type": "object", "javaType": "org.apache.camel.component.zeebe.internal.OperationName", "enum": [ "startProcess", "cancelProcess", "publishMessage", "completeJob", "failJob", "updateJobRetries", "worker", "throwError", "deployResource" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to use" }, diff --git a/components/camel-zeebe/src/main/docs/zeebe-component.adoc b/components/camel-zeebe/src/main/docs/zeebe-component.adoc index 6df2f09a43f..8d7a962ae82 100644 --- a/components/camel-zeebe/src/main/docs/zeebe-component.adoc +++ b/components/camel-zeebe/src/main/docs/zeebe-component.adoc @@ -279,21 +279,13 @@ The endpoints accept either Java request objects as shown in the examples below }) .to("zeebe://deployResource") .process(exchange -> { - JobWorkerMessage body = exchange.getIn().getBody(JobWorkerMessage.class); + ProcessDeploymentResponse body = exchange.getIn().getBody(ProcessDeploymentResponse.class); if (body != null) { - long key = body.getKey(); - String type = body.getType(); - Map<String,String> customHeaders = body.getCustomHeaders(); - long processInstanceKey = body.getProcessInstanceKey(); + bool success = body.getSuccess(); String bpmnProcessId = body.getBpmnProcessId(); - int processDefinitionVersion = body.getProcessDefinitionVersion(); + int version = body.getVersion(); long processDefinitionKey = body.getProcessDefinitionKey(); - String elementId = body.getElementId(); - long elementInstanceKey = body.getElementInstanceKey(); - String worker = body.getWorker(); - int retries = body.getRetries(); - long deadline = body.getDeadline(); - Map<String,Object> variables = body.getVariables(); + String resourceName = body.getResourceName(); } }); ---------------------------------------------------------------------------------------------------------------------- @@ -312,15 +304,23 @@ The endpoints accept either Java request objects as shown in the examples below [source,java] --------------------------------------------------------------------------------------------------------------------------------------------- - from("zeebe://jobWorker?jobKey=job1&timeout=20") + from("zeebe://worker?jobKey=job1&timeout=20") .process(exchange -> { - ProcessDeploymentResponse body = exchange.getIn().getBody(ProcessDeploymentResponse.class); + JobWorkerMessage body = exchange.getIn().getBody(JobWorkerMessage.class); if (body != null) { - bool success = body.getSuccess(); + long key = body.getKey(); + String type = body.getType(); + Map<String,String> customHeaders = body.getCustomHeaders(); + long processInstanceKey = body.getProcessInstanceKey(); String bpmnProcessId = body.getBpmnProcessId(); - int version = body.getVersion(); + int processDefinitionVersion = body.getProcessDefinitionVersion(); long processDefinitionKey = body.getProcessDefinitionKey(); - String resourceName = body.getResourceName(); + String elementId = body.getElementId(); + long elementInstanceKey = body.getElementInstanceKey(); + String worker = body.getWorker(); + int retries = body.getRetries(); + long deadline = body.getDeadline(); + Map<String,Object> variables = body.getVariables(); } }) --------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/ZeebeConstants.java b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/ZeebeConstants.java index 0a11541308a..21dbcc5d4b8 100644 --- a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/ZeebeConstants.java +++ b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/ZeebeConstants.java @@ -26,27 +26,34 @@ public final class ZeebeConstants { public static final String DEFAULT_GATEWAY_HOST = "localhost"; public static final int DEFAULT_GATEWAY_PORT = 26500; - @Metadata(label = "producer", description = "The name of the resource.") + @Metadata(label = "producer", description = "The name of the resource.", javaType = "String") public static final String RESOURCE_NAME = HEADER_PREFIX + "ResourceName"; - @Metadata(label = "producer", description = "True if the operation was successful.") + @Metadata(label = "producer", description = "True if the operation was successful.", javaType = "boolean") public static final String IS_SUCCESS = HEADER_PREFIX + "IsSuccess"; - @Metadata(label = "producer", description = "In case of an error, the error message.") + @Metadata(label = "producer", description = "In case of an error, the error message.", javaType = "String") public static final String ERROR_MESSAGE = HEADER_PREFIX + "ErrorMessage"; - @Metadata(label = "producer", description = "In case of an error, the error code if available.") + @Metadata(label = "producer", description = "In case of an error, the error code if available.", javaType = "String") public static final String ERROR_CODE = HEADER_PREFIX + "ErrorCode"; - @Metadata(label = "producer", description = "The process ID of a deployed process.") + @Metadata(label = "producer", description = "The process ID of a deployed process.", javaType = "String") public static final String BPMN_PROCESS_ID = HEADER_PREFIX + "BPMNProcessId"; - @Metadata(label = "producer", description = "The version of a deployed process.") + @Metadata(label = "producer", description = "The version of a deployed process.", javaType = "int") public static final String VERSION = HEADER_PREFIX + "Version"; - @Metadata(label = "producer", description = "The process definition key of a deployed process.") + @Metadata(label = "producer", description = "The process definition key of a deployed process.", javaType = "long") public static final String PROCESS_DEFINITION_KEY = HEADER_PREFIX + "ProcessDefinitionKey"; + @Metadata(label = "common", + description = "The key of a job. " + + "The worker consumer adds the job key to the headers and the operations completeJob and failJob " + + "accept the job key in the header if no JobRequest is provided in the body.", + javaType = "long") + public static final String JOB_KEY = HEADER_PREFIX + "JobKey"; + private ZeebeConstants() { } } diff --git a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/ZeebeConsumer.java b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/ZeebeConsumer.java index 507b54eaccd..3ea388de52b 100644 --- a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/ZeebeConsumer.java +++ b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/ZeebeConsumer.java @@ -101,6 +101,7 @@ public class ZeebeConsumer extends DefaultConsumer { if (getEndpoint().isFormatJSON()) { try { exchange.getMessage().setBody(objectMapper.writeValueAsString(message)); + exchange.getMessage().setHeader(ZeebeConstants.JOB_KEY, job.getKey()); } catch (JsonProcessingException jsonProcessingException) { throw new IllegalArgumentException("Cannot convert result", jsonProcessingException); } diff --git a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/JobProcessor.java b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/JobProcessor.java index dbde436d79b..0d984017aa8 100644 --- a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/JobProcessor.java +++ b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/JobProcessor.java @@ -20,10 +20,12 @@ package org.apache.camel.component.zeebe.processor; import com.fasterxml.jackson.core.JsonProcessingException; import org.apache.camel.CamelException; import org.apache.camel.Exchange; +import org.apache.camel.component.zeebe.ZeebeConstants; import org.apache.camel.component.zeebe.ZeebeEndpoint; import org.apache.camel.component.zeebe.internal.ZeebeService; import org.apache.camel.component.zeebe.model.JobRequest; import org.apache.camel.component.zeebe.model.JobResponse; +import org.apache.camel.component.zeebe.model.JobWorkerMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,6 +40,7 @@ public class JobProcessor extends AbstractBaseProcessor { public void process(Exchange exchange) throws Exception { JobRequest message = null; + Long headerJobKey = exchange.getMessage().getHeader(ZeebeConstants.JOB_KEY, Long.class); if (exchange.getMessage().getBody() instanceof JobRequest) { message = exchange.getMessage().getBody(JobRequest.class); } else if (exchange.getMessage().getBody() instanceof String) { @@ -48,6 +51,14 @@ public class JobProcessor extends AbstractBaseProcessor { } catch (JsonProcessingException jsonProcessingException) { throw new IllegalArgumentException("Cannot convert body to JobMessage", jsonProcessingException); } + } else if (exchange.getMessage().getBody() instanceof JobWorkerMessage) { + JobWorkerMessage jobWorkerMessage = exchange.getMessage().getBody(JobWorkerMessage.class); + + message = new JobRequest(); + message.setJobKey(jobWorkerMessage.getKey()); + } else if (headerJobKey != null) { + message = new JobRequest(); + message.setJobKey(headerJobKey); } else { throw new CamelException("Job data missing"); }