I use a connector mail to send email to a filter population using this script :
import org.bonitasoft.engine.identity.UserMembership import org.bonitasoft.engine.search.SearchOptionsBuilder import org.bonitasoft.engine.search.SearchResult import org.bonitasoft.engine.identity.Group import org.bonitasoft.engine.identity.GroupSearchDescriptor final long roleId = apiAccessor.getIdentityAPI().getRoleByName("Agent SAF").getId() List<UserMembership> userMemberships = apiAccessor.getIdentityAPI().getUserMembershipsByRole(roleId, 0, 1000) def stringSmtpTo="" for (UserMembership userMembership: userMemberships) { Group group = apiAccessor.getIdentityAPI().getGroup(userMembership.groupId) String typeStructure = group.name.split(" ")[0] if("SP".equals(typeStructure)) { final SearchOptionsBuilder builder = new SearchOptionsBuilder(0,10000) builder.filter(GroupSearchDescriptor.PARENT_PATH, group.path) final SearchResult<Group> searchResults = apiAccessor.getIdentityAPI().searchGroups(builder.done()) for (final Group group_fils : searchResults.getResult()){ if (group_fils.displayName.equals(sesamAchat.directionLibelle.split("-")[1])) { if(apiAccessor.getIdentityAPI().getUserContactData(userMembership.userId,true).getEmail()){ if(stringSmtpTo!="") stringSmtpTo+="," stringSmtpTo+=apiAccessor.getIdentityAPI().getUserContactData(userMembership.userId,true).getEmail() } } } }else { if (group.displayName.equals(sesamAchat.directionLibelle.split("-")[1])) { if(apiAccessor.getIdentityAPI().getUserContactData(userMembership.userId,true).getEmail()){ if(stringSmtpTo!="") stringSmtpTo+="," stringSmtpTo+=apiAccessor.getIdentityAPI().getUserContactData(userMembership.userId,true).getEmail() } } } } if(stringSmtpTo==""){ final long roleIdAdminF = apiAccessor.getIdentityAPI().getRoleByName("Administrateur fonctionnel").getId() List<UserMembership> adminFMemberships = apiAccessor.getIdentityAPI().getUserMembershipsByRole(roleIdAdminF, 0, 1000) for (UserMembership adminFMembership: adminFMemberships) { if(apiAccessor.getIdentityAPI().getUserContactData(adminFMembership.userId,true).getEmail()){ if(stringSmtpTo!="") stringSmtpTo+="," stringSmtpTo+=apiAccessor.getIdentityAPI().getUserContactData(adminFMembership.userId, true).getEmail() } } } return stringSmtpTo
I'd like to factorize this code in a user-defined groovy script. Can you tell me if it's possible and how process ?
The apiAccessor variable is not present, how mus I process to instantiate it ? to get the identityAPI bound to the process session ?
Thanks