Как получить список групп для каждого пользователя, используя Alfresco Javascript API - PullRequest
2 голосов
/ 06 июля 2011

Я совершенно новичок в Alfresco и их Javascript API, поэтому, пожалуйста, имейте это в виду ...

Я хочу иметь возможность просматривать список групп для каждого пользователя в хранилище Alfresco.

Это код, который у меня есть на данный момент:

  var gens = search.luceneSearch("TYPE:\"{http://www.alfresco.org/model/content/1.0}person\"");
  var logFile = space.childByNamePath("log_user_groups.csv");
  if (logFile == null) {
      logFile = space.createFile("log_user_groups.csv");
   }
   logFile.content = "";



   for (var i=0; i<gens.length;i++) {
     logFile.content += gens[i].properties["cm:userName"]+"\n";

     var groupes= people.getContainerGroups(gens[i]);

     for (var j=0; j<groupes.length;j++) {
       logFile.content += "\t"+groupes[j].properties.shortName +"\t";
       logFile.content += "\t"+groupes[j].properties.fullName +"\t";
       logFile.content += "\t"+groupes[j].properties.displayName +"\n";
     }
  }

Файл создан с правильно отображаемым именем пользователя. Однако свойства группы «shortName», «fullName» и «displayName» не имеют значения. Фактически я распечатал все свойства объекта 'groupes', и каждое поле объекта 'undefined'.

Кто-нибудь знает, что я делаю неправильно?

Любая помощь будет принята с благодарностью.

Нормы.

Ответы [ 3 ]

0 голосов
/ 08 июля 2011

Самый простой способ - перевернуть его с ног на голову. Вместо этого для каждой группы спросите, какие группы и каких пользователей она содержит. В конце переверните его.

Вы хотите начать с корневых групп. Объект groups JS в Alfresco даст вам эти и другие. Он реализован ScriptAuthorityService, так что вы, вероятно, захотите взглянуть на JavaDocs

Сначала получите корневые группы

var rootGroups = groups.getAllRootGroups() ;

Для каждой группы получите всех пользователей в группе (прямых и унаследованных) с помощью getAllUsers() и сохраните их где-нибудь. Теперь получите все дочерние группы с getChildGroups(). Обработайте каждый из них таким же образом, повторяя при необходимости.

0 голосов
/ 10 ноября 2011

Мне нужно что-то подобное (полный список групп), поэтому я сделал это:

var temp = [];

function addGroups (groups)
  {
    for each (group in groups)
      {
        temp.push(group.getDisplayName());
        addGroups(group.getChildGroups());
      }
  }

addGroups(groups.getAllRootGroups());

Это работает в точку. Проблема в том, что getDisplayName () возвращает очень не симпатичное имя группы. Обычно при работе с документами и отображении имени группы, связанного с пользователем, я выполняю people.getContainerGroups () и использую group.properties ["cm: authorityName"], чтобы получить отображаемое имя (как упомянуто выше), однако группы, которые я получаю из getAllRootGroups () не имеет свойств (group.properties не определено).

Кто-нибудь знает, почему список групп, возвращаемый таким образом, не будет иметь те же свойства, что и возвращенные people.getContainerGroups ()?

0 голосов
/ 07 июля 2011

Я полагаю, вы используете неправильное имя свойства.

Вам необходимо следующее:

  • Полное имя: groupes[j].properties["usr:authorityName"]
  • Отображаемое имя: groupes[j].properties["usr:authorityDisplayName"]
  • Краткое имя: я не знаю :) возможно groupes[j].properties["usr:authorityShortName"]

Вы также можете просто получить идентификатор NodeRef.

Затем войти в Alfrescoисследователь.Затем перейдите в консоль администрирования -> Node Browser

Вставьте идентификатор (это должно быть что-то вроде workspace://spacesStore//biglongUUID). Там вы можете увидеть все свойства, относящиеся к группе.

ИлиВы можете просто зациклить карту groupes[k].properties и распечатать все свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...