# BONITA 6.5 Obtenir la liste d'emails des utilisateurs liés à un acteur de lane

**URL:** <https://community.ofelia.com/t/bonita-6-5-obtenir-la-liste-demails-des-utilisateurs-lies-a-un-acteur-de-lane/6213>\
**Category:** Q&A\
**Created:** [30 July 2015 15:31 UTC](https://community.ofelia.com/t/bonita-6-5-obtenir-la-liste-demails-des-utilisateurs-lies-a-un-acteur-de-lane/6213 "2015-07-30T15:31:01Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![alain.thiery](https://avatars.discourse-cdn.com/v4/letter/a/a88e57/32.png) [@alain.thiery](https://community.ofelia.com/u/alain.thiery)\
**Post date:** [30 July 2015 15:31 UTC](https://community.ofelia.com/t/bonita-6-5-obtenir-la-liste-demails-des-utilisateurs-lies-a-un-acteur-de-lane/6213/1 "2015-07-30T15:31:01Z")

</div>

Bonjour à tous et à toutes !  
Mon objectif : sur une lane, j’ai défini un acteur (exemple “service achats”), à cet acteur est rattaché 3 personnes. Toujours sur cette lane, j’ai créé un connecteur email dans lequel je souhaite mettre comme destinataire du mail (A \*): un script groovy qui me recherche les emails des 3 personnes rattachées à cet acteur.

Voici le script, que j’ai trouvé dans une documentation BONITA “DEVELOP A FIRST BUSINESS PROCESS APPLICATION”

et que j’ai positionné dans l’édition de script groovy du destinataire (A\*) de mon connecteur email :  
  
return BonitaUsers.getUserProfessionalContactInfo(apiAccessor,BonitaUsers.getProcessInstanceInitiator(apiAccessor,processInstanceId).getId()).getEmail();

Voici le log du moteur dans lequel je crois voir qu’il trouve un ID = 0 et ne trouve pas l’utilisateur.  
Je ne comprends pas… … car j’ai bien des personnes rattachées à cet acteur avec des adresses email personnelles et professionnelles que j’ai déclaré dans l’organisation de BONITASOFT.

AVERTISSEMENT: THREAD\_ID=137 | HOSTNAME=ACGONL0172 | TENANT\_ID=1 | No catch error event was defined to handle the error code ‘PB EMAIL’ defined in the process [name: Validation Demande Achat, version: 1.0], throw event: PB EMAIL. This throw error event will act as a Terminate Event.  
2015-07-30 17:20:40 org.bonitasoft.engine.execution.work.FailureHandlingBonitaWork  
GRAVE: THREAD\_ID=137 | HOSTNAME=ACGONL0172 | TENANT\_ID=1 | org.bonitasoft.engine.expression.exception.SExpressionEvaluationException : “PROCESS\_DEFINITION\_ID=5491842729840529774 | PROCESS\_NAME=Validation Demande Achat | PROCESS\_VERSION=1.0 | PROCESS\_INSTANCE\_ID=34 | ROOT\_PROCESS\_INSTANCE\_ID=33 | FLOW\_NODE\_DEFINITION\_ID=-7476404747572908361 | FLOW\_NODE\_INSTANCE\_ID=174 | FLOW\_NODE\_NAME=Envoi mail validation acheteur | CONNECTOR\_DEFINITION\_IMPLEMENTATION\_CLASS\_NAME=Email validation service achat | CONNECTOR\_INSTANCE\_ID=90 | Groovy script throws an exception of type class org.bonitasoft.engine.identity.UserNotFoundException with message = org.bonitasoft.engine.identity.SUserNotFoundException: **USER\_ID=0 | Can’t find the user**  
Expression : SExpressionImpl [name=toEmail, content=return BonitaUsers.getUserProfessionalContactInfo(apiAccessor,BonitaUsers.getProcessInstanceInitiator(apiAccessor,processInstanceId).getId()).getEmail();, returnType=java.lang.String, dependencies=[SExpressionImpl [name=processInstanceId, content=processInstanceId, returnType=java.lang.Long, dependencies=, expressionKind=ExpressionKind [interpreter=NONE, type=TYPE\_ENGINE\_CONSTANT]], SExpressionImpl [name=apiAccessor, content=apiAccessor, returnType=org.bonitasoft.engine.api.APIAccessor, dependencies=, expressionKind=ExpressionKind [interpreter=NONE, type=TYPE\_ENGINE\_CONSTANT]]], expressionKind=ExpressionKind [interpreter=GROOVY, type=TYPE\_READ\_ONLY\_SCRIPT]]”  
org.bonitasoft.engine.expression.exception.SExpressionEvaluationException: PROCESS\_DEFINITION\_ID=5491842729840529774 | PROCESS\_NAME=Validation Demande Achat | PROCESS\_VERSION=1.0 | PROCESS\_INSTANCE\_ID=34 | ROOT\_PROCESS\_INSTANCE\_ID=33 | FLOW\_NODE\_DEFINITION\_ID=-7476404747572908361 | FLOW\_NODE\_INSTANCE\_ID=174 | FLOW\_NODE\_NAME=Envoi mail validation acheteur | CONNECTOR\_DEFINITION\_IMPLEMENTATION\_CLASS\_NAME=Email validation service achat | CONNECTOR\_INSTANCE\_ID=90 | Groovy script throws an exception of type class org.bonitasoft.engine.identity.UserNotFoundException with message = org.bonitasoft.engine.identity.SUserNotFoundException: USER\_ID=0 | Can’t find the user  
Expression : SExpressionImpl [name=toEmail, content=return BonitaUsers.getUserProfessionalContactInfo(apiAccessor,BonitaUsers.getProcessInstanceInitiator(apiAccessor,processInstanceId).getId()).getEmail();, returnType=java.lang.String, dependencies=[SExpressionImpl [name=processInstanceId, content=processInstanceId, returnType=java.lang.Long, dependencies=, expressionKind=ExpressionKind [interpreter=NONE, type=TYPE\_ENGINE\_CONSTANT]], SExpressionImpl [name=apiAccessor, content=apiAccessor, returnType=org.bonitasoft.engine.api.APIAccessor, dependencies=, expressionKind=ExpressionKind [interpreter=NONE, type=TYPE\_ENGINE\_CONSTANT]]], expressionKind=ExpressionKind [interpreter=GROOVY, type=TYPE\_READ\_ONLY\_SCRIPT]]  
at org.bonitasoft.engine.expression.impl.GroovyScriptExpressionExecutorCacheStrategy.evaluate(GroovyScriptExpressionExecutorCacheStrategy.java:153)  
at org.bonitasoft.engine.expression.impl.ExpressionServiceImpl.evaluate(ExpressionServiceImpl.java:86)  
at org.bonitasoft.engine.core.expression.control.api.impl.ExpressionResolverServiceImpl.evaluateExpressionWithResolvedDependencies(ExpressionResolverServiceImpl.java:215)  
at org.bonitasoft.engine.core.expression.control.api.impl.ExpressionResolverServiceImpl.evaluateExpressionsFlatten(ExpressionResolverServiceImpl.java:120)  
at org.bonitasoft.engine.core.expression.control.api.impl.ExpressionResolverServiceImpl.evaluate(ExpressionResolverServiceImpl.java:83)  
at org.bonitasoft.engine.core.connector.impl.ConnectorServiceImpl.evaluateInputParameters(ConnectorServiceImpl.java:352)  
at org.bonitasoft.engine.connector.ConnectorServiceDecorator.evaluateInputParameters(ConnectorServiceDecorator.java:99)  
at org.bonitasoft.engine.execution.work.ExecuteConnectorWork$EvaluateParameterAndGetConnectorInstance.call(ExecuteConnectorWork.java:198)  
at org.bonitasoft.engine.execution.work.ExecuteConnectorWork$EvaluateParameterAndGetConnectorInstance.call(ExecuteConnectorWork.java:162)  
at org.bonitasoft.engine.transaction.JTATransactionServiceImpl.executeInTransaction(JTATransactionServiceImpl.java:288)  
at org.bonitasoft.engine.execution.work.ExecuteConnectorWork.work(ExecuteConnectorWork.java:122)  
at org.bonitasoft.engine.execution.work.failurewrapping.TxInHandleFailureWrappingWork.work(TxInHandleFailureWrappingWork.java:42)  
at org.bonitasoft.engine.execution.work.failurewrapping.TxInHandleFailureWrappingWork.work(TxInHandleFailureWrappingWork.java:42)  
at org.bonitasoft.engine.execution.work.failurewrapping.TxInHandleFailureWrappingWork.work(TxInHandleFailureWrappingWork.java:42)  
at org.bonitasoft.engine.execution.work.failurewrapping.TxInHandleFailureWrappingWork.work(TxInHandleFailureWrappingWork.java:42)  
at org.bonitasoft.engine.execution.work.FailureHandlingBonitaWork.work(FailureHandlingBonitaWork.java:66)  
at org.bonitasoft.engine.work.BonitaWork.run(BonitaWork.java:56)  
at org.bonitasoft.engine.work.SequenceRunnableExecutor.innerRun(SequenceRunnableExecutor.java:47)  
at org.bonitasoft.engine.work.BonitaRunnable.run(BonitaRunnable.java:35)  
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)  
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)  
at java.lang.Thread.run(Thread.java:745)  
Caused by: org.bonitasoft.engine.identity.UserNotFoundException: org.bonitasoft.engine.identity.SUserNotFoundException: USER\_ID=0 | Can’t find the user  
at org.bonitasoft.engine.api.impl.IdentityAPIImpl.getUser(IdentityAPIImpl.java:401)  
at org.bonitasoft.engine.api.UserAPI$getUser.call(Unknown Source)  
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)  
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)  
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)  
at BonitaUsers.getProcessInstanceInitiator(BonitaUsers.groovy:65)  
at BonitaUsers$getProcessInstanceInitiator.call(Unknown Source)  
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)  
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)  
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)  
at BScript21.run(BScript21.groovy:1)  
at org.bonitasoft.engine.expression.impl.GroovyScriptExpressionExecutorCacheStrategy.evaluate(GroovyScriptExpressionExecutorCacheStrategy.java:134)  
… 21 more  
Caused by: org.bonitasoft.engine.identity.SUserNotFoundException: USER\_ID=0 | Can’t find the user  
at org.bonitasoft.engine.identity.impl.IdentityServiceImpl.getUser(IdentityServiceImpl.java:1189)  
at org.bonitasoft.engine.api.impl.transaction.identity.GetSUser.execute(GetSUser.java:52)  
at org.bonitasoft.engine.api.impl.IdentityAPIImpl.getUser(IdentityAPIImpl.java:398)  
… 32 more

Merci de votre aide  
A+

---

<div class="post-metadata">

**Author:** ![yannick.lombardi](https://avatars.discourse-cdn.com/v4/letter/y/8e8cbc/32.png) [@yannick.lombardi](https://community.ofelia.com/u/yannick.lombardi)\
**Post date:** [30 July 2015 16:06 UTC](https://community.ofelia.com/t/bonita-6-5-obtenir-la-liste-demails-des-utilisateurs-lies-a-un-acteur-de-lane/6213/2 "2015-07-30T16:06:48Z")

</div>

Bonjour.

Je viens de tester avec ce code qui fontionne :  
  
Long idUser = apiAccessor.getProcessAPI().getProcessInstance(processInstanceId).getStartedBy();  
return BonitaUsers.getUserProfessionalContactInfo(apiAccessor, idUser).getEmail();

Pour envoyer le mail à la liste des utilisateurs qui sont dans les acteurs de la lane il faudra :

- Récupérer l’acteur de la lane (apiAccessor.getProcessAPI().getActors(processDefinitionId, 0 , nbuser, UserCriterion))
- Iterer pour chacun des acteurs afin de récupérer la liste des users
- Iterer pour chaque user afin de récupérer son email
- Séparer tous les emails par une virgule (ou un point virgule, c’est à tester)
