如何从 FileNet 数据库中提取文档

Posted

技术标签:

【中文标题】如何从 FileNet 数据库中提取文档【英文标题】:How to extract documents from a FileNet database 【发布时间】:2015-07-15 23:02:42 【问题描述】:

我正在从事一个需要从 FileNet 系统中提取文档的项目。我需要提取由其 Object_ID 标识的文档并将它们存储在文件中。该系统在 Windows 下运行,并使用 Oracle 11G 数据库。 问题是:有没有办法使用直接数据库访问和 SQL 来检索文档内容?我可以编写一个 SQL 查询,通过将其 Object_ID 作为参数传递来检索文档的二进制内容。 谢谢

【问题讨论】:

【参考方案1】:

内容不必存储在数据库中。它可以作为 BLOB 存储,但也可以存储在 FileStore、文件或固定内容区域中。如果它们存储在数据库中,从技术上讲,您应该能够通过 GUID 查询来检索它们。

但是我建议使用 Java API 到 retrieve content。这将让您管理所有情况(各种内容区域,多内容元素......)。我不知道您打算导出多少文档,但可以使用 API(批处理、多线程...)对其进行显着优化。

【讨论】:

谢谢纪尧姆。我试图获取 Java API 文件和 .Net API 文件但没有成功。能不能给点建议? 这里是needed dependencies 的列表。您可以在以下位置找到它们: - Jace.jar/log4j: /ContentEngine/lib - xml jars: /ContentEngine/cdapi - 您并不需要 p8cel10n 默认 将是 /opt/IBM /FileNet 在 Linux 平台上。 您还可以使用Client Download API 自动使您的客户端保持最新状态【参考方案2】:

如果您愿意,我可以帮助您完成这项任务,

FileNet 的内容通常存储在 Windows 或 Linux 甚至 AIX 中名为 /cestore 的目录中。

由于目录中文件数量的某些限制,尤其是在基于 Unix 的系统中,它们将文件存储在长树中,例如 fn01/fn03/fn04

所以你要做的是

通常文件名的格式为 DocumentId

您将通过 Apache IO commons 之类的库扫描 /cestore 下的所有文件,或者通过 python 脚本更好地将它们存储在 Map Contains 中,然后您将能够获取所有文档的任何文档路径

【讨论】:

【参考方案3】:

回答一个老问题。但认为它可以作为对某人的快速帮助。对于这里给出的情况,恕我直言,FileNet Queries 是最好的解决方案。这就是你的做法:

        Domain domain = Factory.Domain.fetchInstance(conn, null, null);
        ObjectStore objStore = Factory.ObjectStore.fetchInstance(domain, osName, null);
        SearchScope search = new SearchScope(objStore);

        // your doc-class and identifier (index) goes here
        String sql1 = "Select * from DocClassName where someIndex=abc456";
        SearchSQL searchSQL = new SearchSQL(sql1);
        DocumentSet documents = (DocumentSet) search.fetchObjects(searchSQL, Integer.valueOf("20"), null, Boolean.valueOf(true));

        // go nuts on doc
        Document doc;

【讨论】:

【参考方案4】:

也许这会对您有所帮助: 有一个工具:FileNet Enterprise Manager 或 FEM(如果您愿意),您可以在其中导出文档(二进制文件)和元数据。 通过这个工具,您可以在对象存储中进行 SQL 搜索,或使用该工具构建搜索。然后您可以选择结果并将它们导出到本地目录。作为这些任务的结果,您将拥有一个包含二进制文件和一些 XML 文件的目录。这些 XML 文件将托管您数据库中的所有元数据,例如 ID 和其他内容。 希望这对您有所帮助。

【讨论】:

以上是关于如何从 FileNet 数据库中提取文档的主要内容,如果未能解决你的问题,请参考以下文章

从文档中删除 SID - FileNet

FileNet:FileNet 文件夹中的文档总数

Filenet - 将值从工作项复制到文档属性

在 Filenet 中获取和更新工作流数据

IBM Filenet 如何与 Angular 应用程序集成

如何使用 FileNet API 获取对象存储的文档计数