我想从alfresco存储库中检索所有文档内容。所以任何人都可以帮助我,我如何使用CMIS遍历存储库。虽然遍历我也想根据其类型分离文档。
此时我可以通过指定路径获取任何一个文档。但现在我的要求是遍历整个存储库并获取所有文档。
任何人都可以帮助我。 还建议我" 遍历所有文件夹,然后按特定类型分开 "将是一个好的方法OR" 使用CMIS查询搜索特定类型的文档 "将是一个很好的方法。
先谢谢。
答案 0 :(得分:4)
Yagami的答案是一个良好的开端,但还有一些事情需要补充。
首先,除非您确实需要存储库具有的每个属性,否则不要执行“select *”。这是一个潜在的性能问题。只询问你需要什么。
其次,您的一条评论涉及按类型细分结果。在CMIS中,类型有点像SQL表。因此,在您的情况下,您将使用from子句中的三种自定义类型作为不同类型执行三种不同的查询:
select * from test:mainContract;
select * from test:subContract;
select * from test:royaltyStatement;
最后,除非您的存储库中只有少量文档,否则您几乎肯定会想要使用分页结果集。否则,您将只返回服务器配置为返回的最大结果数。这可能不足以获得整套。
有关显示分页结果集的示例,请参阅Apache CMIS: Paging query result
答案 1 :(得分:2)
要执行此类操作(获取所有文档内容),您需要按照以下步骤操作
第1步:创建保护程序类
我对服务器类的意思是,它将包含两个信息(对我而言,它是最有价值的信息),其中两个最容易变化的字符
1 - 文件ID
2 - 文档名称
第2步:获取所有文档
要获取所有文档,我们必须使用查询
String query;
query = "SELECT * FROM cmis:document ";
您将获得存储库中的所有文档。
您可以添加一些条件,使您的研究更容易,如下例所示:
query = "SELECT * FROM cmis:document WHERE IN_FOLDER('" + folderId + "')";
在此示例中,您将获得特定文件夹的文档。
ItemIterable<QueryResult> resultList = session.query(query, false);
最后
for (QueryResult qr : resultList) {
String idDocument = qr.getPropertyByQueryName("cmis:objectId").getFirstValue().toString();
String name = qr.getPropertyByQueryName("cmis:name").getFirstValue().toString();
Document doc = (Document) session.getObject(idDocument);// this is how you can get document with add that's mean no need of path
}
您可以在CMIS query中详细了解有关查询的信息。
第3步:每次在保护程序类中保存
我认为很明显,每次使用循环(在步骤2中)都需要在保存类中出现。
我希望能帮助你。