10
edits
Tag: 2017 source edit |
m (Modifiation du nom de la fonction runTrigger, qui était erronée.) |
||
| Line 9: | Line 9: | ||
{{TemplateDocDevFr}} | {{TemplateDocDevFr}} | ||
= Ajouter son code sur un événement métier = | =Ajouter son code sur un événement métier= | ||
Pour permettre de déclencher du code personnalisé en réaction à un événement Dolibarr (création/modification/suppression d'une société/facture/produit/utilisateur ou autre), Dolibarr propose un mécanisme de triggers métiers. Ce mécanisme vous permet de personnaliser un workflow afin que les événements de gestion Dolibarr soient répercutés dans une autre application par exemple. | Pour permettre de déclencher du code personnalisé en réaction à un événement Dolibarr (création/modification/suppression d'une société/facture/produit/utilisateur ou autre), Dolibarr propose un mécanisme de triggers métiers. Ce mécanisme vous permet de personnaliser un workflow afin que les événements de gestion Dolibarr soient répercutés dans une autre application par exemple. | ||
| Line 19: | Line 19: | ||
1) Copier le fichier modèle '''htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php''' sous le nom: | 1) Copier le fichier modèle '''htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php''' sous le nom: | ||
* '''interface_99_all_''Xxx''.class.php''' | |||
*'''interface_99_all_''Xxx''.class.php''' | |||
ou bien | ou bien | ||
* '''interface_99_mod''MonModule_Xxx''.class.php''' | |||
*'''interface_99_mod''MonModule_Xxx''.class.php''' | |||
où ''Xxx'' est une chaine de votre choix commençant par une majuscule, ''99'' est le numéro de priorité du trigger (''01'' étant le plus prioritaire), ''MonModule'' est le nom du module si votre trigger ne doit être activé que si le module MonModule est actif. Si on désire que le trigger soit toujours actif, on mettra ''all'' à la place de modMonModule. | où ''Xxx'' est une chaine de votre choix commençant par une majuscule, ''99'' est le numéro de priorité du trigger (''01'' étant le plus prioritaire), ''MonModule'' est le nom du module si votre trigger ne doit être activé que si le module MonModule est actif. Si on désire que le trigger soit toujours actif, on mettra ''all'' à la place de modMonModule. | ||
Il faut laisser ce nouveau fichier dans le même répertoire. | Il faut laisser ce nouveau fichier dans le même répertoire. | ||
| Line 80: | Line 84: | ||
Vous pouvez de plus dans cette fonction utiliser les objets suivant: | Vous pouvez de plus dans cette fonction utiliser les objets suivant: | ||
* '''$object''' est l'objet sur lequel porte l'action (voir chapitre suivant) | |||
* '''$user''' est l'objet de l'utilisateur Dolibarr qui réalise l'action | *'''$object''' est l'objet sur lequel porte l'action (voir chapitre suivant) | ||
* '''$langs''' est l'objet qui contient la langue de l'utilisateur Dolibarr | *'''$user''' est l'objet de l'utilisateur Dolibarr qui réalise l'action | ||
* '''$conf''' est l'objet qui contient toute la configuration de Dolibarr. | *'''$langs''' est l'objet qui contient la langue de l'utilisateur Dolibarr | ||
*'''$conf''' est l'objet qui contient toute la configuration de Dolibarr. | |||
| Line 90: | Line 95: | ||
dol_syslog("mon texte de trace", LOG_DEBUG); | dol_syslog("mon texte de trace", LOG_DEBUG); | ||
= Liste des événements gérés = | =Liste des événements gérés= | ||
Voici un vue rapide des événements qui provoquent une recherche et exécution de triggers. Un événement est caractérisés par la valeur du code '''$action''', avec le type de l'objet reçu dans '''$object'''. | Voici un vue rapide des événements qui provoquent une recherche et exécution de triggers. Un événement est caractérisés par la valeur du code '''$action''', avec le type de l'objet reçu dans '''$object'''. | ||
| Line 101: | Line 106: | ||
Liste non exhaustive. | Liste non exhaustive. | ||
= Créer de nouveaux événements Triggers = | =Créer de nouveaux événements Triggers= | ||
Pour gérer d'autres événements que ceux ci-dessus, il faut modifier le code Dolibarr pour y ajouter la séquence suivante dans les méthodes métiers des classes des objects manipulés: | Pour gérer d'autres événements que ceux ci-dessus, il faut modifier le code Dolibarr pour y ajouter la séquence suivante dans les méthodes métiers des classes des objects manipulés: | ||
| Line 113: | Line 118: | ||
</source> | </source> | ||
Il sera alors possible d'ajouter dans la méthode | Il sera alors possible d'ajouter dans la méthode runTrigger de tout fichier trigger, un if qui permet de gérer ce code. La méthode run_trigger serait alors de la forme : | ||
<source lang="php"> | <source lang="php"> | ||
| Line 139: | Line 144: | ||
</source> | </source> | ||
= Conclusion = | =Conclusion= | ||
Vous pouvez donc en quelques minutes, ajouter une interface Dolibarr vers exterieur sans risque puisqu'on ne touche pas au code Dolibarr, on s'est contenté de placer un nouveau fichier trigger dans le répertoire des triggers. | Vous pouvez donc en quelques minutes, ajouter une interface Dolibarr vers exterieur sans risque puisqu'on ne touche pas au code Dolibarr, on s'est contenté de placer un nouveau fichier trigger dans le répertoire des triggers. | ||
Si cette interface peut être utile à d'autre, n'hésitez pas à la packager en tgz (voir la page [[Développement_module#Créer_un_package_pour_livrer_et_installer_votre_module]]) et de la soumettre dans l'espace des téléchargement-contributions sur le site de Dolibarr. | Si cette interface peut être utile à d'autre, n'hésitez pas à la packager en tgz (voir la page [[Développement_module#Créer_un_package_pour_livrer_et_installer_votre_module]]) et de la soumettre dans l'espace des téléchargement-contributions sur le site de Dolibarr. | ||
= Voir aussi = | =Voir aussi= | ||
* [[Système de Hooks]] | |||
* [[Interfaces Dolibarr vers exterieur]] | *[[Système de Hooks]] | ||
* [[Interfaces Exterieur vers Dolibarr]] | *[[Interfaces Dolibarr vers exterieur]] | ||
*[[Interfaces Exterieur vers Dolibarr]] | |||
edits