zoukankan      html  css  js  c++  java
  • 工作流的模式

    流模式(Sequential)
    1.适合一个比效机械化的流程
    2.在这种流程中,参与者处于一种被动的局面,他必须沿设定的路线一步一步完成。
    例1:在MIS系统中,一个操作机器的工作流:
    (开使->关1闸 –> 关2闸 -> 修理 -> 开2闸-> 开1闸 -> 结束)
    在这个工作流中,需要严格按流程操作。而且在[修理]结点处可能还要调用一个修理某类设备的工作流。

    例2:比如一个购物的工作流:
    (开使->浏览->选择->缴费->取货 -> 结束)
    在该例中,流程序顺的严格性就显得不是很重要,比如[缴费]与[取货]结点谁先谁后就不是很重要,只要[缴费]与[取货]都完成了就可以结正常[结束]该流程。
    对于像这样的业务需求,就可以使用状态机模式

    流模式的执行并非完全是顺序的。它们仍然可以接收外部事件或者启动并行任务,在这种情况下,可能会有状态机模式的表现形式。但就其设计与维护方式来说仍是 流模式

    状态机模式(State Machine )
    在状态机模式下,参与者的自主性比效大,工作流更多的是一个提醒的作用
    例:一个审批流程:有六个部门批准才能通过,这六个部门的审批行为是独立进行的,不受其他部门结果的影响,可以使用状态机模式,配合规则实现
    A.六个部门审批行为是并行模式
    B.规则可以使用:全票通过,一票通过,简单多数,绝对多数,额定通过,等
    另外状态可以由一种进入到另一种,如上例出现平票状态后,将进入联合听证流程

    如何选择工作流模式
    一个简单的判断标准
    影响工作流程的一些重要的选择是否发生在工作流外部?是否由用户进行控制?
    如果是,那就不适合采用流模式。而最好选用状态机模式

    因为流模式本质上是对工作流的路径建模,将路径信息都编码到了模型之中。但是在某些时候,业务并不关心路径,而只关心结果,并且不关心结果是如何实现的。
    这时要用流模式,就需要画出许多复杂的路径流程,但是这些复杂的路径却并非我们所关注的问题。而最后往往是维护路径的付出远远大于维护业务模块。

    实际设计中的模式:
    在实际设计中,模式的应用并不是泾渭分明的。同一工作流,在不同参与者的眼中就有不同的模式。
    如一个请假的工作流,参与都有两种:申请人、审批人
    在申请人眼里,他所参与的工作流是[流模式]
    在审批人眼里,他所参与的工作流是[状态机模式]

    以上是本人在开发各类工作流中的一些心得。在WWF中可能也会有一定的适用性

  • 相关阅读:
    【codevs1949】兔兔与蛋蛋的游戏
    【codevs1775】那些年
    【codevs3153】取石子
    [codevs1909]英语 博弈论
    spfa及slf优化
    [baoj3224]普通平衡树
    恋爱路上的几个叉
    考研之如何联系导师
    《C++程序设计语言(特别版)》忠告(advice)部分
    一位程序猿送给女朋友的礼物
  • 原文地址:https://www.cnblogs.com/foundation/p/515025.html
Copyright © 2011-2022 走看看