当前位置:软件学习 > 其它软件 >>

建乔手机OA-MAS脚本的语法

6    MAS脚本的语法  
4.1.    HTTP方式  
4.1.1    使用条件  
Lotus Domino 启用了HTTP SERVER;而且OA系统大多数功能是B/S模式的。  
4.1.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=  //获取%%ModDate值进行提交  
4.1.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.1.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=  (所有发文)  //定义开始匹配点  
    aQuery.End=                       //结束定义点  
aQuery.Lex= (.+?)(.+?)(.+?)(.+?)(.+?)(.+?)                                          //正则表达式;数据匹配  
    aQuery.Method= Get                        //请求方式  
    aQuery.Split= 3                                 分页大小  
    aQuery.Page= 1  
    aQuery.No= true  

    aQuery.wxRECORDSET= aRecord  
}  



  

4.1.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
}
4.1.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
}

4.1.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
}
4.1.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
}
4.2. API for C++方式(不建议使用)

4.2.1. 使用条件:
必须在MAStudio上安装Lotus Domino Notes 6/7客户端;只建议在C/S系统的Lotus Domino的OA上使用。
4.2.2. OBJECT BASIC语法如下:
 
OBJECT wxDATASOURCE对象用来定义和数据库的连接,该对象包含各种数据库的连接,连接的定义提供给wxQUERY、wxPROCEDURE使用。

OBJECT wxDATASOURCE aSource
{
private:
 aSource.Database= DOMINO    数据库类型
 aSource.Server= "maserver/mastudio"   DOMINO网络名
 aSource.Login= "D: \Lotus\notes\data\user.id" id文件(可动态)
 aSource.Pwd= 123       密码
 aSource.Timeout= 10      超时
aSource.Nsf= "test.nsf"     数据库
}
 
OBJECT wxQUERY aQuery      Lotus数据库
{
 aQuery.wxDATASOURCE= aSource      数据源名
 aQuery.wxRECORDSET= aRecord       数据记录

 aQuery.Notes= View / Document / Response  来自视图文档答复
 aQuery.From= student / NotesID / NotesID  视图名或文档编号
 aQuery.Field= “name, age”       查询字段
 aQuery.Temp= “c:/temp/zhangxh”        附件保存位置
}

aQuery.Notes值为View表示查询From中指定的视图student;值为Document或则Response表示查询文档或则文档的答复,From中的参数表示文档编号。

aQuery.Notes值为View查询视图的时候,不论Field有几个字段,系统会自动增加一字段显示每个文档的编号,通过此编号可查该文档。

aQuery.Field值为查询的字段列表,字段名区分大小写。

aQuery.Temp值为保存附件的目录,当查询的字段中包含附件的时候,系统自动创建此目录,并且只保留最后一个文档查看所下载的附件。可通过wxDIR对象将此目录下的附件提供给用户下载或则查看。

OBJECT wxPROCEDURE aProc     Lotus数据库
{
aProc.Execute= Update / Upload   写值或上传
aProc.Document= 1322      文档参数
aProc.Field= name       字段列表
aProc.Value= 123       值列表

aProc.wxDATASOURCE= aSource
}
aProc.Execute值为Update表示将对应的值写到文档对应的字段中,没有该字段自动增加。
aProc.Execute值为Upload表示将对应的值文件上传到文档中。此时Value参数为文件的全路径。以上字段列表和值可通过”f1, f2, f3”形式来表示多个字段以及对应的值。


OBJECT wxDIR  aDir
{
 PRINT " aDir.Root=""", root, """"     设置根目录
 aDir.wxLIST= aList       文件列表定义
 aDir.wxRECORDSET= aRecordSet    数据记录

 aDir.Attachment= 1, 0
 aDir.Download= "mail/emDownload.mas"   文件下载控制
 aDir.Open= "mail/emFile.mas"     文件浏览控制

 aDir.Prompt[]= 205, 250       导航提示区域
}

OBJECT wxLIST aList
{
 aList.Rect[]= 8,225,224,275      列表框范围
 aList.Font[]= 14, 0x4b74ff      列表字体
 aList.Banna[]= 1, 0xcedce2, 0x4b74ff    列表导航
}

7 实现效果
请查阅http://www.jianq.com中的成功案例。


--------------------编程问答-------------------- 很好
补充:企业软件 ,  其他
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,