如何为SpringWebFlow访问页面生成PDF报告

如何为SpringWebFlow访问页面生成PDF报告,spring,spring-webflow,spring-batch,Spring,Spring Webflow,Spring Batch,因此,我们在应用程序中有一个要求。我们要做的是了解用户在导航应用程序时在何处放弃页面流。例如,屏幕A、B、C和D 用户导航到A、B和C,然后由于屏幕D中询问的信息类型而混淆,并关闭屏幕 我们希望生成此类废弃页面的报告,在一天结束时或根据请求为每个废弃页面生成一个唯一标识符,如随时查看报告的菜单选项,以便我们知道需要修复哪些页面或使其更易于使用 你们知道SWF或SpringMVC或任何其他与SWF集成并提供我们的需求的框架有什么可用的功能吗 提前感谢,, Yogendra创建一个跟踪已放弃的会话:

因此,我们在应用程序中有一个要求。我们要做的是了解用户在导航应用程序时在何处放弃页面流。例如,屏幕A、B、C和D

  • 用户导航到A、B和C,然后由于屏幕D中询问的信息类型而混淆,并关闭屏幕
  • 我们希望生成此类废弃页面的报告,在一天结束时或根据请求为每个废弃页面生成一个唯一标识符,如随时查看报告的菜单选项,以便我们知道需要修复哪些页面或使其更易于使用

    你们知道SWF或SpringMVC或任何其他与SWF集成并提供我们的需求的框架有什么可用的功能吗

    提前感谢,, Yogendra

    创建一个跟踪已放弃的会话:

    public class AbandonedSessionFlowExecutionListener extends FlowExecutionListenerAdapter {
    
        // will be called when a session times out or is otherwise terminated
        public void sessionEnded(RequestContext context, FlowSession session,
                String outcome, AttributeMap output) {
    
            recordAbandonedSession(outcome);  //outcome is the last seen view-state
        }
    
        private void recordAbandonedSession(String viewStateId) {
            //write it to a database or something
        }
    }
    
    别忘了向webflow注册它:

    <bean id="abandonedSessionFlowExecutionListener" class="com.my.package.AbandonedSessionFlowExecutionListener" />
    
    <webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry">
        <webflow:flow-execution-listeners>
            <webflow:listener ref="abandonedSessionFlowExecutionListener" />
        </webflow:flow-execution-listeners>
    </webflow:flow-executor>
    
    
    

    从这一点生成报告应该很简单。

    所以你的意思是我必须将此作为侦听器添加到所有流中?或者是否有类似于全局侦听器的东西添加到所有流中?此外,我刚刚遇到了一个称为Spring Instrumentation Framework的东西,它有许多MBean可以查询SWF的使用情况。比如流何时开始,流是否优雅地结束,有多少流在执行时失败等等。。。您认为我们使用Spring Instrumentation工具而不是像您提到的那样生成报告和添加类吗?我不熟悉Spring Instrumentation,但对于您最初的问题来说,这似乎有些过分了。像我描述的那样添加一个监听器只需要做一次,并且它全局地应用于所有流。我确实尝试过这个方法,我发现sessioneded方法只有在到达逻辑流的末尾时才会被调用,比如。理想情况下,我想知道用户所放弃的每个状态。另外,sessionEnded在会话超时时不会被调用,我将web.xml的元素设置为2min,即使它超过2min的时间,它也不会调用sessionEnded。有什么线索吗?对不起,我现在发现我误读了文件。您是对的,
    sessioneded
    可能不适用于您的场景。或者,您可以实现一种方法,如
    stateintering
    ,并执行您自己的会话跟踪。这将大大增加工作量,但可能仍比添加Spring仪器轻。