浏览代码

增加DataExchange的配置

caohuigit 7 年之前
父节点
当前提交
5f7c703150
共有 1 个文件被更改,包括 826 次插入0 次删除
  1. 826 0
      拓尔思海云V8.0 DataExchange说明.doc

+ 826 - 0
拓尔思海云V8.0 DataExchange说明.doc

@@ -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>        |
+|               |                &nbsp; 国务院办公厅<BR>  |
+|               |                         &nbsp;二○|
+|               |○七年十一月七日");                                         |
+|               |// 摘要                                                    |
+|               |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接口未做忽
+       略,提示修改