如何通过 Alfresco Share 执行服务器端 JavaScript?

如何通过 Alfresco Share 执行服务器端 JavaScript?

我想执行一些服务器端 JavaScript(来操作存储库节点)。

我通过 Alfresco Share 拥有管理员访问权限,但没有 Alfresco Explorer 或 SSH 访问权限。

  • 最好的是一种控制台,我可以在其中输入命令,例如Javascript控制台但如果不使用 SSH 访问,则无法安装。我认为没有这样的事情,但也许有一些涉及规则的技巧?
  • 编写一次性的网络脚本听起来有些过度且不方便。

是否可以?
(Alfresco 5.0)

答案1

如果您无权访问存储库机器,我认为最简单的选择是数据字典 + 虚拟规则选项

首先,在本地机器上创建 javascript 代码。接下来,将其上传到数据字典中。选择存储库,然后选择数据字典,然后选择脚本,因此完整路径为Repository > Data Dictionary > Scripts。上传时,请确保将内容/mime 类型设置为Mimetype: Java Script,如果需要,请在编辑属性中更改它

现在,在某处创建一个虚拟文件夹。在该文件夹中,选择Manage Rules,创建一个新规则。将其设置为在...上运行Items are created or enter this folder并执行...的操作Execute Script,然后选择新上传的脚本作为要运行的脚本

最后,每次运行脚本时,请在文件夹中创建一个随机文件!

编辑:如果您的脚本有任何问题,那么这些问题只会记录在 repo 端,您将无法看到。因此,最好的办法可能是将整个脚本包装在一个巨大的 try/catch 块中,并让它将异常记录到另一个文件中,即非规则文件夹中!

答案2

我认为一次性 Web 脚本比规则方法更好。这可以通过两个文件部署在数据字典/Web 脚本扩展中:

描述符(例如,output-data.get.desc.xml):

<webscript kind="org.alfresco.repository.content.stream">
    <shortname>Output metadata</shortname>
    <description>Output data on content files</description>
    <url>/output-data.txt</url>
    <format default="">extension</format>
    <family>Eric</family>
    <authentication>user</authentication>
    <transaction>required</transaction>
</webscript>

用 JavaScript 编写控制器,输出到存储库中的内容节点,并将内容节点作为最后一行放入 webscript 模型中,以便它可以传输到浏览器(“kind”属性的用途):

控制器(例如,output-data.get.js):

// just some text to output for demonstration purposes
var contentString = "Output";

// create a text document in company home
var outputDoc = companyhome.createNode('output-data.txt', 'cm:content');
outputDoc.content = contentString;
outputDoc.save();

//stream the document
model.contentNode = outputDoc;

快速“刷新 Web 脚本”(底部的按钮http://localhost:8080/alfresco/s/index),您的 webscript 现在可以轻松运行。您甚至可以更改 JavaScript 代码,而不必再次刷新 webscript。

可以像在其他答案中一样处理日志记录问题,通过将代码核心包装在 try/catch 中并将错误消息写入输出文件。

相关内容