Как выполнить серверный JavaScript через Alfresco Share?

Я хочу выполнить некоторый серверный JavaScript (чтобы управлять узлами репозитория).

У меня есть доступ администратора через Alfresco Share, но у меня нет ни Alfresco Explorer, ни доступа по SSH.

  • The best would be a kind of console in which I could type commands, like JavascriptConsole but it can't be installed without SSH access. I don't think there is anything like this, but maybe there are tricks involving rules?
  • Writing one-time webscripts sounds overkill and inconvenient.

Является ли это возможным?
(Alfresco 5.0)

2 ответа

Решение

Если у вас нет доступа к компьютеру хранилища, я думаю, что самым простым вариантом будет вариант словаря данных + фиктивное правило

Во-первых, создайте свой код JavaScript на своем локальном компьютере. Затем загрузите его в словарь данных. Выберите репозиторий, затем словарь данных, затем сценарии, так что полный путь Repository > Data Dictionary > Scripts, При загрузке убедитесь, что тип содержимого / mime установлен на Mimetype: Java Scriptизменив его в Edit Properties, если это необходимо

Теперь создайте пустую папку где-нибудь. В этой папке выберите Manage Rulesсоздать новое правило. Установите его для запуска на Items are created or enter this folder и выполнить действие Execute Script и выберите ваш недавно загруженный скрипт в качестве запускаемого

Наконец, создавайте случайный файл в вашей папке каждый раз, когда вы хотите запустить скрипт!

Редактировать: Если у вашего скрипта есть какие-либо проблемы, они будут зарегистрированы только на стороне репозитория, которую вы не сможете увидеть. Поэтому, вероятно, вам лучше всего обернуть все это в гигантский блок try / catch и сделать так, чтобы исключения регистрировались в другом файле, в папке без правил!

Я думаю, что одноразовый webscript - лучший вариант, чем подход на основе правил. Это можно развернуть в Data Dictionary/Web Scripts Extensions с двумя файлами:

Дескриптор (например, 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;

Быстрое "Обновление веб-скриптов" (кнопка внизу http://localhost:8080/alfresco/s/index), и ваш веб-скрипт теперь легко запускается. Вы даже можете изменить код JavaScript, и вам не придется снова обновлять веб-скрипт.

Проблемы с журналированием могут быть обработаны, как и в другом ответе, обернув основной кусок кода в попытку / ловлю и записав сообщения об ошибках в выходной файл.

Другие вопросы по тегам