|
@@ -0,0 +1,826 @@
|
|
|
+
|
|
|
+ 修订记录
|
|
|
+
|
|
|
+|序号 |变更日期 |变更人员 |动作 |变更内容详情描述 |版本 |
|
|
|
+| |2010-04-2|DEV2 |新建 |新建本文档 |1.0 |
|
|
|
+| |5 | | | | |
|
|
|
+|2 |2011-01-2|殷勇 |修改 |增加多个附件的例子 |1.1 |
|
|
|
+| |0 | | | | |
|
|
|
+|3 |2014-07-1|李凌辉 |修改 |修改支持数据迁移时配置TRS |1.2 |
|
|
|
+| |4 | | |HyCloud方法 | |
|
|
|
+|4 |2014-07-1|胡谢进 |修改 |调整信任ip的设置 |1.3 |
|
|
|
+| |5 | | | | |
|
|
|
+|5 |2017-08-2|曹辉 |修改 |按照海云8.0调整 |1.4 |
|
|
|
+| |6 | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+| | | | | | |
|
|
|
+ TRS HyCloud DataExchange说明
|
|
|
+1 概述 2
|
|
|
+2 适应范围 3
|
|
|
+3 TRS HyCloud的更新和设置 3
|
|
|
+4 第三方应用部署说明 3
|
|
|
+ 4.1 Java DataExchange 3
|
|
|
+ 4.2 .net DataExchange 4
|
|
|
+5 TRS HyCloud服务接口调用概述 4
|
|
|
+ 5.1 Java DataExchange 4
|
|
|
+ 5.2 .net DataExchange 4
|
|
|
+6 Java DataExchange常用接口详述 4
|
|
|
+ 6.1 取TRS HyCloud指定栏目下文档数据 4
|
|
|
+ 6.2 向TRS HyCloud推送文档数据 5
|
|
|
+ 6.3 向TRS HyCloud推送栏目数据 6
|
|
|
+ 6.4 推送政府信息公开系统数据 8
|
|
|
+ 6.5 上传文件至TRS HyCloud 10
|
|
|
+7 .net DataExchange 常用接口详述 10
|
|
|
+ 7.1 利用已有服务取TRS HyCloud数据 10
|
|
|
+ 7.2 向TRS HyCloud推送数据 11
|
|
|
+8 解析Dispatch返回值对象 12
|
|
|
+9 附录1 TRS HyCloud Servlet 配置 13
|
|
|
+10 附录2 使用FAQ 15
|
|
|
+ 10.1 v6中相关服务,方法的配置文件在哪,有什么格式? 15
|
|
|
+ 10.2 如何知道我该调哪个服务,哪个方法,传递什么参数? 16
|
|
|
+11 附录3 Dispatch类API 17
|
|
|
+12 附录4 元数据导入实例 18
|
|
|
+13 附录5 文档上传多个附件实例 20
|
|
|
+
|
|
|
+
|
|
|
+ 概述
|
|
|
+
|
|
|
+ TRS HyCloud DataExchange是用于其它系统与TRS HyCloud或TRS
|
|
|
+HyCloud间的数据迁移和交换的工具。它采用HttpClient包来模拟客户端组装数据,发送
|
|
|
+请求;以基于TRS
|
|
|
+HyCloudV6的服务方式来接受数据进行相关逻辑处理。本文主要描述TRS HyCloud
|
|
|
+DataExchange的接口以及数据格式,以便TRS HyCloud数据的迁移交换。
|
|
|
+
|
|
|
+ 适应范围
|
|
|
+
|
|
|
+产品版本:TRS TRS HyCloud 8.X
|
|
|
+
|
|
|
+第三方应用支持 :java ,
|
|
|
+
|
|
|
+应用场景:
|
|
|
+ 1. 历史数据的迁移 (TRS WCM 52 – V7)
|
|
|
+ 2. 元数据导入 (政府信息公开系统历史数据导入)
|
|
|
+ 3. TRS HyCloud间数据交换 (省市级数据中心与各分发点数据交换)
|
|
|
+
|
|
|
+
|
|
|
+ TRS HyCloud的更新和设置
|
|
|
+
|
|
|
+ 配置TRS HyCloud应用,使其支持数据迁移,详见附录1
|
|
|
+
|
|
|
+1. 重启TRS HyCloud,不登陆,直接输入以下地址,测试配置是否生效
|
|
|
+ http://<TRS HyCloud IP>:<端口>/gov/opedata.do
|
|
|
+如果返回非法访问信息,那么需要设置信任ip,具体配置方法详见附录1,需要修改完以
|
|
|
+后重启再次访问确认;如果是404错误,说明配置有误。
|
|
|
+ 注意:同时tail Tomcat的out日志会知道哪些IP漏配置了!!!!
|
|
|
+
|
|
|
+2. 以上地址确认完成后,输入以下地址进行访问,
|
|
|
+ http://<TRS HyCloud IP>:<端口>/gov/opendate.do
|
|
|
+ ?serviceid=gov_site&methodname=querySites&CurrUserName=admin
|
|
|
+ &MediaType=1
|
|
|
+ 如果确认看到一个JSON数据,说明服务已经正确执行,至此TRS
|
|
|
+HyCloud配置完成。
|
|
|
+ 注意:每个服务都是这样请求的方式:
|
|
|
+ ◆ 前面三个参数(ServiceId、MethodName、CurrUserName)必须传入
|
|
|
+ ◆ 后面参数是服务中方法所要求的
|
|
|
+ ◆ 所有参数名都不区分大小写
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ 确保DataExchange工程可运行
|
|
|
+
|
|
|
+
|
|
|
+1 修改ServiceConfig,指向目标应用地址
|
|
|
+
|
|
|
+[pic]
|
|
|
+
|
|
|
+2 运行各类型测试用例
|
|
|
+
|
|
|
+
|
|
|
+1 查询
|
|
|
+
|
|
|
+com.trs.web2frame.WCMServiceCallerTest.testCall()
|
|
|
+
|
|
|
+[pic]
|
|
|
+
|
|
|
+2 提交数据
|
|
|
+
|
|
|
+
|
|
|
+3 文件上传
|
|
|
+
|
|
|
+
|
|
|
+ 第三方应用部署说明
|
|
|
+
|
|
|
+
|
|
|
+1 Java DataExchange
|
|
|
+
|
|
|
+1. 引入依赖架包;以Tomcat为例,将以下架包拷至应用目录 WEB-INF \ lib 下。
|
|
|
+ Dom4j-1.6.1.jar,jaxen-1.1-beta-6.jar
|
|
|
+ Commons-beanutils.jar,commons-collections.jar,commons-dbcp-1.1.jar
|
|
|
+ Commons-digester.jar,commons_pool-1.1.jar,commons.logging-1.0.4.jar
|
|
|
+ Commons-codec-1.3.jar,commons-discovery-0.2.jar,commons-httpclient-
|
|
|
+3.0.jar.
|
|
|
+
|
|
|
+
|
|
|
+2. 引入所需配置文件;以Tomcat为例,将wcmservicecaller.ini拷至应用目录WEB-
|
|
|
+ INF\classes下,调用接口前,确认设置正确改文件中TRS HyCloud_HOST_URL
|
|
|
+
|
|
|
+2 .net DataExchange
|
|
|
+
|
|
|
+1. 引入工程依赖库DataExchange.dll。
|
|
|
+2. .net不用配置文件,但在每次调用接口前需指定,详见.net调用概述
|
|
|
+
|
|
|
+ TRS HyCloud服务接口调用概述
|
|
|
+
|
|
|
+
|
|
|
+1 Java DataExchange
|
|
|
+
|
|
|
+1. 根据实际需求,从TRS HyCloud中获取对应的服务名和方法名,如想获取TRS
|
|
|
+ HyCloud中指定栏目下文档,则服务名为”gov_document”,方法名为”query”。具体可
|
|
|
+ 参考使用FAQ.
|
|
|
+2.
|
|
|
+ 从第三方系统获取数据,构造服务所需传递参数,如使用JDBC从其它数据库中提取数据
|
|
|
+ 。
|
|
|
+3. 调用dataExchange接口TRS HyCloudServiceCaller.call。
|
|
|
+4. 如果需要取返回数据,可从Dispatch返回对象中获得。
|
|
|
+
|
|
|
+2 .net DataExchange
|
|
|
+
|
|
|
+1. 根据实际需求,从TRS HyCloud中获取对应的服务名和方法名,
|
|
|
+ 具体可参考使用FAQ
|
|
|
+2. 指定govcenter.do详细路径;输出流存放位置。
|
|
|
+3. 调用BasicDataHelper接口。
|
|
|
+
|
|
|
+ Java DataExchange常用接口详述
|
|
|
+
|
|
|
+
|
|
|
+1 取TRS HyCloud指定栏目下文档数据
|
|
|
+
|
|
|
+|服务名称 |取TRS HyCloud指定栏目下文档数据 |
|
|
|
+|服务描述 | |
|
|
|
+|接口路径 |databridge / com.trs.web2frame / TRS HyCloudServiceCaller |
|
|
|
+|方法名 |Call |
|
|
|
+|参数 | |
|
|
|
+| |/** |
|
|
|
+| |* @param _sServiceId : 服务名 |
|
|
|
+| |* @param _sMethodName : 方法名 |
|
|
|
+| |* @param _oPostData: 所需传递的参数 |
|
|
|
+| |* @param _bPost: 参数传递方式,false为get模式,true为post模式 |
|
|
|
+| |* |
|
|
|
+| |* @return Dispatch 类实例 |
|
|
|
+|返回信息 |@return Dispatch 对象, |
|
|
|
+|Java访问代码|//获取服务名,方法名 |
|
|
|
+| |String sServiceId = "wcm6_document"; |
|
|
|
+| |String sMethodName = "query"; |
|
|
|
+| | |
|
|
|
+| |//构造传递参数 |
|
|
|
+| |Map oPostData = new HashMap(); |
|
|
|
+| |oPostData.put("ChannelId", new Integer(11)); |
|
|
|
+| | |
|
|
|
+| |//调用TRS HyCloudServiceCaller接口 |
|
|
|
+| |Dispatch oDispatch = TRS HyCloudServiceCaller.Call(sServiceId, |
|
|
|
+| |sMethodName, |
|
|
|
+| |oPostData, false); |
|
|
|
+
|
|
|
+
|
|
|
+2 向TRS HyCloud推送文档数据
|
|
|
+
|
|
|
+|服务名称 |向TRS HyCloud推送文档数据(TRS HyCloudServiceCaller实现) |
|
|
|
+|服务描述 | |
|
|
|
+|接口路径 |databridge / com.trs.web2frame / TRS HyCloudServiceCaller |
|
|
|
+|方法名 |Call |
|
|
|
+|参数 |/** |
|
|
|
+| |* @param _sServiceId : 服务名 |
|
|
|
+| |* @param _sMethodName : 方法名 |
|
|
|
+| |* @param _oPostData: 所需传递的参数 |
|
|
|
+| |* @param _bPost: 参数传递方式,false为get模式,true为post |
|
|
|
+| |模式 |
|
|
|
+| |* |
|
|
|
+| |* @return Dispatch 类实例 |
|
|
|
+|返回信息 |@return 返回一个Dispatch对象 |
|
|
|
+|Java访问代码 |//说明:在Id为10的栏目下导入文档lalala… |
|
|
|
+| |String sServiceId = "wcm6_document"; |
|
|
|
+| |String sMethodName = "save"; |
|
|
|
+| |Map oPostData = new HashMap(); |
|
|
|
+| |oPostData.put("ChannelId", new Integer(10)); |
|
|
|
+| |oPostData.put("ObjectId ", new Integer(0)); |
|
|
|
+| |oPostData.put("DocTitle ", "lalala...."); |
|
|
|
+| |oPostData.put("DocHtmlCon ", "ohohoh...."); |
|
|
|
+| |Dispatch oDispatch = TRS |
|
|
|
+| |HyCloudServiceCaller.Call(sServiceId, sMethodName, |
|
|
|
+| |oPostData, true); |
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+对于文档,栏目和政府信息公开,datExchange内部封装了这三类对象,对他们的操作可
|
|
|
+以调用业务层Mgr逻辑实现,如下
|
|
|
+|服务名称 |向TRS HyCloud推送文档数据(DocumentMgr实现) |
|
|
|
+|服务描述 | |
|
|
|
+|接口路径 |databridge / com.trs.web2frame / domain / DocumentMgr |
|
|
|
+|方法名 |save |
|
|
|
+|参数 |WDocument对象 |
|
|
|
+| |所在路径 : databridge / com.trs.web2frame / entity / |
|
|
|
+| |WDocument |
|
|
|
+|返回信息 |documentId (documentId为导入到TRS HyCloudDOCUMENT表后分配 |
|
|
|
+| |的Id) |
|
|
|
+|Java访问代码 |//说明:在Id为10的栏目下导入文档lalala… |
|
|
|
+| |WDocument oDocument = new WDocument(); |
|
|
|
+| |FILE_1 = “D:\\TRSTRS |
|
|
|
+| |HyCloudV6\\Tomcat\\webapps\\wcm\\example.js” |
|
|
|
+| |oDocument.setFieldValue("ChannelId", new Integer(10)); |
|
|
|
+| |oDocument.setFieldValue("ObjectId", new Integer(0)); |
|
|
|
+| |oDocument.setFieldValue("DocTitle", "lalala...."); |
|
|
|
+| |oDocument.setFieldValue("DocHtmlCon", "ohohoh...."); |
|
|
|
+| |DocumentMgr.save(_oDocument); |
|
|
|
+|返回结果样例 |1398 |
|
|
|
+
|
|
|
+
|
|
|
+3 向TRS HyCloud推送栏目数据
|
|
|
+
|
|
|
+|服务名称 |向TRS HyCloud推送栏目数据(TRS HyCloudServiceCaller实现) |
|
|
|
+|服务描述 | |
|
|
|
+|接口路径 |databridge / com.trs.web2frame / TRS HyCloudServiceCaller |
|
|
|
+|方法名 |Call |
|
|
|
+|参数 |/** |
|
|
|
+| |* @param _sServiceId : 服务名 |
|
|
|
+| |* @param _sMethodName : 方法名 |
|
|
|
+| |* @param _oPostData: 所需传递的参数 |
|
|
|
+| |* @param _bPost: 参数传递方式,false为get模式,true为post |
|
|
|
+| |模式 |
|
|
|
+| |* |
|
|
|
+| |* @return Dispatch 类实例 |
|
|
|
+|返回信息 |@return 返回一个Dispatch对象 |
|
|
|
+|Java访问代码 |//说明:在Id为1的站点下,父栏目为10的栏目下新建子栏目lalala|
|
|
|
+| |String sServiceId = "wcm6_channel"; |
|
|
|
+| |String sMethodName = "save"; |
|
|
|
+| |Map oPostData = new HashMap(); |
|
|
|
+| |oPostData.put("ObjectId", new Integer(0)); |
|
|
|
+| |oPostData.put("ParentId ", new Integer(10)); |
|
|
|
+| |oPostData.put("SiteId ", new Integer(1)); |
|
|
|
+| |oPostData.put("Chnlname ", "www"); |
|
|
|
+| |oPostData.put("CHNLDESC ", "还是外部家的"); |
|
|
|
+| |Dispatch oDispatch = TRS |
|
|
|
+| |HyCloudServiceCaller.Call(sServiceId, sMethodName, |
|
|
|
+| |oPostData, true); |
|
|
|
+
|
|
|
+
|
|
|
+|服务名称 |向TRS HyCloud推送栏目数据(ChannelMgr实现) |
|
|
|
+|服务描述 | |
|
|
|
+|接口路径 |databridge / com.trs.web2frame / domain / ChannelMgr |
|
|
|
+|方法名 |save |
|
|
|
+|参数 |WChannel对象 |
|
|
|
+| |所在路径 : databridge / com.trs.web2frame / entity / |
|
|
|
+| |WChannel |
|
|
|
+|返回信息 |channelId (channelId 为导入到TRS |
|
|
|
+| |HyCloudCHANNEL表后分配的Id) |
|
|
|
+|Java访问代码 |//说明:在Id为1的站点下,父栏目为10的栏目下新建子栏目lalala|
|
|
|
+| |WChannel oChannel = new WChannel(); |
|
|
|
+| |int nLocalChannelId = 1; |
|
|
|
+| |oChannel.setLocalChannelId(String.valueOf(nLocalChannelId))|
|
|
|
+| |; |
|
|
|
+| |oChannel.setFieldValue("SITEID", new Integer(1)); |
|
|
|
+| |oChannel.setFieldValue("ParentId", new Integer(10)); |
|
|
|
+| |oChannel.setFieldValue("ChannelId", new Integer(0)); |
|
|
|
+| |oChannel.setFieldValue("Chnlname", "lalala"); |
|
|
|
+| |oChannel.setFieldValue("CHNLDESC", "我是外部加的"); |
|
|
|
+| |ChannelMgr.save(oChannel); |
|
|
|
+|返回结果样例 |101 |
|
|
|
+
|
|
|
+
|
|
|
+4 推送政府信息公开系统数据
|
|
|
+
|
|
|
+|服务名称 |推送政府信息公开系统数据(TRS HyCloudServiceCaller实现) |
|
|
|
+|服务描述 | |
|
|
|
+|接口路径 |databridge / com.trs.web2frame / TRS HyCloudServiceCaller |
|
|
|
+|方法名 |Call |
|
|
|
+|参数 |/** |
|
|
|
+| |* @param _sServiceId : 服务名 |
|
|
|
+| |* @param _sMethodName : 方法名 |
|
|
|
+| |* @param _oPostData: 所需传递的参数 |
|
|
|
+| |* @param _bPost: 参数传递方式,false为get模式,true为post |
|
|
|
+| |模式 |
|
|
|
+| |* |
|
|
|
+| |* @return Dispatch 类实例 |
|
|
|
+|返回信息 |@return Dispatch 对象, |
|
|
|
+|Java访问代码 | |
|
|
|
+| |String sServiceId = "wcm6_MetaDataCenter"; |
|
|
|
+| |String sMethodName = "saveMetaViewData"; |
|
|
|
+| |Map oPostData = new HashMap(); |
|
|
|
+| |oPostData.put("ObjectId", new Integer(0)); |
|
|
|
+| |oPostData.put("ChannelId ", new Integer(10)); |
|
|
|
+| |oPostData.put("TITLE ", "test-国务院办公厅关于认真贯彻实施 |
|
|
|
+| |突发事件应对法的通知"); |
|
|
|
+| |oPostData.put("CONTENT ", "www。。。"); |
|
|
|
+| |Dispatch oDispatch = TRS |
|
|
|
+| |HyCloudServiceCaller.Call(sServiceId, |
|
|
|
+| |sMethodName,oPostData, true |
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+|服务名称 |推送政府信息公开系统数据(GovInfoMgr实现) |
|
|
|
+|服务描述 | |
|
|
|
+|接口路径 |databridge / com.trs.web2frame / domain / GovInfoMgr |
|
|
|
+|方法名 |save |
|
|
|
+|参数 |WGovInfo对象 |
|
|
|
+| |所在路径 : databridge / com.trs.web2frame / entity / |
|
|
|
+| |WGovInfo |
|
|
|
+|返回信息 |@return Dispatch 对象, |
|
|
|
+|Java访问代码 |WGovInfo oGovInfo = new WGovInfo(); |
|
|
|
+| |// 所属机构代码--使用栏目来定义组织结构 |
|
|
|
+| |oGovInfo.setDocChannel("01"); |
|
|
|
+| |// 所属主题--信息分类 |
|
|
|
+| |oGovInfo.setFieldValue("SUBCAT", "01"); |
|
|
|
+| |// 所属体裁--公文形式 |
|
|
|
+| |oGovInfo.setFieldValue("THEMECAT", "02"); |
|
|
|
+| |// 信息名称 |
|
|
|
+| |oGovInfo.setFieldValue("TITLE", "test-国务院办公厅关于认真 |
|
|
|
+| |贯彻实施突发事件应对法的通知"); |
|
|
|
+| |// 发布日期 |
|
|
|
+| |oGovInfo.setFieldValue("PUBDATE", "2007-11-07"); |
|
|
|
+| |// 生效日期 |
|
|
|
+| |oGovInfo.setFieldValue("EFECTDATE", ""); |
|
|
|
+| |// 文号 |
|
|
|
+| |oGovInfo.setFieldValue("FILENUM", "国办发〔2007〕62号"); |
|
|
|
+| |// 发布机构 |
|
|
|
+| |oGovInfo.setFieldValue("PUBLISHER", "国务院办公厅"); |
|
|
|
+| |// 获取方式 |
|
|
|
+| |oGovInfo.setFieldValue("ACESMTHD", ""); |
|
|
|
+| |// 正文内容 |
|
|
|
+| |oGovInfo |
|
|
|
+| |.setFieldValue( |
|
|
|
+| |"CONTENT", |
|
|
|
+| |"国务院办公厅关于认真贯彻实施突发事件应对法的通知<BR>各地区|
|
|
|
+| |、各部门要按照本通知精神,结合本地区、本部门的实际,制订具 |
|
|
|
+| |体方案和措施,认真做好突发事件应对法贯彻实施工作。对实施中 |
|
|
|
+| |的有关重要情况和问题,要及时报告国务院。<BR> |
|
|
|
+| | 国务院办公厅<BR> |
|
|
|
+| | 二○|
|
|
|
+| |○七年十一月七日"); |
|
|
|
+| |// 摘要 |
|
|
|
+| |oGovInfo |
|
|
|
+| |.setFieldValue("DESCRIPTION", |
|
|
|
+| |"经国务院同意,转发各省、自治区、直辖市人民政府,国务院各部 |
|
|
|
+| |委、各直属机构《中华人民共和国突发事件应对法》,要求认真贯彻 |
|
|
|
+| |执行。"); |
|
|
|
+| |// 主题词 |
|
|
|
+| |oGovInfo.setFieldValue("KEYWORDS", "国务院办公厅;宣传;实施 |
|
|
|
+| |突发事件;培训;法的"); |
|
|
|
+| |// 其他 |
|
|
|
+| |oGovInfo.setFieldValue("EFCTPRID", ""); |
|
|
|
+| |oGovInfo.setFieldValue("RELATION", ""); |
|
|
|
+| |oGovInfo.setFieldValue("ORGANCAT", ""); |
|
|
|
+| |oGovInfo.setFieldValue("SVOBJCAT", ""); |
|
|
|
+| |oGovInfo.setFieldValue("MDUPDTIME", ""); |
|
|
|
+| |oGovInfo.setFieldValue("PLACEKEY", ""); |
|
|
|
+| |Dispatch oDispatch = GovInfoMgr.save(oGovInfo); |
|
|
|
+|返回结果样例 | |
|
|
|
+
|
|
|
+
|
|
|
+5 上传文件至TRS HyCloud
|
|
|
+
|
|
|
+|服务名称 |上传文件至TRS HyCloud |
|
|
|
+|服务描述 | |
|
|
|
+|接口路径 |databridge / com.trs.web2frame / TRS HyCloudServiceCaller |
|
|
|
+|方法名 |UploadFile |
|
|
|
+|参数 |String _sFileName : 必填,待传文件名,含绝对路径。 |
|
|
|
+| |示例: _sFileName = D:\\TRSTRS |
|
|
|
+| |HyCloudV6\\Tomcat\\webapps\\wcm\\example.js |
|
|
|
+|返回信息 |@return 返回一个Dispatch对象 |
|
|
|
+| |Dispatch 详细API见附录3 |
|
|
|
+|Java访问代码 |Dispatch oDispatch = TRS HyCloudServiceCaller |
|
|
|
+| |.UploadFile(_sFileName); |
|
|
|
+| |System.out.println("oDispatch.getUploadShowName():" |
|
|
|
+| |+ oDispatch.getUploadShowName()); |
|
|
|
+|返回结果样例 |oDispatch.getUploadShowName():U020090318398155388865.js |
|
|
|
+
|
|
|
+
|
|
|
+ .net DataExchange 常用接口详述
|
|
|
+
|
|
|
+
|
|
|
+1 利用已有服务取TRS HyCloud数据
|
|
|
+
|
|
|
+|服务名称 |利用已有数据取TRS HyCloud数据 |
|
|
|
+|服务描述 | |
|
|
|
+|服务名 |BasicDataHelper |
|
|
|
+|方法名 |Call |
|
|
|
+|参数 |/** |
|
|
|
+| |* @param _sServiceId : 服务名 |
|
|
|
+| |* @param _sMethodName : 方法名 |
|
|
|
+| |* @param _oPostData: 所需传递的参数 |
|
|
|
+| |* |
|
|
|
+|返回信息 |记录在同目录的Log.txt中 |
|
|
|
+|Java访问代码 |Hashtable properties = new Hashtable(); |
|
|
|
+| |properties.Add("channelId","10"); |
|
|
|
+| |StreamWriter sw = new System.IO.StreamWriter("log.txt"); |
|
|
|
+| |BasicDataHelper.CenterUrl = |
|
|
|
+| |"http://192.9.200.103:8080/wcm/govcenter.do"; |
|
|
|
+| |BasicDataHelper.LogStream = sw; |
|
|
|
+| |BasicDataHelper.Call("wcm6_document","query",properties); |
|
|
|
+| |sw.Close(); |
|
|
|
+|示例代码说明 |导出栏目Id为10下的所有文档记录,存在log.txt中 |
|
|
|
+
|
|
|
+
|
|
|
+2 向TRS HyCloud推送数据
|
|
|
+
|
|
|
+|服务名称 |向TRS HyCloud推送数据 |
|
|
|
+|服务描述 | |
|
|
|
+|服务名 |BasicDataHelper |
|
|
|
+|方法名 |Call |
|
|
|
+|参数 |/** |
|
|
|
+| |* @param _sServiceId : 服务名 |
|
|
|
+| |* @param _sMethodName : 方法名 |
|
|
|
+| |* @param _oPostData: 所需传递的参数 |
|
|
|
+| |* |
|
|
|
+|返回信息 |记录在同目录的Log.txt中 |
|
|
|
+|Java访问代码 |Hashtable properties = new Hashtable(); |
|
|
|
+| |properties.Add("objectid","1"); |
|
|
|
+| |properties.Add("sitedesc","测试"); |
|
|
|
+| |StreamWriter sw = new System.IO.StreamWriter("log.txt"); |
|
|
|
+| |BasicDataHelper.CenterUrl = |
|
|
|
+| |"http://192.9.200.103:8080/wcm/govcenter.do"; |
|
|
|
+| |BasicDataHelper.LogStream = sw; |
|
|
|
+| |BasicDataHelper.Call("wcm6_website","save",properties); |
|
|
|
+| |sw.Close(); |
|
|
|
+|返回结果样例 |修改Id为1的站点名称为”测试” |
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ 解析Dispatch返回值对象
|
|
|
+
|
|
|
+ 在java版本的dataExchange中,返回值统一封装为Dispatch 类对象(关于Dispatch
|
|
|
+ 类API参考 附录3
|
|
|
+ );关于此类对象的解析规则类似XPATH,只需理清层次关系,逐层解析即可,如当前
|
|
|
+ 返回值对象为:
|
|
|
+ <A>
|
|
|
+ <B>
|
|
|
+ <C>….</C>
|
|
|
+ </B>
|
|
|
+ </A>
|
|
|
+ 可用A.B.C这样取C字段值。
|
|
|
+
|
|
|
+
|
|
|
+ 针对6.1示例中所返回的Dispatch 对象,返回值为Json格式,对应输出的Map
|
|
|
+ 对象结构如下:
|
|
|
+ {DOCUMENTS={PAGESIZE=20, DOCUMENT={DOCTYPE={TYPE=20, NAME=Html文档,
|
|
|
+ NODEVALUE=}, CRTIME={NODEVALUE=08-13 14:50},
|
|
|
+ DOCTITLE={NODEVALUE=上海判罕见重婚罪 一夫两妻都有正规结婚证},
|
|
|
+ CRUSER={NODEVALUE=admin}, DOCID={NODEVALUE=669},
|
|
|
+ DOCCHANNEL={CHANNELTYPE=0,
|
|
|
+ RIGHTVALUE=11111111111111111111111111111111111111111111111111111111111111
|
|
|
+ 1, NAME=公文审批, NODEVALUE=, ID=11}, TOPPED=false}, CURRPAGEINDEX=1,
|
|
|
+ PAGECOUNT=1, NUM=1}}
|
|
|
+
|
|
|
+
|
|
|
+ 梳理后的层次为:
|
|
|
+ <Documents>
|
|
|
+ <Document1>
|
|
|
+ <Doctype>
|
|
|
+ <Type> 20 </Type>
|
|
|
+ <Name> </Name>
|
|
|
+ </ Doctype>
|
|
|
+ <Crtime> 08-13 14:50 </ Crtime>
|
|
|
+ ……
|
|
|
+ </Document1>
|
|
|
+ <Num> 1 </Num>
|
|
|
+ …. …
|
|
|
+ </Documnets>
|
|
|
+
|
|
|
+
|
|
|
+ 解析代码如下:
|
|
|
+| |
|
|
|
+|//解析Dispatch对象,获取所需字段值 |
|
|
|
+|Map oJson = oDispatch.getJson(); |
|
|
|
+|System.out.println("oJson:" + oJson); |
|
|
|
+|System.out.println("DOCUMENTS.NUM:" |
|
|
|
+|+ JsonHelper.getValueAsString(oJson, |
|
|
|
+|"DOCUMENTS.NUM")); |
|
|
|
+|List lstDocuments = JsonHelper.getList(oJson, |
|
|
|
+|"DOCUMENTS.Document"); |
|
|
|
+|if (lstDocuments != null && lstDocuments.size() > 0) { |
|
|
|
+|System.out.println("Document.CRTIME:" |
|
|
|
+|+ JsonHelper.getValueAsString( |
|
|
|
+|(Map) lstDocuments.get(0),"CRTIME")); |
|
|
|
+|System.out.println("Document.DOCTYPE.TYPE:" |
|
|
|
+|+ JsonHelper.getValueAsString( |
|
|
|
+|(Map) lstDocuments.get(0),"DOCTYPE.TYPE")); |
|
|
|
+|} |
|
|
|
+| |
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+对应的输出内容为:
|
|
|
+
|
|
|
+|oJson:{DOCUMENTS={PAGESIZE=20, DOCUMENT={DOCTYPE={TYPE=20, |
|
|
|
+|NAME=Html文档, NODEVALUE=}, CRTIME={NODEVALUE=08-13 14:50}, |
|
|
|
+|DOCTITLE={NODEVALUE=上海判罕见重婚罪 一夫两妻都有正规结婚证}, |
|
|
|
+|CRUSER={NODEVALUE=admin}, DOCID={NODEVALUE=669}, |
|
|
|
+|DOCCHANNEL={CHANNELTYPE=0, |
|
|
|
+|RIGHTVALUE=1111111111111111111111111111111111111111111111111111111|
|
|
|
+|11111111, NAME=公文审批, NODEVALUE=, ID=11}, TOPPED=false}, |
|
|
|
+|CURRPAGEINDEX=1, PAGECOUNT=1, NUM=1}} |
|
|
|
+|DOCUMENTS.NUM:1 |
|
|
|
+|Document.CRTIME:08-13 14:50 |
|
|
|
+|Document.DOCTYPE.TYPE:20 |
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ 附录1DataExchange信任IP的配置
|
|
|
+
|
|
|
+ 默认情况下,不是所有机器都可以访问TRS HyCloud的服务,可以访问TRS
|
|
|
+HyCloud的govcenter.do服务的机器必须进行配置才能访问。
|
|
|
+
|
|
|
+1 DataExchange直接访问TRS HyCloud
|
|
|
+
|
|
|
+ • 配置文件:【wcm/WEB-INF/classes/ TRSWCMApp.ini】
|
|
|
+ • 在该文件结尾添加以下两行,格式如下:
|
|
|
+ SERVICE_ALLOW_IPS=DataExchange所在服务器的IP
|
|
|
+ SERVICE_CURR_USER=CurrUser的用户名
|
|
|
+
|
|
|
+
|
|
|
+ 例如:
|
|
|
+ 单个IP
|
|
|
+ SERVICE_ALLOW_IPS=192.9.100.217
|
|
|
+ SERVICE_CURR_USER=testuser
|
|
|
+ 组合IP
|
|
|
+ SERVICE_ALLOW_IPS=192.9.100.*,192.168.8.*
|
|
|
+ SERVICE_CURR_USER=testuser
|
|
|
+
|
|
|
+说明:多个ip中间以逗号隔开,一组ip以星号表示。
|
|
|
+
|
|
|
+2 DataExchange通过Apache或Nginx访问TRS HyCloud
|
|
|
+
|
|
|
+ • 配置文件:【wcm/WEB-INF/classes/ TRSWCMApp.ini】
|
|
|
+ • 在该文件结尾添加以下两行,格式如下:
|
|
|
+ SERVICE_ALLOW_IPS= Apache的IP地址/DataExchange所在服务器的IP
|
|
|
+ SERVICE_CURR_USER=CurrUser的用户名
|
|
|
+
|
|
|
+ 例如:
|
|
|
+ 单个IP
|
|
|
+ SERVICE_ALLOW_IPS=192.9.100.222/192.9.100.217
|
|
|
+ 组合IP
|
|
|
+
|
|
|
+ SERVICE_ALLOW_IPS=192.9.100.222/192.9.100.*,192.9.100.222/192.168.8.214
|
|
|
+
|
|
|
+
|
|
|
+ 说明:
|
|
|
+ ■
|
|
|
+ DataExchange所在服务器IP的设置支持单个IP、序列IP和组合IP的方式,多个IP
|
|
|
+ 用英文逗号分隔,IP段用*号表示,设置示例如下:
|
|
|
+ 单个IP
|
|
|
+ 192.168.9.31
|
|
|
+ 序列IP
|
|
|
+ 192.168.9.*
|
|
|
+ 组合IP
|
|
|
+ 192.168.9.*,192.168.3.*
|
|
|
+ ■ 目前仅支持一级Apache转发的情况
|
|
|
+ ■ 如果TRS HyCloud和第三方系统在内网可通讯,则TRS
|
|
|
+ HyCloud与第三方系统之间的数据交互不建议使用Apache转发的方式。
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ 附录2 使用FAQ
|
|
|
+
|
|
|
+
|
|
|
+1 相关服务,方法的配置文件在哪,有什么格式?
|
|
|
+
|
|
|
+ 答:通常配置文件存在 WEB-INF / classes / trsconfig / service /
|
|
|
+gov/目录下,
|
|
|
+ 比如对于扩展字段相关配置就在在
|
|
|
+extendfield.xml中;至于文件的格式,同样以
|
|
|
+ Extendfield.xml为例:
|
|
|
+
|
|
|
+ <service provider="com.trs.ajaxservice.ExtendFieldServiceProvider">
|
|
|
+ <method name="save">
|
|
|
+ <parameter name="HostType" desc="对象类型" type="int"
|
|
|
+required="true"/>
|
|
|
+ <parameter name="HostId" desc="对象ID" type="int"
|
|
|
+required="true"/>
|
|
|
+ <parameter name="ContainsChildren" desc="是否将当前操作传递给子对象"
|
|
|
+ type="boolean" required="false"/>
|
|
|
+ </method>
|
|
|
+ 。。。
|
|
|
+ </service>
|
|
|
+
|
|
|
+ Provider指出了服务的实现路径,下设服务中定义的方法,上例中给出的是扩展字段
|
|
|
+ 的保存方法,需要传递3个参数,参数通过type 和
|
|
|
+ required设定相关类型和是否为必传项,上例中对于扩展字段的保存至少需要传递整
|
|
|
+ 型参数HostType和HostId;如果要给此服务新增方法,只需在次定义相关配置,然后
|
|
|
+ 到peroveder中实现即可。
|
|
|
+
|
|
|
+
|
|
|
+2 如何知道我该调哪个服务,哪个方法,传递什么参数?
|
|
|
+
|
|
|
+
|
|
|
+ 答:一是对于简单型的,比如要获取指定栏目下的文档数据,可以看出是文档服务
|
|
|
+ 的查询方法,通过查找 WEB-INF / classes / trsconfig / service / gov/
|
|
|
+ document.xmll 中的query即可获取相关参数,服务名采用 “wcm6-
|
|
|
+ 所属目录”格式,至于文档查询,serviceid = “gov_document” ;
|
|
|
+ methodname = “query”.
|
|
|
+
|
|
|
+
|
|
|
+ 二是借助工具Http-
|
|
|
+ Watch或者Chrome开发者工具来截获gov.do请求,提取相应的服务,方法,参数
|
|
|
+ 信息,同样以文档的查询为例,首先设置一下Http-
|
|
|
+ Watch的filter为.do,过滤冗余页面信息,便于观察;
|
|
|
+ [pic]
|
|
|
+
|
|
|
+ 其次是发出相应的center.do请求,如取指定栏目下文档序列,只需刷新下栏
|
|
|
+ 目导航树即可;
|
|
|
+ 最后便是找到对应的请求,提取相关信息
|
|
|
+ [pic]
|
|
|
+ 上例中服务是以get 方式发送,可以在quertyString
|
|
|
+ 选项卡中获取相关参数信息;至于post方式,则在Potdata中获取。
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ 附录3 Dispatch类API
|
|
|
+
|
|
|
+|接口名称 |通用TRS HyCloudServiceCaller服务返回对象Dispatch类API |
|
|
|
+|接口描述 |路径 : com.trs.web2frame.dispatch.Dispatch |
|
|
|
+|getResponseXML |public Document getResponseXML() |
|
|
|
+| |Parameters: |
|
|
|
+| |Returns: 如果返回数据类型是XML,此方法将返回一个XML文档对 |
|
|
|
+| |象;否则返回null |
|
|
|
+|getResponseText |public String getResponseText() |
|
|
|
+| |Parameters: |
|
|
|
+| |Returns:字符串形式的服务返回数据 |
|
|
|
+|getJson | public Map getJson() |
|
|
|
+| |Parameters: |
|
|
|
+| |Returns: |
|
|
|
+| |如果返回数据类型是Json,此方法将返回对应的MAP对象;如果返 |
|
|
|
+| |回数据类型是xml,会先转成Json,然后再输出对应的MAP对象 |
|
|
|
+|parseJson2Map |public Map parseJson2Map(String _responseText) |
|
|
|
+| |Parameters: Json格式的字符串 |
|
|
|
+| |Returns: 对应的MAP对象 |
|
|
|
+|getUploadShowName|public String getUploadShowName() |
|
|
|
+| |Parameters: |
|
|
|
+| |Returns: 上传文件的显示名 |
|
|
|
+|toDocument |public WDocument toDocument() |
|
|
|
+| |Parameters: |
|
|
|
+| |Returns: 将返回数据组装成WDOCUMENT对象 |
|
|
|
+|toChannel |public WChannel toChannel() |
|
|
|
+| |Parameters: |
|
|
|
+| |Returns: 将返回数据组装成WCHANNEL对象 |
|
|
|
+|isFailure |public boolean isFailure() |
|
|
|
+| |Parameters: |
|
|
|
+| |Returns: 判断服务执行情况 |
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ 附录4 元数据导入实例
|
|
|
+
|
|
|
+
|
|
|
+|/* |
|
|
|
+|* |
|
|
|
+|应用场景:进行员工通讯录信息上传,包含姓名,性别,照片,个人简介等|
|
|
|
+|<BR> |
|
|
|
+|* |
|
|
|
+|* 实现:元数据试图设置成3个字段: 普通文本型的姓名字段(物理字段名 |
|
|
|
+|为xm)<BR> |
|
|
|
+|* 枚举类型的性别字段(物理字段名为xb,可选值为男,女)<BR> |
|
|
|
+|附件类型的照片字段(物理字段名为zp)<BR> |
|
|
|
+|* 个人简介以文档附件的形式上传<BR> |
|
|
|
+|*/ |
|
|
|
+| |
|
|
|
+|// 1. 根据实际需求,从TRS HyCloud中获取对应的服务名和方法名:元数 |
|
|
|
+|据字段信息的保存 |
|
|
|
+|String sServiceId = "wcm6_MetaDataCenter"; |
|
|
|
+|String sMethodName = "savemetaviewdata"; |
|
|
|
+| |
|
|
|
+|// 2. 从第三方系统获取数据,构造服务所需传递参数 |
|
|
|
+|Map oPostData = new HashMap(); |
|
|
|
+|oPostData.put("ObjectId", new Integer(0)); //0表示新增 |
|
|
|
+|oPostData.put("CHANNELID", new Integer(97)); //97表示要导入的栏目 |
|
|
|
+| |
|
|
|
+|oPostData.put("xm", "张三"); |
|
|
|
+|oPostData.put("xb", "男"); |
|
|
|
+| |
|
|
|
+|// 2.2 给服务器上传本地文件获得一个文件名,然后将返回的文件名赋值 |
|
|
|
+|到指定的字段上 |
|
|
|
+|String sLocalFileName = "D:\\TRSTRS |
|
|
|
+|HyCloudV6.1\\Tomcat\\webapps\\wcm\\infoview\\照片.gif"; |
|
|
|
+|Dispatch oDispatch = TRS |
|
|
|
+|HyCloudServiceCaller.UploadFile(sLocalFileName); |
|
|
|
+|oPostData.put("zp", oDispatch.getUploadShowName()); |
|
|
|
+| |
|
|
|
+|// 3. 参照接口格式,发生服务请求 |
|
|
|
+|oDispatch = TRS HyCloudServiceCaller.Call(sServiceId, sMethodName,|
|
|
|
+|oPostData, |
|
|
|
+|true); |
|
|
|
+| |
|
|
|
+|//4.解析返回值对象,获取保存后的Id |
|
|
|
+|Map oJson = oDispatch.getJson(); |
|
|
|
+|String metaDataid = JsonHelper.getValueAsString( |
|
|
|
+|oJson ,"METAVIEWDATA.METADATAID"); |
|
|
|
+| |
|
|
|
+| |
|
|
|
+|// 5. 进行附件管理,具体步骤同以上3步 |
|
|
|
+|sServiceId = "wcm6_document"; |
|
|
|
+|sMethodName = "saveAppendixes"; |
|
|
|
+| |
|
|
|
+|oPostData = new HashMap(); |
|
|
|
+|oPostData.put("DocId", Integer.valueOf(metaDataid)); |
|
|
|
+|oPostData.put("AppendixType", new Integer(10)); |
|
|
|
+| |
|
|
|
+|//5.1上传本地个人简介文件 |
|
|
|
+|sLocalFileName = "D:\\TRSTRS |
|
|
|
+|HyCloudV6.1\\Tomcat\\webapps\\wcm\\infoview\\个人简介.txt"; |
|
|
|
+|oDispatch = TRS HyCloudServiceCaller.UploadFile(sLocalFileName); |
|
|
|
+|String postData = "<OBJECTS><OBJECT ID='0' APPFILE='" |
|
|
|
+|+ oDispatch.getUploadShowName() |
|
|
|
+|+ "' APPLINKALT='[object Object]' APPFLAG='10' |
|
|
|
+|APPDESC='个人简介.txt'/></OBJECTS>"; |
|
|
|
+|oPostData.put("APPENDIXESXML", postData); |
|
|
|
+| |
|
|
|
+|oDispatch = TRS HyCloudServiceCaller.Call(sServiceId, sMethodName,|
|
|
|
+|oPostData, |
|
|
|
+|true); |
|
|
|
+|} |
|
|
|
+
|
|
|
+
|
|
|
+ 附录5 文档上传多个附件实例
|
|
|
+
|
|
|
+|//上传本地两个html作为文件附件 |
|
|
|
+|String FILE_1 = "D:\\TRSTRS |
|
|
|
+|HyCloudV6.1\\Tomcat\\webapps\\wcm\\1.html"; |
|
|
|
+|String FILE_2 = "D:\\TRSTRS |
|
|
|
+|HyCloudV6.1\\Tomcat\\webapps\\wcm\\2.html"; |
|
|
|
+|//上传文件并获取上传后符合TRS HyCloud规范的文件名 |
|
|
|
+|Dispatch oDispatch = TRS HyCloudServiceCaller.UploadFile(FILE_1); |
|
|
|
+|FILE_1 = oDispatch.getUploadShowName(); |
|
|
|
+|oDispatch = TRS HyCloudServiceCaller.UploadFile(FILE_2); |
|
|
|
+|FILE_2 = oDispatch.getUploadShowName(); |
|
|
|
+|//确定保存附件的服务/方法名 |
|
|
|
+|String sServiceId = "wcm6_document"; |
|
|
|
+|String sMethodName = "saveAppendixes"; |
|
|
|
+|//构造参数 |
|
|
|
+|Map oPostData = new HashMap(); |
|
|
|
+|oPostData.put("DocId", new Integer(4207)); //文档ID |
|
|
|
+|oPostData.put("AppendixType", new Integer(10)); |
|
|
|
+|//附件类型,10标识文件,20标识图片,40标识链接 |
|
|
|
+|String postData = "<OBJECTS><OBJECT ID='0' APPFILE='" + FILE_1 + |
|
|
|
+|"' SRCFILE='1.html' APPFLAG='10' APPDESC='1.html'/><OBJECT ID='0' |
|
|
|
+|APPFILE='" + FILE_2 + "' SRCFILE='2.html' APPFLAG='10' |
|
|
|
+|APPDESC='2.html'/></OBJECTS>"; |
|
|
|
+|oPostData.put("APPENDIXESXML", postData); |
|
|
|
+|oDispatch = TRS HyCloudServiceCaller.Call(sServiceId, sMethodName,|
|
|
|
+|oPostData,true); |
|
|
|
+
|
|
|
+
|
|
|
+ 附录6 TRS HyCloud的DataExchange修改了哪些文件
|
|
|
+
|
|
|
+
|
|
|
+1 ServiceConfig.java
|
|
|
+
|
|
|
+主要修改了DataExchange请求的地址为opendata.do
|
|
|
+
|
|
|
+2 WCMServiceCaller.java
|
|
|
+
|
|
|
+主要修改了Post请求的方式:
|
|
|
+ ◆ 按照Post方式提交数据时在Header加入一个属性:formdata
|
|
|
+ ◆ 之前Post为XML写入内容,现在改为标准post方法:key-value
|
|
|
+ ◆
|
|
|
+ 修改的函数是:com.trs.web2frame.WCMServiceCaller.Call(ServiceObject,
|
|
|
+ boolean)
|
|
|
+
|
|
|
+3 HttpClientBuddy.java
|
|
|
+
|
|
|
+针对Post请求的修改:
|
|
|
+ ◆ 之前Post为XML写入内容,现在改为标准post方法:key-value
|
|
|
+ ◆
|
|
|
+ 新增的函数:com.trs.web2frame.httpclient.HttpClientBuddy.doPost(Strin
|
|
|
+ g, Map<String, Object>)
|
|
|
+ ◆
|
|
|
+ 解析请求结果如果未302转发状态,判断可能是IDS对于DataExchange接口未做忽
|
|
|
+ 略,提示修改
|