1
var nodeRef = "workspace://SpacesStore/2112480f-f0e8-461b-9564-78e7225f177c";

try {

var currNode = companyhome.findNode(nodeRef);
getNodeList(currNode);
removeNode(currNode);
}

catch(err) {
logger.log("Exception: " + err.message );
}


function removeNode(node) { 
node.remove();
logger.log(node.displayPath + "/" + node.name + " is deleted");
return true;

                    }

问题是节点没有被删除并且 logger.log 没有记录任何内容......

我使用此链接作为参考http://www.zeenor.com/it/cms/alfresco/380-delete-nodes-documents-in-alfresco-repository-using-javascript-api.html

任何支持表示赞赏...

4

2 回答 2

1

您复制的代码不正确:)。

首先你在做 getNodeList(currNode); & 然后 removeNode(currNode);

如果我查看 getNodeList 链接中的代码:

//  List all the nodes under folder
function getNodeList(currNode) {    

    //  Check whether node is document
    if(currNode.isDocument) return removeNode(currNode);

    //  Check whether node is folder
    if (currNode.isContainer) {

        var nodes = currNode.children;
        for (var i=0; i<nodes.length; i++) {            

            if(nodes[i].isDocument) removeNode(nodes[i]);           
            else if (nodes[i].isContainer) getNodeList(nodes[i]);

        }// end for
    }// end if

    return true;
}

然后它已经在那里做了一个 removeNode() ,在你的代码中删除它之后,你再次删除它。

因此,或者删除主代码中的 getNodeList() 或 removeNode() 。例如:

var nodeRef = "workspace://SpacesStore/2112480f-f0e8-461b-9564-78e7225f177c";

try {

var currNode = companyhome.findNode(nodeRef);
//getNodeList(currNode);
removeNode(currNode);
}

catch(err) {
logger.log("Exception: " + err.message );
}

function removeNode(node) { 
logger.log(node.displayPath + "/" + node.name + " is deleted");
node.remove();
return true;
}

顺便说一句,首先删除一个节点然后将值打印到 logger.log 是一个不好的例子。因此,首先打印它们或捕获布尔值(如果已删除),然后将其打印如下:

function removeNode(node) { 
    if(node.remove())
       logger.log(node.displayPath + "/" + node.name + " is deleted");
    else
       logger.log(node.displayPath + "/" + node.name + " is NOT deleted");
    return true;
    }
于 2013-08-06T23:33:56.053 回答
0

还有一种 OOTB 方式/webscript 可以在 alfresco 中删除节点:

Http方法:删除

http://localhost:8080/alfresco/s/api/archive/workspace/SpacesStore/ {NODEREF}

这将从实际的工作空间空间存储中删除内容。

如果要清除已删除的内容(已删除的节点位于存档空间存储中);使用这个网址:

http://localhost:8080/alfresco/s/api/archive/archive/SpacesStore/ {NODEREF_OF_FILE_FROM_ARCHIVESTORE}

于 2018-03-15T08:07:27.577 回答