[英]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_PROPERTY
或PROCESS_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.