• 关于行军模式大批量数据的审批的实现


    说明,本文是给一个项目上出的方案的说明,项目上用以前的工作流已经不能满足要求,因此引出了下面的一个实现思路,记载下来,备存。 

    一、业务场景

    (1)转资业务。项目管理部门批量提交实物清单,使用部门进行核准,如果有不对的实物,则退回到项目管部再次落实,退回时可以单条退回,也可以批量退回,直到所有数据都对了,继续往前走。项目管理部收到再次落实的指令后,可能会新添加,删除,修改,处理完了,提交,使用部门能收到通知,以便继续处理。

    (2)另一个业务场景是:预算汇总上报流程。各个单位分别上报自己的预算,内部审批,逐级汇总,再审批,直至最顶层。分级的依据是组织架构。

    二、解决方案:行军模式业务流程处理

    为便于理解,我们把以上业务场景称之为行军模式。一次军队大规模集结(一个单据),涉及到很多军事单位(部门),很多士兵(明细数据),途径有N个关卡(审批节点,有并列也有串行)。士兵从起点开始途径每个关卡,往终点前进,在每个关卡都有可能被拒绝到退回到前一个关卡。这样一个队伍,在所有人都到达终点之前,会分散在每个关卡。士兵根据编制或者兵种分别经过不同关卡。在所有士兵到达集结地点前,所有关卡处于待命状态(因为随时有士兵到达),直到所有士兵都到达最后的集结点后,这次军事活动(流程)结束,关卡也就关闭了。

    实现方式:

    1. 一个单据,多条分录。
    2. 每条分录有个状态,每个状态分别对应每个节点。每个节点一般可以对应同一个处理功能,处理功能根据状态来过滤数据,只显示本节点允许查看的数据。
    3. 增加“分发”节点。分发节点不同于一般的审核节点,对同一个节点任务,参与者可以执行多次分发动作(类似于部分提交,。分发有往前分发,和退回分发。(GRG:2014.9.13,为便于理解,参考关卡概念,这个任务等待不断涌入的士兵)。
    4. 往前分发:对批准的数据条目,提交时,是往前分发;对不批准的,则是退回到来源节点。分发的内部操作实质上是修改数据条目的状态。

    (1)       往前分发。引擎根据路由条件,计算下一个或多个节点,并将同意的数据条目的状态修改为下一个节点对应的状态值。可以同时分发到多个节点,就是所谓的并行。如果分发到多个节点,每个节点希望看到的数据条目不同,比如一个节点是部门1,一个节点是部门2,部门1节点希望只能看到部门1的数据,部门2节点只能看部门2的数据。这个可以通过节点的进入函数来实现,在进入函数中,修改符合条件的数据条目为当前节点对应的状态。

    (2)       退回分发。在每个数据条目记录经过的节点路径,退回时,简单将数据的状态修改为上一个节点状态即可,并去掉该行数数据的节点路径的最后一个节点。比如在退回时,节点的路径为 p1->p2->p5->p7,p7是上一个几点,退回时,修改当前节点状态为 p7,路径调整为 p1->p2->p5。这个操作可以使用节点的退回入口函数来实现。

    1. 5.    分发任务

    在3中提到了分发节点,该节点的任务不同于目前工作流普通的任务。任务的关闭不是提交后即关闭,而是有条件的。通过执行任务完成判断函数来确定该任务是否已经完成,是否允许关闭。任务完成判断函数的通常逻辑是检查处于该节点状态的数据条目的行数是否为0,如果为0,则说明任务完成了,否则任务依然处于未完成状态

    1. 6.    任务状态

    这种模式下,任务的关闭不同于目前工作流普通的任务。普通的任务,提交后立刻关闭。

    (1)   任务的创建。第一批数据到来时创建节点任务。

    (2)   所有数据都离开本节点后,任务处于休眠状态

    (3)   又有数据(进来的,或者被退回来的)时,任务被重新激活。

    (4)   流程结束后,所有任务关闭。

    1. 流程的启动和结束

    流程启动:首先有人发起行军流程。这个同创建一般的申请单提交发起流程一样。

    流程结束:在流程的最后有个“集结”节点,等待所有数据到达,等所有数据都到达后,创建该节点任务,该任务提交后,流程结束(该节点的下一个节点是结束节点)。

    三、对流程引擎的修改

    1, 提交的修改

    提交时,关闭任务需要运行任务关闭函数,判断是否可以关闭。

    2,到达节点任务创建的修改

    如果该节点已经有任务了,则不必创建。如果任务休眠,激活之。

    3,退回任务的创建,如果该节点已经有休眠的任务,将任务激活即可,不必重新创建任务。

    4,增加任务结束判断函数。

    四、可以处理的业务

    1. 上面说的两种业务场景

    2,逐级汇总的业务场景,如茂名报废的业务流程。使用行军模式业务流程,待报废流程,拟报废流程和报废流程就可以合为一个大的流程了。

    五、待办任务

    用户进入业务处理界面,除了通过待办任务窗口外,还可以通过将这种待办任务生成快捷方式,挂在菜单树上,方面用户进入。

  • 相关阅读:
    Java对ArrayList进行排序
    Android app Splash页的替代方案
    算法
    Android动画 三种动画
    oracle连接-会话-进程
    spring使用Redis自定义前缀后缀名(去掉SimpleKey []+自定义)
    Redis(RedisTemplate)运算、算法(incr、decr、increment)
    Redis(RedisTemplate)使用hash哈希
    Redis(RedisTemplate)使用list链表
    Redis(RedisTemplate)使用string字符串
  • 原文地址:https://www.cnblogs.com/senline/p/workflow.html
Copyright © 2020-2023  润新知