Teamplate 工作流开发技术总结(3)

 http://www.cnblogs.com/nehc/archive/2007/11/16/961783.html

a)         审批日志和关系保存对象(ProcessRelationLog

这个类主要实现审批日志和关系的保存;

对象成员:

属性:

属性名称

属性类型

属性说明

ProcessID

string

Process ID,必须设置

TaskID

string

Task ID,必须设置

LogonName

string

用户登录名,必须设置

UserID

string

用户ID,只读

DisplayName

string

用户的显示名

Type

string

关系类型,必须设置

Source

string

流程发起人

FormNo

string

流程流水号

Dept

string

部门信息

Category

string

类别

Description

string

描述

Detail

string

细节内容

Others

string

其它业务信息

补充说明:从Source起往下的属性是用于保存流程的业务信息,如果客户有需要,可选择相应的属性保存,不需要的属性允许为空,可不予理会。

方法:

方法名称

属性说明

AddTaskRelation

保存任务关系

WriteLog

写日志

Sample:下面的这个例子是我们在做精量项目时使用的一个调用工作流流转程序的基类,在这个基类当中的流程流转方法中我加入了写日志和任务关系的代码(代码中突出显示的部分),做为本文的最后一个Sample,请大家仔细研究。

namespace  TeamplateBase

{

     
///<summary>

     
/// TeamplateWebFormBase 的摘要说明。

     
///</summary>


     
public class TeamplateWebFormBase : System.Web.UI.Page

     
{

           
public TeamplateWebFormBase()

           
{

           }


           
protected void LoadBindingData(BProcess process)

           
{

                BProcess pro 
= null;

                
try

                
{

                     
if(process == null)

                     
{

                           pro 
= this.LoadProcess();

                     }


                     
else

                     
{

                           pro 
= process;

                     }


                     
this.LoadData(pro);

                }


                
catch(Exception ex)

                
{

                     
throw ex;

                }


                
finally

                
{

                     
if(process == null && pro != null)

                     
{

                           pro.Dispose();

                           pro 
= null;

                     }


                }


           }


           
protected BProcess LoadProcess()

           
{

                
int taskId;

                
int processId;

                
string token;

                BProcess process 
= new BProcess();

                
try

                
{

                     taskId 
= Convert.ToInt32(Request.QueryString["TID"]);

                     processId 
= Convert.ToInt32(Request.QueryString["PID"]);

                     token 
= Request.QueryString["token"];

                     
if (token==null || taskId==0)

                     
{

                           
throw new Exception("Error, Invalid process id or token!");

                     }


                     process.SetSessionToken(token);

                     process.Load(processId);

                }


                
catch(Exception ex)

                
{

                     
throw ex;

                }


                
return process;

           }


           
protected virtual void LoadData(BProcess process)

           
{

           }


           
protected void PromoteProcess(System.Web.UI.Page page)

           
{

                
int taskId = Convert.ToInt32(Request.QueryString["TID"]);

                
int processId = Convert.ToInt32(Request.QueryString["PID"]);

                
string token = Request.QueryString["TOKEN"];

                BProcess process 
= null;

                
// 关系日志对象 Add by Sunmf

                ProcessRelationLog relationlog 
= new ProcessRelationLog();

                
try

                
{

                     process 
= new BProcess();

                     process.SetSessionToken(token);

                     process.Load(processId);

                     
this.SaveBindingData(process);

                     process.WorkflowAdvance(taskId, 
null);

                     
this.SaveRelationLog(relationlog, process);

                }


                
finally

                
{

                     
if(process != null)

                     
{

                           process.Dispose();

                           process 
= null;

                     }


                }


           }


           
//由继承的窗体完成关系和日志信息的赋值

           
protected virtual void SaveRelationLog(ProcessRelationLog relationlog, BProcess process)

           
{

                relationlog.AddTaskRelation();

                relationlog.WriteLog();

           }


           
protected void SaveBindingData(BProcess process)

           
{

                BProcess pro 
= null;

                
try

                
{

                     
if(process == null)

                     
{

                           pro 
= this.LoadProcess();

                     }


                     
else

                     
{

                           pro 
= process;

                     }


                     
this.SaveData(pro);

                }


                
catch(Exception ex)

                
{

                     
throw ex;

                }


                
finally

                
{

                     
if(process == null && pro != null)

                     
{

                           pro.Dispose();

                           pro 
= null;

                     }


                }


           }


           
protected virtual void SaveData(BProcess process)

           
{

           }


           
protected void closeWindow(System.Web.UI.Page page)

           
{

                
string client;

                client 
= page.Request.ServerVariables["HTTP_USER_AGENT"];

                
int index = client.IndexOf("Windows CE"0);

                
if(index == -1)

                
{

                     
this.RegisterClientScriptBlock("tpCloseAndReloadParentWindow","<script language=JavaScript> opener.window.location.replace(opener.window.location.href); window.close();</script>");

                }


           }


     }


}


// 使用这个基类例子代码片断:

           
protected   override   void  SaveRelationLog(TeamplateLib.ProcessRelationLog relationlog, BProcess process)

           
{

                relationlog.TaskID 
=Request.QueryString["TID"].ToString();

                relationlog.ProcessID 
= Request.QueryString["PID"].ToString();

                relationlog.LogonName 
= this.CurrentUser;

                relationlog.DisplayName 
= this.ApproveControl1.lblApproverDisName.Text;

                relationlog.Type 
= "Actor";

                relationlog.Source 
= process.GetTextValue("Common","Root/Request/RequestBy");

                relationlog.Dept 
= process.GetTextValue("Common","Root/Request/Dept");

                relationlog.FormNo 
="Purchase Request";

                relationlog.Detail 
=process.GetTextValue("Common","Root/Request/Supplier");

                relationlog.Description 
=process.GetTextValue("Common","Root/Request/Description");

                
switch (this.ApproveControl1.ddlApproveStatus.SelectedValue)

                
{

                     
case "1":

                           relationlog.ApproveStatus 
= "Approved";

                           
break;

                     
case "2":

                           relationlog.ApproveStatus 
= "Declined";

                           
break;

                     
case "3":

                           relationlog.ApproveStatus 
= "Cancelled";

                           
break;

                }
          

                relationlog.ApproveComment 
= this.ApproveControl1.txtComment.Text;

                relationlog.ApproveRemark 
= this.ApproveControl1.txtApproveRemark.Text;

                
base.SaveRelationLog (relationlog, process);

           }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值