我有以下代码段:
<int-file:inbound-channel-adapter id="filteredFiles"
directory="#{controllerConfig['CYCLE'].params['SEMAPHORE_DIR']}"
channel="semaphoreChannel" filename-pattern="*.xml" prevent-duplicates="false">
<int:poller max-messages-per-poll="1" cron ="#{controllerConfig['CYCLE'].controllerTimer}"/>
</int-file:inbound-channel-adapter>
... 后来在流程中有一个标题更丰富:
<int:header-enricher id="Channel Name Setter">
<int:header name="channel.id" value="CYCLE"/>
<int:header name="flow.id" overwrite="true" value="#{T(hu.telekom.fdl.util.TimeBasedUUIDGenerator).generateId()}"/>
</int:header-enricher>
问题是虽然我使用了overwrite =&#34; true&#34;当入站通道适配器读取第二个文件时, flow.id 似乎没有变化。
谢谢,
答案 0 :(得分:1)
在上下文初始化期间,仅对表单#{...}
的表达式进行一次计算。您需要使用运行时表达式:
<int:header name="flow.id" overwrite="true" expresion="T(hu.telekom.fdl.util.TimeBasedUUIDGenerator).generateId()"/>
即。使用expression=
并移除#{}
。
如果标题已出现在对于更丰富的入站消息中,则只需overwrite="true"
。