第三方系统可以使用平台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);//设置后可以防止导出后的文件将“<”和“>”改成“&lt”和“&gt”
    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();
        }

results matching ""

    No results matching ""