一、Lotus&Domino的现状
目前国内使用Lotus Domino平台做为OA系统的政府和企业都是使用 OA比较长的,比较有经验的用户。经过了多年的应用,OA系统已经进入一个成熟稳定期,需求上也相对稳定,对每个新需求非常慎重,一般都拥有稳定技术维护方案。
由于WEB技术的飞速发展,特别是进入WEB2.0以来使得各种固网信息系统都毫无悬念的采用了WEB技术进行了开发。在这当中以JAVA、NET获得了企业级应用开发的主导地位,但是Lotus&Domino仅仅实现到浏览器的转型,其本身并未进行较大的发展。政府、企业级办公系统的功能需求比较单一,不同于业务系统,这就造成了大量已经使用中的Lotus&Domino办公系统并没有随着技术发展而淘汰,相反它们都在很好的运行着,只是没有更新而已,用户在办公上也确实没有新的需求。
二、IBM的发展策略
这些年WEB技术的轰轰烈烈到html5的发展,作为Lotus&Domino的厂家却决定了放弃这个办公市场的著名品牌,根据IBM的说法是,由于IBM的品牌已经足够了,Lotus&Domino品牌已经无需在单独存在。同样在技术发展上似乎IBM也在执行这个政策,Lotus&Domino也没有再进行投入和技术发展了。
即使是这样的情况下,IBM依然还是发布了几款和Lotus相关的更新产品,仿佛在给用户暗示着产品研发在继续。主要是Expeditor、Mobile Connect和EasySync® Pro三款软件,它们能做什么哩?
首先: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® 电子邮件、日历、任务、联系人和日志信息。
#p#
三、移动办公的需求
随着移动终端设备的发展,企业移动信息化逐步走向前台,移动应用不再是个人应用产品的专利,更多的企业已经意识到移动化对于企业执行效率的重要性。同样对于Lotus&Domino的用户首次有触动,他们突然意识到现在的办公需要延生到手机上,实现移动办公。
在前一段介绍的IBM三个产品是其在移动方面的延生产品,但是其本质是一款新的开发框架,其重心并不是为lotus老用户实现移动化诞生的。IBM在移动化的体现主要在于邮件和通讯录等标准化产品到移动的应用,其并不能提供针对用户已经个性开发的公文流程和审批进行移动化。
老用户的移动需求在于实现固有Lotus的公 文、流程能够通过android、iPhone手机进行操作使用,用户不希望再次再原有系统上进行二次开发、不希望影响原有的系统。这种前提下IBM的产品体系是无能为力的,IBM总是希望用户升级和选购新产品进行开发应用。
四、Lotus&Domino的技术线路
基于Notes的客户端模式:
早期的Lotus(Notes 6/7)是纯的C/S架构,其客户端为Notes方式进行,每个用户都有一个Notes id作为身份,然后进行登陆和操作数据库。IBM提供了C++的开发API能够访问Notes数据库,并进行访问视图、执行代理的操作。
基于B/S的浏览器模式:
随着WEB技术的发展,Lotus也跟着时代发展将其数据库能够以浏览器的形式进行访问。凭借着其文档数据库的基础,伴随着这个技术模式的快速改变使得Lotus能够成为当时办公系统主要开发平台。用户可以通过浏览器使用办公系统,在这个技术中java script获得较成功的应用,Lotus在文档处理中前端运用java script作为逻辑处理成为流程引擎的主要驱动方式。
我们在说说Lotus&Domino的流程引擎设计,本质上由于Lotus&Domino是文档型的数据库,其只擅长于处理文档,每一篇文档就好比我们的纸面文件。当用户A发起文档到下一个环节,这在数据库中就是在某个字段标记了下一个环节的接收人名单,其实文档并没有流动,只是文档标记了当前处理人和步骤。这样模式的流程驱动相比现在其它系统要简单的多。
#p#
五、移动化接入的技术要点
以上分析的两种技术线路的都还存在着应用,也都存在着移动化的需求,从技术我们该如何进行移动化接入哩?
要实现延生到手机上,首先要解决的是访问通道问题,也就是能够通过什么样的形式访问到数据。其次在此基础上实现写入数据,才能实现流程的驱动。
基于Notes的客户端模式:
基本上绝大多数的Notes的客户端用户都放弃了移动化的念头,针对早期的Lotus(Notes 6/7)版本只提供了C++ API开发的模式,简单来说要实现View / Document / Response 三个基本数据的查询,同时还要提供视图名或者文档编号。
在这模式下实现数据接入则需要了解全部的文档结构、字段类型、字段数据存放格式,这就好比需要了解ERP系统的数据字典一样。
这个技术要点主要在于首先通过C++ API实现数据的访问和数据的写入。C++开发技术上有一定难度,数据改写完全靠二次分析具有极大的风险。所以在这个模式下Notes的客户端用户一般都难以实现移动化。
基于B/S的浏览器模式:
现在普遍的Lotus都是基于浏览器模式进行访问,这就表明了Domino服务器提供了HTTP标准协议的访问通道。HTTP协议是浏览器和服务器交互的数据协议,是明文的形式进行数据交互。
从原理上来说遵循了HTTP协议则标志着完成可以实现移动化的接入,且别太乐观!
HTTP协议是非常复杂的,比如多域名授权、COOKIE机制、压缩数据流传输、汉字编码等等。
在这个模式下技术要点就是能够实现HTTP协议的模拟接入,根据MAStudio移动中间件厂家的经验,这其中主要涉及到5个重要的环节:
- 登陆
- 文档打开
- 附件下载
- 意见批示
- 流程驱动
这几个点的操作具有代表意义,在HTTP协议上的表现形式各不相同。登陆部分一般都是以POST形式发送登陆信息进行身份验证,登陆后才能获得身份权限。一般都是通过names.nsf数据库进行权限验证,/names.nsf?Login,
如下是基于HTTP协议针对登陆部分的协议明文:
POST /names.nsf?Login HTTP/1.1 Accept: image/jpeg, application/x-ms-application, image/gif, */* Referer: http://192.168.1.201:8088/ Accept-Language: zh-CN User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; ) Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Host: 192.168.1.201:8088 Content-Length: 122 Connection: Keep-Alive Cache-Control: no-cache %25%25ModDate=0000000000000000&RedirectTo=%2Faioffice2004%2Fais_index.nsf&Username=zjl&Password=123&submit.x=43&submit.y=7
从协议明文可以看到POST 地址POST /names.nsf?Login HTTP/1.1和用户输入的用户名和密码数据。实现这个协议涉及到gzip压缩以及%25%25ModDate格式的URL编码。
我们在继续分析一个正文附件打开的协议:
GET /aioffice2004/aia_ggl.nsf/v_newInfo/16B77B391D88E918482575D60027438F/$FILE/%E6%AD%A3%E6%96%87.doc?OpenElement HTTP/1.1 Accept: */* Referer: http://192.168.1.201:8088/aioffice2004/aia_ggl.nsf/v_newInfo/16B77B391D88E918482575D60027438F?OpenDocument Accept-Language: zh-CN User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0;) Accept-Encoding: gzip, deflate Host: 192.168.1.201:8088 Connection: Keep-Alive Cookie: DomAuthSessId=402045A5B39335066D0C7E89982FB9DC
所有Lotus的附件打开都以这个协议格式实现的:
aia_ggl.nsf/v_newInfo/16B77B391D88E918482575D60027438F/$FILE/%E6%AD%A3%E6%96%87.doc?OpenElement
这个格式为:数据库/文档编号/$FILE/文件名?OpenElement,在技术实现上我们可以通过这个形式来取到所有的文档附件、正文附件。
本文列举2点,其它3个环节可以同样的形式进行分析来实现移动化接入的需求。
#p#
六、实施技术线路和方案
如果要实施Louts&Domino进行移动化应用,完整的需要从三个方面来考虑实施方案:
1、 前端开发技术
目前手机前端进行开发的技术分为Native app开发模式、Web app开发模式、Hybrid app开发模式,这三个模式各自有不同的特点和合适的应用场景,同时也是技术发展的成熟线路。
在移动应用向企业普及的过程中,Native App的趋势传导给了企业。因此企业移动信息化通常先会尝试传统的Native App原生移动应用开发模式。但是企业很快发现,用Native App作为App开发模式的路子很难继续走下去。最主要的原因是Native App开发、更新、维护的周期太长,企业移动信息化大都处于尝试和摸索期,企业需要在短时间内快速推出不同的功能、产品来适应市场的需求和变化。
HTML5技术的兴起给Web App注入了新的生机。Web App具有开发成本低、周期短、使用方便、维护简单等特点,听起来非常适合企业移动信息化的需求。特别是上一轮的企业信息化在PC端大多选择了B/S架 构,这也和Web App通过手机浏览器访问的方式无缝过渡。
Hybrid App(混合模式移动应用)兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。很多企业采用Hybrid App技术开发移动应用,一方面是开发简单,另外一方面可以形成一种开发的标准。企业封装大量的Native Plugin(原生插件如支付功能插件)供Javascript调用,并且可以在今后的项目中尽可能的复用,从而大幅降低开发时间和成本。Hybrid App的标准化给企业移动应用开发、维护、更新都带来了极高的便捷性。
2、 数据接口方式
目前市场上一般都是针对B/S的Louts&Domino进行移动接入,基本上都采用以HTTP协议的方式进行数据接入主。
如果要全部总结来应该是有三种实施的技术线路:
- C++ API开发模式
- Notes接口模式
- HTTP协议模式
第一个模式由于技术难度大、风险高而不被常用;第二格模式一般是Lotus开发商所用,也就是办公系统原开发商在Lotus基础上进行二次开发,提供开发访问接口实现类似web service的形式。这个模式需要原有开发商的支持。
第三个模式在技术原理上较为常见、也符合技术标准。那么市场上一般的移动办公开发厂家是怎么做的哩?是否所有移动应用开发商都能按照HTTP协议进行开发哩?
一类厂商方案:移动应用开发商一般都是前端开发技术为主、只擅长前端效果开发,后台服务都是采用第三方(如tomcat\java)系统;
二类厂商方案:具有移动终端开发技术,熟悉接口开发,擅长于在Lotus基础上进行二次开发。
三类厂商方案:类似于MAStudio移动中间件能提供移动信息化开发平台,能够进行终端的开发、同时具有HTTP协议成熟体系,不需要修改原有系统而单向进行实施开发。
3、 网络交换协议
最后,在移动开发中网络交换协议显的特别重要。这里的网络交换协议指的是移动终端和服务器之间的交互,这个交互过程一般是通过公网进行的。这个过程大家自然想到的是安全问题,这也确实是最重要的一个问题。
安全处理方式一般有:
- 依靠加密算法对数据私有密钥加密
- 依靠SSL证书对传输加密
- 依赖运营商移动专线传输
- 依靠第三方VPN系统进行传输
网络交换协议的另一问题是包容性,在开发模式上可以选择私有协议和公有协议。私有协议能够实现安全、私密性,但是交互性不好;公有协议一般明文、开放,不具有私密性。还有一种开发模式为公私结合,在有限的范围采用私有协议、在广阔的范围采用公有协议,其交互并存的模式能够获得较好的平衡状态。
七、总结
以上全面的分析了lotus实现移动办公的各个技术和应用的关键点,在实际开发过程还存在更多的问题需要实践和分析。Lotus虽然是一个标准的开发平台,其单一的文档性数据库系统,但是由于Lotus具有的强大二次开发功能,不同的开发者在Lotus基础上创造出截然不同的应用模式。
比如说精通JS的开发者可能利用java script来实现前端逻辑控制、和流程引擎的驱动,有很多一般性的开发者可能直接利用document的字段进行标注流程,还有高明的开发者在某一个字段中以包含协议的形式来控制流程节点和人员。这些不同的开发者模式都将导致最后办公系统在浏览器上的表现形式,也影响到移动办公的实施接入。
所以实施Lotus的移动化,在技术层面不仅要熟悉http协议级别、更多的还要见识各种用户Lotus的具体开发模式。