【问题标题】:Renaming files in an Alfresco script在 Alfresco 脚本中重命名文件
【发布时间】:2012-07-25 18:05:29
【问题描述】:

我正在努力在 Alfresco 中编写脚本来重命名文件扩展名。

文件保存为filename.bin。我正在使用内容规则来说明文件名何时等于 *bin 重命名为 *pdf

我在脚本方面有点挣扎,希望能提供任何帮助。

我的脚本如下:

// change the name of this document
document.properties.name = document.properties.name+".pdf";
// add a new property string
document.properties["cm:locale"] = mylocalenode;
// save the property modifications
document.save();

但似乎没有把我带到任何地方。

【问题讨论】:

  • 请不要写“但似乎没有让我到任何地方”。那也不能让我们到任何地方:) ...如果有的话,你能显示一条错误消息吗?它似乎没有做任何事情?你检查过你的日志吗?

标签: javascript alfresco


【解决方案1】:

编写的脚本将获取一个名为“filename.bin”的文档并将其重命名为“filename.bin.pdf”。然后它将设置一个名为“cm:locale”的属性等于 mylocalenode 的值,这似乎是 在这个 sn-p 中未定义。我不知道您要使用 cm:locale 做什么,所以我将忽略它并为您提供一个脚本,该脚本将搜索名为 filename.bin 的文档并更改其名称。

如果您更愿意遍历文件夹中的子项,您应该能够查看 Alfresco JavaScript API 以了解如何修改下面的 sn-p 来做到这一点。

var results = search.luceneSearch("@cm\\:name:filename.bin");
var doc = results[0]; // assumes there is only one result, which may not be what you want
var oldName = doc.properties.name;
var newName = oldName.replace('.bin', '.pdf');
doc.properties.name = newName;
doc.save();

【讨论】:

  • 你应该使用 doc.name = newName;因为它还更改了 Alfresco 中父级关系中内部使用的 childQNamePath(调用 FileFolderService.rename())。仅设置属性名称可能会导致行为不一致。这是 ScriptNode API 的一个奇怪的怪癖。
【解决方案2】:

在此添加更多内容,因为您使用的是content-rule。无需使用lucene/solr服务搜索文档。我们可以直接访问文档对象,它是指正在执行您的规则的文档。

所以代码如下所示。

var oldName = document.properties.name;
var newName = oldName.replace('.bin', '.pdf');
document.properties.name = newName;
document.save();

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2017-10-28
    • 2014-10-08
    • 1970-01-01
    相关资源
    最近更新 更多