向锁定节点添加新的必需方面

时间:2015-04-28 13:44:17

标签: javascript alfresco

场合

  1. 某个节点被锁定。
  2. 对模型的更改引入了新的强制性方面cm:taggable),锁定的节点没有。
  3. 问题

    无法使用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?

1 个答案:

答案 0 :(得分:2)

使用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);

现在,仍然锁定的节点具有必需的方面。它现在可以在没有任何完整性问题的情况下解锁。