Spring Web Flow

Spring Web Flow :流程,基于Spring MVC 的DispatchServlet

使用方法

  • 配置命名空间,目前不支持java方式的配置


  • 流程执行器,负责创建和执行流程执行器webflowContext.xml
    
        
            
            
        
    
  • 配置流程注册器,加载流程定义,并让执行器能够使用它们.webflowContext.xml
    
        
    

也可以用 指定一个绝对路径,而不用webflow:flow-location-patternbase-path

  • 配置服务构造器webflowContext.xml
    
  • 处理流程请求cas-servlet.xml
    FlowHandlerMapping 帮助DispatchServlet将请求发送给Spring Web Flow
    
    
        
            
                
            
        
    

FlowHandlerMapping的工作仅仅是将请求重定向给 Spring Web Flow
响应请求的是FlowHandlerAdapter 等同于Spring MVC的控制器,处理请求.配置如下:cas-servlet.xml

    

    

流程的组件

如果流程是旅行,那么状态就是路途上的城镇,风景点,转移就是公路,流程数据就像一路买的纪念品和记忆

  • 状态

状态类型 它是用来做什么的
视图(view) 暂停流程并邀请用户参与流程
行为(Action) 行为状态,流程逻辑发生的地方
决策(Decision) 基于流程数据的评估结果确定流程方向
子流程(SubFlow) 在当前的流程上下文中启动一个新的流程
结束(End) 流程的最后一站
  • 视图状态:
 
   
 

属性解释
id:在流程内标识这个状态,(逻辑视图名)
view:展现的逻辑视图名
model:表单所绑定的对象

    
        
            
            
            
            
        
        
            

            
        

        
    
  • 行为状态
    例子:
  
    
    
    
  
        
        
        
    

属性解释:
evaluate:行为状态要做的事情
expression : 调用那个Action,并计算结果.用SpEL表达式

  • 决策状态
    决定分支
    
        
    

test是SpEL表达式,返回结果必须是Boolean格式,可以调指定bean(一般是Action)中的一个方法.

  • 子流程状态

   
    

  • 结束状态

view:如果是externalRedirect:前缀,将重定向到流程的外部页面;如果是flowRedirect:前缀,将重定向到另一个流程中

  • 转移

    
    

Action中返回的写法

       if (needFrontSlo) {
           return new Event(this, FRONT_EVENT);
       } else {
           // otherwise, finish the logout process
           return new Event(this, FINISH_EVENT);
       }

如果只有to属性,则是默认的转移状态
异常转移


全局转移 将重复写的共用的转移抽取出来

    
        
        
        
        
    
  • 流程数据

  • 声明变量

#viewScope 视图作用域
或

#flowScope 流程作用域

var定义的可以在流程的任意状态访问.
作用域

范围 生命作用域和 可见性
Conversation 最高层级的流程开始创建,被最高层级及其所有子流程共享
flow 只有在创建他的流程中是可见的,var是流程作用域的
Request 请求进入流程时创建,流程返回时销毁
Flash 流程开始时创建,结束时销毁,在视图状态渲染后也会被清除
View 进入视图状态时创建,当这个状态退出时销毁
  1. flowScope
  2. requestParameters
  3. flowRequestContext
  4. requestScope
  5. requestScope.response.responseType.name() == 'POST'"

开始状态:默认是第一个流程定义文件中的第一个状态,也可以用 start-state

    
        
    
            
            

-### 实例

-### 保护Web流程

 

找到的类似文章链接

你可能感兴趣的:(Spring Web Flow)