你的位置:首页 > Java教程

[Java教程]流程管理

整体介绍

主要用于对流程的管理,类似审批流程,支持节点间的跳转,同时可在每个节点前设置拦截器。为了更好的监控节点,对各个环节都开放了监控接口,可定制化的监控。

项目中为了方便,自定义了一个容器管理,实际使用可以用spring进行管理

代码地址

git地址:https://coding.net/u/mich/p/easytry/git/tree/master/src/com/statemachine

整体目录结构

  1. design
    1. StateTemplete 核心模块,主要保存一个流程模板,同时让节点自动的根据模板设定进行跳转
  2. entity
    1. QueueInfo 队列信息,主要用于保存监听的信息
    2. FilterCondition 拦截器,用于判断是否进入下个节点,同时如果失败,直接进入失败节点
    3. StateCurrent 用于保存节点的当前状态,实际使用中通过继承的方式,保存状态
    4. StateEvent 事件的唯一code,以及处理后下个节点的状态
    5. StateNode 流程节点(核心),用于保存整个流程模板的整体结构,可通过
  3. event
    1. EventManager 事件的注册,通过code对不同事件进行注册
    2. FilterEventResult 拦截器的处理结果,用于判断是否过滤,以及过滤后的下级节点(下级节点只能从FilterCondition 中给出的下级节点中选择)
    3. EventTypeEnum 监听事件类型,
      FILTER_SUCCESS, FILTER_FAILED, FILTER_PRE, NORMAL_POST, NORMAL_PRE
      分别是没有拦截,成功拦截,拦截方法前,处理方法后,处理方法前
      在监听器的参数可获取事件的执行阶段
    4. IEvent 节点处理事件
    5. IFilterEvent 拦截器处理事件
  4. listener
    1. EventListenerManager 监听事件管理,主要用于记录监听的事件以及对事件的触发
    2. IFilter 监听事件的过滤,判断是否要对此状态,是否有事件符合广播要求
    3. IFilterEvent 对于监听事件的处理

使用样例

在example中,首先声明了3个对象,领导,订单,用户,之中订单Order继承了StateCurrent,然后再OrderEvents中注册了对应的几个事件,审批,重新审批,拦截。在OrderListener中写了简易的监听,此处就做了订单为1的监听。在template中,创建了一个订单的审批模板,同时这里也创建了一个对应的order.