DOMINO 移动OA 方案
目前国内使用Domino平台做为办公系统的政府和企业都是使用OA比较长的,比较有经验的老用户。经过了多年的应用,OA系统已经进入一个成熟稳定期,需求上也相对稳定,对每个新需求非常慎重,不希望对原有的结构进行调整。
随着智能手机和移动互联网络的发展,移动OA的外部环境已经形式。对于 Domino 原有的用户来说,原来OA实施的时候遇到的周期过长、代码反复调整、领导需求变化、实施推广等问题还历历在目。担心移动OA的上马又需要对OA大面积的改造,风险难以控制;希望不需要修改现有OA的结构甚至代码就能将Lotus Domino OA拓展到手机上使用,这就是Lotus 用户面临的主要困境。
方案概述
方案概述

基于原有DOMINO系统延伸,无缝对接单向实施,实现手机移动端办公

  • 由于 Lotus Domino 有良好的二次开发环境(其Designer 简单易用),使得用户经常可以在原来OA厂家提供的产品上进行深层次的改造,这些用户通常都有信息部门并具有一定的开发能力,这使得在上移动OA的时候,他们希望得到的不仅是一个产品,更是一个类似Lotus Domino的平台,自己对移动应用进行功能增加和完善。

MAStudio 提供了网页接口模式(HTTP 方法)通过模拟浏览器向DOMINO 的 HTTP SERVER提交(post/get)URL 来获取到文档(openDocument)、视图(openView)、运行现有的代理(openagent)、新建文档(openForm)等等操作;充分利用现有 domino 的设计元素来进行数据交互。

MAStudio是一个完整的开发平台,具有标准的语法及丰富的组件,方便技术人员开发构建各类移动应用。 MAStudio与Lotus Domino 的数据交换主要是通过如下三种方式进行数据交换:
1、 HTTP 方式:主要通过向 Domino 的 HTTP SERVER 进行 POST 和 GET 请求;请求的URL是现有OA的应用连接如 openDocument、openView、openAgent、openForm、editDocument 等;对请求回来的结果;采用正则表达式进行匹配;匹配的结果整理后 PUSH 到手机终端显示。
2、 API for C++方式:主要是通过 Lotus 提供的API;配上相对.id 文件进行对nsf 数据库进行直接数据操作。
3、 接口方式:主要是通过改造调整现有的系统代码,进行接口开发;这些接口能对原有系统的关键应用(如审批、获取待办)进行操作。

现状分析

Domino 现有移动化产品分析

  • IBM Lotus Expeditor软件是 IBM 的通用桌面客户端整合框架。它帮助开发人员将各种客户端和服务器应用整合到混合或复合应用中,以优化员工加速业务流程所需的信息。使用它扩展您的 IBM Lotus 或 IBM WebSphere Portal应用基础架构如 Microsoft 应用程序。

IBM Lotus Mobile Connect 软件是一个通信软件平台,为企业提供了一个移动虚拟私人网络(virtual private network,VPN),此网络将通过无线和有线网络传输的数据都进行了加密处理。此软件有助于您有效地将现有的即时消息传递和企业应用扩展到移动工作者。

IBM Lotus? EasySync? Pro 软件让您可以在 IBM Lotus Notes 与受支持的市场领先的手持设备之间同步 IBM Lotus Notes? 电子邮件、日历、任务、联系人和日志信息。

以上三个产品是IBM在移动方面的延生产品,但是其本质是一款新的开发框架,其重心并不是为lotus老用户实现移动化诞生的。IBM在移动化的体现主要在于邮件和通讯录等标准化产品到移动的应用,其并不能提供针对用户已经个性开发的公文流程和审批进行移动化。老用户的移动需求在于实现固有Lotus的公文、流程能够通过android、iPhone手机进行操作使用,用户不希望再次再原有系统上进行二次开发、不希望影响原有的系统。这种前提下IBM的产品体系是无能为力的,IBM总是希望用户升级和选购新产品进行开发应用。

通过中间件的形式提供老用户Louts到移动化的应用是MAStudio中间件特色,MAStudio中间件负责和Louts进行交互获取数据和驱动流程,并且MAStudio提供手机客户端和UI的个性化开发能力。这样的模式是实现不影响固有系统而单向实施Lotus移动化应用的基本原理。

实现原理

Domino 移动端技术架构

  • MAStudio系统由服务器部分和客户端部分组成,通过无线网络、Internet相连接。MAStudio服务器架设于企业局域网络中,负责连接企业DOMINO系统。MAStudio客户端安装于手机/PDA等无线终端,通过无线网络连接到MAStudio服务器,读取数据和指令。 MAStudio服务器可以部署在Domino服务器上也可以部署在单独服务器上。

手机客户端只能访问到MAS服务器,由MAS服务器负责安全接入。比如请求待办列表,首先手机客户端发出请求到MAS服务器,MAS服务器再请求到Lotus服务器并接收返回数据。MAS服务器进行数据加密处理回送到手机客户端,客户端负责还原显示。

MAStudio与Lotus Domino的数据交换主要是通过如下3种方式进行数据交换:

HTTP方式:主要通过向Domino的HTTP SERVER进行POST和GET请求;请求的URL是现有OA的应用连接如openDocument、openView、openAgent、openForm、editDocument等;对请求回来的结果;采用正则表达式进行匹配;匹配的结果整理后PUSH到手机终端显示。 目前,以HTTP请求方式成为实施的主流,MASTUDIO的流程引擎能够识别Lotus的公文表单和实现自动流程提交,特别是公文表单字段特别多的情况,文档型数据库一般没有多表,都是以多字段形式存在。MASTUDIO流程引擎能够轻松处理1000个字段规模、多次连续提交以及JS形式代理驱动。

API for C++方式:主要是通过Lotus提供的API;配上相对.id文件进行对nsf数据库进行直接数据操作。

接口式:主要是通过改造调整现有的系统代码;进行接口开发;这些接口能对原有系统的关键应用(如OA审批、获取OA待办)进行操作。

DOMINO HTTP接入协议分析

1.1、登陆认证协议

根据协议捕获,/names.nsf?Login 为提交的登陆认证的地址,第13行Username=quyi&Password=1234554321表示传递登陆的用户名和密码,其中字段Username表示用户名,Password表示登陆密码


POST /names.nsf?Login HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://183.62.210.232:8899/weboa/webmain.nsf/index?OpenForm
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: 183.62.210.232:8899
Content-Length: 125
Connection: Keep-Alive
Cache-Control: no-cache

%25%25ModDate=0DE591546091D48E&Username=quyi&Password=1234554321&button=&RedirectTo=%2Fweboa%2Fwebmain.nsf%2Findex%3FOpenForm

1.2、MAS接入分析

根据上步的登陆协议,如下为XML格式的wxEXPLORE引擎执行登陆的过程,第3行执行访问url,请求浏览登陆界面的地址,第7行的wxEXPLORE负责填入用户名和密码发送登陆认证,Username为手机端输入的用户名,Password输入的密码,字段名和协议对应。





    http://183.62.210.232:8899/



    http://183.62.210.232:8899
    
		001
    	
				Username
				[User]
		

		
				Password
				[Pwd]
    	
    


2.1、打开文档协议

打开一个待办审批文件的协议如下,表示打开了webOfficialDocuments.nsf库里编号为63CB7320FED0D2B648257E8700084108的文档,其形成的协议为如下格式。

GET /weboa/webOfficialDocuments.nsf/0/63CB7320FED0D2B648257E8700084108?OpenDocument&time=122445 HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://183.62.210.232:8899/weboa/webmain.nsf/changnew?open&id=63CB7320FED0D2B648257E8700084108
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Host: 183.62.210.232:8899
Connection: Keep-Alive
Cookie: DomAuthSessId=F411A3E27EADA8257848B04800E65125

2.2、MAS接入代码模式

MAS代码可以很轻松的创建一个wxEXPLORE引擎实例,访问打开文档的URL地址,pUrl这里是示范测试地址,一般性在实际应用会通过pUrl= sysPARAMETER.pUrl的形式传递过来动态打开相应的文档。

pUrl= "/weboa/webOfficialDocuments.nsf/0/63CB7320FED0D2B648257E8700084108?OpenDocument&time=122445"
OBJECT wxEXPLORE aIE
{
    var= oaServer+ pUrl
	PRINT "aIE.Url= """, var, """"
	
	aIE.Fllow= true
}
DOMINO C/S 二次开发模型
主要是通过改造调整现有的系统代码,进行接口开发。
这些接口能对原有系统的关键应用(如OA审批、获取OA待办)进行操作。在原来的系统能提供源代码的修改,我们可以采用这种方式,也是一种比较传统的模式。
我们实施团队中有7年以上的LOTUS开发和实施经验的人员3名,10年以上的有1名;完全能胜任Lotus系统中的代码改造;绝对不影响目前系统的正常使用。 另外,在长期实施中,我们有相当多的代码库积累;其中获取视图列表(如OA待办、已办公文)、文档信息等功能都只需要在lotus nodes中进行配置就可以完成接口的提供,完全不需要代码改造;需要改造部分就只是流程审批部分。

基本流程步骤

开启Internet验证模式

1) 开启Lotus的http服务。原系统为B/S模式的则不需要。
2) 新建一个pda.nsf库,将原有C/S或B/S代码重新翻译,使之能通过HTTP POST调用;用于与原来的nsf库进行数据交换,同时提供MAStudio的数据接口。
3) 开启Lotus里的Internet的用户口令;做为移动OA的登陆口令,用户名按照现在的用户名。原系统为B/S模式的则不需要。

接口定义示范

获取文档的流转信息
1) Method: GET
2) URL : url ="HTTP://127.0.0.1/pda.nsf/PDA_showFlowHistoryBox?openagent& <id>ASD23423JSDJF2345345345</id>"

3) 返回结果 <root>
<date>(.+?)</date>    //日期
<nodeName>(.+?)</nodeName>  //环节名
<person>(.+?)</person>  //操作人
<post>(.+?)</post>  //动作
</root>

获取下一环节名称
1) Method: GET
2) URL : HTTP://127.0.0.1/pda.nsf/PDA_showFlowHistoryBox?openagent&<mainId></mainId>  //文档UNID,36位
<mode>0</mode> //发送模式,0发送下一步,1退回

3) 返回结果 <root>
<flowId>(.*)</flowId>   //流程ID,38位
<nodeNames>环节1,环节2,环节3</nodeNames>  //环节名
<defMan>(.*)</defMan>  //当前环节指定的第一个处理人
</root>

获取常用意见
1) Method: GET
2) URL : HTTP://127.0.0.1/pda.nsf/PDA_getPersonOpinion?openagent
3) 返回结果:
<root>
<useOpinion><body>同意!</body></useOpinion>
<useOpinion><body>不同意!</body></useOpinion>
<useOpinion><body>已阅!</body></useOpinion>
……
</root>

保存意见
1) Method: POST
2) URL : HTTP://127.0.0.1/pda.nsf/ag_flowSaveOpinion?openagent &<mainId>文档ID</mainId>  //文档ID
<isPDA>1</isPDA>   //标识是手机调用
3) POSTDATA:
<opinionBody>同意!</opinionBody>   //意见内容. 注意需要用ESCAPE编码

4) 返回结果:
<root><root>ok</root></root> 表示成功。

发送到下一环节
1) Method: POST
2) URL : HTTP://127.0.0.1/pda.nsf/ag_flowControl?openagent
3) POSTDATA:
// 注意需要用ESCAPE编码
<mainDocId>SFSDF</mainDocId>   //文档ID
<nextNodeName>审批环节</nextNodeName>   //下一环节名称
<nextNodeMen>张三</nextNodeMen>   //下一环节处理人
<mode>0</mode>   //发送模式,0表示发送下一步,1表示退回下一步.
<isSms>0</isSms>   //标识是否需要发短信通知.

4) 返回结果: <root>成功提交到[审批环节],张三处.</root>   //返回成功处理的信息.
DOMINO C++ API 接入
必须在MAStudio上安装Lotus Domino Notes 6/7客户端;只建议在C/S系统的Lotus Domino OA上使用

数据库连接

OBJECT wxDATASOURCE对象用来定义和数据库的连接,该对象包含各种数据库的连接,连接的定义提供给wxQUERY使用
OBJECT wxDATASOURCE aSource
{
	private:
	aSource.Database= DOMINO 								数据库类型 
	aSource.Server= "maserver/mastudio" 					DOMINO网络名
	aSource.Login= "D: Lotusnotesdatauser.id" 				id文件(可动态)
	aSource.Pwd= 123 										密码 
	aSource.Timeout= 10 									超时 
	aSource.Nsf= "test.nsf" 								数据库
}

数据源查询

aQuery.Notes值为View表示查询From中指定的视图student;值为Document或则Response表示查询文档或则文档的答复,From中的参数表示文档编号。
aQuery.Notes值为View查询视图的时候,不论Field有几个字段,系统会自动增加一字段显示每个文档的编号,通过此编号可查该文档。
aQuery.Field值为查询的字段列表,字段名区分大小写。
aQuery.Temp值为保存附件的目录,当查询的字段中包含附件的时候,系统自动创建此目录,并且只保留最后一个文档查看所下载的附件。可通过wxDIR对象将此目录下的附件提供给用户下载或则查看。
OBJECT wxQUERY aQuery
{
	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” 							附件保存位置 
}
DOMINO 移动化方案PPT 讲稿

    本文描述了基于MASTUDIO移动中间件实现DOMINO移动化完整过程,其从基本原理阐述到集成开发环境的使用,以及众多典型企业的成功应用。





    立刻下载
相关专题