Difference between revisions of "Interfaces Dolibarr vers exterieur"
Line 1: | Line 1: | ||
== Ajouter son code sur un évênement == | == Ajouter son code sur un évênement == | ||
− | Pour permettre de déclencher du code personalisé en réaction à un | + | Pour permettre de déclencher du code personalisé en réaction à un évènement Dolibarr (création/modification/suppression d'une société/facture/produit), Dolibarr propose un mécanisme de triggers. 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. Rien n'empèche également de l'utiliser pour modifier le comportement de Dolibarr même: par exemple, pour que la validation d'une facture provoque la création d'un contrat automatiquement. |
Donc, pour ajouter son propre code à déclencher par trigger, la procédure est la suivante: | Donc, pour ajouter son propre code à déclencher par trigger, la procédure est la suivante: | ||
− | # Copier le fichier ''includes/triggers/interface_demo.class.php'' sous le nom ''interface_xxx.class.php'' (ou xxx est une chaine de votre choix), en laissant ce nouveau | + | # Copier le fichier ''includes/triggers/interface_demo.class.php'' sous le nom ''interface_xxx.class.php'' (ou xxx est une chaine de votre choix), en laissant ce nouveau fichier dans le même répertoire. Par exemple ''includes/triggers/interface_monworkflow.class.php'' |
− | # Editer ce fichier ''interface_monworkflow.class.php'' afin de renommer la classe ''InterfaceDemo'' par ''InterfaceMonWorkflow'' et ajouter votre code dans la fonction ''run_trigger''. Cette fonction est appelée à chaque | + | # Editer ce fichier ''interface_monworkflow.class.php'' afin de renommer la classe ''InterfaceDemo'' par ''InterfaceMonWorkflow'' et ajouter votre code dans la fonction ''run_trigger''. Cette fonction est appelée à chaque évènement Dolibarr. Placer votre code en fonction du ou des évènements sur lesquels vous voulez réagir, chaque évènement étant identifié par un test sur la variable $action: |
function run_trigger($action,$object,$user,$lang,$conf) | function run_trigger($action,$object,$user,$lang,$conf) | ||
{ | { | ||
// Mettre ici le code à exécuter en réaction de l'action | // Mettre ici le code à exécuter en réaction de l'action | ||
− | // Le type de l' | + | // Le type de l'évènement Dolibarr est stocké dans $action |
// Les données de l'action sont stockées dans $object | // Les données de l'action sont stockées dans $object | ||
// La configuration, utilisateur et langage sont dans $conf,$user et $lang | // La configuration, utilisateur et langage sont dans $conf,$user et $lang | ||
Line 30: | Line 30: | ||
== Gérer de nouveaux évènements == | == Gérer de nouveaux évènements == | ||
− | Les | + | Les évènements Dolibarr qui provoquent un appel de triggers sont, pour l'instant, identifiés par les codes évènements suivants: |
* COMPANY_CREATE | * COMPANY_CREATE | ||
* COMPANY_MODIFY | * COMPANY_MODIFY | ||
Line 36: | Line 36: | ||
* BILL_VALIDATE | * BILL_VALIDATE | ||
− | Pour gérer d'autre | + | Pour gérer d'autre é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 utilisées pour gérer les évenements: |
// Appel des triggers | // Appel des triggers | ||
Line 44: | Line 44: | ||
// Fin appel triggers | // Fin appel triggers | ||
− | Ici, $this doit | + | Ici, $this doit être l'objet de la classe métier qui contient toutes les informations à passer au trigger. Remplacer, de plus, le 'XXXXX_YYYYYY' par un code évènement non déjà utilisé. |
− | Il sera alors possible d'ajouter dans la | + | Il sera alors possible d'ajouter dans la méthode run_trigger, un if qui permet de gérer ce code. La méthode run_trigger serait alors de la forme : |
function run_trigger($action,$object,$user,$lang,$conf) | function run_trigger($action,$object,$user,$lang,$conf) | ||
{ | { | ||
// Mettre ici le code à exécuter en réaction de l'action | // Mettre ici le code à exécuter en réaction de l'action | ||
− | // Le type de l' | + | // Le type de l'évènement Dolibarr est stocké dans $action |
// Les données de l'action sont stockées dans $object | // Les données de l'action sont stockées dans $object | ||
// La configuration, utilisateur et langage sont dans $conf,$user et $lang | // La configuration, utilisateur et langage sont dans $conf,$user et $lang |
Revision as of 11:27, 4 October 2005
Ajouter son code sur un évênement
Pour permettre de déclencher du code personalisé en réaction à un évènement Dolibarr (création/modification/suppression d'une société/facture/produit), Dolibarr propose un mécanisme de triggers. 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. Rien n'empèche également de l'utiliser pour modifier le comportement de Dolibarr même: par exemple, pour que la validation d'une facture provoque la création d'un contrat automatiquement.
Donc, pour ajouter son propre code à déclencher par trigger, la procédure est la suivante:
- Copier le fichier includes/triggers/interface_demo.class.php sous le nom interface_xxx.class.php (ou xxx est une chaine de votre choix), en laissant ce nouveau fichier dans le même répertoire. Par exemple includes/triggers/interface_monworkflow.class.php
- Editer ce fichier interface_monworkflow.class.php afin de renommer la classe InterfaceDemo par InterfaceMonWorkflow et ajouter votre code dans la fonction run_trigger. Cette fonction est appelée à chaque évènement Dolibarr. Placer votre code en fonction du ou des évènements sur lesquels vous voulez réagir, chaque évènement étant identifié par un test sur la variable $action:
function run_trigger($action,$object,$user,$lang,$conf) { // Mettre ici le code à exécuter en réaction de l'action // Le type de l'évènement Dolibarr est stocké dans $action // Les données de l'action sont stockées dans $object // La configuration, utilisateur et langage sont dans $conf,$user et $lang if ($action == 'COMPANY_CREATE') { dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); } elseif ($action == 'COMPANY_MODIFY') { dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); } elseif ($action == 'COMPANY_DELETE') ... }
Il n'y a plus qu'à tester, en provoquant l'évènement déclencheur dans Dolibarr.
Gérer de nouveaux évènements
Les évènements Dolibarr qui provoquent un appel de triggers sont, pour l'instant, identifiés par les codes évènements suivants:
- COMPANY_CREATE
- COMPANY_MODIFY
- COMPANY_DELETE
- BILL_VALIDATE
Pour gérer d'autre é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 utilisées pour gérer les évenements:
// Appel des triggers include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); $interface=new Interfaces($this->db); $interface->run_triggers('XXXXX_YYYYYY',$this,$user,$lang,$conf); // Fin appel triggers
Ici, $this doit être l'objet de la classe métier qui contient toutes les informations à passer au trigger. Remplacer, de plus, le 'XXXXX_YYYYYY' par un code évènement non déjà utilisé. Il sera alors possible d'ajouter dans la méthode run_trigger, un if qui permet de gérer ce code. La méthode run_trigger serait alors de la forme :
function run_trigger($action,$object,$user,$lang,$conf) { // Mettre ici le code à exécuter en réaction de l'action // Le type de l'évènement Dolibarr est stocké dans $action // Les données de l'action sont stockées dans $object // La configuration, utilisateur et langage sont dans $conf,$user et $lang if ($action == 'XXXXX_YYYYY') { dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); } elseif ($action == 'COMPANY_CREATE') { dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); } elseif ($action == 'COMPANY_MODIFY') { dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); } elseif ($action == 'COMPANY_DELETE') ... }