1. 概述

SOAP远程接口仅为兼容3.5的二次开发,继续保留原来开放的接口,但不再扩充。新的开发请使用REST接口。

1.1. 启用webservice

安装完毕以后是不能直接使用webservice的,需要使用CtpConfig工具启用webservice插件。

1.2. 配置开发环境

启动服务。 查看特定服务的WSDL:

http://{host}:{port}/seeyon/services/{serviceName}?wsdl

服务的EPR(EndPoint Refrence)地址:

http://{host}:{port}/seeyon/services/{serviceName}

1.3. 开始编码(Java)

1.3.1. 生成ADB Client Stub

http://ws.apache.org/axis2/网站下载axis2。 进入axis2/bin目录,运行

wsdl2java –uri http://{host}:{port}/seeyon/services/{serviceName}?wsdl -o src –ns2p www.seeyon.com=com.seeyon.client

如:

wsdl2java -uri http://localhost/seeyon/services/personService?wsdl -o src -ns2p www.seeyon.com=com.seeyon.client

ADB是生成Axis2客户端最简单的方法。在大多数情况下,所有相关的类将会建立为一个主要功能组类的内部类。 注意:为了保证与服务器端的兼容性,升级以后必须重新生成并更新客户端的Stub!

1.3.2. 编写客户端代码

将wsdl2java生成的客户端stub代码复制到Java项目中 服务接口方法:

public interface PersonService {
  long create(String token, PersonInfoParam_All member) throws ServiceException;
}

客户端Stub结构:

客户端代码:

PersonServiceStub stub = new PersonServiceStub ();
PersonServiceStub.Create req = new PersonServiceStub.Create();
PersonServiceStub.PersonInfoParam_All person = new PersonServiceStub.PersonInfoParam_All();
person.setTrueName("测试真名");
person.setLoginName("登录名");
req.setPerson(person);
PersonServiceStub.CreateResponse resp = stub.create(req);

1.4. 开始编码(C#)

1.4.1. 添加服务引用

1.在Visual Studio的“解决方案资源管理器”中,在“引用”上点击右键,在弹出的菜单中选择“添加服务引用”,弹出“添加服务引用”对话框。

2.在弹出的对话框点击“高级”,然后点击“添加Web引用”(Visual Studio2008和之前的版本有一定差别)。

3.在“添加Web引用”对话框中输入Web Service的WSDL地址,点击“前往”; 指定Web引用名后,点击“添加引用”。

4.Visual Studio为添加的Web Service生成了以下的Web引用。

1.4.2. 编写客户端代码

服务接口方法:

public interface AuthorityService {
    UserToken authenticate(String userName, String password);
}

客户端代码:

AuthorityService.authorityService ws = new AuthorityService.authorityService();
AuthorityService.UserToken token = ws.authenticate("service-admin","123456");
Console.WriteLine(token.id);

1.5. 服务列表

名称 服务 说明
验证服务 authorityService 用户身份验证服务
人员管理服务 personService 人员的创建、修改、删除和启用/禁用。
部门管理服务 departmentService 部门的创建、修改、删除和启用/禁用。
岗位管理服务 ocupationService 岗位的创建、修改、删除和启用/禁用。
职务级别管理服务 otypeService 职务级别的创建、修改、删除和启用/禁用。
单位管理服务 accountService
组织模型数据服务 organizationDataService 人员、部门、岗位和职务级别数据导入导出服务。
文档导出服务 documentService 协同、公文、新闻、公告、讨论、调查数据导出服务。
新闻公告发布服务 documentService 新闻和公告发布发布服务。
表单服务 formService 表单定义与数据导出服务
BPM服务 BPMService 业务单据流程集成服务。
事项服务 affairService 待办事项和跟踪事项集成服务。
消息服务 messageService 外部系统发消息到协同平台的服务。
文件服务 downloadServiceuploadService 协同平台的附件下载和上传服务。

  • 外部业务系统服务传入用户名和密码,发出验证请求
  • 远程接口进行服务用户验证,通过则生成token,返回令牌
  • 外部业务系统构造请求数据,封装请求参数
  • 发送服务请求
  • 远程接口根据请求调用API,执行请求操作,获取相应的业务对象
  • 协同平台对请求进行处理
  • 返回处理结果
  • 返回响应数据

1.6. 服务公共实体

1.6.1. 服务响应实体(ServiceResponse)

参数 名称 数据类型 长度 备注
result 返回值 long 服务调用出错返回-1,否则表示成功。
errorNumber 错误号 long 参见服务错误号表
errorMessage 错误信息 string

1.6.2. 服务异常(ServiceException)

参数 名称 数据类型 长度 备注
errorNumber 错误号 long 参见服务错误号表
errorMessage 错误信息 string

1.6.3. DEMO示例

public static void main(String[] args) {
    //获取token
    AuthorityServiceStub stub = null;
    try {
        stub = new AuthorityServiceStub();
    } catch (AxisFault axisFault) {
        axisFault.printStackTrace();
    }

    AuthorityServiceStub.Authenticate au = new AuthorityServiceStub.Authenticate();
    au.setUserName("service-admin");//webservice账号
    au.setPassword("kxbb2011");//密码
    String token = "";
    try {
        AuthorityServiceStub.AuthenticateResponse authRes =  stub.authenticate(au);
        token = authRes.local_return.getId();
        System.out.println( token);
    } catch (RemoteException e) {
        e.printStackTrace();
    } catch (ServiceException e) {
        e.printStackTrace();
    }

    //根据token 创建用户
    PersonServiceStub personStub = null;
    try {
        personStub = new PersonServiceStub();
    } catch (AxisFault axisFault) {
        axisFault.printStackTrace();
    }
    PersonServiceStub.Create req = new PersonServiceStub.Create();
    PersonServiceStub.PersonInfoParam_All person = new PersonServiceStub.PersonInfoParam_All();
    person.setTrueName("测试真名");
    person.setLoginName("登录名");
    req.setToken(token);
    req.setPerson(person);
    try {
        PersonServiceStub.CreateResponse resp = personStub.create(req);
    } catch (RemoteException e) {
        e.printStackTrace();
    }

}

results matching ""

    No results matching ""