2011-11-01 128 views
1

我想让外部属性文件决定天气或不是某个流(它的入站端点)应该是活动的或不活动的。我想使用石英事件生成器来实现这一点 - 我想使用自定义表达式求值器来停止流动,如果它应该是活动的(从属性文件定义),但我在执行此操作时遇到xml错误: 服务器运行时发生致命错误:cvc-complex-type.3.2.2:属性'custom-evaluator'不允许出现在元素'expression-filter'中。 (org.xml.sax.SAXParseException)。按属性占位符过滤

,这是相关代码:(我与骡子IDE Eclipse的运行此) <expression-filter evaluator="custom" custom-evaluator="IsActiveEvaulator" expression="${chFlow.isActive}"/>

这个 1)为什么这个错误发生的几个问题?我直接从网站的教程中复制了该行。 2)是否有一个默认的表达式evaulator可以根据属性占位符进行过滤? 3)我将如何去与这种类型的过滤器没有启动石英事件发生器的流量。意思是,我将如何根据占位符属性停止某个流(及其端点)的工作。

在此先感谢!

回答

1

1)你被a bug :(

2)咬我建议你创建一个防治菜豆(说abcDynamicFlowController),使用Spring配置它注入其中的占位符值,暴露占位符值作为“isWhateverFlowActive”。然后创建一个自定义intercepting message processor,并将其作为“自定义消息处理器”放入入站端点之后的流程中。在此消息处理器中注入控件bean,并使用相关值来决定事件是否必须处理或放弃。

3)拦截消息处理器会为你做。如果您还将控制Bean暴露在JMX之上,您将能够从属性文件控制其初始状态,然后在运行时更改其状态。

+0

我将如何使用注册表蒸发器? couldent在网上看到任何有关它的信息。我创建并注入了bean。 – Menyh

+0

此外,我没有看到我可以如何使用这种方法来配置天气某些流程的作品。这意味着我希望能够使用提交的属性来确定某个端点是否创建的天气。 – Menyh

+0

我回顾了我的答案,提出了一个基于Mule拦截消息处理器支持的替代方案。另外,我没有从你想创建端点的原始问题中得到答案。我以为你想根据一些控制逻辑将消息放入流中。如果你想动态创建端点/流程,请看https://github.com/mulesoft/mule-dsl –