第三方系统可以使用平台SDK进行二次开发,在文档中心的工具栏添加自定义菜单导出文档。
1. 概述
调用SDK本地接口可以实现添加自定义菜单并将选择的文档导出。主要可以分三步实现:添加菜单、接收id值、导出xml文档。
2. 接口说明
根据文档中文件夹ID(doc_resources表ID),获取文件夹下文档列表JSON信息(json信息中的fr_id属性对应文档doc_resources表ID)
使用接口:
http请求方式:POST
http://ip:port/seeyon/rest/docs/search
参数DEMO:
Map newDep = new HashMap() {
{
put("archiveID", "144411942544885803"); //archiveID:文档ID(必填):doc_resources表ID
put("searchType", "");//searchType:查询类型(非必填)
put("propertyName", "");//propertyName:查询参数名称(非必填)
put("simple", "");//simple:是否简单查询(非必填)
put("value1", "");//value1:查询值(非必填)
put("pageNo", "1");//页数
put("pageSize", "20");//每页条数
}
CTPRestClient client = RestResource.getInstance().resouresClent();
String result = client.post("docs/search",res, String.class);
返回值:
{
"total" : 1,
"data" : [ {
"fr_size" : 0,
"fr_mine_type" : 31,
"is_folder" : true,
"fr_type" : 31,
"fr_id" : "4909783689613689706", //doc_resources表ID
"fr_name" : "文档统计信息",
"next_Doc_Num" : "1"
}],
"pageNo" : 1,
"pageSize" : 20
}
根据文档ID(doc_resources表ID)获取稳定ArcFolderItem对象信息。
使用接口:DocumentFactory
方法:exportArchive
参数:
参数 | 数据类型 | 说明 |
---|---|---|
id | Long | 要导出文档在A8中的ID |
返回值:ArcFolderItem
3. 实现过程
3.1. 添加自定义菜单
详细步骤请参考Portal集成-添加自定义菜单.
3.2. 第三方系统接收平台传递的id
因为rightNew页面已经提供点击菜单传递id功能(注:V6.1新增了获取文档ID的接口,也可以通过上面【http://ip:port/seeyon/rest/docs/search】接口来获取ID),所以这里我们只需要新建一个jsp页面接收id就行。根据前面在docAddinMenu.xml文件中设定的url值指定的路径新建一个docFlie.jsp文件。
由于点击菜单以后是将选中的文档id以逗号分隔发送到指定的页面,所以这里我们可以使用request.getParameter取得
String thirdMenuIds=request.getParameter("thirdMenuIds");
String thirdIds[]=thirdMenuIds.split(",");
3.3. 导出指定文档
在docFile.jsp中添加
<%@page import=”com.seeyon.v3x.services.document.DocumentFactory,com.seeyon.v3x.services.document.impl.DocumentManager”%>
在docFlie.jsp文件中添加逻辑代码,在这里我们采用java.io.StringWriter接受导出的文件用saveToPropertyList().saveXMLToStream(StringWritersw)方法。
if (thirdMenuIds != null && thirdMenuIds.length() > 0) {
String thirdIds[] = thirdMenuIds.split(",");
try {
DocumentFactory factory = DocumentManager.getInstance();
for (int i = 0; i < thirdIds.length; i++) {
ArcFolderItem doc = factory.exportArchive(Long
.valueOf(thirdIds[i]));
StringWriter sw = new StringWriter();
doc.saveToPropertyList().saveXMLToStream(sw);
// 将导出的XML调用第三方系统的接口,导入到第三方档案系统
}
} catch (Exception e) {
System.out.println("出异常了");
}
}
将导出的xml文件输出到指定的外部文件中,用org.dom4j.io.XMLWriter写到文件中,也可用其他方式写文件。在import中增加
org.dom4j.io.*,
在for循环前面添加代码:
XMLWriter output=new XMLWriter(new FileWriter("d:/aaa.xml"));
output.setEscapeText(false);//设置后可以防止导出后的文件将“<”和“>”改成“<”和“>”
String version="<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>";
output.write(version)
for循环中添加
output.close();
添加后的效果如下:
try {
com.seeyon.v3x.services.document.DocumentFactory factory =java com.seeyon.v3x.services.document.impl.DocumentManager
.getInstance();
XMLWriter output = new XMLWriter(new FileWriter("d:/aaa.xml"));
output.setEscapeText(false);
String version = "<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>";
output.write(version);
for (int i = 0; i < thirdIds.length; i++) {
ArcFolderItem doc = factory.exportArchive(Long
.valueOf(thirdIds[i]));
StringWriter sw = new StringWriter();
doc.saveToPropertyList().saveXMLToStream(sw);
output.write(sw.toString());
}
output.close();
} catch (Exception e) {
e.printStackTrace();
}