Javascript Alfresco使用js将类别应用于文档

Javascript Alfresco使用js将类别应用于文档,javascript,alfresco,Javascript,Alfresco,如何使用javascript将类别应用于Alfresco中的文档 像这样尝试: document.properties["cm:categories"] = "testCat"; 更新: 这样,我可以得到“根类别”,但不能得到“子类别”: 这不起作用: document. properties["cm:categories"] = rootCats[3][1]; 首先确保文档具有可分类的方面(即具有cm:generalClassifiable方面) 然后查找要添加的类别,即: 更新:查找特定

如何使用javascript将类别应用于Alfresco中的文档

像这样尝试:

document.properties["cm:categories"] = "testCat";
更新:

这样,我可以得到“根类别”,但不能得到“子类别”:

这不起作用:

document. properties["cm:categories"] = rootCats[3][1];

首先确保文档具有可分类的方面(即具有cm:generalClassifiable方面)

然后查找要添加的类别,即:

更新:查找特定名称的类别类型节点的示例查询:

像这样搜索您的类别例如,您可以添加一个PATH子句,以确保您的类别处于正确的层次结构中

var nodes=var categories=search.luceneSearch('+TYPE:http://www.alfresco.org/model/content/1.0}类别“+@name:testCat”)

然后从返回的数组中获取元素

获取节点的现有类别:

categories=document.properties[“cm:categories”]

将新类别推送到阵列上:

categories.push(categoryToAdd)

将其分配给文档:

document.properties[“cm:categories”]=类别


document.save()

首先确保文档具有可分类方面(即具有cm:generalClassifiable方面)

然后查找要添加的类别,即:

更新:查找特定名称的类别类型节点的示例查询:

像这样搜索您的类别例如,您可以添加一个PATH子句,以确保您的类别处于正确的层次结构中

var nodes=var categories=search.luceneSearch('+TYPE:http://www.alfresco.org/model/content/1.0}类别“+@name:testCat”)

然后从返回的数组中获取元素

获取节点的现有类别:

categories=document.properties[“cm:categories”]

将新类别推送到阵列上:

categories.push(categoryToAdd)

将其分配给文档:

document.properties[“cm:categories”]=类别


document.save()

我发现了它,如果有人需要它,这就是可以做到的方法

获取所有根类别[音频、视频、图像,…]

var rootCats =  classification.getRootCategories("cm:generalclassifiable");
从所需根类别中获取子类别->从“视频”中获取子类别[恐怖、喜剧等]

var singleCat = rootCats[1].subCategories; 
将类别应用于文档->将“恐怖”应用于文档

doc. properties["cm:categories"] = singleCat[0]; //app
省省吧

doc.save();

我发现了,如果有人需要它,这是可以做到的

获取所有根类别[音频、视频、图像,…]

var rootCats =  classification.getRootCategories("cm:generalclassifiable");
从所需根类别中获取子类别->从“视频”中获取子类别[恐怖、喜剧等]

var singleCat = rootCats[1].subCategories; 
将类别应用于文档->将“恐怖”应用于文档

doc. properties["cm:categories"] = singleCat[0]; //app
省省吧

doc.save();

我们有一个类似的要求,虽然与OP问题略有不同,但我们觉得它已经足够接近于保证包含在这里

我们偶尔需要批量应用类别。ie:收购新业务,迁移所有文档,添加类别以匹配现有内容

在界面中向大量文档添加类别是一件乏味的事情。它需要启用方面(可分类),然后编辑属性以选择所需的类别。每一份文件都是单独的。更糟糕的是,添加特性对于共享中的explorer视图中的文档不可用,因此需要输入预览。对于大型文档,进入预览本身会延迟几秒钟

因此,我们构建了一个简单的脚本,将父文件夹的类别应用于它下面的所有内容。然后,我们只需要设置该文件夹的类别,并开始在其中移动内容(即:将内容移入以获得类别,然后移回其所在位置,但现在都应用了方面和类别)

实际上,目前我们有两个:

  • 第一个文件夹/规则覆盖对象拥有的任何类别,并且 将其替换为父文件夹中的文件夹-我们将此文件夹命名为BulkCategory
  • 第二个是累积的,所以它只保留现有的类别 添加父文件夹中的内容,我们将其命名为AccumerateCategories
  • 我们将创建第三个,以便在时间允许的情况下有选择地删除它们

    几点注意:

    • 实际上并不需要添加可分类方面 手动或在代码中,它“只是工作”——至少在5.1中是这样
    • 这可能不是最好的方法
    • 累积已应用的类别似乎不会导致任何问题,它们似乎会自动合并/合并
    要使用这些脚本,请创建2个文件夹,并对每个文件夹应用规则以运行关联的脚本

    第一个脚本将对象的类别完全替换为父文件夹的类别,非常简单[将@name和SITE设置为与您的安装相匹配]:

    var inheritFromDir = search.luceneSearch('TYPE:"http://www.alfresco.org/model/content/1.0}folder" +@name:BulkCategorise +SITE:YOUR_SITE_NAME');
    // We need to deref the array of noderefs result using inheritFromDir[0]
    document.properties["cm:categories"] = inheritFromDir[0].properties["cm:categories"];
    document.save();
    
    第二个脚本有点复杂-我们留下了日志代码(注释掉)作为示例,以了解如何做到这一点,因为它也花了一些时间(这是一个非常有用的功能)。如前所述,更新第一行上的@name和SITE以匹配您的系统

    var inheritFromDir = search.luceneSearch('TYPE:"http://www.alfresco.org/model/content/1.0}folder" +@name:AccumulateCategories +SITE:YOUR_SITE_NAME');
    // We need to deref the single array result using inheritFromDir[0] to get categories from topmost parent (folder) node
    var parentCatArray = inheritFromDir[0].properties["cm:categories"];
    //and any existing categories of the doc, or null if none exist
    var thisCatArray = document.properties["cm:categories"];
    var thisLen = 0;
    
    if (thisCatArray != null) {
       thisLen = thisCatArray.length;
    } else {
       thisCatArray = new Array();
    }
    
    // Some logging to find out what  is going on...
    //var logFile = space.childByNamePath("log.txt");
    
    // If the log file does not already exist, create it in current folder.
    //if (logFile == null) {
    //    logFile = space.createFile("log.txt");
    //}
    
    //if (logFile != null) {
    //    logFile.content += new Date().toGMTString() + "\tRun started. Length of existing array is: " + thisLen + "\r\n";
    //    logFile.content += new Date().toGMTString() + "\tFound parent node categories:\r\n";
          for (var i=0; i < parentCatArray.length; i++)
          {
             thisCatArray[thisLen]=parentCatArray[i];
             thisLen += 1;
          }
    //}
    
    // Push the new array of categories to the document
    thisCatArray.push(document);
    // apply and save the doc
    document.properties["cm:categories"] = thisCatArray;
    document.save();
    
    var inheritFromDir=search.luceneSearch('TYPE:http://www.alfresco.org/model/content/1.0}文件夹“+@name:AccumerateCategories+站点:您的站点名称”);
    //我们需要使用inheritFromDir[0]取消对单个数组结果的排序,以从最顶层的父节点(文件夹)获取类别
    var parentCatArray=inheritFromDir[0]。属性[“cm:categories”];
    //和文档的任何现有类别,如果不存在,则为空
    var thisCatArray=document.properties[“cm:categories”];
    var thisLen=0;
    if(thisCatArray!=null){
    thisLen=Thiscataray.length;
    }否则{
    thisCatArray=新数组();
    }
    //一些日志记录以了解正在发生的事情。。。
    //var logFile=space.childByNamePath(“log.txt”);
    //如果日志文件不存在,请在当前文件夹中创建它。
    //如果(日志文件==null){
    //日志文件=