zoukankan      html  css  js  c++  java
  • 基于WF设计业务流程平台_特定群体与特定人

    基于WF设计业务流程平台_特定群体与特定人

    在上一篇文章中,我实现了一个请假流程的例子,该例子的语义是:

     

    [任意人申请] -> [申请人所在部门主管理审批] -> [结果通知申请人]

     

    为了能实现这个流程的权限约束功能,我使用了如下图所示的二维权限结构

     

    职能\部门

    甲部门

    乙部门

    ..部门

    部门领导

    lzm

    wdd

     

    A职能

    wxd,lmm

    wxwinter

     

    B职能

       

    ..职能

       

     

     

    使用这种二维权限结构,通过[部门]与[职能]的交差,我们就可以实现[所有A职能的人],[所有甲部门的人],[所有甲部门中具有A职能的人]这样的语义.

     

    这样做的好处是我们在设计好流程后,可以为流程附加动态权限,而不必做成[甲部门请假流程],[乙部门请假流程]这样的大量重复流程.当然使用这种方式实现流程的目的不只是为了流程在不同环境的重用.在统计汇总,监督管理,任务分配,流程路径优化中都是非常有用的,这些我会在以后的文章中再讲.

     

    另外,上图的权限结构在实际使用中是不够用的,实际的权限模型中还要体现子部门,关系部门,员工的多部门.职能也要体现级别关系,还有为了某个事项而组建的跨部门项目组,这些内部我后面也会专门描述.

     

    今天我要说的是流程权限中的一个非常重要的问题[特定群体]与[特定人]

     

    首先说一下什么是[特定群体],像[所有A职能的人],[所有甲部门的人]这种语义就是[特定群体],只要符合这种描述的人属于这个群体,这个概念与[组]很象,但组不适合描述[我的上级],这样的语义

     

    现说一下[特定人],就是指真正存在的某个具体用户.

     

    先回顾一下上篇文章的例子

     

    图1:

    1.[X类请假流程],除了[部门领导]企业中的所有人都可以启动

    2.当[X类请假流程]的某个实例启动后,只有该实例[启动人(申请)]所在部门的领导才具有该实例的审批权

    3.当[审批]完成后,只有该实例[启动人(申请)]才能查看结果

     

     

    在这个例子中,

    启动申请的权限约束是一个[特定群体],除[部门领导]外所有[员工]这个群体,只要是属于这个群体的人,都可以做这件事

    审批的权限约束也是一个[特定群体],除[部门领导]外所有[员工]这个群体,只要是属于这个群体的人,都可以做这件事

    查看的权限约束是一个[特定人],启动这个流程的那个用户,只该用户可以做这件事

     

     

    在上篇文章中,我还画了这样一个图

    图2:

     

    注意,如果这样画,那业务的表述是:

    查看的权限约束是一个[特定群体],除[部门领导]外所有[员工]这个群体的人都可以做这件事,

    是否要这样画,取决于业务需求

     

    不管理权限如何设置,最终[办理提交]都是由一个[特定人]做出的,但在分配任务时大多都是指向[特定群体]的,下面我们看一下权限是如何由[特定群体]转到[特定人]的

     

    流程中的结点如果按执行状态分,可分为[历史结点],[当前结点],[将来结点],其中[当前结点(也叫活动结点)]的权限相对复杂一些,先看一下我列出的一些常用权限列表:

     

    自然得到

    不能得到

    □ 跟据设计,□没的 , 得到

     

    权限\身份

    办理身份

    接件身份

    分配身份

    管理身份

    查看身份

    启动权限

    查看权限

    办理提交权限

    延期权限

    申请延期权限

    结束流程权限

    冻结权限

    解冻权限

    接件权限

    退回到组权限

    分配权限

    拒绝分配权限

    授权他人权限

    取回授权权限

    取消办理人权限

    催办权限

    指定下一办理权限

     

    在这里我们看一下[办理身份,接件身份,分配身份]与[接件权限,分配权限,办理提交权限]

     

    先说一下[接件权限],是指[特定群体]中的某个人可以主动取得某个实例结点[办理提交权限]的权限.

    行使该权限的行为叫接件

    [特定群体]中的某个人对实例结点接件后,将会得到该实例结点的[办理提交权限],而其它[特定群体]中的人将失去对该实例结点的[接件权限],特点如下:

    • [特定群体]中的所有人都具有[接件权限].
    • 每个人行使[接件权限]的地位是平等的
    • 当其中某个人行使该权限后,其他人将失去该权限
    • 行使该权限的人也失去该权限,但他会得到[办理提交权限]

     

    再说一下[分配权限],是指[特定群体]中的某个人可以主动将某个实例结点[办理提交权限]分配给其他人的权限.

    行使该权限的行为叫分配

    [特定群体]中的某个人对实例结点分配后,被分配人将会得到该实例结点的[办理提交权限],而其它[特定群体]中的人将失去对该实例结点的[分配权限],特点如下:

    • [特定群体]中的所有人都具有[分配权限].
    • 每个人行使[分配权限]的地位是平等的
    • 当其中某个人行使该权限后,其他人将失去该权限
    • 行使该权限的人也失去该权限,但被分配人会得到[办理提交权限]

     

    最后说[办理提交权限],其实这是二个权限,办理与提交,不过很多时候都将其合为一个,我这里先将它们认为是一个.

    [办理提交权限]是控制流程的最基本权限,它的做用是让处于等待挂起的业务流程继续向后执行.操作人得到某个结点的[办理提交权限]通常有三种方式:

    • 流程中某个结点预设[办理提交权限]为具体的某个人,该人具有[办理提交权限]
    • 某个人具有结点的[接件权限],该人通过[接件]而得到[办理提交权限]
    • 某个人具有结点的[分配权限],该人通将该结点的[办理提交权限]分配给具体的一个人,被分配的人就具有该结点的[办理提交权限]

     

    权限约束的变化是在结点切换的过程中进行的,为了直观的体现这种变化,我用不同的联线箭头表示到[特定人],还是到[特定群体],并体现权限类型

     

    到人(特定人)与

     

    组接件 (特定群体,接件权限)

     

    组分配(特定群体,分配权限)

     

    现在,我们将上篇文章所举的请假的那个例子的流程图加上箭头:

     

    从这张使用了箭头的图中,我们可以看到流程,状态,权限,权限的转换这些基本的业务信息了.

     

    本文对[特定群体]与[特定人],进行了一个简单的概述,并提到了一些流程权限,同时使用自定义的图例将这些关系画出来.在后面的文章中,我将进一步阐述我的流程权限架,以及如何将上面的流程图映射成WF的流程图

     

    说明:本文的理论,概念,图例都是根据一些工作经验总结的,不具备权威性,只是我个人为描述业务自创的,如与其它的设计规范中的理论,概念,图例,有定义上的冲突.请读者在各自的文档环境中区别理解.

     

  • 相关阅读:
    redis反序列化报错解决
    Java实现InputStream流的复制
    Java正则表达式匹配的坑
    System.Runtimer.CompilerService.Caller attributes methods and examples
    Wpf code behind call viewModel method
    WPF Prism v4 MVVM
    Annoymous type get properties and values
    C# quick sort
    Invoke microsoft own System.Text.Json.JsonSerialize() method to serialize object,without encoding
    Interface declare event and the concrete class implement the interface
  • 原文地址:https://www.cnblogs.com/foundation/p/1333241.html
Copyright © 2011-2022 走看看