第二部分、系统设计

  数据库设计如下:

  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)

  (关联角色表与员工表)

  5)、步骤角色关系表S_action_role(action_role_id,action_id,role_id)

  (关联角色表与步骤表)

  6)、下一处理人表L_loan_next_emp(loan_next_emp_id,loan_id,next_emp_id,step_id)

  (其中next_emp_id关联操作员工表E_emp_info,step_id关联S_action_info)

  其中数据流向如下:

  1)业务开始发生时,数据主表L_loan_info插入数据,其step_id为其所在流程的第一个步骤的编号,可根据下一步骤的重复次数来去将下一处理人的操作员编号插入到下一处理人表L_loan_next_emp中;插入流程处理明细表中数据,step_id为当前步骤编号;更新主表 L_loan_info的step_id为下一步骤编号;

  2)流程进入下一步骤;

  3)下一处理人可查看当前待处理数据(以及本环节待处理数据),选定进行处理,将处理结果(0:不通过,1:通过,2:退回,3:否决)插入到流程处理明细表中,若为通过由更新主表L_loan_info的step_id为下一步骤编号,退回更新为上一步骤编号,否决则更新到第一个步骤编号;

  4)在本人已处理数据中可查看已处理过的数据,若下一步骤中操作员还没有进行操作,则可对数据操作进行撤回,撤回时将处理结果(4:撤回)插入到流程处理明细表中,其中的next_emp_id为本人操作员工编号);更新主表L_loan_info的step_id为流程的第一步骤的编号;

  5)下一处理人继续3)、4)的循环,直至流程的结束;

  6)流程后一个步骤,将处理结果中step_id值为0插入至流程处理明细中。