Наследование JavaScript под открытым небом и пути
Я пишу простой сценарий на JavaScript для сообщества Alfresco. У меня есть скрипт runnign каждый раз, когда загружается новый файл.
Мне нужно проверить, есть ли конкретное имя файла (label.txt) в папке. Если он существует, я буду использовать информацию, содержащуюся в файле, для дальнейшего лечения.
Если я задаю только имя файла, оно будет работать до тех пор, пока сама папка с назначенным скриптом будет работать безупречно.
var labelFile = space.childByNamePath("label.txt");
if (labelFile != null)
{
...
}
Когда я устанавливаю наследование скрипта для папок более низкого уровня, скрипт запускается, но все еще пытается найти label.txt
файл в корневой папке. Я пытаюсь найти фактический путь к загруженному документу:
var dpath = document.displayPath + "/label.txt";
var labelFile = space.childByNamePath(dpath);
logFile.content += "labelFile: " + labelFile.displayPath + "\r\n";
if (labelFile != null)
{
...
}
Я получаю предположительно правильный путь в переменной dpath, но получаю нулевой результат для объекта файла, поэтому не могу прочитать файл и его содержимое.
Что я делаю не так?
2 ответа
Проблема была не в наследовании, а в space.childByNamePath, принимающем относительные пути, а не абсолютные, поэтому я должен вычислить его из пробела:
var dpath = document.displayPath;
var dpatharray = dpath.split("/");
var dpathlength = dpatharray.length;
var spath = space.displayPath;
var spatharray = spath.split("/");
var spathlength = spatharray.length;
var labelpath = "";
for (var i=spathlength + 1; i<dpathlength; i++)
{
labelpath += dpatharray[i] + "/";
}
var labelFile = space.childByNamePath(labelpath + "label.txt");
Что такое "пространство" там? Попробуйте использовать "companyhome", посмотрите это для дальнейших идей. http://docs.alfresco.com/4.0/references/API-JS-rootscoped.html
Текущий пробел ScriptNode (если есть). Для сценария, выполняющегося из правила, пространственный объект - это пространство, в котором находится правило. Если правило наследуется, это может быть не ожидаемое пространство.