从Camel ActiveMQ路由恢复Activiti任务

时间:2017-10-04 18:58:16

标签: apache-camel activemq activiti

我正在尝试将来自Activiti Camel任务的消息发送到ActiveMQ队列,该队列应该在Camel收到活动时恢复活动。据我所知,当从队列接收到消息时,缺少使Camel能够识别它的属性,以便路由到正确的活动任务。

因此引发了UPDATE caduti SET foto_ok=foto FROM ( SELECT * FROM caduti GROUP BY foto HAVING count(foto) = 1 ) 异常并且路由失败。

Business key is Null

正如预期的那样,如果我对接收路由中的from("activiti:SampleProcess:myCamelTask") .to("activemq:queue:myQueue"); PROCESS_ID_PROPERTY进行硬编码,则会正确路由消息(当ID匹配时)。

PROCESS_KEY_PROPERTY

如何在接收路线中获取任何属性,以便我可以相应地设置它们?

或者是否有更推荐的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

一个好问题。 我处理这个的方法是使用setProperty()命令在路径中注入PROCESS_KEY:

请参阅下文,我将流程密钥(业务密钥)设置为“bar”:

from(startProcessEndpoint)
  .log(LoggingLevel.INFO, logMsg3)
  .setProperty("PROCESS_KEY_PROPERTY",foo)
  .setBody(constant("bar"))
.to("activiti:testCamelTask:receive")

现在,如果您不想使用常量,那么您可以访问路径中的交换对象,并可以使用表达式,如下所示:

    Expression foo = new Expression() {
        @Override
        public <T> T evaluate(Exchange exchange, Class<T> aClass) {
            return (T) "foo";
        }
    };

希望这有帮助, 格雷格