Astuces:Workflows
Un article de Wiki CRM-France.
La création d'un workflow génère un fichier workflow.php dans le répertoire custom/module/<module source>/workflow/workflow.php. Ce fichier est regénéré lors de chacune des migrations et si vous cliquez sur le lien "réparer les workflow" dans la rubrique Réparation de l'adminitration. C'est ce fichier qui sert lors de l'exécution des workflow.
Ce fichier est issu des informations présentes dans la table workflow_triggershells Concernant un worklflow sur les emails vous devriez trouver une ligne avec les informations suivantes :
| field | type | frame_type | eval |
| to_addrs | filter_field | Primary | ($focus->to_addrs == 'contact@mondomaine.com') |
Le champ eval est le champ qui permet de valider le test effectué dans le workflow, on peut donc facilement le remplacer par une expression régulière le but étant que la fonction retourne true pour exécuter le workflow et false dans le cas contraire. Par exemple pour ne pas recupérer les emails contenant dans l'objet "SPAM" il suffit de mettre l'expression suivante : (!ereg("SPAM" , $focus->to_addrs))
PS: Attention à bien rester cohérent dans le contenu de la ligne.
| field | type | frame_type | eval |
| to_addrs | filter_field | Primary | (!ereg("SPAM" , $focus->to_addrs)) |
Si vous relancez la génération du workflow par la rubriqué réparation vous aurez alors dans le fichier workflow.php le contenu suivant: .......
function process_wflow_triggers(& $focus){
include("custom/modules/Emails/workflow/triggers_array.php");
include("custom/modules/Emails/workflow/alerts_array.php");
include("custom/modules/Emails/workflow/actions_array.php");
include("custom/modules/Emails/workflow/plugins_array.php");
if( (!ereg("SPAM" , $focus->to_addrs)) ){
......
On pourrait aussi imaginer une suite de tests : (!ereg("SPAM" , $focus->to_addrs) && trim($focus->to_addrs) != 'contact@mondomaine.com')
| field | type | frame_type | eval |
| to_addrs | filter_field | Primary | (!ereg("SPAM" , $focus->to_addrs) && trim($focus->to_addrs) != 'contact@mondomaine.com') |
dans le fichier workflow.php : .......
function process_wflow_triggers(& $focus){
include("custom/modules/Emails/workflow/triggers_array.php");
include("custom/modules/Emails/workflow/alerts_array.php");
include("custom/modules/Emails/workflow/actions_array.php");
include("custom/modules/Emails/workflow/plugins_array.php");
if( (!ereg("SPAM" , $focus->to_addrs) && trim($focus->to_addrs) != 'contact@mondomaine.com') ){
......
Il est évident que ce contenu n'est pas compatible avec la définition d'un workflow dans SugarCRM, il ne sera donc plus possible d'éditer le wokflow ainsi modifié sans en perdre le contenu.

