从flow.xml打印日志

时间:2015-05-13 19:39:33

标签: java xml spring spring-webflow

我正在使用spring web flow处理Web应用程序。当我正在处理一个flow.xml文件时,我得到了一个关于它的决定状态 -

<decision-state id="checkPermissin">    
    <if test="requestParameters.canApprove" then="approve" else="warning" />
</decision-state>  

当请求到达flow.xml时,它会从中获取请求参数canApprove并测试它是真还是假。然后它会进入approvewarning状态。

我的问题是 - 我可以从canApprove文件中记录/打印flow.xml的状态吗?

1 个答案:

答案 0 :(得分:2)

您可以在“决策状态”的末尾添加一个退出标记,并在类路径上调用任何服务方法,spring bean或静态方法。

试试这个(未经测试):

<decision-state id="checkPermissin">    
    <if test="requestParameters.canApprove" then="approve" else="warning" />
   <on-exit>
        <evaluate expression="T(org.apache.log4j.Logger).getLogger('someLogger').info(requestParameters.canApprove)"/>
   </on-exit>
</decision-state>

上述解决方案更能满足您的要求。记录这个的“正确”方法是扩展FlowExecutionListenerAdapter并监听当前的流+决策状态ID“checkPermissin”,然后记录您对该流的任何需求,但它将涉及flow.xml文件之外的更多设置/编码。 (参见:Catch "dead" session in Spring webflow:示例用于捕获异常但可以轻松地进行调整以记录流中的任何内容)