基于WF设计业务流程平台-权限体系

时间:2021-12-13 21:27:00

基于WF设计业务流程平台-权限体系

 

在业务流程平台中,权限体系是我最看重的,

 

业务流程平台的权限设计与门户类平台的设计完全不同,业务流程平台的权限设计最忌讳做成太监当政模式(也就是系统管理员最大,管理一且)

 

现在的一些业务流程平台的权限使用[组],[角色]这种方式,早期我做系统也是用这种方式,对这种方式我不加评价

 

现在我设计的权限体系严格的按企业组织织构,人事关系,业务关系创建.

另外三权分立思想,扁平管理思想对我的应响很大,我的很多理论都来自这些思想

 

还有,在业务数据的共享,隔离,透明度上,不同的企业文化有不同的要求

 

比如东方与西方的上下级关系是:

 

西方:从属的从属不必然从属

东方:下级的下级一定是下级

 

其实光是西方也有很多不同,比如德国,美国就有很大区别

即使在中国家,不同行业或不同*的同一行业都有很大区别,在中国有些单位的员工管理竟然还在实行奴隶制,帮会制

 

当然,本文的目的不是讨论管理*的好坏,以上我表述我只是想说,一个业务流程平台如果不能与企业的管理文化相对应,那么这个平台没有存在的意义.

 

举个例子,比如一个请假流程,在有些单位无论怎样设计都是无法让人满意,因为这些单位的很多岗位很难看到有人在岗,即使在岗也是在玩游戏

再举个例子,比如一个请假流程,在有些单位是不需要的,因为这种单位的员工在被zhua进单位后,只有死了以后才能出来.

 

所以系统要适应企业文化,所谓企业文化就是管理文化,所谓管理文化就是权限体系(当然企业文化中还有一部分是思想上的奴化/煽情教育,这部分是我们系统边界以外的,就不讨论了)

 

 

下面我用一个例子来简单介绍一个权限体系如何与流程结合:

现在的工作流理论有两个主要来源:

一个是WfMC,

一个是Petri网

我对WfMC不加评论,Petri网中没的关于权限的理论,当然这不是Petri网的错,因为Petri网本身就不是为业务流程设计的,只是后来的学者将Petri网的理论用到了业务流程上.

这些年也看了不少工作流的理论资料,并没发现对权限体系有比效深层次的介绍.不过没有也好,可以自已发挥,下面看一个例子:

 

还是请假:

基于WF设计业务流程平台-权限体系

 

如果我的需求经理坐飞机去客户哪里,花几千元钱请客户吃饭,再坐飞机回来给我带我这么一张图,我会杀了他…..

我对这张图不满意不是因为这张图流程,活动,状态都不是,而是因为没有权限信息.

我需要这样一张图:

基于WF设计业务流程平台-权限体系

 

基于WF设计业务流程平台-权限体系

 

说明:

1.这张图的连线我没画箭头,用什么样的箭头表示什么样的流转方式,我会在后面的文章中会具体说明,

2.有些职能与状态的交差区域的附加信息,我也会在后面的文章中会具体说明

3.这张图没的开始与结束结点,我也会在后面的文章中会具体说明

 

我还需要在不同的阶段,与该流程有利害关系的涉众都有什么权力,通常这部份信息我会让需求经理在基本路径定版后,做二次需求时提交

 

 

根据上面这张图我们可以得到如下信息:

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

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

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

 

注意:

上图不能画成这样,这两种画法的语意区别我会在后面的文章中会具体说明

基于WF设计业务流程平台-权限体系

 

 

现在我们为上面的业务图建立工作流模型

先看员工身份信息部分

不管数据库中的表结构如何建,我们至少需要得到如下信息

[身份表]

用户编号

所在部门

所属职能

lzm

甲部门

部门领导

wxd

甲部门

A职能

lmm

甲部门

A职能

wxwinter

乙部门

A职能

wdd

乙部门

部门领导

 

 

 

再看[X类请假流程]启动权限

不管数据库中的表结构如何建,我们至少需要得到如下信息

 

[启动权限表]

流程模板

可启动流程的部门

可启动流程的职能

权限

X类请假流程

所有

所有

允许

X类请假流程

所有

部门领导

不允许

 

预定义的规则是:

1.[权限]否定高于肯定

2.其他的组合与扩展会在后面的文章中会具体说明

 

上表中的两条数据的逻辑运算得到:[X类请假流程],除了[部门领导]企业中的所有人都可以启动

 

 

下面是工作流模板设计

基于WF设计业务流程平台-权限体系

 

 

最后是业务状态表

不管数据库中的表结构如何建,我们至少需要得到如下信息

[业务状态表]

流程编号

结点编号

流程办理部门

流程办理职能

流程办理人

状态

           

 

预定义的规则是:

1.[流程办理人]不为[空]时,该流程属于[流程办理人]

2. [流程办理部门][流程办理职能]为[空],[流程办理部门][与流程办理职能]者不为[空]时,该流程属于[流程办理部门][与流程办理职能]身份的所有人

3.其他的组合与扩展会在后面的文章中会具体说明

 

 

 

最后我描述一下流程运行的状态

我们以[wxd]要请假为例说明:

 

1.[wxd]登录,跟据[身份表]得到[甲部门][A职能]

 

2.[wxd]加载可启动的流程列表,以[A职能]得到[X类请假流程]启动权限

 

3.[wxd]填写[请假单],以[wxd][甲部门][A职能]的身份启动[X类请假流程]

 

4.[X类请假流程]启动后,[审请休假]得到[wxd][甲部门][A职能],并自动进入[审批]

 

5.[审批]是一个等待结点,激活后将通过绑定得到[审请休假]的[甲部门],在进入等待前将[甲部门],[部门领导],[等待]写入[业务状态表]

流程编号

结点编号

流程办理部门

流程办理职能

流程办理人

状态

000001

1

甲部门

部门领导

 

等待

 

6.[审批]进入等待

 

7.[lzm]登录,跟据[身份表]得到[甲部门][部门领导]

 

8.[lzm]加载任务列表,跟据[业务状态表]得到[000001]流程的[1]结点办理权限

 

9.[lzm]填写[审批单],提交流程,触发[审批]

 

10.[审批]被触发,在关闭前,将[完成]写入[业务状态表],并自动进入[通知结果]

流程编号

结点编号

流程办理部门

流程办理职能

流程办理人

状态

000001

1

甲部门

部门领导

 

完成

 

11..[通知结果]是一个等待结点,激活后将通过绑定得到[审请休假]的[wxd],在进入等待前将[wxd],[等待]写入[业务状态表]

流程编号

结点编号

流程办理部门

流程办理职能

流程办理人

状态

000001

1

甲部门

部门领导

 

完成

000001

2

   

wxd

等待

 

12.[通知结果]进入等待

 

13.[wxd]登录,跟据[身份表]得到[甲部门][A职能]

 

14.[wxd]加载任务列表,跟据[业务状态表]得到[000001]流程的[2]结点办理权限

 

15.[wxd]提交流程,触发[通知结果]

 

16.[通知结果]被触发,在关闭前,将[完成]写入[业务状态表]

流程编号

结点编号

流程办理部门

流程办理职能

流程办理人

状态

000001

1

甲部门

部门领导

 

完成

000001

2

   

wxd

完成

 

 

 

总结

 

本文只是权限体系的一篇概念性文章,并没涉及到

  • 任务接件,
  • 任务分配,
  • 任务授权,
  • 任务取回,
  • 任务退回,
  • 子部门,
  • 临时项目组,
  • 一人多部门,
  • 一人多职能,
  • 流程的制定权,
  • 流程的办理权,
  • 流程的监督权,
  • 流程的知情权

等基本权限模型,这些内容我会在后面的文章中具体描述.