Git Product home page Git Product logo

camunda-platform-7-camel's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

camunda-platform-7-camel's Issues

provide spring boot autoconfiguration

see #31

currently, I have to use the spring dependency and add a bean configuration to my app:

@Bean
  fun camel(processEngine:ProcessEngine, camelContext: CamelContext) = CamelServiceImpl().apply {
    setCamelContext(camelContext)
    setProcessEngine(processEngine)

    camelContext.addComponent(CamundaBpmConstants.CAMUNDA_BPM_CAMEL_URI_SCHEME, CamundaBpmComponent(processEngine))
  }

I would love to have en autoconfiguration for this ... it should follow the @EnableCamundaCamel convention and not use the spring-factories config so I can easily choose to enable/disable independent of the jar on my classpath

change multi module setup to support extension and examples

following a pattern that we used for many extensions in the past (see https://github.com/camunda-community-hub/camunda-rest-client-spring-boot for example) I would like to restructure the layout so we have

  • root
    • examples
      • example 1
      • example n
    • extension
      • core
      • spring
        • spring
        • spring-boot
      • ...

This has proven to be a very effective multi module layout that allows to have multiple examples within the same mono-repo that are not published to maven central.
Not using sub folders easily leads to a cluttered repo when the number of examples and extensions increases.

pipeline fails on snapshot release

see: https://github.com/camunda-community-hub/camunda-bpm-camel/runs/4896841085?check_suite_focus=true

we get

Error:  Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8:deploy (default-deploy) on project camunda-bpm-camel-spring: Failed to deploy artifacts: Could not transfer artifact org.camunda.bpm.extension.camel:camunda-bpm-camel:pom:0.9.0-20220121.132151-1 from/to camunda-nexus (https://app.camunda.com/nexus/content/repositories/camunda-bpm-community-extensions-snapshots): authentication failed for https://app.camunda.com/nexus/content/repositories/camunda-bpm-community-extensions-snapshots/org/camunda/bpm/extension/camel/camunda-bpm-camel/0.9.0-SNAPSHOT/camunda-bpm-camel-0.9.0-20220121.132151-1.pom, **status: 401 Unauthorized** -> [Help 1]

I copied the standard actions from camunda-bpm-mockito, so I guess its just missing secrets on this repo.

@celanthe , can you take care of this?

Support error handling for sendTo

If a Camel route is called using the expression "${camel.sendTo(...)}" then a failed route should be handeled in BPMN using BPMN errors. Otherwise the process goes on as if the route was successful.

Pull request ist coming soon...

"Couldn't find process instance" while using async communication

Hi folks,

Another issue I could use some assistance with please.

I have a BPMN which uses the Camunda-Camel library to communicate to a third party service through Kafka, i.e.:

  1. A BPMN Send Task of a BPMN process sends a message to a Camel route.
    That task is the fist one in the BPMN process which may be important.
  2. The Camel route forwards the message to the "FromCamunda"Kafka topic.
  3. A third party service reads from the "FromCamunda" Kafka topic.
  4. The third party service does some processing and sends the reply to the "ToCamunda" Kafka topic.
  5. Another camel route configured on the same Camunda server as the one in steps 1-2 reads the message from the "ToCamunda" Kafka topic.
  6. The route forwards the message to the same Camunda BPMN process which sent the outgoing message in steps 1-2.
    The BPMN Process Instance ID is used for the correlation.

The routing sometime breaks with the following error:

2019-04-25 11:56:33,696 ERROR o.a.c.p.DefaultErrorHandler [-1) thread #1 - KafkaConsumer[toCamunda]] -> Failed delivery for (MessageId: ID-LAPTOP-9OG51EMC-1556205751527-0-4 on ExchangeId: ID-LAPTOP-9OG51EMC-1556205751527-0-3). Exhausted after delivery attempt: 1 caught: java.lang.RuntimeException: Couldn't find waiting process instance with id 'b2c37f57-6772-11e9-9616-e86a64530ab3' for message 'camel.answer'

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[asyncResponse     ] [asyncResponse     ] [kafka://localhost:9092?autoOffsetReset=earliest&brokers=localhost%3A9092&consu] [       100]
[asyncResponse     ] [unmarshal1        ] [unmarshal[org.apache.camel.model.dataformat.JsonDataFormat@473c9784]          ] [        22]
[asyncResponse     ] [process2          ] [Processor@0x3a92a57c                                                          ] [         0]
[asyncResponse     ] [to2               ] [camunda-bpm:message?messageName=camel.answer&copyBodyAsVariable=aggregateData ] [        75]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
java.lang.RuntimeException: Couldn't find waiting process instance with id 'b2c37f57-6772-11e9-9616-e86a64530ab3' for message 'camel.answer'
	at org.camunda.bpm.camel.component.producer.MessageProducer.process(MessageProducer.java:116)
	at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
	at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148)
	at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
	at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
	at org.apache.camel.component.kafka.KafkaConsumer$KafkaFetchRecords.doRun(KafkaConsumer.java:326)
	at org.apache.camel.component.kafka.KafkaConsumer$KafkaFetchRecords.run(KafkaConsumer.java:215)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
2019-04-25 11:56:33,698 WARN  o.a.c.c.k.KafkaConsumer [-1) thread #1 - KafkaConsumer[toCamunda]] -> Error during processing. Exchange[ID-LAPTOP-9OG51EMC-1556205751527-0-3]. Caused by: [java.lang.RuntimeException - Couldn't find waiting process instance with id 'b2c37f57-6772-11e9-9616-e86a64530ab3' for message 'camel.answer']
java.lang.RuntimeException: Couldn't find waiting process instance with id 'b2c37f57-6772-11e9-9616-e86a64530ab3' for message 'camel.answer'
	at org.camunda.bpm.camel.component.producer.MessageProducer.process(MessageProducer.java:116)
	at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
	at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148)
	at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
	at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
	at org.apache.camel.component.kafka.KafkaConsumer$KafkaFetchRecords.doRun(KafkaConsumer.java:326)
	at org.apache.camel.component.kafka.KafkaConsumer$KafkaFetchRecords.run(KafkaConsumer.java:215)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)

The BPMN:

<?xml version="1.0" encoding="UTF-8"?> <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0wxf2ek" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.2.4"> <bpmn:message id="Message_1buba0w" name="camel.answer" /> <bpmn:message id="Message_19viyxu" name="camel.answer" /> <bpmn:process id="camel_asynch" name="Camel async" isExecutable="true"> <bpmn:endEvent id="EndEvent_1egevrf"> <bpmn:incoming>SequenceFlow_0aodgcz</bpmn:incoming> </bpmn:endEvent> <bpmn:sendTask id="SendTask_1ouqvcf" name="Call async service" camunda:expression="#{camel.sendTo(&#39;direct:asyncService&#39;)}" camunda:resultVariable="aggregateData"> <bpmn:incoming>SequenceFlow_1yw1ho6</bpmn:incoming> <bpmn:outgoing>SequenceFlow_1i1ujc8</bpmn:outgoing> </bpmn:sendTask> <bpmn:sequenceFlow id="SequenceFlow_0aodgcz" sourceRef="IntermediateCatchEvent_133vikc" targetRef="EndEvent_1egevrf" /> <bpmn:sequenceFlow id="SequenceFlow_1yw1ho6" sourceRef="StartEvent_1cmiw6j" targetRef="SendTask_1ouqvcf" /> <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_133vikc" name="message &#39;answer&#39; received"> <bpmn:incoming>SequenceFlow_1i1ujc8</bpmn:incoming> <bpmn:outgoing>SequenceFlow_0aodgcz</bpmn:outgoing> <bpmn:messageEventDefinition id="MessageEventDefinition_0anjhqa" messageRef="Message_0u86xqd" /> </bpmn:intermediateCatchEvent> <bpmn:sequenceFlow id="SequenceFlow_1i1ujc8" sourceRef="SendTask_1ouqvcf" targetRef="IntermediateCatchEvent_133vikc" /> <bpmn:startEvent id="StartEvent_1cmiw6j"> <bpmn:outgoing>SequenceFlow_1yw1ho6</bpmn:outgoing> </bpmn:startEvent> </bpmn:process> <bpmn:message id="Message_0u86xqd" name="camel.answer" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="camel_asynch"> <bpmndi:BPMNShape id="EndEvent_1egevrf_di" bpmnElement="EndEvent_1egevrf"> <dc:Bounds x="848" y="88" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="SendTask_1ouqvcf_di" bpmnElement="SendTask_1ouqvcf"> <dc:Bounds x="380" y="66" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0aodgcz_di" bpmnElement="SequenceFlow_0aodgcz"> <di:waypoint x="748" y="106" /> <di:waypoint x="848" y="106" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_1yw1ho6_di" bpmnElement="SequenceFlow_1yw1ho6"> <di:waypoint x="101" y="106" /> <di:waypoint x="380" y="106" /> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="IntermediateCatchEvent_133vikc_di" bpmnElement="IntermediateCatchEvent_133vikc"> <dc:Bounds x="712" y="88" width="36" height="36" /> <bpmndi:BPMNLabel> <dc:Bounds x="687" y="131" width="88" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1i1ujc8_di" bpmnElement="SequenceFlow_1i1ujc8"> <di:waypoint x="480" y="106" /> <di:waypoint x="712" y="106" /> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="StartEvent_1cmiw6j_di" bpmnElement="StartEvent_1cmiw6j"> <dc:Bounds x="65" y="88" width="36" height="36" /> </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn:definitions>

The Camel routes:

      from("direct://asyncService")
                .routeId("asyncService")
                .process(new Processor() {
                    @Override
                    public void process(Exchange exchange) throws Exception {
                        Map inMap = (Map)exchange.getIn().getBody();
                        Map<String, String> kafkaOutParams = new HashMap<>();
                        kafkaOutParams.put("aggregateSchemaId", inMap.get("aggregateSchemaId?").toString());
                        kafkaOutParams.put("aggregateInstanceId", inMap.get("aggregateInstanceId?").toString());
                        exchange.getOut().setBody(kafkaOutParams, Map.class);
                        exchange.getOut().setHeader(KafkaConstants.KEY,
                            exchange.getProperties().get(CamundaBpmConstants.EXCHANGE_HEADER_PROCESS_INSTANCE_ID));
                    }
                })
                .marshal().json(JsonLibrary.Jackson, Map.class)
                .convertBodyTo(String.class)
                .to("kafka:localhost:9092?topic=fromCamunda&brokers=localhost:9092");

        from("kafka:localhost:9092?topic=toCamunda&groupId=group_id&autoOffsetReset=earliest&consumersCount=1&brokers=localhost:9092")
            .routeId("asyncResponse")
            .unmarshal().json(JsonLibrary.Jackson, Map.class)
            .process(new Processor() {
                @Override
                public void process(Exchange exchange) throws Exception {
                    exchange.setProperty(CamundaBpmConstants.EXCHANGE_HEADER_PROCESS_INSTANCE_ID,
                        exchange.getIn().getHeader(KafkaConstants.KEY));
                    Map<String,Object> result = new HashMap<>();
                    result.put("aggregateData", exchange.getIn().getBody());
                    exchange.getIn().setBody(result, Map.class);
                }
            })
            .to("camunda-bpm:message?messageName=camel.answer&copyBodyAsVariable=aggregateData");

As far as I understand there's a race condition between the thread in the Camunda process that sends the outgoing Kafka message and the thread that reads the Kafka message and uses the Process Instance ID to find the process to forward the message to.
I.e. when the correlation is done in the second thread the process hasn'd been committed to the DB in the first thread.

  • Does this theory sound right?

  • If it doesn't what else could be the problem

  • Any advice how to fix the issue?

Any help is greatly appreciated!

Thanks,
Andrey.

Release 0.7

Changes:

  • updated to Camel 3, Spring 5.2.x, Camunda 7.12, Powermock 2.x, Mockito 2.28.x
  • Compiles also with Java >= 9
  • Compile for Java 8

can't catch BPMN error when camel throw exception

I have demo Spring Boot application with camunda-bpm-camel extention. Process starts normally , but I always get log normal step even camel throw exception. Boundary event never catch exception . I expect log error step execution. What i'm doing wrong ?
Versions
<camunda.spring.boot.starter.version>3.0.0</camunda.spring.boot.starter.version> <spring.boot.version>2.0.2.RELEASE</spring.boot.version> <camunda.version>7.9.0</camunda.version> <camel.version>2.22.2</camel.version> <camunda.camel.version>0.7-SNAPSHOT</camunda.camel.version>
default
https://github.com/deniskru/testCamelCamundaBoundary.git

Support Camel 3

Hi,

Would you be willing to upgrade this project to Camel 3?

I am willing to provide a pull request with the required changes. I have already forked the repository and made the changes. But I need to test it before I can create the pull request.

Jeroen

Sync outbound call using ${camel.sendTo(...)} does not throw exception

The camunda-bpm-camel component's camel.sendTo is internally calling producerTemplate.send()

The send() method is not designed to throw the exception to the caller (camunda-bpm-camel component in this case). This makes it impossible to handle the thrown exception in BPM process. e.g. In case of business errors, I would like to throw BpmnError and create UserTask, In cases of technical error, just rethrow the exception so that the execution gets faulted and retried as per the configuration.

Even if I map different exceptions in my route, the camel always makes it available either as Exchange.getException() if i call send() method or CamelExecutionException if I call sendBody() on producerTemplate.

javadoc of the producerTemplate.send(String endpointUri, Exchange exchange)
Sends the exchange to the given endpoint
Notice: that if the processing of the exchange failed with an Exception it is not thrown from this method, but you can access it from the returned exchange using Exchange.getException().

I think the component needs to change to check the Exchange.getException() and rethow it after calling template.send().

Stop camunda 'route' on camel exception.

Hi! I have tried googling around for a solution to this, but I've not found anything so far.

I'm sending data from Camel to Camunda via camunda-bpm://start?.... At several points it calls Camel endpoints, such as ${camel.sendTo('direct:debug')}. However, when any of these Camel routes/endpoints throw an exception, the Camunda route proceeds as if nothing wrong has occurred. This will cause issues later in the Camunda route. Setting an 'exception' variable and checking for it after every call to Camel will make the BPMN extremely bloated real quick.

So, in short: Is it possible to cancel a Camunda 'route/run' when one of its calls to Camel throws an exception?

Rename repository, update documentation & assets

Hi Jan,

This issue is being opened to ask if you would be open to renaming your extension on GitHub via the 'Settings' option to reference Camunda Platform 7 rather than Camunda BPM. (For example: camunda-platform-7-camel) This change will also likely impact any screenshots you have in the README that reference Camunda BPM, and this verbiage will need to also be updated throughout the repo's documentation as a whole if you choose to make these changes. You can also make use of Shields.io badges to indicate which version of Camunda your extension is compatible with.

While it is not a requirement that you rename your extension to align with Camunda Platform 7, we would greatly appreciate it if you could make these changes, and merge them anytime after April 12th, 2022.

if you have any questions or require any assistance, please do not hesitate to reach out to @camunda-community-hub/devrel! :)

'sendTo' throws IllegalArgumentException

Given:
A task which uses 'sendTo' to call a certain Camel route. The response is stored into a process variable 'incrementalFilename'. If the Camel route could not find this incremental file, the out body of the route is null and therefore the newly created process variable stores null as its value.
Afterwards another task of the same process uses 'sendTo' to call another Camel route. This task wants to receive all process variables by using the syntax ${camel.sendTo('direct:myRoute')}.

In this situation an exception with this cause is thrown:

Caused by: java.lang.IllegalArgumentException: Process variable 'incrementalFilename' no found!
        at org.camunda.bpm.camel.common.CamelServiceCommonImpl.sendToInternal(CamelServiceCommonImpl.java:66)
        at org.camunda.bpm.camel.common.CamelServiceCommonImpl.sendTo(CamelServiceCommonImpl.java:55)
        at org.camunda.bpm.camel.common.CamelServiceCommonImpl.sendTo(CamelServiceCommonImpl.java:34)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_144]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_144]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_144]
        at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_144]
        at org.camunda.bpm.engine.impl.javax.el.BeanELResolver.invoke(BeanELResolver.java:479) [camunda-engine-7.6.3-ee.jar:7.6.3-ee]
        ... 163 more

What happens? If one requires to get all process variables then simply the sentTo is transformed into the same mode if a list of the current process variables was given as the second parameter. In this mode every process variable is mandetory and therefore the given exception is thrown.

Possible solution:
Treat the situtation "all process variables" in another way and suppress those expection because it might be OK for a process variable to store a null value.

To be discussed:
Create a possiblity to also get named process variables even if they are null because the Camel route deals this.

use jdk 11

project is still on jdk8 ... which is unsupported.

Update to camel 3.2.0

Hey,

Thanks a lot for this project camunda team, it helps so much!

I'm testing camunda-bpm-camel along with my project and I've noticed that camel version supported is 3.0.1. What do you think to update to 3.1.0 or 3.2.0?

Camel 3.3.0 is coming soon https://github.com/apache/camel/releases/tag/camel-3.3.0, so I think it's important to update camunda-bpm-camel asap.

If you want, I could do this myself, but I'd like to listen you first

Process variables as out-exchange's body

If a route has to process the result of a process instance startet by the route itself it would be convenient if the process instance's variables were set as body of the out exchange. Of course one has to be aware of building processes which end in expected wait states (end event, async flags, receive task, external task, etc.).

Pull request is coming soon...

Getting an error trying to call a REST endpoint via Camel from a BPMN process

Hi folks,

I am evaluating the camunda-bpm-camel library and have run into a problem when I try to make a call to a REST endpoint using a Camel route,

The details are below. Any help is greatly appreciated.

The BPMN:

<?xml version="1.0" encoding="UTF-8"?> <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0wxf2ek" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.2.4"> <bpmn:collaboration id="camel_parent"> <bpmn:participant id="camel_sync_collaborator" name="Camel Sync" processRef="camel_synch" /> <bpmn:participant id="camel_participant" name="Camel" processRef="camel" /> <bpmn:messageFlow id="MessageFlow_0gwrv3c" sourceRef="camel_participant" targetRef="Task_026uffa" /> <bpmn:messageFlow id="MessageFlow_06rkpd2" sourceRef="Task_026uffa" targetRef="camel_participant" /> </bpmn:collaboration> <bpmn:process id="camel_synch" name="Camel Process" isExecutable="true"> <bpmn:serviceTask id="Task_026uffa" name="Init service external call" camunda:expression="#{camel.sendTo(&#39;direct:syncService&#39;)}" camunda:resultVariable="data"> <bpmn:incoming>SequenceFlow_0zwsczz</bpmn:incoming> <bpmn:outgoing>SequenceFlow_05zm778</bpmn:outgoing> </bpmn:serviceTask> <bpmn:endEvent id="EndEvent_0d841wv"> <bpmn:incoming>SequenceFlow_05zm778</bpmn:incoming> </bpmn:endEvent> <bpmn:startEvent id="StartEvent_1o5tati"> <bpmn:outgoing>SequenceFlow_0zwsczz</bpmn:outgoing> </bpmn:startEvent> <bpmn:sequenceFlow id="SequenceFlow_05zm778" sourceRef="Task_026uffa" targetRef="EndEvent_0d841wv" /> <bpmn:sequenceFlow id="SequenceFlow_0zwsczz" sourceRef="StartEvent_1o5tati" targetRef="Task_026uffa" /> </bpmn:process> <bpmn:process id="camel" name="Camel" isExecutable="true" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="camel_parent"> <bpmndi:BPMNShape id="Participant_0k0cwwd_di" bpmnElement="camel_sync_collaborator"> <dc:Bounds x="91" y="155" width="1111" height="325" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ServiceTask_0gs39gb_di" bpmnElement="Task_026uffa"> <dc:Bounds x="480" y="225" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="EndEvent_0d841wv_di" bpmnElement="EndEvent_0d841wv"> <dc:Bounds x="822" y="247" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="StartEvent_1o5tati_di" bpmnElement="StartEvent_1o5tati"> <dc:Bounds x="227" y="247" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_05zm778_di" bpmnElement="SequenceFlow_05zm778"> <di:waypoint x="580" y="265" /> <di:waypoint x="822" y="265" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_0zwsczz_di" bpmnElement="SequenceFlow_0zwsczz"> <di:waypoint x="263" y="265" /> <di:waypoint x="480" y="265" /> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="Participant_0cq6jhx_di" bpmnElement="camel_participant"> <dc:Bounds x="91" y="-58" width="1079" height="133" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="MessageFlow_0gwrv3c_di" bpmnElement="MessageFlow_0gwrv3c"> <di:waypoint x="629" y="75" /> <di:waypoint x="652" y="135" /> <di:waypoint x="602" y="204" /> <di:waypoint x="576" y="227" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="MessageFlow_06rkpd2_di" bpmnElement="MessageFlow_06rkpd2"> <di:waypoint x="502" y="225" /> <di:waypoint x="435" y="131" /> <di:waypoint x="501" y="75" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn:definitions>

The route config:
` from("direct://syncService")
.setHeader(Exchange.HTTP_METHOD, constant("GET"))
.setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
.to("http://localhost:8082/korio-rest/task/getData/aaa")
.routeId("syncService")
.process(new Processor() {
@OverRide
public void process(Exchange exchange) {
Map data = exchange.getIn().getBody(Map.class);

                exchange.getOut().setBody(data);
            }
        });`

The stack trace:
`2019-04-15 00:42:51,139 ERROR o.a.c.p.DefaultErrorHandler [http-nio-8080-exec-7] -> Failed delivery for (MessageId: ID-LAPTOP-9OG51EMC-59853-1555303018782-0-3 on ExchangeId: ID-LAPTOP-9OG51EMC-59853-1555303018782-0-4). Exhausted after delivery attempt: 1 caught: org.apache.camel.InvalidPayloadException: No body available of type: java.io.InputStream but has value: {} of type: java.util.HashMap on: Message[ID-LAPTOP-9OG51EMC-59853-1555303018782-0-3]. Caused by: No type converter available to convert from type: java.util.HashMap to the required type: java.io.InputStream with value {}. Exchange[ID-LAPTOP-9OG51EMC-59853-1555303018782-0-4]. Caused by: [org.apache.camel.NoTypeConversionAvailableException - No type converter available to convert from type: java.util.HashMap to the required type: java.io.InputStream with value {}]

Message History

RouteId ProcessorId Processor Elapsed (ms)
[syncService ] [syncService ] [ ] [ 10]
[syncService ] [setHeader1 ] [setHeader[CamelHttpMethod] ] [ 3]
[syncService ] [setHeader2 ] [setHeader[Content-Type] ] [ 2]
[syncService ] [to1 ] [http://localhost:8082/korio-rest/task/getData/aaa ] [ 3]

Stacktrace

org.apache.camel.InvalidPayloadException: No body available of type: java.io.InputStream but has value: {} of type: java.util.HashMap on: Message[ID-LAPTOP-9OG51EMC-59853-1555303018782-0-3]. Caused by: No type converter available to convert from type: java.util.HashMap to the required type: java.io.InputStream with value {}. Exchange[ID-LAPTOP-9OG51EMC-59853-1555303018782-0-4]. Caused by: [org.apache.camel.NoTypeConversionAvailableException - No type converter available to convert from type: java.util.HashMap to the required type: java.io.InputStream with value {}]
at org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:107)
at org.apache.camel.component.http.HttpProducer.createRequestEntity(HttpProducer.java:460)
at org.apache.camel.component.http.HttpProducer.createMethod(HttpProducer.java:384)
at org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:95)
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
at org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:68)
at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:412)
at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:380)
at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:270)
at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:380)
at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:205)
at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:119)
at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:105)
at org.camunda.bpm.camel.common.CamelServiceCommonImpl.sendToInternal(CamelServiceCommonImpl.java:101)
at org.camunda.bpm.camel.common.CamelServiceCommonImpl.sendTo(CamelServiceCommonImpl.java:63)
at org.camunda.bpm.camel.common.CamelServiceCommonImpl.sendTo(CamelServiceCommonImpl.java:36)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.camunda.bpm.engine.impl.javax.el.BeanELResolver.invoke(BeanELResolver.java:479)
at org.camunda.bpm.engine.impl.javax.el.CompositeELResolver.invoke(CompositeELResolver.java:397)
at org.camunda.bpm.engine.impl.juel.AstMethod.invoke(AstMethod.java:91)
at org.camunda.bpm.engine.impl.juel.AstMethod.eval(AstMethod.java:75)
at org.camunda.bpm.engine.impl.juel.AstEval.eval(AstEval.java:50)
at org.camunda.bpm.engine.impl.juel.AstNode.getValue(AstNode.java:26)
at org.camunda.bpm.engine.impl.juel.TreeValueExpression.getValue(TreeValueExpression.java:114)
at org.camunda.bpm.engine.impl.delegate.ExpressionGetInvocation.invoke(ExpressionGetInvocation.java:39)
at org.camunda.bpm.engine.impl.delegate.DelegateInvocation.proceed(DelegateInvocation.java:57)
at org.camunda.bpm.engine.impl.delegate.DefaultDelegateInterceptor.handleInvocationInContext(DefaultDelegateInterceptor.java:90)
at org.camunda.bpm.engine.impl.delegate.DefaultDelegateInterceptor.handleInvocation(DefaultDelegateInterceptor.java:62)
at org.camunda.bpm.engine.impl.el.JuelExpression.getValue(JuelExpression.java:59)
at org.camunda.bpm.engine.impl.el.JuelExpression.getValue(JuelExpression.java:50)
at org.camunda.bpm.engine.impl.bpmn.behavior.ServiceTaskExpressionActivityBehavior$1.call(ServiceTaskExpressionActivityBehavior.java:49)
at org.camunda.bpm.engine.impl.bpmn.behavior.ServiceTaskExpressionActivityBehavior$1.call(ServiceTaskExpressionActivityBehavior.java:45)
at org.camunda.bpm.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior.executeWithErrorPropagation(AbstractBpmnActivityBehavior.java:110)
at org.camunda.bpm.engine.impl.bpmn.behavior.ServiceTaskExpressionActivityBehavior.performExecution(ServiceTaskExpressionActivityBehavior.java:45)
at org.camunda.bpm.engine.impl.bpmn.behavior.TaskActivityBehavior.execute(TaskActivityBehavior.java:68)
at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationActivityExecute$2.callback(PvmAtomicOperationActivityExecute.java:60)
at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationActivityExecute$2.callback(PvmAtomicOperationActivityExecute.java:49)
at org.camunda.bpm.engine.impl.pvm.runtime.PvmExecutionImpl.continueIfExecutionDoesNotAffectNextOperation(PvmExecutionImpl.java:1988)
at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationActivityExecute.execute(PvmAtomicOperationActivityExecute.java:41)
at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationActivityExecute.execute(PvmAtomicOperationActivityExecute.java:30)
at org.camunda.bpm.engine.impl.interceptor.AtomicOperationInvocation.execute(AtomicOperationInvocation.java:95)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.invokeNext(CommandInvocationContext.java:127)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.performNext(CommandInvocationContext.java:107)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.performOperation(CommandInvocationContext.java:82)
at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:640)
at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:614)
at org.camunda.bpm.engine.impl.pvm.runtime.PvmExecutionImpl$6.callback(PvmExecutionImpl.java:1927)
at org.camunda.bpm.engine.impl.pvm.runtime.PvmExecutionImpl$6.callback(PvmExecutionImpl.java:1924)
at org.camunda.bpm.engine.impl.pvm.runtime.PvmExecutionImpl.continueExecutionIfNotCanceled(PvmExecutionImpl.java:1994)
at org.camunda.bpm.engine.impl.pvm.runtime.PvmExecutionImpl.dispatchDelayedEventsAndPerformOperation(PvmExecutionImpl.java:1943)
at org.camunda.bpm.engine.impl.pvm.runtime.PvmExecutionImpl.dispatchDelayedEventsAndPerformOperation(PvmExecutionImpl.java:1924)
at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationTransitionNotifyListenerStart.eventNotificationsCompleted(PvmAtomicOperationTransitionNotifyListenerStart.java:60)
at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationTransitionNotifyListenerStart.eventNotificationsCompleted(PvmAtomicOperationTransitionNotifyListenerStart.java:30)
at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:67)
at org.camunda.bpm.engine.impl.interceptor.AtomicOperationInvocation.execute(AtomicOperationInvocation.java:95)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.invokeNext(CommandInvocationContext.java:127)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.performNext(CommandInvocationContext.java:107)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.performOperation(CommandInvocationContext.java:82)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.performOperation(CommandInvocationContext.java:72)
at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:649)
at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:624)
at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:60)
at org.camunda.bpm.engine.impl.interceptor.AtomicOperationInvocation.execute(AtomicOperationInvocation.java:95)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.invokeNext(CommandInvocationContext.java:127)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.performNext(CommandInvocationContext.java:107)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.performOperation(CommandInvocationContext.java:82)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.performOperation(CommandInvocationContext.java:72)
at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:649)
at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:624)
at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:60)
at org.camunda.bpm.engine.impl.interceptor.AtomicOperationInvocation.execute(AtomicOperationInvocation.java:95)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.invokeNext(CommandInvocationContext.java:127)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.performNext(CommandInvocationContext.java:107)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.performOperation(CommandInvocationContext.java:82)
at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:640)
at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:614)
at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationTransitionCreateScope.scopeCreated(PvmAtomicOperationTransitionCreateScope.java:37)
at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationCreateScope.execute(PvmAtomicOperationCreateScope.java:53)
at org.camunda.bpm.engine.impl.pvm.runtime.operation.PvmAtomicOperationCreateScope.execute(PvmAtomicOperationCreateScope.java:27)
at org.camunda.bpm.engine.impl.interceptor.AtomicOperationInvocation.execute(AtomicOperationInvocation.java:95)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.invokeNext(CommandInvocationContext.java:127)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.performNext(CommandInvocationContext.java:114)
at org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.performOperation(CommandInvocationContext.java:82)
at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:640)
at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:614)
at org.camunda.bpm.engine.impl.pvm.runtime.PvmExecutionImpl.start(PvmExecutionImpl.java:246)
at org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity.start(ExecutionEntity.java:449)
at org.camunda.bpm.engine.impl.cmmn.behavior.ProcessTaskActivityBehavior.triggerCallableElement(ProcessTaskActivityBehavior.java:38)
at org.camunda.bpm.engine.impl.cmmn.behavior.ProcessOrCaseTaskActivityBehavior.performStart(ProcessOrCaseTaskActivityBehavior.java:34)
at org.camunda.bpm.engine.impl.cmmn.behavior.StageOrTaskActivityBehavior.started(StageOrTaskActivityBehavior.java:92)
at org.camunda.bpm.engine.impl.cmmn.operation.AtomicOperationCaseExecutionStart.postTransitionNotification(AtomicOperationCaseExecutionStart.java:50)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.eventNotificationsCompleted(AbstractCmmnEventAtomicOperation.java:43)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.eventNotificationsCompleted(AbstractCmmnEventAtomicOperation.java:29)
at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:67)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.execute(AbstractCmmnEventAtomicOperation.java:29)
at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:105)
at org.camunda.bpm.engine.impl.cmmn.entity.runtime.CaseExecutionEntity.performOperationSync(CaseExecutionEntity.java:896)
at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:60)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.execute(AbstractCmmnEventAtomicOperation.java:29)
at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:105)
at org.camunda.bpm.engine.impl.cmmn.entity.runtime.CaseExecutionEntity.performOperationSync(CaseExecutionEntity.java:896)
at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:60)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.execute(AbstractCmmnEventAtomicOperation.java:29)
at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:105)
at org.camunda.bpm.engine.impl.cmmn.entity.runtime.CaseExecutionEntity.performOperation(CaseExecutionEntity.java:891)
at org.camunda.bpm.engine.impl.cmmn.execution.CmmnExecution.start(CmmnExecution.java:989)
at org.camunda.bpm.engine.impl.cmmn.behavior.StageOrTaskActivityBehavior.fireEntryCriteria(StageOrTaskActivityBehavior.java:212)
at org.camunda.bpm.engine.impl.cmmn.behavior.StageOrTaskActivityBehavior.created(StageOrTaskActivityBehavior.java:48)
at org.camunda.bpm.engine.impl.cmmn.operation.AtomicOperationCaseExecutionCreated.execute(AtomicOperationCaseExecutionCreated.java:34)
at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:105)
at org.camunda.bpm.engine.impl.cmmn.entity.runtime.CaseExecutionEntity.performOperation(CaseExecutionEntity.java:891)
at org.camunda.bpm.engine.impl.cmmn.operation.AtomicOperationCaseExecutionCreate.postTransitionNotification(AtomicOperationCaseExecutionCreate.java:49)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.eventNotificationsCompleted(AbstractCmmnEventAtomicOperation.java:43)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.eventNotificationsCompleted(AbstractCmmnEventAtomicOperation.java:29)
at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:67)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.execute(AbstractCmmnEventAtomicOperation.java:29)
at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:105)
at org.camunda.bpm.engine.impl.cmmn.entity.runtime.CaseExecutionEntity.performOperationSync(CaseExecutionEntity.java:896)
at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:60)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.execute(AbstractCmmnEventAtomicOperation.java:29)
at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:105)
at org.camunda.bpm.engine.impl.cmmn.entity.runtime.CaseExecutionEntity.performOperation(CaseExecutionEntity.java:891)
at org.camunda.bpm.engine.impl.cmmn.execution.CmmnExecution.triggerChildExecutionsLifecycle(CmmnExecution.java:957)
at org.camunda.bpm.engine.impl.cmmn.behavior.StageActivityBehavior.performStart(StageActivityBehavior.java:49)
at org.camunda.bpm.engine.impl.cmmn.behavior.StageOrTaskActivityBehavior.started(StageOrTaskActivityBehavior.java:92)
at org.camunda.bpm.engine.impl.cmmn.operation.AtomicOperationCaseInstanceCreate.postTransitionNotification(AtomicOperationCaseInstanceCreate.java:54)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.eventNotificationsCompleted(AbstractCmmnEventAtomicOperation.java:43)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.eventNotificationsCompleted(AbstractCmmnEventAtomicOperation.java:29)
at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:67)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.execute(AbstractCmmnEventAtomicOperation.java:29)
at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:105)
at org.camunda.bpm.engine.impl.cmmn.entity.runtime.CaseExecutionEntity.performOperationSync(CaseExecutionEntity.java:896)
at org.camunda.bpm.engine.impl.core.operation.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:60)
at org.camunda.bpm.engine.impl.cmmn.operation.AbstractCmmnEventAtomicOperation.execute(AbstractCmmnEventAtomicOperation.java:29)
at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:105)
at org.camunda.bpm.engine.impl.interceptor.CommandContext$1.call(CommandContext.java:94)
at org.camunda.bpm.engine.impl.interceptor.CommandContext$1.call(CommandContext.java:92)
at org.camunda.bpm.engine.impl.context.ProcessApplicationClassloaderInterceptor.call(ProcessApplicationClassloaderInterceptor.java:47)
at org.camunda.bpm.application.AbstractProcessApplication.execute(AbstractProcessApplication.java:117)
at org.camunda.bpm.application.AbstractProcessApplication.execute(AbstractProcessApplication.java:128)
at org.camunda.bpm.engine.impl.context.Context.executeWithinProcessApplication(Context.java:194)
at org.camunda.bpm.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:92)
at org.camunda.bpm.engine.impl.cmmn.entity.runtime.CaseExecutionEntity.performOperation(CaseExecutionEntity.java:891)
at org.camunda.bpm.engine.impl.cmmn.execution.CmmnExecution.create(CmmnExecution.java:934)
at org.camunda.bpm.engine.impl.cmmn.entity.runtime.CaseExecutionEntity.create(CaseExecutionEntity.java:390)
at org.camunda.bpm.engine.impl.cmmn.cmd.CreateCaseInstanceCmd.execute(CreateCaseInstanceCmd.java:69)
at org.camunda.bpm.engine.impl.cmmn.cmd.CreateCaseInstanceCmd.execute(CreateCaseInstanceCmd.java:38)
at org.camunda.bpm.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:27)
at org.camunda.bpm.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:106)
at org.camunda.bpm.engine.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:45)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at org.camunda.bpm.engine.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:43)
at org.camunda.bpm.engine.impl.interceptor.ProcessApplicationContextInterceptor.execute(ProcessApplicationContextInterceptor.java:69)
at org.camunda.bpm.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:32)
at org.camunda.bpm.engine.impl.cmmn.CaseInstanceBuilderImpl.create(CaseInstanceBuilderImpl.java:120)
at org.camunda.bpm.engine.impl.cmmn.CaseServiceImpl.createCaseInstanceByKey(CaseServiceImpl.java:200)
at com.korio.dsabackend.service.aggregate.AggregateService.createAggregateInstance(AggregateService.java:108)
at com.korio.dsabackend.restapi.aggregate.AggregateController.createAggregateInstance(AggregateController.java:71)
at com.korio.dsabackend.restapi.aggregate.AggregateController$$FastClassBySpringCGLIB$$e88791ff.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
at com.korio.dsabackend.restapi.aggregate.AggregateController$$EnhancerBySpringCGLIB$$87449ec6.createAggregateInstance()
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.camunda.bpm.webapp.impl.security.filter.SecurityFilter.doFilterSecure(SecurityFilter.java:70)
at org.camunda.bpm.webapp.impl.security.filter.SecurityFilter.doFilter(SecurityFilter.java:54)
at org.camunda.bpm.spring.boot.starter.webapp.filter.LazyDelegateFilter.doFilter(LazyDelegateFilter.java:59)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.camunda.bpm.webapp.impl.security.auth.AuthenticationFilter$1.execute(AuthenticationFilter.java:61)
at org.camunda.bpm.webapp.impl.security.auth.AuthenticationFilter$1.execute(AuthenticationFilter.java:59)
at org.camunda.bpm.webapp.impl.security.SecurityActions.runWithAuthentications(SecurityActions.java:43)
at org.camunda.bpm.webapp.impl.security.auth.AuthenticationFilter.doFilter(AuthenticationFilter.java:59)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:791)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.apache.camel.NoTypeConversionAvailableException: No type converter available to convert from type: java.util.HashMap to the required type: java.io.InputStream with value {}
at org.apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:198)
at org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:105)
... 248 common frames omitted`

Thanks,
Andrey.

Camel 4 Support

Camel 4.0.0 has been released on 2023-08-14. As of now, this is the current LTS. The next LTS (4.4.0) is expected to be released in Jan/Feb 2024.

The new release broght some changes. The most notably change is the switch from javax to jakarta. But internal APIs of camel changed as well. The most notable changes are listed in the official migration guide (camel.apache.org).

It is desirable to support Camel in version 4.0.0.

remove powermock

just found this comment somewhere else : "So happy to see Powermock go, finally "

It annoys me as well, so let's get rid of it.

Fix release

Please release a fix version from the project. It seems to be stable enough, but we need a released version for using it.

Question: Why is this project deprecated?

I was planning on using camunda with camel for some time and now have a concrete use case for async external tasks ... and see the badge "deprecated".

@berndruecker may be you can answer this: What is the state of this project?

Implicit process variables have names appended with query character

Referencing my Forum post: https://forum.camunda.org/t/what-is-issue-36-introduce-optional-variables-in-the-camunda-camel-extension/11453

If the process calls the camel service bean with no explicit variables, in the past, all the process variables were put into the Camel exchange as name-value pairs in a Map in the Body. We use this capability to decouple our Camel routes from our Camunda processes. The routes can pick whichever variables they want to use from the set of all process variables in the process execution, instead of being told what they can have by the call to the Camel service bean from that process.

There is a commit; 87322c8 which is part of pull request 37 (#37), which is titled ’ Issue 36: Introduce optional variables’. This change seems to be a breaking change to the Camel service bean, which has changed all the names of the process variables being implicitly fetched from the process execution by appending '?'. What is the intent of this? AFAIK, this should be a defect, since the documentation doesn't tell me why I should rename all the process variables that we use in all our Camel routes to have a '?' on the end, so that I can upgrade to version 0.6.

Sadly, I also need to do the upgrade because 0.5 seems to be responsible for the asyncResponseTimeout in the REST ExternalTask API 'fetchAndLock' not working properly. See my earlier forum post https://forum.camunda.org/t/fetchandlock-using-asyncresponsetimeout-returns-empty-body/9511

update to camunda 7.16

to be able to use the latest supported spring boot version (see #78 ) we should bring the extension to camunda 7.16.

Pass variable to camel route

Hi, i follow the instructor for the readme page with indicate that the form for pass variable to a camel route.

The code is: "${camel.sendTo('direct:llamarPrueba', 'request')}"

Here, i call the route "llamarPrueba" and send the variable request.

The camel route is this: from("direct:llamarPrueba") .routeId(ROUTE_NAME) .marshal(marshaller) .to("spring-ws:http://localhost:8081/ws") .unmarshal(marshaller);

But when the marshal tried to process the variable, throw:

java.io.IOException: org.apache.camel.NoTypeConversionAvailableException: No type converter available to convert from type: java.util.HashMap to the required type: java.io.InputStream with value {request=com.example.demo.cliente.GetCountryRequest@1922e2c1}

How i get only the value of 'request' for make the soap request properly?

camunda-bpm-camel in spring-boot : Cannot find property camel

I have a spring boot application with camel and camunda integration.

https://github.com/larbigj/camunda-camel-boot

I can start a camunda process with a camel route but when I try to call a camel route from the
process I get an exception org.camunda.bpm.engine.impl.javax.el.PropertyNotFoundException: Cannot find property camel

A bean with name camel as mentioned in the documentation is available

@bean(name = "camel")
public CamelServiceImpl camel() {
CamelServiceImpl camelServiceImpl = new CamelServiceImpl();
camelServiceImpl.setCamelContext(camelContext);
camelServiceImpl.setProcessEngine(processEngine);
return camelServiceImpl;
}

Regards
Jörg

No HTTPS used to resolve dependencies in Maven Build

A user created a pull request in the bpm platform to fix a security vulnurability where a maven repository was accessed via HTTP instead of HTTPS. This can be exploited via Man-In-The-Middle attacks.

While scanning our other GitHub repositories for similar issues, I saw that camunda-bpm-camel is also accessing a maven repository via HTTP. (here) Consider accessing the repository via HTTPS. (It's redirecting to HTTPS anyways)

Find more information in the linked PR. :)

CamelBlueprintELResolver not detected

Hi,

I try to use the Camel integration inside Camunda with Blueprint. For more information, I create a ProcessApplication with the annotation and I declare the process engine via processes.xml.
And for sure, I create the specific EL resolver for Camel:

It seems that the ProcessApplicationElResolverDelegate doesn't find the ProcessApplicationReference. Context.getCurrentProcessApplication() returns null.

Any idea? Missing configuration?

I see that the ProcessApplicationReference is expected to be stored in a ThreadLocal, but for each request it's a different thread...

"No such external task" for some async routes

Using the attribute "async=true" on "poll-externalTasks" routes and resolve the task in the same route gives the error mentioned in the subject.

Example route:

        from("camunda-bpm:poll-externalTasks"
                + "?topic=LongRunningTask"
                + "&async=true"
                + "&lockDuration=6h"
                + "&scheduler=#LongRunningScheduler")
            .threads()
            .bean(LongRunningTask.class.getSimpleName(), "doIt")
            .to("camunda-bpm://async-externalTask");

Camunda 7.9.0 / Spring Boot 2.0.2.RELEASE compatibility

Hi guys,

I'm trying to upgrade a camunda 7.8.0 project to the 7.9.0 release. As of the release notes, I also upgraded from 1.5.10.RELEASE ro the latest 2.c spring boot release.

The 7.9.0 project I have uses this camel-camunda integration -- it's working great!

However, when I switch to 7.9.0/spring boot 2.0.2.RELEASE, I get the following error:

2018-05-29 17:59:26.685 ERROR 11000 --- [  restartedMain] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.nexiles.camundacamel.CamundaCamelApplication]; nested exception is java.lang.IllegalStateException: Could not evaluate condition on org.apache.camel.spring.boot.health.HealthCheckRoutesAutoConfiguration due to org/springframework/boot/bind/RelaxedPropertyResolver not found. Make sure your own configuration does not rely on that class. This can also happen if you are @ComponentScanning a springframework package (e.g. if you put a @ComponentScan in the default package by mistake)

Is 7.9.0/spring boot 2.0 even supported? Am I missing something before going deeper?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.