繁体   English   中英

如何使用枚举值作为方法参数调用Java Mule组件?

[英]How to invoke Java Mule component with enum value as method parameter?

我目前正在使用Mule ESB 3.5.0(非EE)公开的API。 此API接受带有要通过HTTP导入的帐户的XML文件,并将此任务定义放入RabbitMQ队列。 另一个Mule流负责一次一个地从队列中获取项目(由于processingStrategy="synchronous" )并将它们提供给平台核心。 队列是必需的,因为核心能够一次处理一个文件。

上面的设置正常运行。 我现在想要实现的目的是让我们的客户通过暴露HTTPS端点来解决集成问题,其中导入状态将可用(由请求的某些GUID和SHA1标识)。

我创建了一个简单的POJO组件来处理添加状态更新的逻辑,方法签名是:

void addStatus(final String guid, final String status)

我设法通过将bean定义为来调用上面的方法

<bean id="importStatusComponent" class="com.example.ImportStatusComponent" />

并使用以下命令调用Mule流中的java组件:

    <invoke object-ref="importStatusComponent" method="addStatus"
            methodArguments="#[flowVars.guid], Import started"
            methodArgumentTypes="java.lang.String, java.lang.String" />

由于我们希望向客户公开并允许他们对状态进行一些编程检查,因此我决定将状态类型更改为基于枚举的字典ImportStatusEnum

不幸的是,我无法将枚举输入进入<invoke methodArgument="">标记属性的MEL。

我尝试过的例子:

1)参数作为两个单独的MEL表达式。

<configuration>
    <expression-language>
        <import class="com.example.ImportStatusEnum" />
    </expression-language>
</configuration>

<invoke object-ref="importStatusComponent" method="addStatus"
        methodArguments="#[flowVars.guid], #[ImportStatusEnum.STARTED]"
        methodArgumentTypes="java.lang.String, com.example.ImportStatusEnum" />

2)作为单个MEL表达式的参数。

<configuration>
    <expression-language>
        <import class="com.example.ImportStatusEnum" />
    </expression-language>
</configuration>

<invoke object-ref="importStatusComponent" method="addStatus"
        methodArguments="#[flowVars.guid, ImportStatusEnum.STARTED]"
        methodArgumentTypes="java.lang.String, com.example.ImportStatusEnum" />

3)完全限定的类名而不是导入(此处未显示)。

如何传递枚举值作为方法参数来invoke Mule中的组件? 任何帮助将受到高度赞赏:)

这个会奏效

<invoke object-ref="importStatusComponent" method="addStatus" methodArguments="#[flowVars.guid], #[com.example.ImportStatusEnum.STARTED]" methodArgumentTypes="java.lang.String, com.example.ImportStatusEnum" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM