【问题标题】:Add new mandatory aspect to locked node向锁定节点添加新的强制方面
【发布时间】:2026-01-09 16:30:01
【问题描述】:

情况

  1. 一个节点被锁定。
  2. 对模型的更改引入了一个新的强制方面 (cm:taggable),而锁定的节点没有。

问题

使用 JavaScript 控制台无法解锁节点。

var node = search.findNode(nodeRefString);
node.unlock();

这会引发错误:

org.alfresco.repo.node.integrity.IntegrityException: 03280783 Found 1 integrity violations:
Mandatory aspect not set: 
   Node: workspace://SpacesStore/84e053a2-4573-4542-ac17-0e6940b9b07c
   Type: {http://acme.com/model/acme/1.0}AcmeType
   Aspect: {http://www.alfresco.org/model/content/1.0}taggable

无法添加缺少的方面。这个

node.addAspect("cm:taggable");

抛出NodeLockedException。删除节点

node.remove();

也不可能。

问题

我该如何解决这个 Catch 22?

【问题讨论】:

    标签: javascript alfresco


    【解决方案1】:

    使用fme JavaScript console,我找到了解决问题的方法。可以在节点上禁用行为,包括检查被锁定节点的行为。

    在 JavaScript 控制台中,此代码执行我想要的操作:

    var node = search.findNode(nodeRef);
    var ctx = Packages.org.springframework.web.context.ContextLoader.getCurrentWebApplicationContext();
    var pbf = ctx.getBean("policyBehaviourFilter");
    pbf.disableBehaviour(nodeRef);
    node.addAspect("cm:taggable");
    pbf.enableBehaviour(nodeRef);
    

    现在仍然锁定的节点具有强制方面。它现在可以解锁,没有任何完整性问题。

    【讨论】: