我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:九乐棋牌游戏下载 > 戈博大飞霸 >

java 实现一套流程管理、流转的思路(伪工作流) 【仅供参考】

归档日期:09-23       文本归类:戈博大飞霸      文章编辑:爱尚语录

  在做某个管理项目时,被要求实现一套流程管理,比如请假的申请审批流程等,在参考了很多资料,并和同事讨论后,得到了一个自主实现的流程管理。

  Flow:流程,即流程的定义,其中包括流程名称,描述,类型,启用时间,备注等;目前是通过判断某个类别的流程启用时间来进行判断当前流程是否启用的。

  一个类别只启用一个流程。所以只需要通过流程类别即可确定流程,并不要特定的状态字段。

  FlowInfoMovingNode:流程节点,在分析流程流转的时候,我们发现,流转一步就相当于从一个节点跳到另一个节点,所以我们设计这个流程节点类来表示每一步。

  解释下监听权限是什么. 由于我们做的大部分是审核的流程,所以每个节点都需要有个审核的过程才进入下一个节点,所以我们要这个handlerRole属性来确定这个节点究竟是什么权限来审核。我们也知道,审核一般是某个人审核,这个我们后面说。这里是规定某个权限,即可以审核这个节点的权限。

  FlowInfoMovingRole:流程流转规则,为了解决从节点出来的各个分支,我们设计了这个流转规则,本来其实可以一起放到FlowInfoMovingNode中,但这样话无论从数据上还是管理上来说都不如加流转规则方便清楚。FlowInfoMovingRole主要用来确定流转规则,比如某个节点通过了应该去哪个节点,某个节点没通过应该去哪个节点,这样无论是分支还是单支还是循环都可以通过相同的方式来进行设置。transition为变换规则,参照shiro验证权限的方式,我们也使用纯字符串格式来进行判断变换规则。

  FlowInfoMoving:流程流转信息,这里是每一步流转信息的存放,基本在进行流程流转的过程中,都是通过此类,其中包括:所属节点(得到所属节点同时也就得到所属流 程),申请源(因为我们不知道申请源是什么,我们只是管流程是怎么运转的,其申请源跟我们没有任何关系,我们保存申请源的唯一标识,若是想在审核的过程中进行查看申请源信息,则可以请求在Flow中监听的Url(handlerUrl),来进行查看,我会把申请源的唯一标识当做参数传递到Url中)。

  这样整个流程定义就结束了,我们可以自由设置流程的流程规则,来设置流程的流转方式。这样无论任何复杂的流程都可以进行自定义,并且可以随意的修改。

  这样设计的结果首先是可以任意的自定义流程,其次是申请源不需要去管流程的流转了,只需要提交一份申请,其他的事情均由流程进行操作实现。

  首先是Applyable是怎么设计的:其实一个接口,用于提供一些申请的信息

本文链接:http://cilingue.com/gebodafeiba/631.html