As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
var sites = siteService.listUserSites(authorityName); for each(var site in sites) { if(site.shortName != null || authorityName != null) { if(site.isMember(authorityName)) { logger.log("nodeUser ==> " + user.person.properties.userName); // add to results results.push( { item: createPersonResult(user.person), selectable: true }); } } }
if(site.isMember(authorityName)) { logger.log("nodeUser ==> " + user.person.properties.userName); }
var memberships = site.listMembers("", "", 0, false); for (userName in memberships) { if (userName.match("^GROUP_")) { logger.log("Member is Group Type"); } else { authorities['_' + userName] = people.getPerson(userName); } }
var memberships = site.listMembers("", "", 0, true);
//Liste des users enregistres dans le repository var searchResults = groups.searchUsers(searchTerm, paging, "lastName"); for each(var user in searchResults) { //userName var authorityName = user.userName; //liste des sites associés aux users var sites = siteService.listUserSites(authorityName); for each(var site in sites) { if(site.shortName != null || authorityName != null) { //recupere la liste des membres par site var memberships = site.listMembers("", "", 0, true); for (userName in memberships) { var memberName = people.getPerson(userName).properties.userName; } } } Bon je vais voir si je peux supprimer quelques boucles.
var sites = siteService.listUserSites(authorityName);
var sites = siteService.listUserSites(authorityName); for each(var site in sites) { var userResults = user.person.properties.userName); }
http://localhost:8080/share/proxy/alfresco/api/forms/picker/authority/children?selectableType=cm:person&searchTerm=charles&size=1000
function findUsers(searchTerm, maxResults, results) { var paging = utils.createPaging(maxResults, -1); var searchResults = groups.searchUsers(searchTerm, paging, "lastName"); // create person object for each result for each(var user in searchResults) { if (logger.isLoggingEnabled()) logger.log("found user = " + user.userName); // add to results results.push( { item: createPersonResult(user.person), selectable: true }); } }
http://localhost:8080/share/proxy/alfresco/api/forms/picker/authority/children?selectableType=cm:person&searchTerm=charles&size=1000&site=monsite
function findUsers(searchTerm, maxResults, results, siteName) { var searchResults = Array(); if (site == null) { // Pas dans un site, recherche complète var paging = utils.createPaging(maxResults, -1); searchResults = groups.searchUsers(searchTerm, paging, "lastName"); } else { var site = siteService.getSite(siteName); var members = site.listMembers(searchTerm, "", maxResults, true); for (var i=0; i<members.size(); i++) { searchResults[i] = groups.getUser(userName); } } // create person object for each result for each(var user in searchResults) { if (logger.isLoggingEnabled()) logger.log("found user = " + user.userName); // add to results results.push( { item: createPersonResult(user.person), selectable: true }); } }
Aller hop, c'est la fin de semaine, je vais illustrer mon propos d'un petit exemple.Lorsque tu fais une recherche pour choisir un acteur du workflow, l'url suivante est appelé : http://localhost:8080/share/proxy/alfresco/api/forms/picker/authority/children?selectableType=cm:person&searchTerm=charles&size=1000Comme tu pourras le voir, j'ai joué une requête très egocentrique 😉Cette url va faire appel au webscript Alfresco pickerchildren.get.Ce webscript va traiter différents cas de recherche en fonction des paramètres de l'url. Ici, on recherche un utilisateur (cf. authority + selectableType=cmerson) dont le nom contient "charles".La recherche a proprement parlé est réalisée par la méthode findUsers(searchTerm, maxResults, results) :function findUsers(searchTerm, maxResults, results) { var paging = utils.createPaging(maxResults, -1); var searchResults = groups.searchUsers(searchTerm, paging, "lastName"); // create person object for each result for each(var user in searchResults) { if (logger.isLoggingEnabled()) logger.log("found user = " + user.userName); // add to results results.push( { item: createPersonResult(user.person), selectable: true }); } }Voila pour la situation de départ. jusque là çava. Pour ton besoin, il faut passer une information sur le site. L'URL peut donc devenir quelque chose du genre :http://localhost:8080/share/proxy/alfresco/api/forms/picker/authority/children?selectableType=cm:person&searchTerm=charles&size=1000&site=monsiteSalut Charles,Le webscript devra ensuite passer l'information sur le site à la fonction findUsers :function findUsers(searchTerm, maxResults, results, siteName) { var searchResults = Array(); La variable site est-elle celle passée via l'url du webscript si oui j'ai bien ajouté la ligne suivante pour la déclaration de site [code] var argsSiteName = args['site']; if (site == null) { // Pas dans un site, recherche complète var paging = utils.createPaging(maxResults, -1); searchResults = groups.searchUsers(searchTerm, paging, "lastName"); } Cette deuxième partie est la plus importante. 1er question : La variable userName vient d'où ? 2ème question le pagging est aparemment obligatoire dans les 2 cas de figure ?Je ne rentre jamais dans ce boucle même en spécifiant un site. else { var site = siteService.getSite(siteName); var members = site.listMembers(searchTerm, "", maxResults, true); for (var i=0; i<members.size(); i++) { searchResults = groups.getUser(userName); } } // create person object for each result for each(var user in searchResults) { if (logger.isLoggingEnabled()) logger.log("found user = " + user.userName); // add to results results.push( { item: createPersonResult(user.person), selectable: true }); }}Bien entendu, il reste plein de choses à faire :Tester que ça fonctionne (!)Faire la modification dans Share pour passer le site en paramètre ==> OKIVérifier que l'absence de paging n'est pas un frein trop gros ==>un peuMettre en place le tri des résultats si on le souhaite ==> OKIVoila donc tout ce que je peux avoir en tête pour couvrir ton besoin. ===>Thank en tout cas pour ta disponibilitéCordialement,Charles
function findUsers(searchTerm, maxResults, results, siteName) { var searchResults = Array(); La variable site est-elle celle passée via l'url du webscript si oui j'ai bien ajouté la ligne suivante pour la déclaration de site [code] var argsSiteName = args['site'];