向锁定节点添加新的强制方面

Add new mandatory aspect to locked node

情况

  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();

也不可能。

问题

如何解决第 22 条军规?

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

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