首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件服务器

技术前沿 | Qmail | IMail | MDaemon | Exchange | Domino | 其它 | Foxmail | James | Kerio | JavaMail | WinMail | Sendmail | Postfix | Winwebmail | Merak | CMailServer | 邮件与开发 | 金笛 |
首页 > 邮件服务器 > Lotus Domino > Domino R5用Lotus Script处理XML > 正文

Domino R5用Lotus Script处理XML

出处:IT168.com 作者: 时间:2009-9-22 11:34:40

问题:

    我们的Support Team维护着不同地区各个部门的十几个Domino应用,这些应用都采用外接数据库Access DB和Oracle DB。由于某种原因,User要求连接数据库的UserID和Password可以变更,由于UserID和Password在开发时已作为Const固化在Agent 和公式@DbColumn、 @DbLookup中,所以每次变更时,不得不使用Lotus Designer逐个应用逐个Form、Agent等,一一打开变更,一不小心就漏掉了,十分麻烦。于是,我们想到一个方案:配置文件。配置文件要满足:

    1)对UserID和Password的变更,只需要修改配置文件即可完成。

    2)不需要Lotus Designer开发环境。

    3)格式清晰,易于修改维护。

    鉴于以上,我们把配置文件格式定为XML。

    在Domino R5中,对XML的处理,有两种方式: (1) 采用Java来处理; (2) Lotus Script来处理。

    通常采用Java Agent来处理XML文档。由于连接数据库的Agent是Lotus Script Agent,所以不得不采用Lotus Script来处理XML。

    环境:

    Win2k、Domino R5、 Lotus Designer R5、Visual Basic 6.0

    方案:

    我们知道Lotus Script没有直接处理XML文档的函数、方法。但是Lotus Script和Visual Basic融合的非常好,VB代码不需要做太多修改就可以在Lotus Script Agent中使用。我们知道在VB中使用MSXML处理XML文档。所以我们先在VB中使用MSXML处理XML文档,以此作为原型,再进行修改,移植到Lotus Script Agent中。

    一、 定义XML文件

    我们将其命名为DBConfig.xml,放在Lotus\domino\目录下。它由一个根元素<DATABASE>,DATABASE有一个以上的<APPLICATION>子元素,APPLICATION有一个属性name,并且有三个子元素,<USERID>、<PASSWORD>、<TNS>,这三个元素都没有属性。

    文件 : \Lotus\domino\DBConfig.xml

    内容 :

    <?xml version="1.0" encoding="utf-8"?>

    <!--    For Database username password etc.  -->

    <DATABASE>

    <!--   App 1  -->

    <APPLICATION name="APP1">

    <USERID>UID1</USERID>

    <PASSWORD>PWD1</PASSWORD>

    <TNS>TNS1</TNS>

    </APPLICATION>

    <!--   App 2  -->

    <APPLICATION name="APP2">

    <USERID>UID2</USERID>

    <PASSWORD>PWD2</PASSWORD>

    <TNS>TNS2</TNS>

    </APPLICATION>

    <!--   App 3  -->

    <APPLICATION name="APP3">

    <USERID>UID3</USERID>

    <PASSWORD>PWD3</PASSWORD>

    <TNS>TNS3</TNS>

    </APPLICATION>

    </DATABASE>

  

内容导航
二、 VB原型

    新建一标准EXE工程,在Form1上加button : Command1;新建一标准Module(因为要用到Public Type):Module1。从菜单Project 导入Microsoft XML v3.0。

    (1)Module1中加入以下代码:

    Public Type XMLForDB

    AppName As String

    DB_UID As String

    DB_PWD As String

    DB_TNS As String

    End Type

    Public DBConfig() As XMLForDB

    Sub initConfig()

    Dim xml As DOMDocument

    Set xml = New DOMDocument

    xml.Load ("\Lotus\domino\DBConfig.xml ")                         ‘指定XML文件路径

    Dim root As IXMLDOMElement

    Set root = xml.documentElement

    Dim node As IXMLDOMNode

    Dim cNode As IXMLDOMNode

    Dim nodeList As IXMLDOMNodeList

    Set nodeList = root.getElementsByTagName("APPLICATION")

    ReDim DBConfig(nodeList.length)

    For i = 0 To nodeList.length - 1

    Set node = nodeList.Item(i)

    If (node.nodeType = 1 And node.hasChildNodes()) Then

    With DBConfig(i + 1)

    .AppName = UCase(node.Attributes.getNamedItem("name").Text)

    .DB_UID = node.selectSingleNode("USERID").Text

    .DB_PWD = node.selectSingleNode("PASSWORD").Text

    .DB_TNS = node.selectSingleNode("TNS").Text

    End With

    End If

    Next

    For i = 1 To UBound(DBConfig)

    With DBConfig(i)

    Debug.Print .AppName

    Debug.Print .DB_UID

    Debug.Print .DB_PWD

    Debug.Print .DB_TNS

    End With

    Next

    End Sub

    Function getDBConfig(name As String) As Variant

    Call initConfig

    getDBConfig = 0

    For i = 1 To UBound(DBConfig)

    If (UCase(DBConfig(i).AppName) = UCase(name)) Then

    getDBConfig = i

    Exit For

    End If

    Next

    End Function

    (2)在Command1一的Click中加入:

    Private Sub Command1_Click()

    Debug.Print "----------------- Test Start -------------------"

    If getDBConfig("app1") then

    Debug.Print "---------------- Test OK --------------------"

    Else

    Debug.Print "---------------- Test Error --------------------"

    End if

    End Sub

内容导航

    三、 修改VBàLotus Script

    修改后Lotus Script如下 :

    -----------------------------------------------------------------------------

               File:                            DBCONFIG.LSS

                Copyright (c) 2001-2005

               Language : LotusScript

    '              Description: Global Constants for connect to Oracle DB.

    '                                                                                   The PG use a XML file named DBConfig.xml to config DB connections for appliction.

    '              Useage :  (1) Declaration : %include "DBconfig.lss"

    '                                         (2) Code :

    '                                                       Dim AppName, uid, pwd, tns , index

    '                                                       index = getDBConfig(appName)

    '                                                       if  index then

    '                                                                     'AppName = DBConfig(index).AppName

    '                                                                     'uid = DBConfig(index).DB_UID

    '                                                                     'pwd = DBConfig(index).DB_PWD

    '                                                                     'tns = DBConfig(v).DB_TNS

    '

    '                                                                     uid = DB_UID

    '                                                                     pwd = DB_PWD

    '                                                                     tns = DB_TNS

    '                                                       else

    '                                                                     msgbox (" The appName wasn't found.")

    '                                                       end if

    '

    '-----------------------------------------------------------------------------

    '  Structure for keep xml APPLICATION

    Public Type XMLForDB

    AppName As String

    DB_UID As String

    DB_PWD As String

    DB_TNS As String

    End Type

    ' Keep xml file content

    Public DBConfig() As XMLForDB

    ' DB connection

    Public DB_UID As String

    Public DB_PWD As String

    Public DB_TNS As String

    Public DB_Result As Integer

    Const XMLPATH = "D:\Lotus\Domino\DBConfig.xml"

    ' ///////////////////////////////////////////////////////////////////////////////////////////////////////

    '   Author   :      ivy8890

    '   Created  :      2005/04/15

    '   Purpose  :      Get xml file and parse it and keep all APPLICATION content to DBConfig arrary.

    '   History  :      <<< ID : 999    Type[Add, Update, Del]  Start   yyyy/mm/dd  Department  Purpose >>>

    '                       XXXXXXXXXXXXXXXXXXXXXXXXXXXX

    '                   <<< ID : 999    Type[Add, Update, Del]   End    yyyy/mm/dd  Department>>>

    '

    ' ///////////////////////////////////////////////////////////////////////////////////////////////////////

  

内容导航
Sub initConfig()

    On Error GoTo bottom

    Dim xml

    Set xml = CreateObject("Msxml2.DOMDocument")

    xml.Load (XMLPATH)

    Dim root

    Set root = xml.documentElement

    Dim node

    Dim nodeList

    Set nodeList = root.getElementsByTagName("APPLICATION")

    Dim AppName As String

    Dim uid As String

    Dim pwd As String

    Dim TNS As String

    Redim DBConfig(nodeList.length)

    For i = 1 To nodeList.length

    Set node = nodeList.Item(i-1)

    If (node.nodeType = 1 And node.hasChildNodes()) Then

    DBConfig(i).AppName = Ucase(node.Attributes.getNamedItem("name").Text)

    DBConfig(i).DB_UID = node.selectSingleNode("USERID").Text

    DBConfig(i).DB_PWD = node.selectSingleNode("PASSWORD").Text

    DBConfig(i ).DB_TNS = node.selectSingleNode("TNS").Text

    End If

    Next

    bottom:

    Exit Sub

    End Sub

    ' ///////////////////////////////////////////////////////////////////////////////////////////////////////

    '   Author   :      ivy8890

    '   Created  :      2005/04/15

    '   Purpose  :      Get specified application config information.

    '   Return :               (1) >0 index of DBConfig

    '                                        (2) err : 0

    '

    '   History  :      <<< ID : 999    Type[Add, Update, Del]  Start   yyyy/mm/dd  Department  Purpose >>>

    '                       XXXXXXXXXXXXXXXXXXXXXXXXXXXX

    '                   <<< ID : 999    Type[Add, Update, Del]   End    yyyy/mm/dd  Department>>>

    '

    ' ///////////////////////////////////////////////////////////////////////////////////////////////////////

    Function getDBConfig(sname As String)  As Integer

    getDBConfig = 0

    DB_Result = 0

    On Error GoTo bottom

    Call initConfig

    For i = 1 To Ubound(DBConfig)

    If (Ucase(DBConfig(i).AppName) = Ucase(sname)) Then

    getDBConfig = i

    DB_Result = i

    DB_UID  = DBConfig(i).DB_UID

    DB_PWD = DBConfig(i).DB_PWD

    DB_TNS = DBConfig(i).DB_TNS

    Exit For

    End If

    Next

    bottom:

    Exit Function

    End Function

    四、 配置和使用

    为了使多个应用使用,将以上代码保存为DBConfig.lss。*.Lss文件位置 : Server端 Lotus\domino目录下;Client端 Lotus\notes目录下。

    (1)导入Lss文件

    如果DBConfig.lss放在Lotus\notes目录下,使用时要用Include语句,%Include “DBConfig.lss”; 如果放在Lotus\notes\lss目录下,要用%Include “lss/DBConfig.lss”。

    (2)调用getDBConfig

    以字符型 Application Name 为参数调用getDBConfig(AppName),此AppName应于DBConfig.xml文件中<APPLICATION>的name属性值一致,不区分大小写。返回值为整型,如果返回值为零,表示出错或没有找到对应APPLICATION;如果返回值大于零,表示正常,返回值为其在DBConfig数组中的位置,UserID 和Password等可以用DBConfig(返回值). DB_UID和DBConfig(返回值). DB_PWD取得,也可以直接使用DB_UID和DB_PWD取得。

    (3)和ScriptLib一块使用

    在ScriptLib中新建DBConfig导入DBConfig.lss,在Sub Initialize中以字符型 Application Name 为参数调用getDBConfig(AppName),在Agent中使用Use语句:Use "DBConfig",在取得UserID 和Password处,先用DB_Result判断,DB_Result大于零时,正常;等于零时,出错。正常时等可以用DBConfig(DB_Result). DB_UID和DBConfig(DB_Result). DB_PWD取得,也可以直接使用DB_UID和DB_PWD取得。

    注意: 如果Server端没用安装注册Microsoft XML v3.0,会出现429错误,需要安装注册Microsoft XML v3.0。 以下是安装注册过程:

    1)拷贝文件msxml3.dll、msxml3a.dll、msxml3r.dll到C:\Winnt\System32目录下。

    2)在MS-Dos下转到C:\Winnt\System32目录,执行命令:regsvr32 C:\WINNT\system32\msxml3.dll

    五、追加、变更、删除

    (1)追加

    DBConfig.xml 中追加<APPLICATION>元素,Lotus Script Agent中追加调用。

    (2)变更

    只需对DBConfig.xml中的相应<APPLICATION>元素进行变更。

    (3)删除

    在Lotus Script Agent中删除调用后,对应的DBConfig.xml中可以删除也可以不删除。

相关文章 热门文章
  • 实现微软AD与Domino OA系统的互连互用
  • 现有 IBM Lotus Domino/Notes 邮件模板简介
  • IBM Lotus Domino 8.5 服务器管理入门手册
  • 基于Lotus Domino的OA系统中安全机制的研究
  • Lotus Domino 8.5 ID Vault 新功能介绍及体验
  • 理解 IBM Lotus Domino 服务器集群
  • Lotus Domino与关系数据库的互操作
  • 中化选择Lotus Domino 8.5建基础智慧协作平台
  • 故障诊断:Lotus Domino的挂起和崩溃
  • 保护 Lotus Domino 关键数据
  • 使用(DCT)优化 Lotus Domino 的配置(二)
  • 使用(DCT)优化 Lotus Domino 的配置
  • Domino管理员29个问题
  • Lotus Domino/Notes如何有效防止垃圾邮件
  • 配置Domino服务器
  • Lotus Notes常见问题答疑
  • Lotus Notes安装和使用的常见问题
  • Lotus Notes 的最终用户最需知道的十件事
  • 如何提高Domino服务器性能
  • LOTUS NOTES .INI文件参数设置秘籍
  • Domino 做Internet企业邮局的配置
  • Domino SMTP邮件服务器设置实例
  • 基于Linux平台的Domino Server安装与配置
  • 如何配制Domino for IIS?
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号