首页 > 代码库 > 流程管理
流程管理
整体介绍
主要用于对流程的管理,类似审批流程,支持节点间的跳转,同时可在每个节点前设置拦截器。为了更好的监控节点,对各个环节都开放了监控接口,可定制化的监控。
项目中为了方便,自定义了一个容器管理,实际使用可以用spring进行管理
代码地址
git地址:https://coding.net/u/mich/p/easytry/git/tree/master/src/com/statemachine
整体目录结构
- design
- StateTemplete 核心模块,主要保存一个流程模板,同时让节点自动的根据模板设定进行跳转
- entity
- QueueInfo 队列信息,主要用于保存监听的信息
- FilterCondition 拦截器,用于判断是否进入下个节点,同时如果失败,直接进入失败节点
- StateCurrent 用于保存节点的当前状态,实际使用中通过继承的方式,保存状态
- StateEvent 事件的唯一code,以及处理后下个节点的状态
- StateNode 流程节点(核心),用于保存整个流程模板的整体结构,可通过xml进行设计,(未来可设计成可视界面,转换xml,不过前端比较弱(主要是嫌麻烦),这里就只提供了对象xml的互转)
- event
- EventManager 事件的注册,通过code对不同事件进行注册
- FilterEventResult 拦截器的处理结果,用于判断是否过滤,以及过滤后的下级节点(下级节点只能从FilterCondition 中给出的下级节点中选择)
- EventTypeEnum 监听事件类型,
FILTER_SUCCESS, FILTER_FAILED, FILTER_PRE, NORMAL_POST, NORMAL_PRE
分别是没有拦截,成功拦截,拦截方法前,处理方法后,处理方法前
在监听器的参数可获取事件的执行阶段 - IEvent 节点处理事件
- IFilterEvent 拦截器处理事件
- listener
- EventListenerManager 监听事件管理,主要用于记录监听的事件以及对事件的触发
- IFilter 监听事件的过滤,判断是否要对此状态,是否有事件符合广播要求
- IFilterEvent 对于监听事件的处理
使用样例
在example中,首先声明了3个对象,领导,订单,用户,之中订单Order继承了StateCurrent,然后再OrderEvents中注册了对应的几个事件,审批,重新审批,拦截。在OrderListener中写了简易的监听,此处就做了订单为1的监听。在template中,创建了一个订单的审批模板,同时这里也创建了一个对应的order.xml文件,两者只是不同的创建形式(代码方式和xml方式),内容是一样的。BeanManager简单的替代一下spring,Start就是所有项目的启动类了。大致实现的流程如下图。
流程管理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。