一套完整自定义工作流的实现

发表于:2014-05-23来源:博客园作者:王洪剑点击数: 标签:
本工作流以一套金融软件业务处理流程为例,实现功能包括:流程自定义、步骤自定义、步骤重复次数、步骤类型(顺序/并行)、定义排序功能,完全使用数据库实现,本文将详细分析业

  概述:

  本工作流以一套金融软件业务处理流程为例,实现功能包括:流程自定义、步骤自定义、步骤重复次数、步骤类型(顺序/并行)、定义排序功能,完全使用数据库实现,本文将详细分析业务流程、系统设计及实现细节。

  术语:

  工作流(Workflow) [1],是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。工作流管理系统(Workflow Management System, WfMS)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。工作流需要依靠工作流管理系统来实现。

  流程:工作流包含多个工作流程,处理时可任选一种流程进行处理,其包含步骤信息;

  步骤:流程中每一环节的名称,某一流程将包含多个步骤(其他工作流中也称为节点)。

  正文:

  第一部分、业务逻辑分析

  1、自定义工作流是指工作流各个环节及其参数完全自定义,常用于公文处理、业务流程签批处理等。本系统来源于本人参与开发的一套金融管理软件,业务处理人分不同角色拥有不同权限进行业务处理,将贷款数据库从贷款调查一直到贷款签批的完整流程。其中由于软件功能要求,需要将贷款调查固定置为第一步骤,将贷款签批置为最后一步骤。

  其中数字表示当前步骤重复次数。

  2、用户业务处理部分包括:

  1)、通过:当前步骤处理通过,(选择下一处理人)进入当前流程中下一步骤,若为末步骤,则流程完成;

  2)、退回:将步骤退回至上一步骤,即返回至上一处理人处,若为首步骤,则不可进行退回;

  3)、否决:将步骤直接结束,不可再进行操作,或者回退至第一步骤;本系统中采用第二种方式;

  4)、撤回:若当前步骤已处理,且在下一处理人未进行处理的情况下可进行撤回操作。

  3、顺序与并行

  顺序是指上一处理人指定某一处理人时,其他拥有此步骤权限的操作员不可进行查看和操作,必须当前处理人处理完毕后,流程才能继续;并行是由上一处理人指定固定多个处理人时,由任一员工处理即可,不分前后顺序,全部处理完成,进入下一步骤,此处理人数目由当前步骤重复次数确定。

  两者之间对应关系如下。

  第二部分、系统设计

  数据库设计如下:

  1)、流程信息表:S_flow_info(flow_id,flow_name)

  2)、步骤信息表:S_action_info(action_id,action_name)

  3)、流程-步骤信息表:S_step_info(step_id,action_id,flow_id,step_repeat_no,step_order_no,step_type)

  (其中step_repeat_no为重复次数,step_order_no为排序号,step_type为类型:0为顺序,1为并行)

  4)、流程处理明细表:L_tranct_proc(proc_id,loan_id,step_id,step_action,step_emp_id)

  (其中loan_id为数据主表主键,step_id关联S_action_info,step_action

  存储处理结果:0--不通过,1--通过,2--退回,3--否决,4--撤回,step_emp_id为当前处理员工编号)

  其中流程表、步骤表、流程步骤关系表为核心数据表,它们三者确定工作流的完全自定义。流程处理明细表为重要数据表,查询数据主要通过此表进行连接查询。

  其他相关表包括:

  1)、数据主表L_loan_info(loan_id,loan_name,flow_id,step_id,...)

  (flow_id为流程编号,step_id关联S_action_info)

  2)、操作员工表E_emp_info(emp_id,emp_name,..)

  3)、角色信息表E_role_info(role_id,role_name)

  4)、员工-角色关系表E_emp_role(emp_role_id,emp_id,role_id)

原文转自:http://kb.cnblogs.com/page/70376/