ClearQuest時間預警的腳本

  先說明下個人實現方式和思路,這個程序能夠實現給當前處理人和關注該流程的人員發郵件,而且將發送郵件的部分專門寫成一個函數。而郵件郵箱列表能夠是從項目信息裏獲得,也能夠從Group裏實現。因爲能夠理解的緣由,我去掉了程序中的一些實際信息。
' CQ自動預警郵件腳本 ( 中國軟件工程網
' ******* 建立此腳本
' 功能說明:
' 本腳本實如今版本計劃發佈時間快到的前兩天預警,
' 自動郵件提醒當前處理人儘快處理。
' 各項目讓配置管理員和項目經理知悉,並讓技術管理組人員
' 知悉所有須要預警的信息 ( 中國軟件工程網
' 使用說明:
' 需將本腳本保存爲vbs格式設置爲計劃任務定時(如凌晨2點)執行,
' 要求執行腳本的機器上已經安裝有CQ
' BoolOp Constants
Const booOp_and = 1 ' and
Const booOp_or = 2 'or
' CompOp Constants
Const comOp_eq = 1 ' =
Const comOp_neq = 2 ' <>
Const comOp_lt = 3 '<
Const comOp_lte = 4 '<=
Const comOp_gt = 5 '>
Const comOp_gte = 6 ' >=
' Other Constants
Const SUCCESS = 1 ' 存在下一個記錄
' 如下常量根據實用應用環境設置
Const worn_sta = "已發佈" ' 預警狀態
Const login_name = "admin" ' 管理員登陸名
Const password = "***"
Const db_name = "****" ' 要訪問的數據庫名
' 即便什麼都不作,也須要建立一個session,做用是取得CQ中的郵件規則
set session = CreateObject("CLEARQUEST.SESSION")
' 請確保你的賬號可以訪問目標數據庫,下面的註釋是UserLogon的函數原型
' session.UserLogon login_name, password, database_name, session_type, database_set
session.UserLogon login_name, password, db_name, AD_PRIVATE_SESSION, ""
' 創建類型記錄查詢
Set querydef = session.BuildQuery("版本發佈")
' 若郵件內容還須要其餘該記錄的字段,則在這裏添加
querydef.BuildField("ID")
QueryDef.BuildField("State")
querydef.BuildField("項目")
querydef.BuildField("發佈版本")
querydef.BuildField("當前處理人")
Querydef.BuildField("配置管理員")
QueryDef.BuildField("計劃發佈日期")
QueryDef.BuildField("RecordWeblink")
NowTime= FormatDateTime(Now,vbShortDate) '如今的日期
FutTime= FormatDateTime(DateAdd("d",2, Now),vbShortDate) '與如今相比後兩天日期
OldTime= FormatDateTime(DateAdd("d",-60, Now),vbShortDate) '過去兩個月的日期
' 設置過濾條件
Set operator = querydef.BuildFilterOperator(booOp_and)
' 查找全部當前狀態不等於"已發佈"的版本發佈流程
operator.BuildFilter "State", comOp_neq, worn_sta
Set Operator1=Operator.BuildFilterOperator(booOp_and)
operator1.BuildFilter "計劃發佈日期",comOp_gte,OldTime
operator1.BuildFilter "計劃發佈日期",comOp_lt,FutTime
Set resultSetObj = session.BuildResultSet(querydef)
resultSetObj.Execute
j=0
nBody=nBody & vbCrLf & "如下是版本計劃發佈日期的快到期版本發佈流程詳細列表:"
mBody=mBody & vbCrLf & "如下是已經超過版本計劃發佈日期的版本發佈流程詳細列表:"
Do While resultSetObj.MoveNext = SUCCESS
 ' 設定郵件標題
 project= resultSetObj.GetcolumnValue(3)
 Curuser= resultSetObj.GetcolumnValue(5)
 mFrom="cqadmin@********"
 PlanTimeStr=resultSetObj.GetColumnValue(7)
 PlanTime=FormatDateTime(PlanTimeStr,vbShortDate)
 n=DateDiff("d",PlanTime,NowTime)
 If n>0 Then
 mSub ="【CQ舒適提示】您是版本發佈流程" & resultSetObj.GetColumnValue(1) & "的當前處理人,該版本已經超過計劃發佈日期" & n & "天,請儘快處理。"
 Else
 mSub ="【CQ舒適提示】您是版本發佈流程" & resultSetObj.GetColumnValue(1) & "的當前處理人,該版本還有" & abs(n) & "天就到計劃發佈日期,請儘快處理。"
 End If  CMName= GetProjFieldValue(Session,Project,"配置管理員")  PMName= GetProjFieldValue(Session,Project,"項目經理")  UserStr=CMName & ";" & PMName  mTo=GetUserMailStr(Session,Curuser,";")  mCcStr=GetUserMailStr(Session,UserStr,";")  mCc=Split(mCcStr,";")  sBody="該版本詳細信息爲以下:"  sBody=sBody & vbCrLf & "版本ID爲:" & resultSetObj.GetColumnValue(1)  sBody=sBody & vbCrLf & "狀態爲:" & resultSetObj.GetcolumnValue(2)  sBody=sBody & vbCrLf & "項目爲:" & project  sBody=sBody & vbCrLf & "發佈版本爲:" & resultSetObj.GetcolumnValue(4)  sBody=sBody & vbCrLf & "當前處理人爲:" & resultSetObj.GetcolumnValue(5)  sBody=sBody & vbCrLf & "配置管理員爲:" & resultSetObj.GetcolumnValue(6)  sBody=sBody & vbCrLf & "計劃發佈日期爲:" & PlanTimeStr  sBody=sBody & vbCrLf & "詳情請查看:" & " " & resultSetObj.GetColumnValue(8)  If n>0 Then  mBody=mBody & vbCrLf &  mBody=mBody & vbCrLf & "版本ID爲:" & resultSetObj.GetColumnValue(1)  mBody=mBody & vbCrLf & "狀態爲:" & resultSetObj.GetcolumnValue(2)  mBody=mBody & vbCrLf & "項目爲:" & project  mBody=mBody & vbCrLf & "發佈版本爲:" & resultSetObj.GetcolumnValue(4) & ",已經超期" & n & "天!"  mBody=mBody & vbCrLf & "當前處理人爲:" & resultSetObj.GetcolumnValue(5)  mBody=mBody & vbCrLf & "配置管理員爲:" & resultSetObj.GetcolumnValue(6)  mBody=mBody & vbCrLf & "計劃發佈日期爲:" & PlanTimeStr  mBody=mBody & vbCrLf & "詳情請查看:" & " " & resultSetObj.GetColumnValue(8)  mBody=mBody & vbCrLf &  nBody=nBody & vbCrLf &  nBody=nBody & vbCrLf & "版本ID爲:" & resultSetObj.GetColumnValue(1)  nBody=nBody & vbCrLf & "狀態爲:" & resultSetObj.GetcolumnValue(2)  nBody=nBody & vbCrLf & "項目爲:" & project  nBody=nBody & vbCrLf & "發佈版本爲:" & resultSetObj.GetcolumnValue(4) & ",還有" & Abs(n) & "天到期!"  nBody=nBody & vbCrLf & "當前處理人爲:" & resultSetObj.GetcolumnValue(5)  nBody=nBody & vbCrLf & "配置管理員爲:" & resultSetObj.GetcolumnValue(6)  nBody=nBody & vbCrLf & "計劃發佈日期爲:" & PlanTimeStr  nBody=nBody & vbCrLf & "詳情請查看:" & " " & resultSetObj.GetColumnValue(8)  nBody=nBody & vbCrLf &  End If  call sendmail(mFrom,mTo,mCc,"",mSub,sBody) Loop mFrom="cqadmin@********" mSub ="【CQ舒適提示】郵件內容是過去兩個月內超過計劃發佈時間,而版本流程還未結束的版本及快到計劃發佈日期的版本,各版本已經通知當前處理人處理" userlist=GetUserListFromGroup(Session,"技術管理組") For i=0 to Ubound(Userlist)  If i=0 Then  UserStr=Userlist(i)  Else  UserStr=UserStr & ";" & UserList(i)  End If Next mTostr=GetUserMailStr(Session,UserStr,";") mTo=Split(mTostr,";") mBody=mBody & vbCrLf & vbCrLf & vbCrLf & vbCrLf & nBody call sendmail(mFrom,mTo,"","",mSub,mBody) ' 增長從項目名稱取得項目信息裏某個域的值的函數 ' Author:**** Date:2007-01-09 Function GetProjFieldValue(Session,ProjectName,FieldName)  ' 根據傳入的項目名稱和字段名稱,取得該項目中該字段的值並返回該值  Const booOp_and = 1 ' and  Const comOp_eq = 1 ' =  Const SUCCESS = 1  Set Queryproj = Session.BuildQuery("項目")  Queryproj.BuildField(FieldName)  Set Operatorproj = queryproj.BuildFilterOperator(booOp_and)  operatorproj.BuildFilter "項目名稱", comOp_eq, ProjectName  Set resultSetproj = Session.BuildResultSet(queryproj)  resultSetproj.Execute  If resultSetproj.MoveNext = SUCCESS Then  FieldValue = resultSetproj.GetColumnValue(1)  GetProjFieldValue=FieldValue  End If End Function ' 增長從一個組裏取得。
相關文章
相關標籤/搜索