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(); } }