Как выполнить серверный 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, и вам не придется снова обновлять веб-скрипт.
Проблемы с журналированием могут быть обработаны, как и в другом ответе, обернув основной кусок кода в попытку / ловлю и записав сообщения об ошибках в выходной файл.