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

发表于:2014-05-23来源:博客园作者:王洪剑点击数: 标签:
(关联角色表与员工表) 5)、步骤角色关系表S_action_role(action_role_id,action_id,role_id) (关联角色表与步骤表) 6)、下一处理人表L_loan_next_emp(loan_next_emp_id,loan_id,ne

  (关联角色表与员工表)

  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插入至流程处理明细中。

  第三部分、实现细节

  1、第一步骤中获得数据列表代码如下:

  ?

1
SELECT * FROM L_loan_info WHERE step_id=@step_id

  其中@step_id使用代码得到当前数据的第一步骤编号

  2、第一步骤获得已处理数据列表代码:

  ?

1
SELECT * FROM L_loan_info WHERE loan_id IN (SELECT DISTINCT loan_id<br> FROM l_tranct_proc WHERE step_id=@step_id)

  3、获得任一步骤数据列表(含未处理和已处理)

  View Code

  以上为核心代码,当然由于工作流的具体需求不同,可调整相应代码。

  第四部分、运行结果

  1、系统参数配置

  2、待处理列表

  3、处理页面

  (注:当前为最后一处理,下一处理人选择不可见)

  4、撤回页面

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