立即注册
 找回密码
 立即注册

聚金客智能客服实验室

搜索
热搜: 活动 交友 discuz
手机版
专享特惠酒店
联系方式

qq:798971002

简易OA漫谈之工作流设计之一(DB)转 [复制链接] qrcode

查看: 757 | 回复: 0

admin
发表于: 2019-4-9 11:21:07 | 显示全部楼层

https://www.cnblogs.com/wangxiaohuo/archive/2012/08/22/2650893.html
1、流程图。
工作流可以做得很复杂,也可以设计的很简单。看下图

看这个图,一个流程图最基础的三部分:流程,步骤,操作。
2、流程模板。
流程图的程序描述就叫流程模板。一个流程模板大概需要的一些属性如下图:

三个表从上到下都是一对多的关系。flow表是一个流程整体的一些信息,flowstep是每个步骤,即图中每个结点的信息,flowaction就是每个操作,具体到图上我们可以看作是每条线。这三个表就构成了流程最基本的配置,也叫流程模板。当然如果继续丰富可以分拆出规则表,这里的设计隐含了一些规则的设计,即Params字段,这是一个xml字段,可以存储规则表达式,有了规则表达式,就可以完整代表操作指向,即当满足什么条件时提交会到哪一个步骤。

3、流程实例。
有了流程模板(就象我们程序中的 class),我们发起一个流程时和提交一个流程时就知道流程扭转的方法,每个流程发起后就是一个流程“实例”,实例要保存一些什么信息呢,看下图:
flowinstance是流程实例记录的一些信息,包括流程当事人,如请假人,流程模板信息,发起人、结束人、流程状态、相关时间等,这是公用表,每种流程一般还有个性化表单。
flowactiontrace是每个审批人待办和已办的日志信息,即谁的任务,什么时候到达,谁审批(代)了,什么时候审批的。
flowactiontracedata是flowactiontrace表的扩展,记录一些表单填写的数据。
4、常用操作
4.1、发起流程
    A.插入flowinstance一条数据,插入flowactiontrace一条已经完成(submit为自己)了的数据
    B.插入flowactiontrace一条或多条数据,owner为下一步处理人,submit字段为NULL,表示待办。
4.2、提交流程
   A.读取flowactiontrace表,发现如果owner是当前登录人并且submit字段为NULL,表示有待办。
   B.以上待办可以打开并提交,提交后更改flowinstance表状态字段,flowationactiontrace submit字段
   C.保存表单数据进flowactiontracedata表

4.3、驳回
4.4、取消

以上就是本人理解的最简单的流程引擎,如果加上流程图、流程作图工具、流程监控、引擎接口,就比较完整了。
前三项不是必须的,接下来利用这个设计我会实现简单的引擎接口,并通过一个实例调用这个接口来完成最简单的流程图。
本实例可以让我们了解一些基本的流程原理及概念。


跳转到指定楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题:8 | 回复:10

快速回复 返回顶部 返回列表