从Java方法访问Mule flowVars/变量
我已经创建了一个Mule流,它决定是否通过SFTP下载一组文件,只要它们都存在 我使用一种Java方法来确定这一点,该方法读取文件夹的内容,然后返回从Java方法访问Mule flowVars/变量,java,mule,Java,Mule,我已经创建了一个Mule流,它决定是否通过SFTP下载一组文件,只要它们都存在 我使用一种Java方法来确定这一点,该方法读取文件夹的内容,然后返回true或false Mule流的结构如下所示: <spring:beans> <spring:bean class="com.test.FileCheck" name="invokeFileChecks"> </spring:bean> </spring:beans> <flow
true
或false
Mule流的结构如下所示:
<spring:beans>
<spring:bean class="com.test.FileCheck" name="invokeFileChecks">
</spring:bean>
</spring:beans>
<flow name="check-files" processingStrategy="synchronous">
<set-variable variableName="allFilesPresent" value="False" doc:name="Variable - all files present boolean"/>
<invoke object-ref="invokeFileChecks"
method="checkFiles"
doc:name="Invoke folder scan"
methodArguments="#[flowVars.sftpHost], #[flowVars.sftpPort], #[flowVars.sftpUserName], #[flowVars.sftpPassword], #[flowVars.sftpRequestedFiles]"/>
<echo-component doc:name="Echo"/>
public boolean checkFiles(String hostname, int port, String username, String password, String fileList){
boolean filesPresentTrueOrFalse;
//logic to list folder contents of SFTP:
//If all files are present, return true, otherwise false.
return filesPresentTrueOrFalse;
}
如何分配
allfilepresent
filepresenttrueorfalse的值?可以通过类中的setProperty
/getProperty
方法访问Mule变量
可以通过getMessage
方法从MuleEventContext
获取MuleMessage
的实例。事件上下文本身是通过实现接口的方法onCall
注入的
因此,首先在bean中实现
可调用接口。可以通过类中的setProperty
/getProperty
方法访问Mule变量
可以通过getMessage
方法从MuleEventContext
获取MuleMessage
的实例。事件上下文本身是通过实现接口的方法onCall
注入的
因此,首先在bean中实现可调用的接口。将调用包装在enricher中。这样,结果将转到目标var,而不会覆盖有效负载。它还将使您的java与mule内部保持解耦:
<enricher target="#[flowVars.allFilesPresent]">
<invoke object-ref="invokeFileChecks"
method="checkFiles"
doc:name="Invoke folder scan"
methodArguments="#[flowVars.sftpHost], #[flowVars.sftpPort], #[flowVars.sftpUserName], #[flowVars.sftpPassword], #[flowVars.sftpRequestedFiles]"/>
</enricher>
Enricher只能有一个处理器,因此任何时候需要的其他东西都可以包装在处理器链或流中,并使用flow-ref。将调用包装在Enricher中。这样,结果将转到目标var,而不会覆盖有效负载。它还将使您的java与mule内部保持解耦:
<enricher target="#[flowVars.allFilesPresent]">
<invoke object-ref="invokeFileChecks"
method="checkFiles"
doc:name="Invoke folder scan"
methodArguments="#[flowVars.sftpHost], #[flowVars.sftpPort], #[flowVars.sftpUserName], #[flowVars.sftpPassword], #[flowVars.sftpRequestedFiles]"/>
</enricher>
Enricher只能有一个处理器,所以任何时候需要的其他东西都可以包装在处理器链或流中,并使用flow-ref