簡體   English   中英

從駱駝ActiveMQ路線恢復Activiti任務

[英]Resume Activiti task from Camel ActiveMQ route

我正在嘗試將消息從Activiti Camel任務發送到ActiveMQ隊列,當Camel收到該消息時,該消息應恢復活動。 據我了解,當從隊列接收消息時,它缺少使Camel能夠識別它以便將其路由到正確的活動任務的屬性。

這樣的Business key is Null引發異常,並且路由失敗。

from("activiti:SampleProcess:myCamelTask")
 .to("activemq:queue:myQueue");

不出所料,如果我在接收路由中對PROCESS_ID_PROPERTYPROCESS_KEY_PROPERTY進行了硬編碼,則消息將正確路由(當ID匹配時)。

from("activemq:queue:myQueue")
  .setBody(constant("test body"))
  .setProperty(PROCESS_ID_PROPERTY, constant("50"))
// .setProperty(PROCESS_KEY_PROPERTY, constant("CUSTOM-KEY"))
.to("activiti:SampleProcess:receiveAsyncPing");

如何獲得接收路線中的任何一個財產,以便進行相應設置?

還是有更推薦的方法來解決這個問題?

一個好問題。 我處理此問題的方法是使用setProperty()命令在路由內注入PROCESS_KEY:

參見下面將流程鍵(業務鍵)設置為“欄”的位置:

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

希望對您有所幫助,格雷格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM