apex_fr apex salesforce developpement

835
salesforce: Spring ’13 Guide du développeur de code Apex Force.com © Copyright 2000–2013 salesforce.com, inc. Tous droits réservés. Salesforce.com, le logo "no software" et Team Edition sont des marques déposées, et AppExchange, "Success On Demand" et "The Business Web" sont des marques de commerce de salesforce.com, inc. Toutes les autres marques mentionnées dans ce document sont la propriété de leur détenteur respectif.

description

apex_fr apex salesforce developpement

Transcript of apex_fr apex salesforce developpement

  • salesforce: Spring 13

    Guide du dveloppeur de code Apex Force.com

    Copyright 20002013 salesforce.com, inc. Tous droits rservs. Salesforce.com, le logo "no software" et Team Edition sont des marquesdposes, et AppExchange, "Success On Demand" et "The Business Web" sont des marques de commerce de salesforce.com, inc. Toutes

    les autres marques mentionnes dans ce document sont la proprit de leur dtenteur respectif.

  • Table des matires

    Chapitre 1: Introduction au langage Apex..............................................................................................1Qu'est-ce que le langage Apex ?................................................................................................................................................2

    Comment fonctionne le code Apex ?.............................................................................................................................4Qu'est-ce que le processus de dveloppement Apex ?....................................................................................................4

    Utilisation d'une organisation Developer ou Sandbox.......................................................................................5Apprentissage du langage Apex.........................................................................................................................7criture de code Apex........................................................................................................................................9criture de tests...............................................................................................................................................10Dploiement de code Apex dans une organisation Sandbox............................................................................10Dploiement de code Apex dans une organisation de production Salesforce..................................................11Ajout de code Apex une application Force.com AppExchange....................................................................11

    Quand dois-je utiliser un code Apex ?.........................................................................................................................12Quelles sont les limitations du langage Apex ?............................................................................................................12

    Nouveauts..............................................................................................................................................................................13Dmarrage rapide avec le langage Apex..................................................................................................................................13

    Conventions typographiques de la documentation......................................................................................................13Comprhension des concepts de base du langage Apex...............................................................................................15criture de votre premire classe et de votre premier dclencheur Apex.....................................................................20

    Cration d'un objet personnalis......................................................................................................................20Ajout d'une classe Apex...................................................................................................................................21Ajout d'un dclencheur Apex...........................................................................................................................22Ajout d'une classe de test.................................................................................................................................24Dploiement de composants en production.....................................................................................................26

    Chapitre 2: Constructions du langage..................................................................................................28Types de donnes....................................................................................................................................................................29

    Type de donnes Primitive..........................................................................................................................................29Types sObject..............................................................................................................................................................32

    Accs aux champs sObject...............................................................................................................................34Accs aux champs sObject via des relations.....................................................................................................36Validation de sObjects et de champs ..............................................................................................................37

    Collections...................................................................................................................................................................38Listes................................................................................................................................................................38Sets..................................................................................................................................................................46Maps................................................................................................................................................................47Type paramtr................................................................................................................................................49Utilisation de types personnaliss dans des cls et ensembles de mappages.....................................................49Itration de collections.....................................................................................................................................53

    Enumrations..............................................................................................................................................................53Comprhension des rgles de conversion....................................................................................................................55

    Variables..................................................................................................................................................................................56

    salesforce | Table des matires | i

  • Sensibilit la casse.....................................................................................................................................................57Constantes...................................................................................................................................................................58

    Expressions..............................................................................................................................................................................59Comprhension des expressions..................................................................................................................................59Comprhension des oprateurs d'expression................................................................................................................60Comprhension des prcdences d'oprateur..............................................................................................................66Extension d'expressions sObject et List.......................................................................................................................67Utilisation de commentaires........................................................................................................................................67

    Instructions d'attribution.........................................................................................................................................................68Instructions conditionnelles (If-Else)......................................................................................................................................69Boucles....................................................................................................................................................................................70

    Boucles Do-While.......................................................................................................................................................71Boucles While..............................................................................................................................................................71Boucles For..................................................................................................................................................................72

    Boucles For traditionnelles..............................................................................................................................73Boucles For d'itration de List ou de Set.........................................................................................................73Boucles For SOQL..........................................................................................................................................74

    Requtes SOQL et SOSL.......................................................................................................................................................77Utilisation des rsultats de requtes SOQL et SOSL..................................................................................................78Utilisation de fonctions Aggregate SOQL..................................................................................................................79Utilisation de trs grandes requtes SOQL.................................................................................................................80Utilisation de requtes SOQL renvoyant un enregistrement.......................................................................................83Amlioration des performances en annulant la recherche des valeurs nulles................................................................83Comprhension des requtes SOQL de cl trangre et de relations parent-enfant...................................................84Utilisation de relations polymorphiques dans des requtes SOQL..............................................................................85Utilisation de variables Apex dans des requtes SOQL et SOSL................................................................................87Demande de tous les enregistrements avec une instruction SOQL.............................................................................90

    Instructions de verrouillage......................................................................................................................................................90Verrouillage d'une boucle For SOQL..........................................................................................................................90viter les impasses.......................................................................................................................................................91

    Contrle des transactions........................................................................................................................................................91Instructions d'exception...........................................................................................................................................................92

    Instructions Throw......................................................................................................................................................92Instructions Try-Catch-Finally...................................................................................................................................93

    Chapitre 3: Invocation de code Apex...................................................................................................95Dclencheurs...........................................................................................................................................................................96

    Dclencheurs en masse................................................................................................................................................97Syntaxe de dclencheur................................................................................................................................................97Variables de contexte de dclencheur...........................................................................................................................98Considrations sur les variables de contexte..............................................................................................................101Idiomes de dclencheur en masse courants................................................................................................................102

    Utilisation de mappages et d'ensembles dans des dclencheurs en masse......................................................102Corrlation d'enregistrements avec des rsultats de requte dans des dclencheurs en masse........................103Utilisation de dclencheurs pour insrer ou mettre jour des enregistrements avec des champs uniques......103

    salesforce | Table des matires | ii

  • Dfinition de dclencheurs........................................................................................................................................104Dclencheurs et instructions Merge..........................................................................................................................106Dclencheurs et enregistrements restaurs.................................................................................................................107Dclencheurs et squence d'excution.......................................................................................................................107Oprations n'invoquant pas de dclencheurs.............................................................................................................109Considrations sur les entits et les champs dans les dclencheurs............................................................................110Exceptions de dclencheur.........................................................................................................................................112Meilleures pratiques pour les dclencheurs et les requtes en masse..........................................................................112

    Planificateur Apex.................................................................................................................................................................113Blocs anonymes.....................................................................................................................................................................120Apex dans AJAX...................................................................................................................................................................121

    Chapitre 4: Classes, objets et interfaces..............................................................................................124Comprhension des classes....................................................................................................................................................125

    Dfinition de classes Apex.........................................................................................................................................125Exemple de classe tendue.........................................................................................................................................127Dclaration de variables de classe..............................................................................................................................132Dfinition de mthodes de classe...............................................................................................................................133Utilisation de constructeurs.......................................................................................................................................136Modificateurs d'accs.................................................................................................................................................138Statique et instance....................................................................................................................................................139

    Utilisation de mthodes et de variables statiques...........................................................................................140Utilisation de mthodes et de variables d'instance.........................................................................................141Utilisation d'un code d'initialisation..............................................................................................................142

    Proprits Apex.........................................................................................................................................................144Interfaces et extension de classes...........................................................................................................................................147

    Itrateurs personnaliss..............................................................................................................................................149Mots cls...............................................................................................................................................................................152

    Utilisation du mot cl final........................................................................................................................................152Utilisation du mot cl instanceof...............................................................................................................................152Utilisation du mot cl super.......................................................................................................................................153Utilisation du mot cl this.........................................................................................................................................154Utilisation du mot cl transient.................................................................................................................................155Utilisation des mots cls with sharing ou without sharing.........................................................................................156

    Annotations...........................................................................................................................................................................159Annotation Deprecated.............................................................................................................................................160Annotation Future.....................................................................................................................................................161Annotations IsTest....................................................................................................................................................162Annotation ReadOnly...............................................................................................................................................167Annotation RemoteAction........................................................................................................................................167Annotations REST Apex..........................................................................................................................................168

    Annotation RestResource..............................................................................................................................169Annotation HttpDelete.................................................................................................................................169Annotation HttpGet......................................................................................................................................169Annotation HttpPatch...................................................................................................................................170

    salesforce | Table des matires | iii

  • Annotation HttpPost.....................................................................................................................................170Annotation HttpPut......................................................................................................................................170

    Classes et conversion.............................................................................................................................................................170Classes et collections..................................................................................................................................................172Conversion de collection............................................................................................................................................172

    Diffrences entre les classes Apex et les classes Java..............................................................................................................173Cration d'une dfinition de classe........................................................................................................................................174

    Conventions de nommage.........................................................................................................................................176Occultation de noms..................................................................................................................................................176

    Scurit des classes.................................................................................................................................................................177Application des autorisations d'objet et de champ.................................................................................................................178Prfixe d'espace de noms.......................................................................................................................................................179

    Utilisation d'espace de noms lors de l'invocation de mthodes..................................................................................179Prcdence des noms d'espace de noms, de classe et de variable................................................................................180Rsolution du type et espace de noms systme pour les types....................................................................................181

    Paramtres de version............................................................................................................................................................181Dfinition de la version de l'API Salesforce pour des classes et des dclencheurs.....................................................181Dfinition de versions de package pour des classes des dclencheurs Apex...............................................................183

    Chapitre 5: Test du code Apex...........................................................................................................184Comprhension du test dans Apex........................................................................................................................................185

    Pourquoi tester le code Apex ?...................................................................................................................................185lments tester dans un code Apex.........................................................................................................................185

    Test unitaire Apex.................................................................................................................................................................186Isolation des donnes test de celles de l'organisation dans les tests unitaires.............................................................187Utilisation de la mthode runAs................................................................................................................................189Utilisation de limitations, startTest, et stopTest........................................................................................................191Ajout de requtes SOSL des tests unitaires............................................................................................................191

    Excution de mthodes de test unitaire.................................................................................................................................192Meilleures pratiques de test...................................................................................................................................................194Exemple de test.....................................................................................................................................................................195

    Chapitre 6: Apex dynamique.............................................................................................................203Comprhension de l'information Describe Apex..................................................................................................................204Requte SOQL dynamique...................................................................................................................................................217Requte SOSL dynamique....................................................................................................................................................218Requtes DML dynamiques..................................................................................................................................................219

    Chapitre 7: Apex par lot....................................................................................................................223Utilisation d'une tche Apex par lot......................................................................................................................................224Comprhension du partage gr Apex...................................................................................................................................237

    Comprhension du partage........................................................................................................................................237Partage d'un enregistrement en utilisant Apex..........................................................................................................240Recalcul du partage gr Apex...................................................................................................................................247

    Chapitre 8: Dbogage du langage Apex..............................................................................................255

    salesforce | Table des matires | iv

  • Comprhension du journal de dbogage...............................................................................................................................256Utilisation de journaux dans la Console du dveloppeur...........................................................................................261Dbogage des appels d'API Apex..............................................................................................................................271

    Gestion des exceptions non dtectes....................................................................................................................................273Comprhension des limitations et des gouverneurs d'excution............................................................................................273Utilisation d'avertissements par e-mail pour les limitations du gouverneur...........................................................................279

    Chapitre 9: Dveloppement de code Apex dans des packages grs......................................................280Versions de package...............................................................................................................................................................281Dprciation du code Apex...................................................................................................................................................282Comportement dans les versions de package.........................................................................................................................282

    Gestion des versions de comportement dans un code Apex......................................................................................282lments de code Apex invariables dans les diffrentes versions...............................................................................283Test du comportement dans les versions de package.................................................................................................284

    Chapitre 10: Exposition de mthodes Apex en tant que services Web SOAP........................................288Mthodes WebService...........................................................................................................................................................289

    Exposition des donnes avec des mthodes WebService...........................................................................................289Considrations sur l'utilisation du mot cl WebService.............................................................................................289Surcharge des mthodes WebService........................................................................................................................292

    Chapitre 11: Exposition de classes Apex en tant que services Web REST.............................................293Introduction REST Apex...................................................................................................................................................294Annotations REST Apex......................................................................................................................................................294Mthodes REST Apex..........................................................................................................................................................294Exposition de donnes avec des mthodes de services Web REST Apex.............................................................................301Exemples de code REST Apex.............................................................................................................................................301

    Exemple de code de base REST Apex.......................................................................................................................301Exemple de code REST Apex utilisant RestRequest................................................................................................304

    Chapitre 12: Invocation d'appels en utilisant le langage Apex..............................................................306Ajout des paramtres de site distant......................................................................................................................................307Services SOAP : Dfinition d'une classe partir d'un document WSDL.............................................................................307

    Invocation d'un service externe..................................................................................................................................308Prise en charge d'en-tte HTTP...............................................................................................................................309Fonctionnalits WSDL prises en charge...................................................................................................................310Comprhension du code gnr.................................................................................................................................313Test des appels de service Web..................................................................................................................................318Considrations sur l'utilisation de WSDL.................................................................................................................321

    Mappage d'en-ttes........................................................................................................................................321Comprhension des vnements l'excution...............................................................................................321Comprhension des caractres non pris en charge dans les noms de variables...............................................321Dbogage de classes gnres partir de fichiers WSDL..............................................................................321

    Invocation d'appels HTTP....................................................................................................................................................322Utilisation de certificats.........................................................................................................................................................322

    Gnration de certificats............................................................................................................................................322

    salesforce | Table des matires | v

  • Utilisation de certificats avec des services SOAP.......................................................................................................323Utilisation de certificats avec des requtes HTTP.....................................................................................................324

    Limitations des appels...........................................................................................................................................................325

    Chapitre 13: Rfrence.....................................................................................................................326Oprations DML (langage de manipulation de donnes) Apex............................................................................................327

    Opration ConvertLead............................................................................................................................................328Opration Delete.......................................................................................................................................................332Opration Insert........................................................................................................................................................334Instruction Merge......................................................................................................................................................338Opration Undelete...................................................................................................................................................339Opration Update......................................................................................................................................................342Opration Upsert.......................................................................................................................................................345sObjects qui ne prennent pas en charge les oprations DML....................................................................................351sObjects non utilisables dans des oprations DML...................................................................................................351Gestion des exceptions DML en masse.....................................................................................................................353

    Mthodes et classes standard Apex........................................................................................................................................354Mthodes Primitives Apex........................................................................................................................................355

    Mthodes Blob..............................................................................................................................................355Mthodes Boolean.........................................................................................................................................356Mthodes Date..............................................................................................................................................357Mthodes Datetime.......................................................................................................................................360Mthodes Decimal.........................................................................................................................................367Mthodes Double..........................................................................................................................................373Mthodes ID.................................................................................................................................................375Mthodes Integer...........................................................................................................................................377Mthodes Long.............................................................................................................................................378Mthodes String............................................................................................................................................379Mthodes Time.............................................................................................................................................409

    Mthodes Collection Apex........................................................................................................................................410Mthodes List................................................................................................................................................411Mthodes Map..............................................................................................................................................420Mthodes Set.................................................................................................................................................427

    Mthodes Enum........................................................................................................................................................431Mthodes sObject Apex............................................................................................................................................432

    Mthodes Schma..........................................................................................................................................432Mthodes sObject..........................................................................................................................................437Mthodes de rsultat de description de sObject.............................................................................................442Mthodes Describe Field Result....................................................................................................................446Mthodes Schema.FieldSet...........................................................................................................................455Mthodes Custom Settings...........................................................................................................................459

    Mthodes Systme Apex...........................................................................................................................................470Mthodes ApexPages.....................................................................................................................................471Mthodes Approval.......................................................................................................................................471Mthodes Database.......................................................................................................................................472

    salesforce | Table des matires | vi

  • Prise en charge JSON....................................................................................................................................490Mthodes Limits...........................................................................................................................................513Mthodes Math.............................................................................................................................................516Mthodes MultiStaticResourceCalloutMock................................................................................................521REST Apex...................................................................................................................................................522Mthodes Search...........................................................................................................................................528Mthodes StaticResourceCalloutMock.........................................................................................................528Mthodes System...........................................................................................................................................529Mthodes Test...............................................................................................................................................542Mthodes TimeZone.....................................................................................................................................548Mthodes Type..............................................................................................................................................550Mthodes URL..............................................................................................................................................554Mthodes UserInfo........................................................................................................................................557Mthodes Version..........................................................................................................................................560

    Utilisation de mthodes d'exception..........................................................................................................................562Classes Apex..........................................................................................................................................................................565

    Classes E-mail Apex..................................................................................................................................................566E-mail sortant................................................................................................................................................566E-mail entant.................................................................................................................................................579

    Classe d'exception......................................................................................................................................................585Construction d'une exception........................................................................................................................586Utilisation de variables d'exception................................................................................................................587

    Classes Visualforce.....................................................................................................................................................588Classe Action.................................................................................................................................................588Mthodes et proprits de composants dynamiques......................................................................................590Classe IdeaStandardController......................................................................................................................591Classe IdeaStandardSetController.................................................................................................................594Classe KnowledgeArticleVersionStandardController....................................................................................600Classe Message..............................................................................................................................................604Classe PageReference....................................................................................................................................605Classe SelectOption.......................................................................................................................................611Classe StandardController.............................................................................................................................614Classe StandardSetController........................................................................................................................617

    Classe Flow.Interview................................................................................................................................................620Classes Pattern et Matcher........................................................................................................................................621

    Utilisation de classes Pattern et Matcher.......................................................................................................621Utilisation de classes Region..........................................................................................................................622Utilisation d'oprations Match......................................................................................................................622Utilisation de limites......................................................................................................................................623Comprhension des groupes de capture.........................................................................................................623Exemple de classe Pattern et Matcher...........................................................................................................624Mthodes Pattern..........................................................................................................................................626Mthodes Matcher........................................................................................................................................627

    Classes de services (RESTful) HTTP.......................................................................................................................634Classes HTTP...............................................................................................................................................634

    salesforce | Table des matires | vii

  • Classe Crypto.................................................................................................................................................648Classe EncodingUtil......................................................................................................................................656

    Classes XML.............................................................................................................................................................657Classes XmlStream........................................................................................................................................657Classes DOM................................................................................................................................................667

    Classes de gestion des approbations Apex.................................................................................................................674Exemple de gestion des approbations Apex...................................................................................................675Classe ProcessRequest...................................................................................................................................676Classe ProcessResult......................................................................................................................................677Classe ProcessSubmitRequest........................................................................................................................678Classe ProcessWorkitemRequest...................................................................................................................679

    Classes de support Apex............................................................................................................................................680Classe BusinessHours....................................................................................................................................680Classe Cases...................................................................................................................................................682

    Classes de communaut Apex....................................................................................................................................683Classe Answers..............................................................................................................................................683Classe Ideas....................................................................................................................................................684

    Classe Publishing Service pour la gestion de Knowledge..........................................................................................688Classe Site..................................................................................................................................................................693Classe Cookie............................................................................................................................................................700Classe Network..........................................................................................................................................................703Connect in Apex - Aperu du dveloppeur...............................................................................................................704

    Interfaces Apex......................................................................................................................................................................704Interface Auth.RegistrationHandler..........................................................................................................................705Interface Comparable................................................................................................................................................710Interface HttpCalloutMock.......................................................................................................................................712Interface InstallHandler.............................................................................................................................................713Interface Support.EmailTemplateSelector................................................................................................................716Interface Site.UrlRewriter..........................................................................................................................................718Utilisation de l'interface Process.Plugin.....................................................................................................................727

    Interface Process.Plugin.................................................................................................................................727Classe Process.PluginRequest........................................................................................................................729Classe Process.PluginResult...........................................................................................................................730Classe Process.PluginDescribeResult.............................................................................................................731Conversions de type de donnesProcess.Plugin.............................................................................................734Exemple de mise en oeuvre Process.Plugin pour la conversion de piste.........................................................735

    Interface UninstallHandler........................................................................................................................................746Interface WebServiceMock.......................................................................................................................................748

    Chapitre 14: Dploiement de code Apex............................................................................................750Utilisation d'ensembles de modifications pour dployer un code Apex.................................................................................751Utilisation de l'IDE Force.com pour dployer un code Apex................................................................................................751Utilisation de l'Outil de migration Force.com.......................................................................................................................752

    Comprhension de deploy.........................................................................................................................................753Comprhension de retrieveCode...............................................................................................................................755

    salesforce | Table des matires | viii

  • Comprhension de runTests()...................................................................................................................................757Utilisation de l'API SOAP pour dployer un code Apex......................................................................................................757

    Annexes...........................................................................................................................................758

    Annexe A: Exemple de bordereau d'expdition..........................................................................758Prsentation d'un exemple de bordereau d'expdition...............................................................................................758Code de l'exemple de bordereau d'expdition............................................................................................................761

    Annexe B: Mots cls rservs....................................................................................................776

    Annexe C: Conseils relatifs la scurit pour le dveloppement de code Apex et de pagesVisualforce..........................................................................................................................778

    Cross Site Scripting (XSS)........................................................................................................................................778Sortie et formules non chappes dans des pages Visualforce....................................................................................780Cross-Site Request Forgery (CSRF).........................................................................................................................782Injection SOQL........................................................................................................................................................783Contrle de l'accs aux donnes.................................................................................................................................785

    Annexe D: API SOAP et en-ttes SOAP pour Apex..................................................................788compileAndTest()......................................................................................................................................................788

    CompileAndTestRequest..............................................................................................................................790CompileAndTestResult.................................................................................................................................791

    compileClasses()........................................................................................................................................................793compileTriggers()......................................................................................................................................................795executeanonymous()..................................................................................................................................................795

    ExecuteAnonymousResult.............................................................................................................................796runTests()..................................................................................................................................................................797

    RunTestsRequest...........................................................................................................................................799RunTestsResult..............................................................................................................................................800

    DebuggingHeader.....................................................................................................................................................803PackageVersionHeader..............................................................................................................................................804

    Glossaire..........................................................................................................................................806

    salesforce | Table des matires | ix

  • salesforce | Table des matires | x

  • Chapitre 1

    Introduction au langage Apex

    Salesforce.com a transform la faon dont les entreprises exercent leur activiten dplaant les applications professionnelles, qui taient traditionnellement

    Sujets :

    Qu'est-ce que le langage Apex ? bases sur une relation client-serveur, vers un environnement Web la demande Nouveauts et mutualis, la plate-forme Force.com. Cet environnement permet aux entreprises

    d'excuter et de personnaliser des applications, telles que Automatisation et Dmarrage rapide avec le langageApex Service et Support Salesforce, et d'laborer des applications personnalises bases

    sur des besoins mtier spcifiques.

    Bien que de nombreuses options de personnalisation soient disponibles traversl'interface utilisateur de Salesforce, notamment la possibilit de dfinir denouveaux champs, des objets, un workflow et des processus d'approbation, lesdveloppeurs peuvent galement utiliser l'API SOAP pour mettre descommandes de manipulation de donnes, telles que delete(), update() ouupsert(), partir de programmes ct client.

    Ces programmes ct client, gnralement crits en Java, JavaScript et .NET,ou d'autres langages de programmation, offrent aux organisations davantage deflexibilit dans leurs personnalisations. Cependant, comme la logique de contrlede ces programmes ct client ne rside dans les serveurs de la plate-formeForce.com, ils sont restreints par les lments suivants :

    Les cots en performance des multiples allers-retours vers le site salesforce.compour accomplir des transactions commerciales courantes

    Le cot et la complexit de l'hbergement du code serveur, tel que Java ou.NET, dans un environnement scuris et robuste

    Pour apporter une rponse ces problmes et rvolutionner la faon dont lesdveloppeurs crent des applications la demande, salesforce.com prsente lecode Apex Force.com, le premier langage de programmation la demande etmutualis destin aux dveloppeurs qui laborent la prochaine gnrationd'applications professionnelles.

    Qu'est-ce que le code Apex ? Pour en savoir plus sur l'utilisation du codeApex, le processus de dveloppement et ses limitations

    Nouveauts dans cette version Apex ? Dmarrage rapide avec Apex. Explorez directement ce code, et crivez votre

    premire classe et votre premier dclencheur Apex

  • Qu'est-ce que le langage Apex ?Apex est un langage de programmation orient objet, fortement typ, qui permet aux dveloppeurs d'excuter des instructionsde contrle de flux et de transactions sur le serveur de la plate-forme Force.com, en conjonction avec des appels l'APIForce.com. Avec une syntaxe semblable Java et qui se comporte comme les procdures stockes dans une base de donnes,le langage Apex permet aux dveloppeurs d'ajouter une logique applicative la plupart des vnements systme, y compris auxclics de bouton, aux mises jour d'enregistrements associs et aux pages Visualforce. Le code Apex peut tre initialis par desdemandes manant de services Web et de dclencheurs d'objets.

    Figure 1: Vous pouvez ajouter un code Apex la plupart des vnements systme.

    En tant que langage, Apex est :

    Intgr

    Apex fournit une prise en charge intgre pour des idiomes communs de la plate-forme Force.com qui comprennent : Les appels DML (langage de manipulation de donnes), tels que INSERT, UPDATE et DELETE, qui inclut le traitement

    DmlException intgr Des requtes SOQL (langage de requte d'objets) Salesforce et SOSL (langage de recherche d'objets) Salesforce qui

    renvoient des listes d'enregistrements sObject Des boucles qui permettent de traiter en masse plusieurs enregistrements mme temps

    Une syntaxe de verrouillage qui empche les conflits de mise jour d'enregistrements

    salesforce | Qu'est-ce que le langage Apex ? | 2Introduction au langage Apex

  • Des appels API Force.com publics personnaliss qui peuvent tre crs partir de mthodes Apex stockes

    Des avertissements et des erreurs mis lorsqu'un utilisateur tente de modifier ou de supprimer un objet personnalisou un champ qui est rfrenc par un code Apex

    Facilit d'utilisation

    Le langage Apex est bas sur des idiomes Java familiers, tels qu'une syntaxe de variables et d'expressions, une syntaxe dedclaration de bloc et conditionnelle, une syntaxe de boucle, une notation d'objet et de tableau, etc. Lorsque le langageApex introduit de nouveaux lments, il utilise une syntaxe et une smantique faciles comprendre et favorise uneutilisation efficace de la plate-forme Force.com. Par consquent, le langage Apex produit un code la fois succinct etfacile crire.

    Orient vers les donnes

    Le langage Apex est conu pour relier entre elles plusieurs requtes et dclarations DML dans une seule unit de travailsur le serveur de la plate-forme Force.com, de la mme faon que les dveloppeurs utilisent des procdures stockes dansune base de donnes pour relier entre elles plusieurs dclarations de transaction sur un serveur de base de donnes. Notezque comme d'autres procdures stockes dans une base de donnes, le langage Apex n'essaie pas de fournir un supportgnral pour le rendu des lments dans l'interface utilisateur.

    Rigoureux

    L'Apex est un langage fortement typ qui utilise des rfrences directes des objets de schma, tels que des noms d'objetet de champ. Il choue rapidement lors de la compilation si des rfrences ne sont pas valides, et stocke toutes lesdpendances de champ, d'objet et de classe personnaliss dans des mtadonnes afin de les protger contre la suppressionlorsqu'elles sont demandes par un code Apex actif.

    Hberg

    Le langage Apex est entirement interprt, excut et contrl par la plate-forme Force.com.

    Mutualis

    Comme le reste de la plate-forme Force.com, le langage Apex est excut dans un environnement mutualis (multitenant).Par consquent, le moteur d'excution du langage Apex est conu pour empcher qu'un emballement de code nemonopolise des ressources partages. Tout code qui viole ces limites choue avec des messages d'erreur faciles comprendre.

    Automatiquement mis niveau

    Il n'est jamais ncessaire de rcrire le code Apex lorsque d'autres parties de la plate-forme Force.com sont mises niveau.Le code tant compil et stock sous forme de mtadonnes sur la plate-forme, il est toujours automatiquement mis niveau avec le reste du systme.

    Facile tester

    Le langage Apex fournit une prise en charge intgre de la cration et de l'excution de tests unitaires, qui comprennentdes rsultats de tests indiquant la quantit de code couverte et les parties de votre code qui peuvent tre amliores.Salesforce.com garantit la fiabilit du fonctionnement du code Apex, en excutant des tests unitaires stocks dans desmtadonnes avant toute mise niveau de la plate-forme.

    Versions multiples

    Vous pouvez enregistrer votre code Apex dans plusieurs versions API Force.com. Vous pouvez ainsi prserver descomportements.

    Le langage Apex est inclus dans les versions Unlimited Edition, Developer Edition, Enterprise Edition et Database.com.

    salesforce | Qu'est-ce que le langage Apex ? | 3Introduction au langage Apex

  • Comment fonctionne le code Apex ?

    Tout le code Apex est excut entirement la demande sur la plate-forme Force.com, comme indiqu dans le diagrammed'architecture suivant :

    Figure 2: Le code Apex est entirement compil, stock et excut sur la plate-forme Force.com.

    Lorsqu'un dveloppeur crit et enregistre un code Apex sur la plate-forme, le serveur d'applications de la plate-forme commencepar compiler le code dans un ensemble d'instructions abstraites comprhensibles par l'interprteur d'excution Apex, puis ilenregistre ces instructions sous forme de mtadonnes.

    Lorsqu'un utilisateur final dclenche l'excution du code Apex, par exemple en cliquant sur un bouton ou en accdant unepage Visualforce, le serveur d'applications de la plate-forme rcupre les instructions compiles partir des mtadonnes, etles envoie via l'interprteur d'excution, avant de renvoyer le rsultat. L'utilisateur final ne remarque aucune diffrence entermes de dlais d'excution par rapport aux requtes standard de la plate-forme.

    Qu'est-ce que le processus de dveloppement Apex ?

    Nous recommandons le processus suivant pour le dveloppement de code Apex :

    1. Obtenir un compte Developer Edition.2. Apprendre le langage Apex.3. crire votre code Apex.4. En crivant un code Apex, vous devez galement crire des tests.5. (Facultatif) Dployer votre code Apex dans une organisation sandbox et effectuer des tests unitaires finaux.6. Dployer votre code Apex dans votre organisation de production Salesforce.

    En plus de du dploiement de votre code Apex, une fois crit et test, vous pouvez galement ajouter vos classes et dclencheurs un package d'applications Force.com AppExchange.

    salesforce | Comment fonctionne le code Apex ? | 4Introduction au langage Apex

  • Utilisation d'une organisation Developer ou Sandbox

    Il existe trois types d'organisation dans lesquels vous pouvez excuter votre code Apex :

    Une organisation de dveloppeur : organisation cre avec un compte Developer Edition.

    Une organisation de production : organisation comprenant des utilisateurs actifs qui accdent vos donnes.

    Une organisation sandbox : organisation cre dans votre organisation de production, mais qui est une copie de cetteorganisation.

    Remarque: Des dclencheurs Apex sont disponibles dans la version d'valuation (Trial Edition) de Salesforce. Ilssont toutefois dsactivs lorsque vous passez une autre version. Si votre nouvelle organisation inscrite inclut le langageApex, vous devez dployer votre code vers votre organisation en utilisant l'une des mthodes de dploiement.

    Vous ne pouvez pas dvelopper un code Apex dans votre organisation de production Salesforce. Les utilisateurs actifs quiaccdent au systme pendant que vous dveloppez risquent de dstabiliser vos donnes ou de corrompre votre application. la place, nous recommandons de raliser tout le travail de dveloppement dans un environnement sandbox ou dans uneorganisation Developer Edition.

    Si vous n'tes pas dj membre d'une communaut de dveloppeurs, accdez http://developer.force.com/join etsuivez les instructions pour vous inscrire un compte Developer Edition. Un compte Developer Edition vous donne accs une organisation Developer Edition gratuite. Mme si vous avez dj une organisation Enterprise Edition ou UnlimitedEdition et un environnement sandbox pour crer un code Apex, nous recommandons vivement de bnficier des ressourcesdisponibles dans la communaut de dveloppeurs.

    Remarque: Vous ne pouvez pas modifier un code Apex en utilisant l'interface utilisateur de Salesforce dans uneorganisation de production Salesforce.

    Cration d'une organisation Sandbox

    Pour crer ou actualiser une sandbox :

    1. Cliquez sur Votre nom > Configuration > Gestion des donnes > Sandbox.2. Effectuez l'une des oprations suivantes :

    Cliquez sur Nouvelle version test. Pour plus d'informations sur les diffrents types de sandbox, reportez-vous Prsentation de sandbox.

    Salesforce dsactive le bouton Nouvelle version test Sandbox lorsqu'une entreprise atteint le nombre maximald'environnements Sandbox. Si ncessaire, contactez salesforce.com pour commander davantage d'environnementssandbox pour votre organisation.Notez que Salesforce dsactive tous les liens d'actualisation lorsque vous atteignez votre limite en environnementssandbox.

    Cliquez sur Actualiser pour remplacer un environnement Sandbox existant par une nouvelle copie. Salesforce affichele lien Actualiser uniquement pour les environnements sandbox ligibles pour l'actualisation. Pour des sandbox complets,la valeur correspond toute priode aprs 29 jours compter de la cration ou de l'actualisation prcdente des sandbox.Pour des sandbox de type configuration-uniquement (y compris les sandbox de dveloppeur), vous pouvez actualiserune fois par jour. Votre copie existante de cet environnement sandbox reste disponible en attendant la fin de l'actualisation.La copie actualise reste inactive jusqu' son activation.

    3. Saisissez un nom et une description pour le sandbox. Vous pouvez modifier le nom uniquement lors de la cration ou del'actualisation d'un sandbox.

    salesforce | Qu'est-ce que le processus de dveloppement Apex? | 5

    Introduction au langage Apex

  • Conseil: Nous vous recommandons de choisir un nom qui :

    Reflte l'objectif de ce sandbox, tel que QA . Contient peu de caractres, car Salesforce ajoute automatiquement le nom du sandbox au nom d'utilisateur et

    l'adresse e-mail dans les enregistrements utilisateur de l'environnement sandbox. Les noms contenant peude caractres facilitent la saisie des informations de connexion sandbox.

    4. Slectionnez le type de sandbox :

    Configuration uniquement : Les sandbox de type configuration-uniquement copient tous les rapports, tableaux de bord,catalogues de prix, produits, applications et personnalisations de votre organisation de production sous Votre nom >Configuration, mais excluent tous les enregistrements d'objet personnalis et standard, les documents et pices jointesde votre organisation. La cration d'un sandbox de type configuration-uniquement peut diminuer le dlai de crationou d'actualisation d'un sandbox de quelques heures seulement quelques minutes, mais peut inclure uniquement 500 Mode donnes. Vous pouvez actualiser un sandbox de type configuration-uniquement une fois par jour.

    Dveloppeur : Les sandbox Developer sont des versions test spciales de configuration-uniquement qui permettent un seul dveloppeur de coder et de tester des programmes. Plusieurs utilisateurs peuvent se connecter un seul sandboxde dveloppeur, mais leur objet principal consiste offrir un environnement permettant d'isoler les modifications encours de dveloppement tant qu'elles ne sont pas prtes tre partages. Semblables aux sandbox deconfiguration-uniquement, les sandbox Developer copient toutes les informations d'application et de configurationdans l'environnement sandbox. Les sandbox Developer sont limits 10 Mo de donnes test ou d'essai, valeur suffisantepour de nombreuses tches de dveloppement et de test. Vous pouvez actualiser un sandbox de dveloppeur une foispar jour.

    Intgral : Les environnements sandbox complets copient l'ensemble de votre organisation de production et de sesdonnes, notamment les enregistrements d'objet personnalis et standard, les documents et les pices jointes. Vouspouvez actualiser un environnement sandbox complet tous les 29 jours.

    Si vous avez diminu le nombre de sandbox achets et que vous possdez toujours un nombre de sandbox d'un type donnsuprieur celui autoris, vous devez ajuster le nombre de sandbox utiliss au nombre de sandbox achets. Par exemple, sivous disposez de deux environnements sandbox complets, alors que vous en avez achet qu'un seul, vous ne pouvez pasactualiser l'environnement sandbox en tant que sandbox complet. Vous devez choisir un sandbox complet pour le convertiren environnement sandbox rduit, tel qu'un sandbox de configuration-uniquement ou de dveloppeur, selon le type desandbox disponible.

    Remarque: Les sandbox de type configuration-uniquement et dveloppeur copient tous les rapports, tableaux debord, catalogues de prix, produits, applications et personnalisations de votre organisation de production sousVotre nom > Configuration, mais excluent tous les enregistrements d'objet personnalis et standard, les documentset pices jointes de votre organisation. Puisque ces types de sandbox copient un volume infrieur de donnes, leurcration peut fortement diminuer le dlai de cration ou d'actualisation d'un environnement sandbox.

    Si vous actualisez un sandbox existant, la case prslectionne gnralement le type de sandbox correspondant au sandboxque vous actualisez. Par exemple, si vous actualisez un Sandbox de type configuration-uniquement, la case prslectionneConfiguration Uniquement.

    Si vous actualisez un sandbox existant ou crez un sandbox, certaines cases peuvent tre dsactives si vous avez dj atteintle nombre de sandbox de ce type autoris pour votre organisation.

    5. Pour un sandbox complet, slectionnez la quantit d'historique d'objet, d'historique de requte et d'historique d'opportunit copier, et s'il est ncessaire ou non de copier les donnes Chatter. L'historique d'objet est le suivi de l'historique deschamps des objets personnaliss et de la plupart des objets standard. L'historique de requte et l'historique d'opportunitjouent le mme rle pour les requtes et les opportunits. Vous pouvez copier de 0 180 jours d'historique, par incrmentsde 30 jours. La valeur par dfaut est 0 jour. Les donnes Chatter comprennent des fils, des messages et des rubriques dedcouverte. La diminution de la quantit de donnes copie peut acclrer de faon significative le dlai de copie de votresandbox.

    salesforce | Qu'est-ce que le processus de dveloppement Apex? | 6

    Introduction au langage Apex

  • 6. Cliquez sur Lancer la copie.

    Le processus peut durer plusieurs minutes, heures ou mmes plusieurs jours, en fonction de la taille de votre organisationet du type de copie que vous crez, savoir une copie complte ou une copie de type configuration-uniquement.

    Conseil: Essayez de limiter les modifications de votre organisation de production pendant la copie d'une sandbox.

    7. Vous recevez une notification par e-mail une fois la copie de votre sandbox cre ou actualise. Si vous crez un sandbox,l'environnement est maintenant prt l'emploi.

    Si vous actualisez un sandbox existant, vous devez excuter une tape supplmentaire pour terminer le processus de copiede l'environnement sandbox. Le nouveau sandbox doit tre activ. Pour supprimer votre sandbox existant et en activer unnouveau :

    a. Revenez la liste de sandbox en vous connectant votre organisation de production et en accdant Votre nom >Configuration > Gestion des donnes > Sandbox.

    b. Cliquez sur le lien Activer en regard du sandbox activer.

    Vous tes dirig vers une page qui vous informe de la suppression de votre sandbox existant.

    c. Lisez attentivement cet avertissement. Si vous acceptez la suppression, saisissez le texte demand l'invite, puis cliquezsur le bouton Activer.

    Une fois le processus d'activation termin, vous recevez une notification par e-mail.

    ATTENTION: L'activation d'un sandbox de remplacement cr en utilisant le lien Actualiser entrane lasuppression complte du sandbox actualis. Toutes les configurations et les donnes de la copie du sandboxprcdent sont perdues, y compris les modifications d'applications ou de donnes effectues. Lisez attentivementles avertissements, puis cliquez sur le lien Activer uniquement si vous ne souhaitez pas conserver le contenu de lacopie de l'environnement sandbox actuellement utilis. Votre organisation de production et ses donnes ne sontpas affectes.

    8. Une fois votre nouveau sandbox termin, ou votre sandbox actualis activ, cliquez sur le lien de la notification par e-mailpour accder votre environnement sandbox.

    Vous pouvez vous connecter au sandbox l'adresse test.salesforce.com/login.jsp en ajoutant .nom_sandbox votre nom d'utilisateur Salesforce. Par exemple, si votre nom d'utilisateur pour votre organisation de production [email protected], votre nom d'utilisateur pour un sandbox appel test [email protected].

    Remarque: Salesforce modifie automatiquement les noms d'utilisateur de sandbox, mais pas les mots de passe.

    Les nouveaux environnements sandbox crs incluent le paramtre de livraison d'e-mail par dfaut E-mailsystme uniquement. Le paramtre E-mail systme uniquement est particulirement utile pour contrlerles e-mails envoys partir d'environnements sandbox, afin d'empcher les oprations de test et de dveloppementd'envoyer des e-mails tests vos utilisateurs.

    Apprentissage du langage Apex

    Avec un compte Developer, vous disposez de nombreuses ressources pour apprendre le langage Apex :

    Guides Force.com Workbook : Get Started Building Your First App in the Cloud (Premiers pas d'laboration devotre premire application dans le Cloud)

    Programmeurs dbutants

    salesforce | Qu'est-ce que le processus de dveloppement Apex? | 7

    Introduction au langage Apex

  • Une srie de dix tutoriels de 30 minutes qui prsentent diverses fonctionnalits de la plate-forme Force.com. Les tutorielsForce.com Workbook prsentent l'laboration d'un systme de gestion des stocks extrmement simple. Vous apprenez dvelopper entirement une application, c.--d. vous commencez par laborer un modle de base de donnes pourassurer le suivi des marchandises. Vous ajoutez ensuite une logique mtier : des rgles de validation qui vrifient si lestock est suffisant, un workflow pour mettre jour l'inventaire suite la vente de marchandises, des approbations afind'envoyer des notifications par e-mail pour des montants de facture importants, enfin une logique de dclenchementpour mettre jour les prix dans les factures ouvertes. Une fois la base de donnes et la logique mtier termines, vouscrez une interface utilisateur pour prsenter l'inventaire produit au personnel, un site Web public pour prsenter uncatalogue de produits, puis vous commencez raliser une simple vitrine. Si vous souhaitez dvelopper hors ligne, puisintgrer l'application, nous avons ajout un dernier tutoriel consacr l'utilisation d'Adobe Flash Builder pour Force.com.

    Guides Force.com Workbook : HTML | PDF

    Guide Apex Workbook

    Programmeurs dbutants

    Le guide Apex Workbook prsente le langage de programmation Apex dans une srie de tutoriels. Vous apprenez lesconcepts de base de Apex, et comment les utiliser sur la plate-forme Force.com pour ajouter une logique mtierpersonnalise via des dclencheurs, des tests unitaires, un code Apex planifi, un code Apex par lot, des services WebREST et des contrleurs Visualforce.

    Guide Apex Workbook : HTML | PDF

    Page Apex Developer Force

    Programmeurs dbutants et avancs

    La page Apex sur Developer Force inclut des liens vers diverses ressources qui comprennent des articles sur le langagede programmation Apex. Ces ressources prsentent une vue d'ensemble du langage Apex, ainsi que les meilleures pratiquesde dveloppement Apex.

    Guide Force.com Cookbook

    Programmeurs dbutants et avancs

    Ce site collaboratif offre plusieurs recettes d'utilisation des services Web API, de dveloppement de code Apex et decration de pages Visualforce. Le guide Force.com Cookbook aide les dveloppeurs se familiariser avec les techniques etles meilleures pratiques de programmation Force.com courantes. Vous pouvez consulter et commenter les recettesexistantes ou soumettre vos propres recettes l'adresse developer.force.com/cookbook.

    Development Life Cycle: Enterprise Development on the Force.com Platform (Cycle de vie du dveloppement -Dveloppement d'entreprise sur la plate-forme Force.com)

    Programmeurs architectes et avancs

    Que vous soyez architecte, administrateur, dveloppeur ou dirigeant, le guide Development Life Cycle Guide vous prpareau dveloppement et la livraison d'applications complexes sur la plate-forme Force.com.

    Cours de formation

    Des cours de formation sont galement disponibles dans la rubrique Formation et certification de salesforce.com. Pourconsulter la liste complte des cours, accdez au site Formation et Certification.

    Dans ce manuel (Guide du dveloppeur Apex)

    Nous invitons les programmeurs dbutants consulter les rubriques suivantes : Introduction au langage Apex, et en particulier :

    salesforce | Qu'est-ce que le processus de dveloppement Apex? | 8

    Introduction au langage Apex

  • Conventions de documentation Concepts de base

    Tutoriel de dmarrage rapide

    Classes, objets et interfaces

    Test du code Apex

    Comprhension des limitations et des gouverneurs d'excution

    En plus des documents ci-dessus, nous invitons les programmeurs avancs consulter les rubriques suivantes : Meilleures pratiques pour les dclencheurs et les requtes en masse

    Exemple de programmation Apex avance

    Comprhension de l'information Describe Apex

    Excution asynchrone (Annotation @future)

    Apex par lot et Planificateur Apex

    criture de code Apex

    Vous pouvez crire un code Apex et le tester dans les environnements d'dition suivants :

    L'IDE Force.com, un complment de l'IDE Eclipse. L'IDE Force.com offre une interface unifie pour l'laboration et ledploiement d'applications Force.com. Conu pour les dveloppeurs et les quipes de dveloppement, l'IDE fournit desoutils qui permettent d'acclrer le dveloppement d'applications Force.com, notamment des diteurs de code source, desoutils d'excution de tests, des assistants et une aide intgre. Ces outils incluent un code couleur de base, une vue de lastructure hirarchique, des tests unitaires intgrs et une compilation automatique lors de l'enregistrement avec un affichagedes messages d'erreur. Pour plus d'informations sur son installation et son utilisation, reportez-vous au site Web.

    Remarque: L'IDE Force.com est une ressource gratuite offerte par salesforce.com pour aider ses utilisateurs etses partenaires, mais qui n'est pas considre comme faisant partie de nos services dans le cadre du Contratd'abonnement principal salesforce.com.

    L'interface utilisateur de Salesforce Toutes les classes et tous les dclencheurs sont compils lors de leur enregistrement,et les erreurs de syntaxe sont signales. Vous ne pouvez pas enregistrer votre code tant qu'il contient des erreurs. L'interfaceutilisateur de Salesforce numrote galement les lignes de code et utilise un code couleur pour distinguer les diffrentslments, notamment les commentaires, les mots cls, les chanes littrales etc.

    Pour un dclencheur dans un objet standard, cliquez sur Votre nom > Configuration > Personnaliser, cliquez sur lenom de l'objet, puis sur Dclencheurs. Dans la page de dtails Dclencheurs, cliquez sur Nouveau, puis saisissez votrecode dans la zone de texte Corps.

    Pour un dclencheur dans un objet personnalis, cliquez sur Votre nom > Configuration > Dvelopper > Objets,puis cliquez sur le nom de l'objet. Dans la liste associe Dclencheurs, cliquez sur Nouveau, puis saisissez votre codedans la zone de texte Corps.

    Pour une classe, cliquez sur Votre nom > Configuration > Dvelopper > Classes Apex. Cliquez sur Nouveau, puissaisissez votre code dans la zone de texte Corps.

    Remarque: Vous ne pouvez pas modifier un code Apex en utilisant l'interface utilisateur de Salesforce dans uneorganisation de production Salesforce.

    salesforce | Qu'est-ce que le processus de dveloppement Apex? | 9

    Introduction au langage Apex

  • N'importe quel diteur de texte, tel que le Bloc-notes. Vous pouvez crire votre code Apex, puis le copier et le coller dansvotre application, ou utiliser l'un des appels API pour le dployer.

    Conseil: Si vous souhaitez tendre le plug-in Eclipse ou dvelopper votre propre IDE Apex, l'API SOAP inclut desmthodes de compilation de dclencheurs et de classes, et d'excution de mthodes de test, tandis que l'API demtadonnes inclut des mthodes de dploiement de code dans des environnements de production. Pour plusd'informations, reportez-vous Dploiement de code Apex la page 750 et API SOAP et en-ttes SOAP pour Apex la page 788.

    criture de tests

    Le test est la cl de la russite du dveloppement long terme et forme un composant essentiel du processus de dveloppement.Nous recommandons vivement d'utiliser un processus de dveloppement pilot par des tests, c.--d. des tests effectus paralllementau dveloppement du code.

    Pour faciliter le dveloppement d'un code robuste et sans erreur, Apex prend en charge la cration et l'excution de tests unitaires.Les test unitaires sont des mthodes de classe qui vrifient le fonctionnement normal d'une portion de code. Les mthodes detest unitaires ne prennent aucun argument, ne soumettent aucune donne la base de donnes, n'envoient aucun e-mail etsont marques avec le mot cl testMethod dans la dfinition de la mthode.

    De plus, avant de pouvoir dployer votre code Apex ou de l'empaqueter pour Force.com AppExchange, le point suivant doittre vrai.

    Au moins 75 % de votre code Apex doit tre couvert par des tests unitaires, et tous ces tests doivent tre russis.

    Notez les points suivants :

    Lors du dploiement d'une organisation de production, chaque test unitaire dans l'espace de noms de votre organisationest excut.

    Les appels de System.debug ne sont pas pris en compte dans la couverture du code Apex.

    Les mthodes de test et les classes de test ne sont pas prises en compte dans la couverture du code Apex.

    Alors que seulement 75 % de votre code Apex doit tre couvert par des tests, votre attention ne doit pas se porter surle pourcentage du code couvert. Assurez-vous plutt que chaque cas d'utilisation de votre application est couvert, ycompris les cas positifs et ngatifs, ainsi que les enregistrements en masse et uniques. Ils doivent reprsenter 75 % ouplus de couverture de votre code par des tests unitaires.

    Chaque dclencheur doit avoir une couverture de test.

    Toutes les classes et tous les dclencheurs doivent tre comp