码迷,mamicode.com
首页 > Web开发 > 详细

[转载]Domino 8.5 WebService开发一例

时间:2015-07-31 12:48:36      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:

 

  需求是要调用一个Domino上的WebService/JAVA来实现与人事管理系统里的人员同步,就是在人事管理系统中增加用户后,自动在Domino中注册该用户和邮箱。
  考虑了一下,大概有几种方式可以实现
1.在Domino中建立webservice提供者,人事管理系统访问这个webservice将参数传过来,通过webservice实现用户注册;
2.通过java/lotusscript代理实现;
3.在人事管理系统引入Notes的类库,在人事管理系统中开发程序访问Domino DIIOP端口对Domino操作;
4.引入LDAP类,通过对Domino LDAP的读取进行同步。
  因为webservice提供者和webservice使用者是Domino 8.5里的新功能,所以花了两天时间研究了一下,用webservice实现了这个需求。做好之后发现还是挺方便的,主要是接口统一了,和lotusscript代理比起来,与第三方系统集成就容易多了。

一、webservice提供者的开发
首先在domino应用程序里建立一个新的webservice提供者,命名叫regUser
技术分享
在这个webservice里创建java class,regUser.java,源代码的框架基本是自动生成的,自己编写需要处理的代码就好了,首先引入需要的类
import lotus.domino.*;
import java.net.*;
import java.io.*;

然后可以像java代理一样,通过domino session对domino进行用户注册操作
Session session;
session = WebServiceBase.getCurrentSession();
Registration reg = session.createRegistration();
reg.setRegistrationServer("Mail");
reg.setCreateMailDb(true);
reg.setCertifierIDFile("c:\IBM\Lotus\Domino\MailData\cert.id");
注册的代码就省略了,可以参考domino designer help里的registration类

因为注册类填写的用户信息较少,所以注册用户之后,需要把用户管理程序传过来的其他参数同步,同样可以像java代理一样直接对用户文档通过replaceItemValue进行操作
Database db = session.getDatabase("Mail","names.nsf");
View view = db.getView("People");
Document doc = view.getDocumentByKey(userName, false);
doc.replaceItemValue("EmployeeID", userId);
doc.save(false,false,true);

保存之后,还要修改webservice的属性里,端口类型类的值,改为我们调用的regUser方法
技术分享

因为是注册用户和修改文档的操作,还要修改属性中“安全”的选项


这样这个webservice就做好了,非常简单,如果代码有错误,domino designer也会自动提示在哪行有什么错误,而且可以提供快速修正的方法。

二、webservice使用者的开发
  regUser服务做好之后,因为没有人事管理系统的访问权限,无法直接用第三方系统进行直接调试,我们可以先在domino中开发一个webservice使用者,通过用人事管理系统提供的接口,用相同的调用方式来访问这个regUser服务进行测试。

开发webservice使用者更加简单,新建一个webservice使用者,设置名称,输入webservice提供者的WSDL地址就可以了,类型用lotusscript或者java都没关系,因为只是调用服务,实际的工作是由regUser服务完成的,所以这里在webservice使用者中并不需要编写代码。
技术分享

建好webservice使用者之后,代码是自动生成的,非常简单,就是读取了regUser的WSDl,为regUser服务定义了addUser方法(之前在webservice提供者中定义的注册用户方法命名为addUser,有22个参数要传递)
%INCLUDE "lsxsd.lss"
Class RegUser As PortTypeBase
    Sub NEW
        Call Service.Initialize ("UrnDefaultNamespaceregUserService", _
        "regUserService.Domino", "http://mail.cn.ibm.com:80/test.nsf/regUser?OpenWebService", _
        "RegUser")
    End Sub
   
    Function addUser(in0 As String, in1 As String, in2 As String, in3 As String, in4 As String, _
    in5 As String, in6 As String, in7 As String, in8 As String, in9 As String, in10 As Long, _
    in11 As String, in12 As String, in13 As String, in14 As String, in15 As String, in16 As String, _
    in17 As String, in18 As String, in19 As String, in20 As String, in21 As String, in22 As String) As String
        Let addUser = Service.Invoke("addUser", in0, in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22)
    End Function
End Class

最后,编写一个lotusscript代理来访问这个webservice使用者,也很简单,就是调用addUser方法,传递测试数据。
Option Public
Option Declare
Use "regUserFromWebService"
Sub Initialize()
    Dim service As   RegUser
    Set service=New   RegUser
    MsgBox service.addUser("955123", "zhangsan", "zhangsan","2000.07","2011.03","","000111","05","zhangsan","Male",33,"110101198001010016","123456","66666666","13800138000","zhangsan@cn.ibm.com","engineer","","China","","Beijing","","07") 
End Sub

运行代理,成功啦!
技术分享


[转载]Domino 8.5 WebService开发一例

标签:

原文地址:http://www.cnblogs.com/zhuxiangfei/p/4691690.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!