java - 如何以编程方式更新 Alfresco 中的链接?

标签 java alfresco

我需要以编程方式为文件夹中的所有文档创建链接。 我成功创建了链接,我的文件链接节点看起来类似于以下内容:

 linkNode = nodeService.createNode(
   linkFolderNode, 
   ContentModel.ASSOC_CONTAINS,
   QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, display_Name),
   ApplicationModel.TYPE_FILELINK,
   props
 ).getChildRef();

这里的display_Name是指显示的文件名。

但是,如果您更新原始文件的名称,它会生成另一个指向更新文件的链接。是否可以避免此问题并仅维护给定文件的单个链接?

最佳答案

display_Name here refers to the file name displayed.

display_Name 只是链接的名称,可能与链接对象名称不同。

NodeService.createNode()返回ChildAssociationRef类,表示两个节点之间的子关系(parentchild - 创建的 link)。 ChildAssociationRef.getChildRef()返回创建的链接 NodeRef ,例如:workspace://SpacesStore/8dc27c51-cf23-4262-9431-f154edc913d0 (NodeRef.toString())。如果更改链接节点的名称,其 NodeRef 将不会更改。

尝试这个实现:

public NodeRef createLink(NodeRef parentRef, NodeRef toLinkRef, 
                          boolean isDocument, String linkName){

    linkName = QName.createValidLocalName(linkName);
    QName linkQName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, linkName);

    Map<QName, Serializable> props = new HashMap<QName, Serializable>();
    props.put(ContentModel.PROP_NAME, linkName);
    props.put(ContentModel.PROP_LINK_DESTINATION, toLinkRef);

    final NodeRef linkRef = nodeService.createNode(
        parentRef,
        ContentModel.ASSOC_CONTAINS,
        linkQName,
        isDocument ? ApplicationModel.TYPE_FILELINK : ApplicationModel.TYPE_FOLDERLINK,
        props
    ).getChildRef();
    return linkRef;
}

您可以使用documentLinkService.createDocumentLink(toLinkRef,parentRef)同样,只需注入(inject)它:

 <property name="documentLinkService" ref="DocumentLinkService" />

关于java - 如何以编程方式更新 Alfresco 中的链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40311383/

相关文章:

java - 从 alfresco 存储库加载 FTL 模板文件

alfresco - cm :workingCopyOwner and cm:lockOwner 之间的差异

rest - 访问 Alfresco REST API

java - 附加到 JComboBox 的 ItemListener 的问题

java - 获取文件(401 未经授权)- Alfresco

apache - Apache Web 服务器和 Apache Tomcat 环境中的虚拟主机

java - SwingX JXTreeTable 中的自定义树单元格编辑

java - GSON 可以使用 LinkedList 作为 java.util.List 接口(interface)的默认反序列化吗?

java - 将接口(interface)列表转换为具体类型列表

java - 如何运行 servlet 程序?