无法使用 Alfresco 的 Javascript API 将节点移动到它自己的树

Can't move node to its own tree using Alfresco's Javascript API

我刚刚使用 Javascript API 编写了一个脚本,因此我可以将其用作 Space 的规则。每当文档进入 space 时,它基本上会检查文档的名称以获取它将存储在其中的父目录(文档的名称包含父文件夹的名称),然后创建未来的父目录(如果不存在),最后将文档移入其中。

我在最后一步遇到问题。每当我尝试将文档移动到最近创建的文件夹中时,我都会收到以下错误:

Node has been pasted into its own tree.

到目前为止,这是我的代码,我认为它几乎是自动描述的:

var fileName= document.properties.name;
var fields = fileName.split('.');

var parentName= fields[0];
var newNode=space.childByNamePath(parentName);

if (newNode === null) { //create folder and move document into it

  newNode=space.createFolder(parentName);  //works
  document.move(newNode); //I'm getting the error here

}else{ //folder already exists, just move document into it

    document.move(newNode); //here too

}

如果我注释掉 document.move(newNode); 行,其他一切正常。父文件夹已成功创建,但显然文档一直存储在当前 space 的根目录下,这不是我需要的。事实上,我需要将它移动到实际文件夹中。

我是不是做错了什么?任何帮助将非常感激。谢谢

更新: 事实上,我发现 move()if 中调用 范围如果我注释掉 else 范围内的另一个调用,它就会工作。所以错误是在 else move() 调用时抛出的。另外,如果我删除 else 子句并在 [=33= 之后只放置一个 move() 调用]if 范围,它也会产生相同的错误。

您应该 运行 您的规则作为后台进程,它会解决问题("Run rule in background" 选项)。