Lotus&Domino 手机应用专题. 实现方式一


    实现方式一:HTTP方式
    1、 使用条件
    Lotus Domino 启用了HTTP SERVER;而且OA系统大多数功能是B/S模式的。


    2、登陆
    [Datasource]
    Database= HTTP
    Server= --raw--http://服务器IP/names.nsf?login
    Flow=--raw--username=[User]&password=[Pwd]&RedirectTo=您系统首页的URL
    Port= 80 //端口号
    Method= Post //提交方式;通常登陆都为POST
    Preget= --raw--http:// 服务器IP /names.nsf?login //预处理;获取登陆页面的数据一并提交;
    Lex= <INPUT TYPE=hidden NAME="(%%ModDate)" VALUE="(.+?)"> //获取%%ModDate值进行提交


    3、 数据源的设置
    gServer= "服务器IP"
    OBJECT wxDATASOURCE aSource
    {
    private:
    aSource.Database= HTTP
    PRINT "aSource.Server= ""--raw--", gServer, "/names.nsf?login"""
    aSource.Port= 80 //端口号
    aSource.Method= "Post"
    aSource.Timeout= 5
    var= "--raw--username="
    var= var+ sysGLOBAL.USER
    var= var+ "&password="
    var= var+ sysGLOBAL.PASSWORD
    var=var+ "&RedirectTo=重定向的首页URL"
    PRINT "aSource.Flow=""", var, """"
    }

    aSource.Flow参数,是提交的数据,其中用户和密码分别是sysGLOBAL.USER和sysGLOBAL.PASSWORD


    4、 获取视图数据
    OBJECT wxQUERY aQuery
    {
    sUrl = "--raw--http://" //加上—raw—是代表按原文不进行额外的编码或去?号等操作;进行提交
    sUrl=sUrl+gServer+ "/"+"/test.nsf/视图名?openview" 访问数据页面
    aQuery.wxDATASOURCE= gSource
    aQuery.wxRECORDSET= aRecord

    PRINT "aQuery.Url=""",sUrl,""""
    aQuery.Begin= " <h2>(所有发文)</h2> " //定义开始匹配点
    aQuery.End= "</html>" //结束定义点
    aQuery.Lex=" <tr.+?><td.+?><img.+?>(.+?)</td><td.+?>(.+?)</td><td.+?>(.+?)</td><td.+?>(.+?)</td><td.+?>(.+?)</td><td.+?>(.+?)</td></tr> " //正则表达式;数据匹配
    aQuery.Method= Get //请求方式
    aQuery.Split= 3 分页大小
    aQuery.Page= 1
    aQuery.No= true

    aQuery.wxRECORDSET= aRecord
    }


    5、获取文档的数据
    OBJECT wxQUERY aQuery
    {
    sUrl = "--raw--http://"
    sUrl=sUrl+gServer+ "/test.nsf/0/03DD0E6B52ABD7EC482574A900159D1A?openDocument" //获取具体文档的资料
    aQuery.wxDATASOURCE= gSource
    aQuery.wxRECORDSET= aRecord
    PRINT "aQuery.Url=""",sUrl,""""
    aQuery.Begin= "发文编号</td>"
    aQuery.Lex= " <table.+?>.+?<tr.+?>.+?</tr>.+?<tr.+?<td.+?>(.+?)<script>.+?</tr>"
    aQuery.End= "</html>"

    aQuery.Method= Get

    aQuery.Split= 3
    aQuery.Page= 1
    aQuery.No= true

    aQuery.wxRECORDSET= aRecord
    }


    6、读取附件
    OBJECT wxDIR aDir
    {
    OBJECT wxFILE aFile
    {
    aFile.Source="http://服务器IP:端口号/test.nsf/0/文档UNID/$FILE/附件名1.doc?OpenElement"
    aFile.Display= "附件名1"
    aFile.Local= "附件名1.doc "
    }
    OBJECT wxFILE aFile
    {
    aFile.Source="http://服务器IP:端口号/test.nsf/0/文档UNID/$FILE/附件名2.doc?OpenElement"
    aFile.Display= "附件名2"
    aFile.Local= "附件名2.doc "
    }

    aDir.wxLIST= aList
    aDir.Attachment= 1, 0
    aDir.Download= "com_down.mas"
    aDir.Open= "com_view.mas"

    aDir.Prompt[]= 200, 250
    }


    7、 执行代理
    OBJECT wxQUERY aQuery
    {
    sUrl = "--raw--http://"
    sUrl=sUrl + gServer + "/" + gOADir +"/test.nsf/代理名?openagent"
    aQuery.wxDATASOURCE= gSource
    aQuery.wxRECORDSET= aRecord

    PRINT "aQuery.Url=""",sUrl,""""
    aQuery.Begin= "<root>"
    aQuery.Lex= "<dbCount>(.+?)</dbCount><dyCount>(.+?)</dyCount><domnioName>(.+?)</domnioName><ggCount>(.+?)</ggCount><mailCount>(.+?)</mailCount>"
    aQuery.End= "</root>"

    aQuery.Method= Get

    aQuery.Split= 3
    aQuery.Page= 1
    aQuery.No= true

    aQuery.wxRECORDSET= aRecord
    }


    8、提交数据
    OBJECT wxQUERY aQuery
    {
    aQuery.wxDATASOURCE= aSource

    var= "/weboa/rcbg/office.nsf/0/"
    var= var+ sysPARAMETER.pID
    var= var+ "?EditDocument&Seq=1"
    PRINT "aQuery.Url= ""--raw--", gServer, var,""""

    aQuery.Begin= "请选择下一环节的办理人"
    aQuery.End= "正在提交,请稍候"
    aQuery.Lex= "js.document.write(.+?input type=checkbox value='([^;]+?)'.+?);"

    var= "--boundary=-----------------------------7d81992df09a9&--attachment=%%File.482572d500208cc2.420ef16bf3dc51d94825723c0022d710.$Body.0.1A6A&--attachment=%%File.482572d500208cc2.420ef16bf3dc51d94825723c0022d710.$Body.0.2D36&__Click=482572D500208CC2.0fe0ffa5495f047c482572950018845f/$Body/0.89DC" //预先知道的附件控制域

    var= var+ "&"
    var= var+ sysPARAMETER.pField //用户可编辑的域;如标题等。
    var= var+ "="
    var= var+ sysPARAMETER.pNote
    var= var+ "&subflow_yj="
    var= var+ sysPARAMETER.pNote
    PRINT "aQuery.Flow= """, var, """"

    aQuery.Cache= 300

    OBJECT wxPARAMETER aPara
    {
    var= sysPARAMETER.pUrl
    var= var+ "&Click=482572D500208CC2.0fe0ffa5495f047c482572950018845f/$Body/0.1E24"

    PRINT "aPara.Preget= ""--raw--", gServer, var,""""
    aPara.Lex= "<input name=""([^>"";]+?)"" type=""hidden"" value=""([^>""]*?)"">" //将所有隐藏的域进行提交;
    }

    OBJECT wxPARAMETER bPara
    {
    PRINT "bPara.Preget= ""--raw--", gServer, var,""""
    bPara.Lex= "<input name=""([^>""]+?)"" value=""([^>""]*?)""[^>]*?>" //将所有其非隐藏的input进行提交.
    }

    OBJECT wxPARAMETER cPara
    {
    PRINT "cPara.Preget= ""--raw--", gServer, var,""""
    cPara.Lex= "<input type=""hidden"" name=""([^>""]+?)"" value=""([^>""]*?)"">" //将所有隐藏的域进行提交; 由于他们的hidden位置有可能不同.正则表达式需要多次匹配.
    }

    OBJECT wxPARAMETER dPara
    {
    PRINT "dPara.Preget= ""--raw--", gServer, var,""""
    dPara.Lex= "<select name=""([^>""]+?)""[^>]+?>[^<]*?<option value=""([^>""]*?)"" selected>"
    }

    OBJECT wxPARAMETER ePara
    {
    PRINT "ePara.Preget= ""--raw--", gServer, var,""""
    ePara.Lex= "<textarea name=""(subflow_specifyflowtask)""[^>]+?>(.+?)</textarea>"
    //将RTX的域进行提交;
    }

    aQuery.Method= Post
    aQuery.Order[]= 1, 2
    aQuery.Split= 30
    aQuery.Page= 1
    }

     

大客户定制开发咨询
电话:025-87754180
OEM合作与增值合作咨询
电话:13951904263
在线咨询
开发支持
QQ群二:27714869 QQ:1471059225 服务时间
工作日:8:30~18:00
  • 隐私声明
  • 招贤纳士
  • 联系我们
  • ©2011 MAStudio Inc 苏ICP备9987900