Bonjour,
j’ai créé un processus métier qui permet de créer un message, sélectionner les contact, enregistrer le lien message-contact afin d’envoyer des sms en masse.
L’objet contact contient les élèves des lycées qui utilisent les transports scolaires. Potentiellement plus de 100000.
Pour un message, les utilisateurs peuvent vouloir sélectionner un nombre d’élèves très important.
Je fais des tests sur des grandes quantités et ce n’est pas très performant.
dans le postValidate du processus, après la sélection des contacts, je boucle sur les contacts sélectionnés, j’alimente l’objet qui associe le message créé et chaque contast sélectionné et et je fais un save :
// après sélection des contacts
if(step=="CMSG-003"){
var msgId=this.getParameter("CMSG-001.Field.row_id").get(0);
// All selected row IDs
var df = context.getDataFile("Field","row_id",true);
var ids = df!==null ? df.getValues() : null;
for (var i=0; ids && i<ids.length; i++){
var contactId=ids[i];
obj.setRowId(ObjectField.DEFAULT_ROW_ID);
//genereNum(obj,obj.getField("aleContactMsgNum"));
obj.getField("aleContactMsgMsg_fk").setValue(msgId);
obj.getField("aleContactMsgContact_fk").setValue(contactId);
obj.save();
}
}
pour 200 contacts, le traitement dure 10 secondes et j’ai le message suivant :
CreateCrbAleMsg.postValidate||Avertissement évaluation script: Duration = 9591ms exceeds 1000ms
dans le cas d’un message à 2000 contacts, ça va être très très long.
est-ce-que vous auriez une piste d’amélioration ?