使用Alfresco的Javascript API

时间:2017-08-04 09:33:19

标签: javascript alfresco

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

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

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); 行,其他一切工作正常。父文件夹已成功创建,但显然文档保存在当前空间的根目录下,这不是我需要的。实际上我需要将它移到实际的文件夹中。

我做错了吗?任何帮助将非常感激。感谢。

更新:确实我发现 move()调用 if 范围内的工作是否有效我在 else 范围内注释掉了另一个调用。因此, else move()调用会引发错误。此外,如果我删除 else 子句并在 if 范围后只调用一次 move()调用,它也会产生同样的错误。

1 个答案:

答案 0 :(得分:3)

您应该将规则作为后台进程运行,它将解决问题(“在后台运行规则”选项)。