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");
         }

Reply via email to