需要有关 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 :)
}
}
}
我是 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 :)
}
}
}