Workflow Assigne Search
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-26-2012 04:02 AM
Bonjour,
Lors de l'assignation d'un workflow à un ou des utilisateurs, je voudrais que seul les membres du site soit renvoyés quand on utilise le terme "*".
J'ai trouvé cette explication de Jeff Potts http://stackoverflow.com/questions/9413881/filter-user-in-select-bpmassignee-control-alfresco
Je croyais qu'il fallait peut être modifier le web script alfresco/api/forms/picker/authority/children?selectableType=cmerson&searchTerm=*&size=100 qui utilise le script pickerchildren.get.js disponible dans classpath:alfresco/templates/webscripts/org/alfresco/repository/forms.
Merci de votre inspiration.
Lors de l'assignation d'un workflow à un ou des utilisateurs, je voudrais que seul les membres du site soit renvoyés quand on utilise le terme "*".
J'ai trouvé cette explication de Jeff Potts http://stackoverflow.com/questions/9413881/filter-user-in-select-bpmassignee-control-alfresco
Je croyais qu'il fallait peut être modifier le web script alfresco/api/forms/picker/authority/children?selectableType=cmerson&searchTerm=*&size=100 qui utilise le script pickerchildren.get.js disponible dans classpath:alfresco/templates/webscripts/org/alfresco/repository/forms.
Merci de votre inspiration.
Labels:
- Labels:
-
Archive
15 REPLIES 15
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-06-2012 05:45 AM
Exactement c'est ce que j'ai constaté aussi, mais là en entrée je n'ai que des utilisateurs à ma portée, donc finalement je recupère pas un site mais un tableau de site via
Merci
var sites = siteService.listUserSites(authorityName);
Ce que je pensais faire aussi, c'est d'ajouter la liste des membres de sites récupérés dans un objet de type Tableau, mais as tu une idée plus light. Merci
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-06-2012 06:56 AM
Tout le but du jeu est de passer l'identifiant du site comme paramètre à ton webscript 😉
Ca demande quelques ajustements, bien entendu !
Ca demande quelques ajustements, bien entendu !
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-06-2012 10:51 AM
Une bonne idée mais ça ne règle pas le problème car en ajoutant l'identitiant du site dans l'url on récupère aussi bien les membres associés mais au final on se retrouve dans le même cas de figure pour les utilsateurs présents dans beacoup de sites.
Tu ne crois pas que l'on peut retravailler sur le résultat obtenu c'est à dire la variable userResults afin d'utiliser des tableaux ?
Tu ne crois pas que l'on peut retravailler sur le résultat obtenu c'est à dire la variable userResults afin d'utiliser des tableaux ?
var sites = siteService.listUserSites(authorityName); for each(var site in sites){ var userResults = user.person.properties.userName);}
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-06-2012 11:39 AM
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é :
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) :
Voila pour la situation de départ.
Pour ton besoin, il faut passer une information sur le site. L'URL peut donc devenir quelque chose du genre :
Bien entendu, il reste plein de choses à faire :
Cordialement,
Charles
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:per...
Comme 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.
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:per...
Le webscript devra ensuite passer l'information sur le site à la fonction findUsers :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 }); }}
Bien entendu, il reste plein de choses à faire :
- Tester que ça fonctionne (!)
- Faire la modification dans Share pour passer le site en paramètre
- Vérifier que l'absence de paging n'est pas un frein trop gros
- Mettre en place le tri des résultats si on le souhaite
Cordialement,
Charles
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-07-2012 08:57 AM
Merci Charles pour cette belle description, je vais essayer de l'exécuter pour voir si ça change quelques choses.
Thank je te tiens au courant.
Thank je te tiens au courant.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-09-2012 04:44 PM
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é :Comme tu pourras le voir, j'ai joué une requête très egocentrique 😉http://localhost:8080/share/proxy/alfresco/api/forms/picker/authority/children?selectableType=cm:per...
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 :Salut Charles,http://localhost:8080/share/proxy/alfresco/api/forms/picker/authority/children?selectableType=cm:per...
Le webscript devra ensuite passer l'information sur le site à la fonction findUsers :if (site == null) {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'];
// 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 :==> OKI
- Tester que ça fonctionne (!)
- Faire la modification dans Share pour passer le site en paramètre ==> OKI
- Vérifier que l'absence de paging n'est pas un frein trop gros ==>un peu
- Mettre en place le tri des résultats si on le souhaite
Voila donc tout ce que je peux avoir en tête pour couvrir ton besoin.
===>Thank en tout cas pour ta disponibilité
Cordialement,
Charles