我正在使用 Spring 3.1 应用程序,我需要在 Alfresco 的存储库中找到一个字符串模板文档。我已经可以在露天使用 OpenCMIS 创建文件,但我不知道如何找到模板,所以如果有人知道如何做或给我一个例子,请告诉我,提前谢谢!
问问题
556 次
1 回答
1
您可以使用许多选项。首先,您需要有一个唯一标识您的文档的标准。下面我将展示一些,希望您的案例属于其中之一,或者它们会激励您找到正确的解决方案。以下使用伪代码,请查看使用 Java 客户端 API 的OpenCMIS 开发指南。
凭身份证
通过 CMIS 创建文档后,您将获得它的唯一 ID,您可以将其存储在应用程序中以供以后检索。
Map<String, Object> templateProperties = createDocumentProperties();
Folder folder = getTemplatesFolder();
ObjectId templateId = createTemplateIn(folder);
storeTemplateId(templateId.getId(), templateProperties); // persist the ID
...
// later on
...
String id = getTemplateId(); // retrieve the ID
Session session = openCMISSession();
Document template = (Document)session.getObject(id);
按路径
与前面的示例类似,您必须记下文档的存储位置而不是其 ID,或者有一种手动构建路径的方法。
String path = getTemplatePath(); // either recover it from DB or construct a path
Document template = (Document)session.getObjectByPath(path);
按物业价值
假设您可以在模板 Document 上使用特定的元数据字段,以便之后轻松检索它(例如,您为您的用例创建了一些特定的Alfresco 元数据模型)。
String meta = TemplateProperties.TEMPLATE_ID; // e.g. my:templateId
String type = TemplateProperties.TEMPLATE_TYPE; // e.g. my:template
String templateMeta = "TEMPLATE1";
Map<String, Object> templateProperties = createDocumentProperties();
templateProperties.put(meta, templateMeta);
templateProperties.put(PropertyIds.OBJECT_TYPE_ID, type);
createTemplate(templateProperties);
...
// later on
...
String type = TemplateProperties.TEMPLATE_TYPE; // e.g. my:template
String meta = TemplateProperties.TEMPLATE_ID;
String tplId = "TEMPLATE1";
String query = String.format("SELECT * FROM % WHERE % = '%'", type, meta, tplId);
ItemIterable<QueryResult> i = session.query(query, false);
QueryResult qr = i.iterator().next(); // let's assume we have one single match
String templateId = qr.getPropertyByQueryName("cmis:objectId").getFirstValue()
Document template = (Document)session.getObject(templateId);
按查询
前面的方法实际上并不依赖于按属性名称进行搜索,并且可以轻松扩展以使用任何类型的标识您的模板的查询。查看有关其CMIS 查询语言实现详细信息的 Alfresco 页面,以了解更多查询存储库的方法。
于 2012-10-07T07:36:13.363 回答