zoukankan      html  css  js  c++  java
  • 简易OA漫谈之工作流设计(DB)

    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、取消

    以上就是本人理解的最简单的流程引擎,如果加上流程图、流程作图工具、流程监控、引擎接口,就比较完整了。

    前三项不是必须的,接下来利用这个设计我会实现简单的引擎接口,并通过一个实例调用这个接口来完成最简单的流程图。

    本实例可以让我们了解一些基本的流程原理及概念。

  • 相关阅读:
    LeetCode Single Number
    Leetcode Populating Next Right Pointers in Each Node
    LeetCode Permutations
    Leetcode Sum Root to Leaf Numbers
    LeetCode Candy
    LeetCode Sort List
    LeetCode Remove Duplicates from Sorted List II
    LeetCode Remove Duplicates from Sorted List
    spring MVC HandlerInterceptorAdapter
    yum
  • 原文地址:https://www.cnblogs.com/wangxiaohuo/p/2650893.html
Copyright © 2011-2022 走看看