【问题标题】:Setting properties (title, description) for document in Alfresco programmatically以编程方式在 Alfresco 中设置文档的属性(标题、描述)
【发布时间】:2013-03-25 07:18:06
【问题描述】:

我在将元数据添加到我在露天以编程方式创建的文档时遇到了一些麻烦。

我为此使用 dotCMIS 库。

我有以下代码:

IDictionary<string, object> properties = new Dictionary<string, object>();
properties[PropertyIds.Name] = "title.doc";
properties[PropertyIds.ObjectTypeId] = "cmis:document";

ContentStream contentStream = new ContentStream();
contentStream.FileName = "title.doc";
contentStream.MimeType = "application/msword";
contentStream.Length = bytes.Length;
contentStream.Stream = new MemoryStream(bytes);
IDocument doc = folder.CreateDocument(properties, contentStream, null);

所以我还想设置例如标题和描述以及关键字、引用等...但我不知道如何。

我尝试过类似的方法:

properties["cm:title"] = "some title";

properties["cmis:title"] = "some title";

但还是没有成功,怎么办?

注意:我也尝试从文档中返回所有属性,但那些不在那里,那么我该如何设置它们呢?

我有这个:

    string queryGetDoc = "SELECT * FROM cmis:document WHERE cmis:name='document.doc'";
    IItemEnumerable<IQueryResult> docResults = session.Query(queryGetDoc, false);
    IQueryResult docHit = docResults.FirstOrDefault();
    string docId = docHit["cmis:objectId"].FirstValue.ToString();

      IDocument document = session.GetObject(docId) as IDocument;

        IList<IProperty> listOfProperties = document.Properties;

        foreach(IProperty p in listOfProperties)
        {
            Console.WriteLine(p.QueryName); 
        }

我收到了这个:

cmis:isLatestMajorVersion
cmis:contentStreamLength
cmis:contentStreamId
cmis:versionSeriesCheckedOutBy
cmis:objectTypeId
cmis:versionSeriesCheckedOutId
cmis:name
cmis:contentStreamMimeType
cmis:versionSeriesId
cmis:creationDate
cmis:changeToken
cmis:versionLabel
cmis:isLatestVersion
cmis:isVersionSeriesCheckedOut
cmis:lastModifiedBy
cmis:createdBy
cmis:checkinComment
cmis:objectId
cmis:isImmutable
cmis:isMajorVersion
cmis:baseTypeId
cmis:contentStreamFileName
cmis:lastModificationDate

是不是说明文档上不存在其他的props?虽然在图形用户界面中我可以设置标题和描述,以及关键字和参考...

这是怎么回事,有人知道吗?

【问题讨论】:

  • 您是否尝试过使用 Alfresco 在文档上设置标题和描述,然后通过 CMIS 进行查询?您所做的查询只会返回已设置的属性,它不会告诉您可以设置的属性
  • 是的,我做了,首先我设置了文档的标题和描述,然后才尝试获取所有可能的属性,但它们不在。虽然文档处于发布状态并且可用,但确实没有知道它可能是什么,也许这些属性没有暴露在 alfresco protal 本身之外:(
  • 他们应该是——如果他们不是,各种各样的东西都会坏掉!您确定查询的是正确节点的属性吗?
  • 正确的节点是什么意思?我只是说document.Properties,我不明白你说的node是什么意思?
  • 第 1 步 - 在 Alfresco 中创建一个文档。步骤#2 - 设置标题和描述。第 3 步 - 通过 CMIS 取回 那个节点 上的所有属性。如果您查询不同的节点,您将看不到正确的属性...

标签: c# alfresco cmis dotcmis


【解决方案1】:

如果您是 CMIS 新手,并且想轻松检查您的存储库包含哪些属性/选项/等,学习和调查的最佳方法是使用 Apache Chemistry CMIS Workbench。它是一个独立的 Java 工具,用于查询和浏览您的存储库

首先,如 cmets 中所述,在 Alfresco 中创建一个带有 Title 和 Description 集的测试文件:

接下来,启动Apache Chemistry CMIS Workbench,连接到您的存储库,浏览到有问题的节点,并查看标准属性:

最后,看看扩展,看看 Alfresco 的特定部分(例如标题和描述)是如何暴露的:

因此,您需要使用标题和说明作为扩展名,如Documented on the Alfresco Wiki。您可能还想查看Alfresco Extension for OpenCMIS,然后为.Net 做类似的事情

【讨论】:

  • 这是否意味着dotCMIS(.net版本)没有实现方面?因为我试图像在 opencmis 中那样做这些事情,但我总是得到一个错误,这个 cmis:description doesn't exits etc
  • dotCMIS 与扩展一起工作得很好(这就是 Alfresco Aspects 映射到 CMIS 的方式),没有像 Java 那样的帮助器。 cmis:description 不存在,没错,Alfresco 中的 cm:description 作为 Alfresco 命名空间中的扩展 cm:description 出现,如工作台所示
  • 是的,你在扩展中是对的,我看到有 cm:description
  • 所以基本上在 dotCMIS 中我必须以某种方式使用扩展才能正确设置它?我看到有类似 document.GetExtensions(...) 的东西,但我还不知道该怎么做...
  • 是的,我成功地成功检索了它们,但是如何设置它们,这是现在的问题:(
猜你喜欢
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
  • 2012-08-20
  • 2012-08-26
  • 1970-01-01
  • 2011-08-29
相关资源
最近更新 更多