发博文
个人资料
  • 博客访问:74032
  • 博文数量:30
  • 博客积分:1415
  • 博客等级:上尉
  • 注册时间:2007-11-22 09:02:38
订阅我的博客
  • 订阅
  • 订阅到鲜果
  • 订阅到抓虾
  • 订阅到Google
字体大小: 博文
分类: ClearQuest


[ClearQuest WEB 集成]
[CQWEB 集成]

通常情况下,CQ应用架构在windows平台下,对于应用开发者来说会具有两个优势:

1、基于windows平台,采用vbs脚本降低对CQ二次开发人员的技术要求;
2、将有大量的COM组件可通过vbs脚本使用,对于CQ应用的扩展性有较好的支持;

以笔者所在项目为例来说,CQWEB应用在windows 2003 server上部署,在CQWEB
应用运行一段时间后,需要在一套外部系统上将CQWEB的工单系统嵌入进来,为了避免用户在不同IT应用上登录切换,我们就提出将CQWEB工单应用系统与外部系统集成到一起的想法,集成方式可以根据集成的无缝程度、实施的复杂程度采用以下方式进行:

1、采用SSO方式将外部系统与CQWEB应用整合到一个门户应用框架;
2、外部系统应用直接访问CQWEB应用的后台数据库表,达到用户端的无缝集成;
3、外部系统提供后台自动登录CQWEB应用,后台自动执行CQWEB应用查询并对查询结果展示,后台自动整合外部系统与CQWEB应用的用户账号信息;

基于集成工作实施的复杂度尽量降到最低,又尽量为用户减少IT应用使用上的麻烦,我们采用第三种方式集成,基于应用平台的特点,在CQWEB应用服务器上编写ASP脚本,通过CQ VBS API访问CQWEB应用,提供给外部系统调用该ASP完成工作,因此需要进行:

1、在外部系统中编写程序,后台自动登录CQWEB应用,并记录SESSION会话;
2、在外部系统中特定功能点后台调用ASP脚本,完成CQWEB中公共查询的执行,并展示查询结果;
3、在外部系统中用户管理功能点后台调用ASP脚本,确保用户密码修改后自动调用ASP完成对CQ系统用户密码的同步;

以下作为对两个ASP脚本的备份。

CQModifyPwd.asp
---------------------------------------------------------------
<%
    'On Error Resume Next
    Dim ADUserName, ADPassword
    Dim CQUserName, CQPassword
    Dim ret
    ADUserName=request.QueryString("ADUserName")
    ADPassword=request.QueryString("ADPassword")
    CQUserName=request.QueryString("CQUserName")
    CQPassword=request.QueryString("CQPassword")

    Dim MasterName, SessionObj
    MasterName = "7.0.0"
   
    Set SessionObj = CreateObject("ClearQuest.AdminSession")
    SessionObj.Logon ADUserName, ADPassword, MasterName
    If Err.Number > 0 Then
        Err.Clear
        ret = "登录失败"
    End If

    Dim CurUser
    Set CurUser = SessionObj.getUser(CQUserName)
    If Err.Number > 0 Then
        Err.Clear
        ret = "获取用户对象失败"
    End If
    CurUser.SetLoginName CQUserName, CQPassword
    CurUser.UpgradeInfo
   
    ret = "<result>ok</result>"
    Set CurUser = Nothing
  Set SessionObj = Nothing
    'http://localhost:8091/CMS/CQModifyPwd.asp?CQUserName=yhl&CQPassword=hb1234&ADUserName=admin&ADPassword=cq
    Response.Write ret
%>

CQQueryWork.asp
---------------------------------------------------------------
<%
    On Error Resume Next
    Dim CQUserName, CQPassword
    Dim ret
    Set ret = ""
   
    CQUserName=request.QueryString("CQUserName")
    CQPassword=request.QueryString("CQPassword")

    Dim MasterName, ProductName
    Dim SessionObj, wkspc
   
    MasterName = "7.0.0"
    ProductName = "cqhb"
    Err.Clear
    Set SessionObj = CreateObject("ClearQuest.Session")
   
    SessionObj.UserLogon CQUserName, CQPassword, ProductName, 2, MasterName
    If Err.Number > 0 Then
        Err.Clear
        'ret = "登录失败"
        ret = "LogError:invalid user/password to login CQ"
       
    End If

    Dim QueryList, QueryResultList
    Dim QueryDef, Rs
    If ret = "" Then  '登录成功
            Set wkspc = SessionObj.GetWorkSpace
            If Err.Number > 0 Then
                Err.Clear
                'ret = "获取workspace失败"
                ret = "Error:failed to get WorkSpace"
            End If
           
            If ret = "" Then    '获取workspace成功
                    ql = wkspc.GetQueryList(1)
                   
                    Dim QueryNameStr
                    QueryNameStr = ""
                   
                    For Each e In ql
                        If InStr(CStr(e), "工作区") > 0 Then
                            Set QueryDef = wkspc.GetQueryDef(e)
                                If Err.Number > 0 Then
                                  Err.Clear
                                  'ret = "获取查询失败"
                                  ret = "Error:failed to get Query"
                                End If
                           
                                Set Rs = SessionObj.BuildResultSet(QueryDef)
                                Rs.EnableRecordCount
                                Rs.Execute
                                If Err.Number > 0 Then
                                   Err.Clear
                                   'ret = "执行查询失败"
                                   ret = "Error:failed to exec Query"
                                End If
                                If Rs.RecordCount > 0 Then
                                    ret = "<result>"
                                    ret = ret & "<query><name>" & e & "</name>"
                                    ret = ret & "<recordcount>" & Rs.RecordCount & "</recordcount></query>" & vbCrLf
                                    ret = ret & "</result>"
                                    exit for
                                End If
                               
                        End If
                    Next
                End If  '获取workspace成功
    End If  '登录成功
   
    Set Rs = Nothing
    Set wkspc = Nothing
    Set SessionObj = Nothing
   
       
           
%>

<%
    'http://localhost:8091/CMS/CQQueryWork.asp?CQUserName=fenglei_hd&CQPassword=hb1234
    Response.Write ret
%>

[发评论] 评论 重要提示:警惕虚假中奖信息!
  • chinaunix网友 2010-04-13 13:35
    [url=http://www.bjjyqf.com/product.html]QQ群发[/url] [url=http://www.bjjyqf.com/product.html]MSN群发[/url] [url=http://www.bjjyqf.com/product.html]QQ广告[/url] [url=http://www.bjjyqf.com/product.html]MSN广告[/url]
  • chinaunix网友 2010-03-23 16:00
    啊大
  • chinaunix网友 2010-03-23 12:33
    如果您有一技之长,请到淘师宝发帖子收徒弟; 如果您想学习一门技能,请到淘师宝发帖子拜师傅; 拜师傅,收徒弟,到淘师宝,网址:www.taoshibao.com
  • liu6545 2010-03-22 15:12
    好东西!收藏了! 听雨屋檐人
亲,您还没有登录,请[登录][注册]后再进行评论