TRS WCM SOAP 接口说明
1 概述
WCM 支持给第三方产品提供 SOAP 接口,以便完成数据交换;关于 SOAP 协议的介绍,
这里不再详述,请自行在互联网搜索查阅;本文主要描述 WCM SOAP 的接口以及数据格式,
以便指导第三方和 WCM 交换数据。
2 适应范围
产品版本:TRS WCM5.2 和 TRS WCM6.X
WCM SOAP 接口的版本:7(通过 getMajorVersion 可以获得)
3 WCM 的更新和设置
如果第三方拟定采用 FTP 或者共享目录的方式传递导入的文件,需要做如下更新:
[1] 停止系统
[2] 更新 WCM SOAP 的实现
备份 WEB-INF/classes/com 目录,将附件内容解压,拷贝到 WEB-INF/classes/
[3] 更新 SOAP 配置
修改 WEB-INF/ server-config.wsdd 文件,将:
改为
[4] 重启系统
[5] 增加系统配置
在 WCM 系统配置用户新增配置中增加一条配置,内容如下:
名称:IMPORT_FILE_PATH
说明:第三方应用和 WCM 交换文件的本地目录
值 :实施人员根据情况自己设置服务器的本地路径,例如:d:\temp\或者
/user/wcm/tmp/
4 接口详述
4.1 获取当前 WCM SOAP 服务的版本
服务名称
获取当前 WCM SOAP 服务的版本
服务描述
服务名
方法名
参数
返回信息
Java 访问代码
返回结果样例
http:///wcm/services/trswcm: GetSOAPInfoService
getMajorVersion
无
@return 返回一个整型数
String sTargetEndpointAddress =
"http://localhost:8080/wcm/services/trswcm:GetSOAPInfoService";
Service service = new Service();
Call call = null;
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(
sTargetEndpointAddress));
call.setOperationName(new
QName("http://service.wcm.trs.com",
"getMajorVersion"));
Integer iResult = (Integer) call.invoke(new Object[]
{});
System.out.println("iResult=" + iResult);
} catch (Exception e) {
e.printStackTrace();
}
7
4.2 利用共享目录向 WCM 导入批量装载的文件
服务名称
利用共享目录向 WCM 导入批量装载的文件
服务描述
服务名
方法名
参数
返回信息
Java 访问代码
http:///wcm/services/trswcm:ImportService
importDocumentsByLocalFile
/**
* @param _sUserName
* 当前操作的用户,需要是WCM已经存在的用户名,可以是空串,默认是System
* @param _sFileName
* 已经上传到共享目录的文件,可以是ZIP也可以是一个XML,如果含有附件,需要将XML
以及附件打成ZIP文件上传过去,XML的格式见附录3 XML规范
* @return
* XML结构的返回信息
*/
@return 以 XML 形式组织的返回信息,如果失败也返回相同结构的信息,只是内容不一样
String sResult = null;
String sTargetEndpointAddress =
"http://localhost:8080/wcm/services/trswcm:ImportService";
Service service = new Service();
Call call = null;
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(
sTargetEndpointAddress));
call.setOperationName(new
QName("http://service.wcm.trs.com",
"importDocumentsByLocalFile"));
Object[] parameters = {"admin",
"DOCUMENT20090220419440310472.zip" };
sResult = (String) call.invoke(parameters);
System.out.println("==========sResult========\n" +
sResult);
} catch (Exception e) {
e.printStackTrace();
}
返回结果样例
附录2 返回结果XML样例
4.3 向 WCM 导入批量装载的文件
服务名称
向 WCM 导入批量装载的文件
服务描述
服务名
方法名
参数
返回信息
Java 访问代码
http:///wcm/services/trswcm:ImportService
importDocuments
/**
* 从指定文件中导入文档集合
*
* @param _pImportFileContent
* 需要导入的文件内容,为byte数组(不需要编码),文件可以是ZIP也可以是一个XML;
如果含有附件,需要将XML以及附件打成ZIP文件上传过去,
XML的格式见附录3 XML规范
String sResult = null;
* @param _sFileExt
* 文件后缀名(默认为ZIP)
* @return 以XML形式组织的返回信息,如果失败也返回相同结构的信息,只是内容不一
样
*/
@return 以 XML 形式组织的返回信息,如果失败也返回相同结构的信息,只是内容不一样
String sTargetEndpointAddress =
"http://localhost:8080/wcm/services/trswcm:ImportService";
Service service = new Service();
Call call = null;
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress(new
java.net.URL(sTargetEndpointAddress));
call.setOperationName(new
QName("http://service.wcm.trs.com",
"importDocuments"));
sResult = (String) call.invoke(new Object[] {
CMyFile.readBytesFromFile("y:\\test\\radar.zip"),
"zip" });
System.out.println("==========sResult========\n" + sResult);
} catch (Exception e) {
e.printStackTrace();
}
返回结果样例
附录2 返回结果XML样例
4.4 获取 WCM 栏目信息的服务
服务名称
获取 WCM 栏目信息的服务
服务描述
服务名
方法名
参数
http:///wcm/services/trswcm:GetChannelInfoService
getAllChannelXML
无
返回信息
标准的 WCM XML 字符串
Java 访问代码
返回结果样例
String sResult = null;
String sTargetEndpointAddress =
"http://localhost:8080/wcm/services/trswcm:GetChannelInfoService";
Service service = new Service();
Call call = null;
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(
sTargetEndpointAddress));
call.setOperationName(new
QName("http://service.wcm.trs.com",
"getAllChannelXML"));
sResult = (String) call.invoke(new Object[] {});
System.out.println("==========sResult========\n" + sResult);
} catch (Exception e) {
e.printStackTrace();
}
附录4 站点信息的XML样例
5 附录 1 第三方应用 FAQ
第三方如果是 Java 调用需要引入的包:
jaxrpc.jar,jaxen.jar,commons-discovery-0.2.jar,saaj.jar,axis.jar
如果在使用过程中,出现 ClassNotFoundError
可以通过 wcm/wcm_use/classlocation.jsp 在 wcm 中查找一下.
需要的包,在 wcm 中应该都有.
6 附录 2 返回结果 XML 样例
false
true
true
true
功!]]>
7 附录 3 XML 规范
以下内容描述了一个 WCM 对象集合
<${TableName}S>
<${TableName}>
${ReleatedObjs}
${ObjectProperties}
其中
${TableName}:对象对应的表名.
${ObjectProperties}:对象的属性列表,对应的是数据表列(可能不是所有的列)
${ReleatedObjs}:对象相关联的对象集合,该对象的 XML 描述需要符合规范(可以没有)
以文档对象为例
${TableName}=WCMDOCUMENT
${ObjectProperties}=DOCTITLE,DOCCHANNEL,DOCTYPE,DOCCONTENT etc.
${ReleatedObjs}=Appendixes.
因此一个可能的文档描述为
612
0
20
2002-08-12 22:36:46
10
0
0
1
607
2002-08-07 13:18:00
1
232
-1
APPFLAG表示附件类型,可以填入以下内容(值的解释别加入):
10:文件类型的附件
20:图片类型的附件
40:链接类型附件