需要有关 Filenet Enterprise Records 的帮助

Need help on Filenet Enterprise Records

我是 Filenet 的新手。我有一个要求,我需要提取特定文件夹中每个 documents/records 的元数据。然后我需要将该元数据导出到 XML。首先,我需要检查是否有任何与该文件夹关联的文档,然后我需要为 ex 执行此步骤:Folder1 有 4 个文件,即 File1、File2、File3 和 File4。现在我需要将所有这些文件的元数据(例如:createdBy、createdDate 等)提取为 xml。我知道我可以通过查询来获取元数据,但不能准确获取我如何获取文件夹中 documents/records 的计数并迭代以获取元数据。我需要使用 Java.

来完成这些事情

立即help/inputs非常感谢。

谢谢, 马克

您最好的选择是查询文件夹中的所有文档,然后迭代它们,提取元数据,然后以您认为最好的方式构建您的 xml。

您可以找到显示如何通过 API 使用查询的代码示例 here. Query building syntax can be found here(请特别查看 文件夹运算符 部分)。

现在您已经有了文档,只需对它们进行迭代,检索 属性 集合,获取各个属性,并使用适当的方法(getStringValue、getInt32Value 等)读取值

注意: 如果您希望查询仅包含当前版本而不考虑旧版本,请将此子句添加到您的查询中:([IsCurrentVersion] =真)

总而言之,使用样板代码,您应该拥有如下内容: (从旧代码中复制粘贴的部分,不能保证立即工作)

    // Set connection parameters; usually loaded from a properties file.
    String uri = "http://server:port/wsi/FNCEWS40MTOM/";
    String username = "username";
    String password = "password";

    // Make connection.
    Connection conn = Factory.Connection.getConnection(uri);
    Subject subject = UserContext.createSubject(conn, username, password, null);
    UserContext.get().pushSubject(subject);

    try
    {
        // Get default domain.
        Domain domain = Factory.Domain.fetchInstance(conn, null, null);
        System.out.println("Domain: " + domain.get_Name());

        // Get object stores for domain.
        ObjectStore os = Factory.ObjectStore.fetchInstance(domain, "OS_Name", null);

        // Build the query you want to use here
        // Add the attributes you want, the document class you're interested in, etc.
        String sqlstr = "SELECT [This], [createdBy], [createdDate] FROM [docClass] WHERE ([IsCurrentVersion] = TRUE) AND Document.This INFOLDER '/f1/f2'";

        SearchSQL sql = new SearchSQL(sqlstr)
        SearchScope scope = new SearchScope(os);
        IndependentObjectSet docs = scope.fetchObjects(sql, 1000, null, true);
        // Get the page iterator
        PageIterator p = docs.pageIterator();

        // Loop through each page
        while(p.nextPage())
        {
            // Loop through each item in the page
            for(Object objct : p.getCurrentPage())
            {
                // Get the document object and write Document Title
                Document doc = (Document)objct;
                Properties props = doc.getProperties();

                String creator = props.getStringValue("createdBy");
                Date creationDate = props.getDateTimeValue("creationDate");

                // Now that you have the values, do what you want with them :)
            }
        }
    }