I have a few processes that use [Send event task] elements. Most of these processes work as intended, but those which start with a timer event tend to fail. These processes generally look something like this:
Timer jobs get started, but an Event Task fails most of the time. Then it retries twice, sometimes successfully, sometimes not.
The same thing happens when there is a User Task.
There is a form attached to the User task, users fill it in, then click on the button Complete. In most times the following Event Task fails and retries twice.
This never happens if there is no timer or User Task before the event task, i.e., Start event or Start signal event are used.
The error:
org.flowable.common.engine.api.FlowableException: Could not find an outbound channel adapter for channel outboundChannel
at org.flowable.eventregistry.impl.DefaultOutboundEventProcessor.sendEvent(DefaultOutboundEventProcessor.java:54)
at org.flowable.eventregistry.impl.DefaultEventRegistry.sendEventOutbound(DefaultEventRegistry.java:87)
at org.flowable.engine.impl.bpmn.behavior.SendEventTaskActivityBehavior.execute(SendEventTaskActivityBehavior.java:111)
at org.flowable.engine.impl.jobexecutor.AsyncSendEventJobHandler.execute(AsyncSendEventJobHandler.java:52)
at org.flowable.job.service.impl.asyncexecutor.DefaultJobManager.executeJobHandler(DefaultJobManager.java:542)
at org.flowable.job.service.impl.asyncexecutor.DefaultJobManager.executeMessageJob(DefaultJobManager.java:470)
at org.flowable.job.service.impl.asyncexecutor.DefaultJobManager.execute(DefaultJobManager.java:308)
at org.flowable.job.service.impl.cmd.ExecuteAsyncRunnableJobCmd.execute(ExecuteAsyncRunnableJobCmd.java:85)
at org.flowable.job.service.impl.asyncexecutor.ExecuteAsyncRunnable$2.execute(ExecuteAsyncRunnable.java:130)
at org.flowable.job.service.impl.asyncexecutor.ExecuteAsyncRunnable$2.execute(ExecuteAsyncRunnable.java:127)
at org.flowable.engine.impl.interceptor.CommandInvoker$1.run(CommandInvoker.java:59)
at org.flowable.engine.impl.interceptor.CommandInvoker.executeOperation(CommandInvoker.java:107)
at org.flowable.engine.impl.interceptor.CommandInvoker.executeOperations(CommandInvoker.java:81)
at org.flowable.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:64)
at org.flowable.engine.impl.interceptor.BpmnOverrideContextInterceptor.execute(BpmnOverrideContextInterceptor.java:26)
at org.flowable.common.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:53)
at org.flowable.common.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:83)
at org.flowable.common.spring.SpringTransactionInterceptor.lambda$execute$0(SpringTransactionInterceptor.java:57)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at org.flowable.common.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:57)
at org.flowable.common.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:30)
at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:56)
at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:51)
at org.flowable.job.service.impl.asyncexecutor.ExecuteAsyncRunnable.executeJob(ExecuteAsyncRunnable.java:127)
at org.flowable.job.service.impl.asyncexecutor.ExecuteAsyncRunnable.run(ExecuteAsyncRunnable.java:115)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
I use flowable 6.6.0, which is built as a Spring Boot application.
There is only one outbound channel, it is used by all my processes(those which have this problem and those which do not). The channel looks like this:
{
"key": "outboundChannel",
"category": "channel",
"name": "outboundChannel",
"description": "Outbound channel",
"channelType": "outbound",
"type": "rabbit",
"serializerType": "json",
"routingKey":"WorkerQueue"
}
Its location: …\src\main\resources\eventregistry\
Also, all of these processes use one and the same outbound event:
{
"key": "outboundEvent",
"name": "outboundEvent",
"outboundChannelKeys": [
"outboundChannel"
],
"correlationParameters": [],
"payload": [
{
"name": "task",
"type": "string"
},
{
"name": "email",
"type": "string"
}
]
}
Any suggestions on what could be the root of the problem and how to fix it?