Académique Documents
Professionnel Documents
Culture Documents
Copyright 2000-2010 salesforce.com, inc. Tous droits rservs. Salesforce.com, le logo "no software" et Team Edition sont des marques
dposes, 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.
Les didacticiels sont axs sur l'laboration d'un systme trs simple de gestion d'un entrept. Vous allez dvelopper entirement
l'application, c'est--dire que vous allez commencer par laborer un modle de base de donnes pour le suivi des articles. Vous
allez ensuite ajouter une logique commerciale : des rgles de validation pour s'assurer que le stock est suffisant, un workflow
pour mettre jour l'inventaire lors d'une vente, des approbations pour envoyer des notifications par e-mail pour les valeurs de
facturation importantes et une logique de dclenchement pour mettre jour les prix dans les factures en cours. Une fois la base
de donnes et la logique commerciale termines, vous allez crer une interface utilisateur pour montrer l'inventaire d'un produit
au personnel, un site Web public pour prsenter un catalogue de produits, puis les premiers lments d'une boutique simple.
Pour le dveloppement hors ligne et l'intgration la sous-application, nous avons ajout un dernier didacticiel qui prsente
l'utilisation de Adobe Flash Builder for Force.com.
Chaque didacticiel repose sur les didacticiels prcdents selon une progression logique dans le dveloppement de l'application,
et prsente en mme temps une fonctionnalit particulire de la plate-forme. Cela parat beaucoup, mais vous allez rapidement
apprcier la simplicit des points abords.
Certains didacticiels ncessitent l'utilisation d'un environnement test sandbox. Il est par consquent plus facile de terminer
tous les didacticiels au sein d'une organisation test sandbox. Si vous n'avez pas encore cr d'environnement test sandbox,
reportez-vous Cration et connexion un environnement test Sandbox la page 90.
Vous ne pouvez pas utiliser la version Free Edition pour terminer le Didacticiel n 10 : Cration d'une sous-application de
bureau avec Adobe Flash Builder for Force.com. En tant qu'aperu pour dveloppeur, Adobe Flash Builder for Force.com
est disponible uniquement dans Developer Edition.
Les images du manuel peuvent tre lgrement diffrentes de celles affiches sur votre cran. Par exemple, Developer
Edition utilise un onglet Dmarrer ici, tandis que Free Edition inclut un onglet Premiers pas. Dans la plupart des cas, les
diffrences sont insignifiantes.
Une fois l'application termine, vous pouvez migrer les modifications depuis votre environnement test vers un environnement
de production. Pour plus d'informations, reportez-vous Distribution de votre application la page 91.
Organisation du manuel
Les didacticiels de ce manuel se compltent et s'inscrivent dans une progression logique.
Didacticiel
Niveau
Dure estime
Dbutant
20 30 minutes
Dbutant
20 30 minutes
Dbutant
20 30 minutes
Intermdiaire
30 45 minutes
Avanc
20 30 minutes
Avanc
20 30 minutes
Crer la sous-application
30 45 minutes
Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites Intermdiaire
20 30 minutes
30 minutes
Intermdiaire
30 minutes
Annexe
Cration et connexion un environnement test sandbox
Cration d'un projet dans l'IDE Force.com
Distribution de votre application
En savoir plus
Chaque tape se termine par une section facultative En savoir plus. Pour avancer rapidement, passez l'tape suivante. Si
toutefois vous souhaitez approfondir, ces sections contiennent de nombreuses informations utiles et des tapes supplmentaires
pour toffer votre sous-application.
Pour en savoir plus sur Force.com et accder un vaste ensemble de ressources, visitez le site Developer Force l'adresse
developer.force.com.
La dernire version de ce Manuel et des didacticiels complmentaires permettant d'tendre la sous-application sont
disponibles la page developer.force.com/workbook.
Cette application repose sur ce que vous vendez : des articles. Vous commencez par crer un objet de donnes qui permet de
suivre tous les lments relatifs un article spcifique, par exemple son nom, sa description, son prix, etc. Dans la plate-forme
Force.com, ces objets de donnes sont appels objets personnaliss. Si vous matrisez le concept de bases de donnes, vous pouvez
comparer un objet personnalis un tableau.
Un objet contient des champs standard, ainsi que des crans qui permettent de rpertorier, d'afficher et de modifier les
informations relatives l'objet. Vous pouvez toutefois ajouter vos propres champs afin de suivre ou de rpertorier tout lment
de votre choix. Une fois ce didacticiel termin, vous disposerez d'une application fonctionnelle dote de son propre menu, d'un
onglet et d'un objet personnalis permettant de suivre le nom, la description et le prix de vos articles, ainsi que d'crans
d'affichage et modification de ces informations.
Voir aussi :
tape 1 : Cration d'un objet personnalis Article
tape 2 : Ajout des champs Description, Prix et Inventaire total
tape 3 : Cration d'un onglet
tape 4 : Cration d'une sous-application Entrept
tape 5 : Cration d'un enregistrement Article
Rsum
4. Cliquez sur Nouvel objet personnalis pour afficher l'assistant Nouvel objet personnalis.
5. Renseignez la dfinition de l'objet personnalis.
En savoir plus
Une fois le nouvel objet personnalis enregistr, la page de dtails le l'objet personnalis s'ouvre. Observez l'image ci-dessous
pour vous familiariser avec l'objet personnalis Article.
1. Page de dtails Article : cette page affiche toutes les informations utiles relatives votre objet personnalis Article. Vous
allez bientt ajouter des champs, des relations, des rgles de validation et d'autres fonctionnalits simples pour cet objet
personnalis.
2. Nom API : lors de la cration de l'objet Article, vous n'avez spcifi aucun nom d'API, il a t automatiquement gnr.
Ce nom sert rfrencer l'objet dans la programmation. Tous les objets personnaliss se terminent par __c, qui permet
de les diffrencier des objets standard et de faciliter leur identification.
3. Champs standard : certains champs, appels champs standard, sont automatiquement gnrs. Par exemple, l'objet Article
contient un champ standard Responsable, qui suit automatiquement le crateur de chaque enregistrement.
4. Champs personnaliss : vous n'avez pas encore dfini de champ personnalis, vous le ferez l'tape suivante. Si vous avez
devin que les noms des champs personnaliss se terminent par __c, bien vu !
Voir aussi :
Didacticiel n 1 : Cration d'une application Entrept
tape 2 : Ajout des champs Description, Prix et Inventaire total
Dans le champ tiquette du champ, saisissez Description et appuyez sur la touche Tabulation.
Le champ Nom du champ doit tre automatiquement renseign avec le nom de champ : Description.
Slectionnez la case Obligatoire. L'une de vos rgles commerciales indique que vous ne pouvez pas crer d'article
sans fournir une description. Rendre le champ Description obligatoire satisfait cette rgle commerciale.
Vous pouvez renseigner les champs facultatifs Description et Texte d'aide. Il est recommand de renseigner
ces champs, mais nous les laissons de ct dans ce didacticiel pour gagner du temps.
Ne renseignez pas le champ Valeur par dfaut.
e. Cliquez sur Suivant, acceptez les valeurs par dfaut, puis cliquez de nouveau sur Suivant.
f. Cliquez sur Enregistrer et Nouveau pour enregistrer le champ Description et revenir la premire tape de l'assistant.
2. Crez le champ Prix.
a. Dans la zone Type de donnes, slectionnez Devise, puis cliquez sur Suivant.
b. Renseignez les dtails des champs personnaliss :
Remarque: Cette sous-application ne contient qu'un seul champ Prix que nous allons utiliser pour le cours et le
prix de dtail. Vous pouvez cependant crer un autre champ Cours si vous le souhaitez, il suffit de rpter les tapes
ci-dessus et d'utiliser le nom Cours.
3. Crez le champ Inventaire total.
a. Dans la zone Type de donnes, slectionnez Numro, puis cliquez sur Suivant.
b. Renseignez les dtails des champs personnaliss :
c. Acceptez les valeurs par dfaut des autres champs, puis cliquez sur Suivant.
d. l'tape suivante, acceptez les valeurs par dfaut, puis cliquez sur Suivant.
e. Cliquez sur Enregistrer pour crer le champ Inventaire et revenir la page Objet personnalis Article.
ce stade, nous disposons d'une prsentation claire de nos articles d'inventaire, avec un nom, une description et un prix. Nous
avons galement enregistr la quantit (Inventaire total) dont nous disposons pour chaque article.
En savoir plus
Peut-tre avez-vous remarqu que lors de la saisie de l'tiquette du champ, le systme a automatiquement renseign le
champ Nom du champ. Pourquoi avez-vous besoin des deux champs ? Une tiquette du champ est visible par l'utilisateur,
il doit tre facile lire et peut contenir des espaces. Le Nom du champ est utilis en interne, dans le code, et ne doit pas
contenir d'espace ou des caractres spciaux. Par exemple, le champ tiquet Client ph# : serait nomm Client_ph dans
le code (le systme remplace les espaces par des caractres de soulignement, et supprime les caractres # et : ).
Voir aussi :
Didacticiel n 1 : Cration d'une application Entrept
tape 1 : Cration d'un objet personnalis Article
tape 3 : Cration d'un onglet
5. Acceptez les autres valeurs par dfaut, puis cliquez sur Suivant.
6. Cliquez sur Suivant, puis sur Enregistrer pour terminer la cration de l'onglet.
Une fois l'onglet cr, il s'affiche en haut de l'cran.
En savoir plus
Lors de la cration d'un onglet, vous n'tes pas limit un ensemble d'icnes et de couleurs standard, vous pouvez slectionner
la couleur de votre choix et une image personnalise en cliquant sur Crer votre propre style.
Voir aussi :
Didacticiel n 1 : Cration d'une application Entrept
tape 2 : Ajout des champs Description, Prix et Inventaire total
tape 4 : Cration d'une sous-application Entrept
7. Laissez le champ Onglet de destination par dfaut dfini sur l'onglet Accueil, puis cliquez sur Suivant.
8. Slectionnez la case Visible pour rendre l'application disponible pour tous les profils d'utilisateur.
9. Cliquez sur Enregistrer pour crer l'application Entrept.
Une fois l'application cre, elle s'affiche dans le menu Sous-applications Force.com, en haut droite de la page.
En savoir plus
Les onglets de cette application ne doivent pas obligatoirement tre associs. Vous pouvez modifier les applications personnalises
afin de regrouper un emplacement commun les onglets que vous utilisez le plus souvent. Par exemple, si vous avez souvent
recours l'onglet Dmarrer ici, vous pouvez l'ajouter la sous-application Entrept. Vous pouvez basculer vers l'une des
applications que vous avez cres, achetes ou installes en slectionnant simplement son nom dans le menu.
Voir aussi :
Didacticiel n 1 : Cration d'une application Entrept
tape 3 : Cration d'un onglet
tape 5 : Cration d'un enregistrement Article
2. Cliquez sur l'onglet Articles, puis cliquez sur Nouveau pour crer un produit.
3. Renseignez tous les champs.
En savoir plus
Votre entrept peut fonctionner avec un seul article, mais il serait plus raliste de lui ajouter des articles. Crez davantage
d'articles. Astuce : utilisez le bouton Enregistrer et Nouveau pour crer rapidement des enregistrements.
Voir aussi :
Didacticiel n 1 : Cration d'une application Entrept
tape 4 : Cration d'une sous-application Entrept
Rsum
Rsum
Flicitations ! Vous venez de crer une application Entrept qui permet de suivre les produits que vous possdez en stock.
Comme vous l'avez constat, il est facile d'utiliser l'interface en ligne pour crer un objet personnalis, des champs et un onglet,
puis de les organiser dans une application permettant de crer et de suivre les informations associes vos articles. Bien que
l'application soit trs incomplte, elle contient dj de nombreuses fonctionnalits intgres, notamment la possibilit d'afficher
et de crer des articles.
L'tape suivante prsente l'utilisation d'une facture afin de suivre les mouvements d'entre et de sortie des articles dans l'entrept.
Voir aussi :
Didacticiel n 1 : Cration d'une application Entrept
tape 5 : Cration d'un enregistrement Article
Ce didacticiel prsente comment crer deux objets, un relev de facture et un lment de ligne, puis comment les associer dans
une relation principal-dtails. Cette relation permet de composer plusieurs lments de ligne et de les associer un seul relev
de facture. Chaque lment de ligne indique la quantit d'units vendues pour un article particulier. Vous allez par consquent
ajouter une relation entre les articles et les objets d'lments de ligne.
Si vous matrisez le concept de bases de donnes relationnelles, vous pouvez comparer une relation des cls trangres, la
diffrence que Force.com effectue la mise en uvre sous-jacente pour vous, vous vous contentez de dfinir les associations
entre les objets.
Prrequis
Sous-application Entrept
Vous devez commencer par crer une application Entrept de base en suivant les instructions du Didacticiel n 1 :
Cration d'une application Entrept la page 5.
Voir aussi :
tape 1 : Cration d'un objet personnalis Relev de facture
tape 2 : Cration d'un objet lment de ligne
tape 3 : Association des objets
tape 4 : Ajout de relevs de facture la sous-application
tape 5 : Cration d'un enregistrement Facture
Rsum
Dans la zone Type de donnes, slectionnez Zone de texte, puis cliquez sur Suivant.
Dans les champs tiquette du champ et Nom du champ, saisissez Description.
Cliquez sur Suivant, acceptez les valeurs par dfaut, puis cliquez de nouveau sur Suivant.
Cliquez sur Enregistrer pour accder la page de dtails de l'objet Relev de facture.
Votre objet Relev de facture doit dsormais inclure deux champs personnaliss, comme illustr ici.
En savoir plus
Notez comment nous avons dfini le type de donnes du nom de la facture sur Numro automatique et dfini un Format
d'affichage. La plate-forme attribue automatiquement un numro chaque enregistrement unique cr, en commenant par
le numro de dbut que vous avez spcifi. Le format affich se prsente comme suit : FACT-002.
Voir aussi :
Didacticiel n 2 : Ajout de relations
tape 2 : Cration d'un objet lment de ligne
a.
b.
c.
d.
Dans la zone Type de donnes, slectionnez Numro, puis cliquez sur Suivant.
Dans le champ tiquette du champ, saisissez Units vendues, puis cliquez sur Suivant.
Cliquez sur Suivant, en acceptant les valeurs par dfaut.
Cliquez sur Enregistrer pour revenir la page de dtails de l'objet personnalis lment de ligne.
En savoir plus
ce stade, vous avez cr trois objets personnaliss : Article, Relev d'inventaire et Elment de ligne. Dans chacun de ces
objets, vous avez cr des champs personnaliss pour reprsenter du texte, des chiffres et une devise. Tous ces champs ont un
lment en commun : les valeurs sont fournies par l'utilisateur. Vous avez galement cr deux champs personnaliss contenant
des valeurs gnres par le systme : la liste de slection Statut qui s'ouvre sur En cours et le champ Numro de facture qui est
automatiquement attribu par le type de donnes Numrotation automatique. l'tape suivante, vous allez crer deux champ
supplmentaires. Contrairement aux champs prcdents, leurs valeurs proviennent d'autres objets.
Voir aussi :
Didacticiel n 2 : Ajout de relations
tape 1 : Cration d'un objet personnalis Relev de facture
tape 3 : Association des objets
En savoir plus
Vous venez de crer deux relations principal-dtails en associant les enregistrements Relev de facture aux enregistrements
lments de ligne de facture et en associant les lments de ligne de facture aux Articles. Les relations principal-dtails
prennent galement en charge les champs rcapitulatifs de cumul, qui permettent de regrouper les informations sur les
enregistrements enfant. Vous utiliserez cette fonctionnalit dans un didacticiel ultrieur.
Voir aussi :
Didacticiel n 2 : Ajout de relations
tape 2 : Cration d'un objet lment de ligne
tape 4 : Ajout de relevs de facture la sous-application
Voir aussi :
Didacticiel n 2 : Ajout de relations
tape 3 : Association des objets
tape 5 : Cration d'un enregistrement Facture
3. Dans le champ Description, saisissez Premire facture, puis cliquez sur Enregistrer.
La page de dtails de votre relev de facture doit se prsenter comme dans l'illustration ci-dessous.
Notez que le numro de facture a t automatiquement attribu et que l'interface utilisateur affiche une liste associe lments
de ligne vide dessous. Le Relev de facture est li l'Elment de ligne via un champ principal-dtails. Vous avez cr cette
relation qui explique la prsence d'une liste associe dans la page de dtails Relev de facture. Vous allez ensuite ajouter un
lment de ligne la facture.
1. Cliquez sur Nouvel lment de ligne.
2. Renseignez les champs.
En savoir plus
Vous vous demandez peut-tre pourquoi le Numro de l'lment de ligne est un champ de texte alors que vous saisissez des
valeurs. Si les lments de ligne sont numrots, pourquoi ne pas dfinir le champ sur la numrotation automatique, comme
les Relevs de facture ? Pour rpondre simplement, il est plus facile d'utiliser du texte avec des enregistrements et ce didacticiel
doit rester convivial. Si vous le souhaitez, vous pouvez dfinir le champ Elment de ligne sur la numrotation automatique, ce
qui rendra toutefois le Didacticiel n 8, Cration d'une page Web publique en utilisant les Sites, plus complexe.
Voir aussi :
Didacticiel n 2 : Ajout de relations
tape 4 : Ajout de relevs de facture la sous-application
Rsum
Rsum
Dans ce didacticiel, vous avez cr des relations entre les objets dans votre modle de donnes. Les relations fonctionnent
comme des cls trangres dans des bases de donnes relationnelles, mais de faon plus abstraite, en vous laissant grer les
lments importants (les relations) plutt que la mise en uvre sous-jacente. Les relations principal-dtails permettent de
regrouper les informations. Le didacticiel suivant prsente comment calculer le prix de chaque lment de ligne de facture
dans le relev de facture. Les relations offrent galement l'avantage suivant : vous pouvez accder aux enregistrements associs
dans une interface utilisateur et un langage de requte. Nous en reparlerons.
Vous venez de crer l'application de base ; vous pouvez maintenant ajouter une logique commerciale l'aide de formules et de
rgles de validation dans le Didacticiel n 3 : Utilisation de formules et de rgles de validation la page 21.
Voir aussi :
Didacticiel n 2 : Ajout de relations
tape 5 : Cration d'un enregistrement Facture
La plate-forme Force.com permet de crer des formules et des rgles de validation de champ qui facilitent la gestion et
l'optimisation de la qualit des donnes saisies dans votre sous-application. Les champs de formule et les rgles de validation
de champ utilisent des fonctions intgres qui permettent de manipuler automatiquement vos donnes, de les valider et de
calculer d'autres valeurs bases sur vos donnes. Les fonctions que vous utilisez dans les champs de formule et les rgles de
validation de champ ressemblent celles que vous utilisez dans un tableur pour rfrencer des valeurs dans d'autres champs
d'une feuille de calcul, effectuer des calculs et renvoyer un rsultat. Toutefois, avec les champs de formule et les rgles de
validation de champ, vous rfrencez des champs dans les enregistrements de votre sous-application.
Dans ce didacticiel, vous allez amliorer la sous-application Entrept an ajoutant un champ de formule qui calcule
automatiquement la valeur totale de chaque lment de ligne. Vous allez galement utiliser cette nouvelle valeur d'lment de
ligne et une proprit des relations principal-dtails pour calculer automatiquement le total d'une facture. Pour terminer, vous
allez ajouter une formule qui effectue un contrle d'inventaire, afin de vous empcher de crer un lment de ligne pour une
quantit d'articles suprieure votre stock.
Prrequis
Sous-application Entrept
Vous devez commencer par crer une application Entrept de base en suivant les instructions du Didacticiel n 2 : Ajout
de relations la page 13.
Voir aussi :
tape 1 : Calcul d'une valeur pour chaque Elment de ligne
tape 2 : Calcul d'une valeur pour le Relev de facture avec un champ rcapitulatif de cumul
tape 3 : Contrle d'inventaire avec une rgle de validation
tape 4 : Test de la rgle de validation
tape 5 : Amlioration de la rgle de validation
Rsum
1.
2.
3.
4.
5.
6.
7.
Accdez l'objet personnalis Elment de ligne en cliquant sur Configuration Crer Objets Elment de ligne.
Accdez la liste associe Champs personnaliss & relations, puis cliquez sur Nouveau.
Choisissez le type de champ Formule, puis cliquez sur Suivant.
Dans les champs tiquette du champ et Nom du champ, saisissez Valeur.
Dans la zone Type de renvoi de la formule, slectionnez Devise.
Cliquez sur Suivant.
Dans la liste droulante Insrer un champ de fusion, slectionnez Prix unitaire. La valeur Prix_unitaire__c
s'affiche dans la zone de texte.
8. Cliquez sur la liste droulante Insrer un oprateur, puis slectionnez Multiplication.
9. Dans la liste droulante Insrer un champ de fusion, slectionnez Units vendues. La valeur Prix_unitaire__c *
Unit_s_vendues__c s'affiche dans la zone de texte.
10. Cliquez sur Suivant deux fois, puis cliquez sur Enregistrer.
Lorsque vous revenez la page de dtails de l'objet personnalis, notez le nouveau champ appel Valeur.
En savoir plus
Le type de champ Formule est trs pratique pour calculer automatiquement les valeurs de champ partir d'autre valeurs,
comme nous l'avons fait ici. La formule que vous avez saisie ne prsentait pas de difficult : une simple multiplication de deux
valeurs de champ dans le mme enregistrement. Il existe galement un onglet Formule avance qui permet de crer des formules
plus complexes.
Voir aussi :
Didacticiel n 3 : Utilisation de formules et de rgles de validation
tape 2 : Calcul d'une valeur pour le Relev de facture avec un champ rcapitulatif de cumul
1. Revenez la page de l'objet personnalis Relev de facture en cliquant sur Configuration Crer Objets Relev
de facture.
2. Accdez la liste associe Champs personnaliss & relations, puis cliquez sur Nouveau.
3. Slectionnez le type de champ Rcapitulatif de cumul, puis cliquez sur Suivant.
4. Dans le champ tiquette du champ, saisissez Valeur de facture, puis cliquez sur Suivant.
5. Dans la liste Objet synthtis, slectionnez Elments de ligne
6. Dans le champ Slectionner le type de cumul, slectionnez SUM.
7. Dans la liste Champ synthtiser, slectionnez Valeur.
8. Vrifiez que votre cran se prsente comme dans l'illustration ci-dessous, puis cliquez sur Suivant.
En savoir plus
Si vous revenez l'enregistrement du relev de facture, notez le nouveau champ de rcapitulatif de cumul qui affiche la valeur
totale de tous les lments de ligne de facture. Si un sablier est affich en regard du champ, attendez quelques secondes, puis
actualisez la page. Vous pouvez tester cette nouvelle fonctionnalit en ajoutant un autre lment de ligne.
Voir aussi :
Didacticiel n 3 : Utilisation de formules et de rgles de validation
tape 1 : Calcul d'une valeur pour chaque Elment de ligne
tape 3 : Contrle d'inventaire avec une rgle de validation
f.
g.
h.
i.
5. Cliquez sur Vrifier la syntaxe pour vous assurer de l'absence d'erreur. Si des erreurs sont dtectes, corrigez-les avant de
continuer.
6. Dans le champ Message d'erreur, saisissez Vous avez command un nombre d'articles suprieur
la quantit en stock.
7. Pour l'option Emplacement de l'erreur, activez Champ, puis slectionnez Units vendues dans la liste droulante.
En savoir plus
Vous pouvez saisir une formule directement dans la zone Formule de condition d'erreur, cependant, comme vous l'avez constat
ici, vous pouvez aisment parcourir les objets disponibles et slectionner les composants ncessaires pour la formule. Analysons
la formule que vous avez cre.
Article__r : puisque l'objet Article est associ l'objet Elment de ligne, la plate-forme fournit automatiquement un
champ de relation qui permet de naviguer depuis un enregistrement Elment de ligne vers un enregistrement Article, ce
que fait le champ Article__r.
Inventaire_total__c : il s'agit du champ que vous avez cr pour suivre le montant total du stock dans un enregistrement
Article.
Article__r.Inventaire_total__c : indique au systme de rcuprer la valeur du champ Inventaire total dans un
enregistrement Article associ.
Unit_s_vendues__c : correspond au champ Units vendues dans l'enregistrement actuel (Elment de ligne).
Une fois regroups, ces lments constituent une formule qui vrifie si l'inventaire total dans l'enregistrement Article associ
est infrieur la quantit d'units vendues. Comme indiqu la page Formule de condition d'erreur, vous devez fournir une
formule qui renvoie True si vous souhaitez afficher une erreur. La formule est vraie lorsque l'inventaire total est infrieur aux
units vendues.
Voir aussi :
Didacticiel n 3 : Utilisation de formules et de rgles de validation
tape 2 : Calcul d'une valeur pour le Relev de facture avec un champ rcapitulatif de cumul
tape 4 : Test de la rgle de validation
Cliquez sur l'onglet Relevs de facture, puis slectionnez une facture existante.
Accdez la zone Elments de ligne, puis cliquez sur Modifier en regard d'un ou des lments de ligne.
Modifiez la valeur Units vendues avec un chiffre suprieur la quantit en stock.
Cliquez sur Enregistrer. Une erreur devrait s'afficher indiquant que la quantit d'articles en stock est insuffisante. Cliquez
sur Annuler.
Voir aussi :
Didacticiel n 3 : Utilisation de formules et de rgles de validation
tape 3 : Contrle d'inventaire avec une rgle de validation
tape 5 : Amlioration de la rgle de validation
En savoir plus
Examinons cette formule plus en dtails.
IF est une condition qui excute l'une des deux alternatives selon la condition.
ISNEW est la condition. Cette fonction renvoie True si vous crez un enregistrement, sinon elle renvoie False.
Si ISNEW est True, vous contrlez simplement l'inventaire comme vous l'avez fait prcdemment. Pour les nouveaux
enregistrements, vous devez vrifier que vous n'avez pas vendu plus d'articles que vous en avez en stock.
Si ISNEW est False, vous savez que vous effectuez une mise jour d'un enregistrement existant, vous ne crez pas un
enregistrement. Par consquent, vous effectuez une autre vrification conditionnelle afin de dterminer si la quantit d'units
a augment ou diminu, en la comparant la valeur prcdente avec la fonction PRIORVALUE.
Si la valeur prcdente est suprieure, vous avez mis jour l'enregistrement et diminu ses units. Puisque votre stock est
suffisant, vous renvoyez FALSE pour indiquer l'absence d'chec de validation.
Si la valeur prcdente est infrieure, vous avez augment la quantit d'units et vous devez vrifier si l'inventaire est suffisant
pour couvrir la diffrence entre la nouvelle valeur et l'ancienne.
Voir aussi :
Didacticiel n 3 : Utilisation de formules et de rgles de validation
tape 4 : Test de la rgle de validation
Rsum
Rsum
Dans ce didacticiel, vous avez cr des champs de formule et des rgles de validation qui amliorent et valident les donnes de
votre sous-application. Pour la premire formule, vous avez cr un sous-total pour chaque lment de ligne en multipliant le
prix d'un produit par la quantit d'units commandes. Comme une facture peut inclure plusieurs lments de ligne, vous avez
cr un champ rcapitulatif de cumul afin d'ajouter automatiquement les sous-totaux d'lments de ligne.
Vous avez galement appris comment dfinir une rgle de validation pour vrifier la disponibilit des articles en stock. La
premire version de cette rgle tait simple, mais vous l'avez amliore pour l'utiliser avec des enregistrements nouveaux et
avec des enregistrements existants comprenant des mises jour. Ces types de modifications peuvent s'appliquer n'importe
quel champ de votre sous-application afin de vrifier la conformit des donnes avec critres spcifiques.
Voir aussi :
Didacticiel n 3 : Utilisation de formules et de rgles de validation
tape 5 : Amlioration de la rgle de validation
Votre socit travaille plus efficacement si elle bnficie de procdures internes normalises et de processus commerciaux
automatiss. Dans votre sous-application Force.com, vous pouvez utiliser des rgles de workflow et des processus d'approbation
afin d'automatiser vos procdures et processus. Ils permettent de gagner du temps, mais galement d'imposer cohrence et
conformit dans les pratiques commerciales de votre socit.
Les rgles de workflow peuvent lancer des actions (telles que des alertes par e-mail, des tches, des mises jour de champ et
des messages sortants) bases sur des dclencheurs temporels, des critres et des formules. Les processus d'approbation peuvent
automatiser toutes les approbations de votre organisation, qu'ils soient simples ou complexes.
Dans ce didacticiel, vous allez crer et tester deux rgles de workflow. Le premier transmet le prix actuel d'un article vers
l'enregistrement d'lment de ligne cr, et le deuxime actualise l'inventaire lorsque vous mettez jour un lment de ligne
de produit. Vous allez galement crer un processus d'approbation qui demande l'approbation explicite d'un responsable si la
facture dpasse 2 000 .
Prrequis
Formules et validation
Vous devez commencer par crer un champ rcapitulatif de cumul et des rgles de validation en suivant les instructions
du Didacticiel n 3 : Utilisation de formules et de rgles de validation la page 21.
Voir aussi :
tape 1 : Renseignement du prix d'lment de ligne l'aide d'une rgle de workflow
tape 2 : Mise jour de l'inventaire total lors d'une commande
tape 3 : Test des rgles de workflow
tape 4 : Cration d'un modle d'e-mail
tape 5 : Cration d'un processus d'approbation
tape 6 : Cration d'un profil de scurit personnalis
tape 7 : Cration d'un utilisateur
tape 8 : Test du processus d'approbation
Rsum
9. l'tape 3 de l'assistant Rgle de workflow, dans la section Actions de workflow immdiates, cliquez sur Ajouter une
action de workflow, puis slectionnez Nouvelle mise jour du champ. L'assistant Nouvelle mise jour du
champ s'ouvre.
10. Dans le champ Nom, saisissez Insrer le prix de l'article.
11. Dans la liste droulante Champ mettre jour, slectionnez Elment de ligne dans la premire case et Prix
unitaire dans la deuxime.
12. Slectionnez Utiliser une formule pour dfinir la nouvelle valeur.
13. Cliquez sur Afficher l'diteur de formule.
14. Cliquez sur Insrer un champ.
15. Slectionnez Elment de ligne > dans la premire colonne, Article > dans la deuxime et Prix dans la troisime.
16. Cliquez sur Insrer.
17. Cliquez sur Enregistrer pour fermer l'assistant Nouvelle mise jour du champ et revenir l'tape 3 de l'assistant du
workflow.
18. Dans la page Spcifier les actions de workflow, cliquez sur Termin.
19. Dans la page Rgle de workflow, cliquez sur Activer.
Important: Ne pas activer une nouvelle rgle de workflow est une erreur frquente. Si la rgle n'est pas active,
ses critres ne sont pas valus lorsque les enregistrements sont crs ou enregistrs.
En savoir plus
Si vous crez maintenant un nouvel lment de ligne et l'affichez, vous pouvez constater que son prix unitaire est
automatiquement dfini sur le prix de l'enregistrement de l'article associ. Puisque vous tes un administrateur, un champ de
saisie s'affiche pour le prix. Vos utilisateurs ne voient pas ce champ car il est en lecture seule.
Cette rgle de workflow s'excute uniquement lors de la cration d'un enregistrement (jamais aprs) car nous ne voulons pas
augmenter le prix indiqu sur la facture une fois l'article ajout la facture. Le client serait pour le moins surpris de dcouvrir
un prix suprieur celui annonc. Toutefois, si le prix baissait, le client apprcierait d'tre tenu inform de tout changement.
Vous dfinirez cette fonction ultrieurement.
Vous vous demandez peut-tre pourquoi nous avons cr un rgle dont les formules sont toujours values sur True. C'est
parce-que nous souhaitons mettre jour le champ chaque fois qu'un enregistrement est cr, ce qui est toujours vrai. Vous
pouvez utiliser une formule pour valuer une expression, ce qui n'tait pas ncessaire dans notre exemple.
Voir aussi :
Didacticiel n 4 : Utilisation de workflow et d'approbations
tape 2 : Mise jour de l'inventaire total lors d'une commande
champ Inventaire total que vous avez cr dans l'objet Article. Vous pouvez le faire avec une autre rgle de workflow. La seule
difficult est la modification de la valeur de l'inventaire total. Si vous crez un lment de ligne, vous devez diminuer l'inventaire
total par le nombre d'units vendues. Cependant, si vous mettez jour un lment de ligne, vous devez ajuster l'inventaire
total avec la diffrence entre l'ancienne et la nouvelle quantits d'units vendues.
1.
2.
3.
4.
5.
6.
10. l'tape 3 de l'assistant Rgle de workflow, dans la section Actions de workflow immdiates, cliquez sur Ajouter une
action de workflow, puis slectionnez Nouvelle mise jour du champ. L'assistant Nouvelle mise jour du champ s'ouvre.
11. Dans le champ Nom, saisissez Mettre jour l'inventaire du stock.
12. Dans la premire liste droulante, Champ mettre jour, slectionnez Article. Dans la deuxime, slectionnez
Inventaire total.
13. Slectionnez Utiliser une formule pour dfinir la nouvelle valeur.
14. Cliquez sur Afficher l'diteur de formule.
15. Saisissez le code suivant :
IF ( ISNEW(), Article__r.Inventaire_total__c - Unit_s_vendues__c ,
Article__r.Inventaire_total__c - (Unit_s_vendues__c - PRIORVALUE(Unit_s_vendues__c)) )
17. Cliquez sur Enregistrer pour fermer l'assistant Nouvelle mise jour du champ et revenir l'tape 3 de l'assistant du
workflow.
18. Dans la page Spcifier les actions de workflow, cliquez sur Termin.
19. Dans la page Rgle de workflow, cliquez sur Activer.
Voir aussi :
Didacticiel n 4 : Utilisation de workflow et d'approbations
tape 1 : Renseignement du prix d'lment de ligne l'aide d'une rgle de workflow
tape 3 : Test des rgles de workflow
6. Ouvrez maintenant l'enregistrement d'article Wee Jet en cliquant sur le lien Wee Jet. Notez que l'Inventaire total
est pass de 2 000 1 000.
Voir aussi :
Didacticiel n 4 : Utilisation de workflow et d'approbations
tape 2 : Mise jour de l'inventaire total lors d'une commande
tape 4 : Cration d'un modle d'e-mail
Dans cette tape, vous allez crer le modle d'e-mail que la rgle de workflow doit utiliser pour gnrer et envoyer l'e-mail.
Vous allez crer le processus d'approbation dans les tapes suivantes.
1.
2.
3.
4.
5.
6.
7.
8. Vrifiez que votre cran se prsente comme dans l'illustration ci-dessous, puis cliquez sur Enregistrer.
En savoir plus
Le texte du corps de l'e-mail que vous avez saisi prend en charge les champs de fusion, par exemple
{!Relev_de_facture__c.Valeur_de_facture__c}. Lors de la gnration de l'e-mail, cette valeur est remplace
dynamiquement par la valeur relle de la facture qui a gnr le processus d'approbation.
Voir aussi :
Didacticiel n 4 : Utilisation de workflow et d'approbations
tape 3 : Test des rgles de workflow
tape 5 : Cration d'un processus d'approbation
d'attribuer le rle d'approbateur au responsable de l'utilisateur qui dmarre le processus d'approbation. Vous allez crer un
utilisateur Alain Durand l'tape suivante.
Nom
Statut
En savoir plus
Des actions par dfaut sont associes certaines tapes d'approbation. Les actions de soumission initiale et d'approbation finale
verrouillent l'enregistrement, alors que l'action de refus final dverrouille l'enregistrement. Ceci est logique : si un enregistrement
est soumis pour approbation, il ne doit pas tre modifiable durant l'approbation. S'il est refus, il doit tre dverrouill pour
lui apporter des modifications.
Voir aussi :
Didacticiel n 4 : Utilisation de workflow et d'approbations
tape 4 : Cration d'un modle d'e-mail
tape 6 : Cration d'un profil de scurit personnalis
En savoir plus
Vous venez de crer et de modifier aisment un profil personnalis. Pour modifier de nombreux modles, vous pouvez utiliser
la gestion de profils avance afin de crer une vue de liste personnalise de vos profils et de les modifier dans la vue. Pour plus
d'informations, reportez-vous Modification de profils l'aide de listes de profils dans l'aide en ligne de Salesforce.com.
Voir aussi :
Didacticiel n 4 : Utilisation de workflow et d'approbations
tape 5 : Cration d'un processus d'approbation
tape 7 : Cration d'un utilisateur
Voir aussi :
Didacticiel n 4 : Utilisation de workflow et d'approbations
tape 6 : Cration d'un profil de scurit personnalis
tape 8 : Test du processus d'approbation
En savoir plus
La page de dtails Processus d'approbation permet d'afficher un diagramme de processus d'approbation ainsi que les actions
dclenches chaque tape.
1. Dans la Configuration, cliquez sur Processus d'approbation, puis slectionnez le processus que vous avez cr.
2. Cliquez sur Afficher le diagramme. Le diagramme de processus d'approbation s'affiche dans une nouvelle fentre de
navigateur.
Voir aussi :
Didacticiel n 4 : Utilisation de workflow et d'approbations
tape 7 : Cration d'un utilisateur
Rsum
Rsum
Les rgles de workflow et les processus d'approbation permettent d'automatiser vos processus commerciaux et d'appliquer vos
normes. La rgle de workflow met automatiquement jour le prix et l'inventaire dans diffrents objets. Le processus d'approbation
est excut ds qu'une condition est remplie et envoie une alerte par e-mail au destinataire dsign.
Important: Si vous utilisez la version Free Edition, les didacticiels qui suivent ncessitent un dveloppement dans
un environnement test sandbox. Si vous ne dveloppez pas dans un environnement test sandbox, suivez les instructions
de l'tape Cration et connexion un environnement test sandbox la page 90. La copie de votre environnement
test sandbox ne duplique pas les enregistrements pour vous. Par consquent, une fois connect, crez de nouveau
l'enregistrement Wee Jet de l'Etape 5 : Cration d'un enregistrement Article la page 11 ainsi que le Relev de facture
de l'Etape 5 : Cration d'un enregistrement Facture la page 18.
Voir aussi :
Didacticiel n 4 : Utilisation de workflow et d'approbations
tape 8 : Test du processus d'approbation
Manuel d'utilisation Force.com | Didacticiel n 5 : Ajout d'une logique commerciale avec Apex | 41
Apex est un langage de programmation fortement typ, orient objet et de type Java qui s'excute sous Force.com. Apex
permet d'ajouter une logique commerciale programme aux applications. Par exemple, vous pouvez l'utiliser pour rdiger des
dclencheurs, des services Web et des contrleurs de programme dans la couche interface utilisateur de votre sous-application.
Vous avez dj ajout une logique commerciale en utilisant l'environnement de workflow dclaratif. Dans ce didacticiel, vous
allez crer une logique supplmentaire en utilisant le langage Apex, qui est idal pour grer de multiples enregistrements et
une logique complexe.
L'tude de cas sur laquelle nous allons nous appuyer stipule que lors de la baisse du prix d'un article, les clients bnficient de
la rduction. Pour cela, vous crez un dclencheur Apex qui met jour toutes les factures en cours ds que le prix de l'article
diminue. Un dclencheur est un ensemble de codes qui s'excutent un moment donn du cycle de vie d'un enregistrement.
Dans notre cas, vous allez crer un dclencheur qui s'excute aprs la mise jour d'un article.
Il existe deux faons de dvelopper des applications dans Force.com : vous pouvez utiliser l'environnement en ligne, comme
vous l'avez fait jusqu' prsent, ou utiliser l'IDE Force.com. Si l'IDE n'est pas install, son installation va tre prendre du
temps. Cependant, si vous matrisez l'IDE, vous connaissez les fonctionnalits Syntax highlighting (mise en vidence de la
syntaxe), Code insight (prdiction de code) et bien d'autres, qui optimisent la productivit du dveloppement, notamment en
quipe.
Remarque: Si vous utilisez la version Free Edition, l'ensemble du dveloppement doit tre effectu dans votre
environnement test sandbox. Si vous n'avez pas encore cr d'environnement test sandbox, reportez-vous Cration
et connexion un environnement test Sandbox la page 90.
Prrequis
Connaissances de base
Pour ce didacticiel, il est prfrable de matriser les notions de base de langages de programmation oriente objet tels
que Java ou C#, sans tre indispensable. Ce didacticiel peut galement tre accompli dans l'IDE Force.com, par consquent,
matriser Eclipse peut tre utile mais n'est pas indispensable.
Configuration logicielle requise
Vous pouvez utiliser l'IDE Force.com pour ce didacticiel. Dans ce cas, Eclipse 3.3 ou 3.4 et le composant IDE Force.com
sont requis : wiki.developerforce.com/index.php/Force.com_IDE. Pour crer un projet, reportez-vous Cration d'un
projet dans l'IDE Force.com la page 90.
Manuel d'utilisation Force.com | Didacticiel n 5 : Ajout d'une logique commerciale avec Apex | 42
Les autorisations Mode dveloppeur , Modifier toutes les donnes et Auteur Apex
Puisque ce didacticiel s'appuie sur le langage Apex, assurez-vous de disposer des autorisations requises pour crer des
classes Apex.
Voir aussi :
tape 1 : Cration d'une dfinition de dclencheur Apex
tape 2 : Dfinition d'une variable de liste
tape 3 : Itration sur une liste et modification du prix
tape 4 : Test du dclencheur
Rsum
5. Si vous utilisez l'interface Web, cliquez sur Enregistrement rapide, qui enregistre votre travail et vous permet de continuer.
L'enregistrement de votre travail ce stade permet galement de vrifier le code saisi, car si la syntaxe est incorrecte, le
systme n'enregistre pas.
Pour crer le dclencheur dans l'IDE Force.com :
1. Dans le Package Explorer, cliquez avec le bouton droit sur votre projet, puis cliquez sur New Apex Trigger.
2. Dans la bote de dialogue, saisissez HandleProductPriceChange pour le nommer.
3. Dans la liste droulante Object, slectionnez Article__c.
Remarque: Si cet objet ne figure pas dans la liste des objets, cliquez sur Refresh Objects (ignorez l'avertissement
relatif la slection d'une opration).
4. Slectionnez after update.
Manuel d'utilisation Force.com | Didacticiel n 5 : Ajout d'une logique commerciale avec Apex | 43
En savoir plus
Votre dclencheur ne lance aucune opration pour le moment, mais il est prt pour accepter toute logique que vous souhaitez
excuter lors de la mise jour d'un enregistrement Article. Avant de passer la logique du dclencheur, dtaillons et examinons
chaque partie de la dfinition du dclencheur.
cas.
(after update) : correspond l'action qui lance le dclencheur. Les dclencheurs Apex sont excuts en rponse des
actions sur les donnes, telles que des insertions, des mises jour et des suppressions, avant ou aprs l'un de ces vnements.
Le dclencheur que vous dfinissez est excut aprs la mise jour d'un enregistrement.
{ } : le code insr entre accolades est appel body (corps) et dtermine l'action du dclencheur. Vous allez coder le
dclencheur l'tape suivante.
Voir aussi :
Didacticiel n 5 : Ajout d'une logique commerciale avec Apex
tape 2 : Dfinition d'une variable de liste
Remarque: Pour gagner du temps, nous n'allons rien commenter ici, mais il est recommand de commenter votre
code.
2. Entre les parenthses carres, saisissez une requte qui rcupre les informations depuis votre objet personnalis Elment
de ligne.
List<El_ment_de_ligne__c> openLineItems = [SELECT j.Prix_unitaire__c, j.Article__r.Prix__c
FROM El_ment_de_ligne__c j WHERE j.Relev_de_facture__r.Statut__c = 'Ngociation' AND
j.Article__r.id IN :Trigger.new FOR UPDATE];
Manuel d'utilisation Force.com | Didacticiel n 5 : Ajout d'une logique commerciale avec Apex | 44
Remarque: Comme nous essayons d'ajuster notre exemple de code la page, il contient des sauts de ligne non
indispensables dans le code. Apex ignore les espaces, par consquent, le format de votre code peut diffrer. En
outre, Apex n'est pas sensible la casse, par consquent, vous pouvez saisir par exemple select au lieu de SELECT.
En savoir plus
La liste openLineItems contient une liste d'enregistrements de votre objet personnalis El_ment_de_ligne__c. Le
contenu de cette liste est dtermin par la requte insre entre les accolades, qui est crite en langage SOQL (Salesforce
Object Query Language). Examinons cette requte en dtails.
Voir aussi :
Didacticiel n 5 : Ajout d'une logique commerciale avec Apex
tape 1 : Cration d'une dfinition de dclencheur Apex
tape 3 : Itration sur une liste et modification du prix
3. Entre les accolades de la boucle for, saisissez le code qui met le prix jour.
for (El_ment_de_ligne__c li: openLineItems) { if ( li.Article__r.Prix__c <
li.Prix_unitaire__c ){ li.Prix_unitaire__c = li.Article__r.Prix__c; } }
Manuel d'utilisation Force.com | Didacticiel n 5 : Ajout d'une logique commerciale avec Apex | 45
4. La boucle for est termine. Vous allez maintenant mettre jour les lments de ligne. Avant la dernire accolade du
dclencheur, ajoutez le code suivant :
update openLineItems;
5. Durant le dveloppement, vous laissez le dclencheur inactif. Pour l'essayer, vous devez l'activer.
Si vous utilisez l'interface Web, slectionnez la case Est actif, qui est disponible une fois le dclencheur enregistr.
Si vous utilisez l'IDE, cliquez sur l'onglet Metadata, puis modifiez la valeur de statut en Active.
6. Vrifiez que votre code se prsente comme dans l'illustration ci-dessous, puis cliquez sur Enregistrer.
trigger HandleProductPriceChange on Article__c (after update) {
List<El_ment_de_ligne__c> openLineItems = [SELECT j.Prix_unitaire__c,
j.Article__r.Prix__c FROM El_ment_de_ligne__c j WHERE j.Relev_de_facture__r.Statut__c =
'Ngociation' AND j.Article__r.id IN :Trigger.new FOR UPDATE];
for (El_ment_de_ligne__c li: openLineItems) { if ( li.Article__r.Prix__c <
li.Prix_unitaire__c ){ li.Prix_unitaire__c = li.Article__r.Prix__c; } } update
openLineItems; }
En savoir plus
L'instruction finale, update openLineItems, met jour les enregistrements dans la base de donnes. Cette opration est
simple, mais quid de la boucle for ?
for (El_ment_de_ligne__c li: openLineItems) { } : itre sur la liste pour ouvrir l'lment de ligne. Lors de
l'itration, l'lment de ligne actuel est attribu la variable li.
if (li.Article__r.Prix__c < li.Prix_unitaire__c ) { } : vrifie si le prix de l'enregistrement de l'article
est infrieur au prix actuel. Vous souhaitez excuter une action uniquement si la condition est vraie.
li.Prix_unitaire__c = li.Article__r.Prix__c; : cette instruction finale met jour le prix unitaire dans
l'lment de ligne actuel (attribu la variable li) avec le nouveau prix de l'article.
Voir aussi :
Didacticiel n 5 : Ajout d'une logique commerciale avec Apex
tape 2 : Dfinition d'une variable de liste
tape 4 : Test du dclencheur
Manuel d'utilisation Force.com | Didacticiel n 5 : Ajout d'une logique commerciale avec Apex | 46
relev de facture sur Ngociation. Vous devez ensuite diminuer le prix unitaire d'un article utilis dans l'un des lments de
ligne de cette facture, puis vrifier que les valeurs de l'lment de ligne et de la facture sont mises jour.
1.
2.
3.
4.
5.
En savoir plus
Vous avez peut-tre remarqu que ce dclencheur est un peu dispendieux : il s'initialise puis fonctionne dans une liste de tous
les enregistrements d'lments de ligne qui appartiennent aux relevs de facture en cours de ngociation. Cependant, la mise
jour d'un enregistrement de l'article n'entrane pas systmatiquement la mise jour de l'enregistrement par le dclencheur.
Par exemple, si vous mettez jour la description de l'enregistrement de l'article ou augmentez son prix, ces conditions n'affectent
pas le dclencheur. L'idal serait que le dclencheur itre sur l'ensemble Trigger.new (la liste des enregistrements Articles
qui ont t mis jour), crant ainsi un nouvel ensemble d'enregistrements respectant le critre du prix, puis qu'il rcupre
ensuite les enregistrements d'lments de ligne associs.
Voir aussi :
Didacticiel n 5 : Ajout d'une logique commerciale avec Apex
tape 3 : Itration sur une liste et modification du prix
Rsum
Rsum
Dans ce didacticiel, vous avez dvelopp l'application en ajoutant une logique commerciale qui met jour toutes les factures
en cours lorsque le prix unitaire d'un article diminue. Pour cela, vous avec dfini un dclencheur qui s'excute ds qu'un
enregistrement d'article est sauvegard avec un prix unitaire infrieur. Les dclencheurs sont trs utiles dans des scnarios tels
que la mise jour de multiples enregistrements dans des conditions particulires. Plusieurs dclencheurs peuvent tre associs
un objet dclencher en fonction d'vnements et de conditions diffrents.
Lors de la cration de dclencheurs Apex, il est important de disposer de tests automatiques qui vrifient leur fonctionnement.
Vous allez apprendre comment effectuer un test dans le Didacticiel n6 : Ajout de tests l'application la page 47.
Voir aussi :
Didacticiel n 5 : Ajout d'une logique commerciale avec Apex
tape 4 : Test du dclencheur
Les test reprsente l'une des tapes les plus importantes dans le dveloppement d'une application. Il permet de vrifier le
comportement de votre code, en s'assurant qu'il n'abuse pas des ressources disponibles. Le test est bnfique pour vous (il
permet d'avoir confiance dans les applications que vous crivez), mais il est galement bnfique pour la plate-forme. De son
ct, la plate-forme ncessite de tester tout code Apex que vous crivez avant de le dployer dans un environnement de
production. Des tests sont galement excuts avant la publication d'une nouvelle version de la plate-forme, afin de vrifier
l'absence de tout problme de rtrocompatibilit.
Pour faciliter le test, Apex prend en charge des tests d'unit, qui valident la programmation du comportement du code ainsi
que les rsultats attendus. Tout code Apex inclut un ensemble de limites qui dtermine la quantit de ressources consommes.
Par exemple, le nombre de requtes excutables dans un dclencheur est limit. Les tests de bonne qualit valident le
comportement du code, mais vrifient galement qu'il ne dpasse pas ces limites. Dans ce didacticiel, vous allez crire et
excuter un test d'unit, qui essaie le dclencheur Apex que vous venez de crer.
Prrequis
Didacticiel Apex
Vous devez crer un dclencheur Apex en suivant les instructions du Didacticiel n 5 : Ajout d'une logique commerciale
avec Apex la page 41.
Configuration logicielle requise
Vous pouvez utiliser l'IDE Force.com pour ce didacticiel. Dans ce cas, Eclipse 3.3 ou 3.4 et le composant IDE Force.com
sont requis : wiki.developerforce.com/index.php/Force.com_IDE. Pour crer un projet, reportez-vous Cration d'un
projet dans l'IDE Force.com la page 90.
Voir aussi :
tape 1 : Cration d'une classe de test Apex
tape 2 : Ajout de mthodes de test la classe
tape 3 : Ecriture du code excutant le dclencheur
tape 4 : Excution du test
tape 5 : Affichage de la couverture de code et amlioration des tests
Rsum
Dans l'IDE, cliquez avec le bouton droit sur le dossier de votre projet. Cliquez ensuite sur New Apex Class.
Dans la page Create Apex Class, saisissez TestHandleProductPriceChange pour la nommer.
Dans le champ Template, slectionnez Test Class.
Cliquez sur Finish pour crer la classe.
En savoir plus
L'annotation @isTest indique Force.com que tout le code compris dans la classe Apex permet de tester le reste de votre
code. Vous allez ensuite crer des mthodes de test dans cette classe, qui excutent les tests.
Voir aussi :
Didacticiel n 6 : Ajout de tests l'application
tape 2 : Ajout de mthodes de test la classe
2. Entre les accolades, insrez le code ci-dessous, qui cre un relev de facture et l'insre dans la base de donnes.
Relev_de_facture__c invoice = new Relev_de_facture__c(Statut__c = 'Ngociation'); insert
invoice;
3. Sous insert invoice, ajoutez le code qui cre les enregistrements d'articles.
Article__c[] products = new Article__c[]{ new Article__c(Name = 'item 1', Description__c
= 'test product 1', Prix__c = 10, Inventaire_total__c = 10), new Article__c(Name = 'item
2', Description__c = 'test product 2', Prix__c = 11, Inventaire_total__c = 10) }; insert
products;
4. Sous insert products, saisissez le code pour ajouter des lments de ligne.
El_ment_de_ligne__c[] lineItems = new El_ment_de_ligne__c[] { new
El_ment_de_ligne__c(Relev_de_facture__c = invoice.id, Article__c = products[0].id,
Prix_unitaire__c = 10, Unit_s_vendues__c = 3), new El_ment_de_ligne__c(Relev_de_facture__c
= invoice.id, Article__c = products[1].id, Prix_unitaire__c = 11, Unit_s_vendues__c =
6) }; insert lineItems;
Vous venez de configurer les donnes. Notez le statut du relev de facture, que vous avez cr, dfini sur Ngociation, qui
correspond la condition requise pour lancer le dclencheur. Vous devez maintenant crire le code qui doit remplir les autres
conditions requise pour le dclencheur : vous devez diminuer le prix d'un article. Vous allez le faire l'tape suivante.
Voir aussi :
Didacticiel n 6 : Ajout de tests l'application
tape 1 : Cration d'une classe de test Apex
tape 3 : Ecriture du code excutant le dclencheur
Remarque: Ce code modifie le prix d'une enregistrement Article, en l'augmentant. Il appelle ensuite startTest(),
qui fait partie du framework de test et marque dans le code le dbut de votre test. Le systme ne considre pas le
code de configuration et les oprations de base de donnes qui prcdent comme faisant partie du test. Le test
permet galement de vrifier que votre code ne dpasse pas certaines limites administratives, qui dfinissent les
ressources que votre code Apex peut utiliser. Lorsque le dbut et la fin du test sont marqus, le systme ne prend
pas en compte votre code de configuration dans les limites administratives, ce qui permet de reflter avec plus de
prcision comment le code se comporterait dans un environnement de production.
2. Vous venez de mettre jour les produits. Vous devez maintenant vrifier si le prix des lments de ligne a chang. Il ne
devrait pas avoir chang, car le prix a augment dans le code de configuration. Ajoutez le code suivant aprs
Test.stopTest();
lineItems = [SELECT id, prix_unitaire__c FROM El_ment_de_ligne WHERE id IN :lineItems];
system.assert(lineItems[0].prix_unitaire__c == 10);
3. Vrifiez que votre code se prsente comme dans l'illustration ci-dessous, puis cliquez sur Enregistrer.
@isTest private class TestHandleProductPriceChange {
static testMethod void testPriceChange() { Relev_de_facture__c invoice = new
Relev_de_facture__c (Statut__c = 'Ngociation'); insert invoice;
Article__c[] products = new Article__c[]{ new Article__c(Name = 'item 1',
Description__c = 'test product 1', Prix__c = 10, Inventaire_total__c = 10), new
Article__c(Name = 'item 2', Description__c = 'test product 2', Prix__c = 11,
Inventaire_total__c = 10) }; insert products; El_ment_de_ligne__c[] lineItems = new
El_ment_de_ligne__c[] { new El_ment_de_ligne__c(Relev_de_facture__c = invoice.id,
Article__c = products[0].id, Prix_unitaire__c = 10, Unit_s_vendues__c = 3), new
El_ment_de_ligne__c(Relev_de_facture__c = invoice.id, Article__c = products[1].id,
Prix_unitaire__c = 11, Unit_s_vendues__c = 6) }; insert lineItems;
products[0].prix__c = 20; Test.startTest(); update products; Test.stopTest();
lineItems = [SELECT id, prix_unitaire__c FROM El_ment_de_ligne WHERE id IN
:lineItems]; system.assert(lineItems[0].prix_unitaire__c == 10);
Voir aussi :
Didacticiel n 6 : Ajout de tests l'application
tape 2 : Ajout de mthodes de test la classe
tape 4 : Excution du test
Il indique si vos tests ont russi ou non. Si la condition boolenne de l'instruction system.assert, que vous avez ajoute
au test, avait chou, ce rsultat serait indiqu ici. L'ajout de nombreuses assertions est une mthode efficace pour test le
comportement attendu de votre code.
Il renvoie des informations sur l'excution du test. En parcourant le journal de dbogage, vous pouvez par exemple constater
que votre rgle de validation Commande_en_stock a t dclenche. Vous pouvez observer les enregistrements crs, le
nombre de requtes excutes et davantage.
Il indique la couverture du code : le nombre de lignes de code excutes dans d'autres classes ou dclencheurs.
Notez galement que le rsultat indique une couverture de 80 % pour le dclencheur HandleProductPriceChange. Cette
couverture est suffisante pour le dploiement, mais nous recherchons la perfection. l'tape suivante, nous allons afficher la
couverture du code afin de dtecter les emplacements auxquels vous devez ajouter des tests pour obtenir un taux de 100 %.
Voir aussi :
Didacticiel n 6 : Ajout de tests l'application
tape 3 : Ecriture du code excutant le dclencheur
tape 5 : Affichage de la couverture de code et amlioration des tests
Remarque: Si vous utilisez l'IDE Force.com pour ce didacticiel, continuez avec l'IDE. Le dveloppement simultan
dans l'IDE et dans l'interface Web ncessite une synchronisation avec le serveur chaque passage de l'une l'autre.
La synchronisation est aise, il suffit de cliquer avec le bouton droit sur votre classe et de slectionner Force.com
Synchronize with Server, mais il est encore plus facile de s'en passer !
1. Dans la section Couverture de code, cliquez sur 80.
2. La page Couverture de code s'ouvre. Le surlignage bleu marque les lignes de code qui ont t couvertes (excutes) selon
notre mthode de test. Le surlignage rouge marque les lignes qui n'ont pas t excutes. Dans notre cas, le ligne 12 n'a pas
t excute car nous ne diminuons pas le prix d'un article, mais nous l'augmentons.
3. Cette ligne rouge indique clairement que votre test n'est pas complet. Modifions maintenant la mthode de test afin
d'amliorer la couverture de code. Fermez le fentre Couverture de code, puis cliquez sur Configuration Dvelopper
Classes Apex et slectionnez votre classe de test TestHandleProductPriceChange.
4. Cliquez sur Modifier.
5. Remplacez le code compris entre products[0] et l'accolade suivante par le code ci-dessous :
products[0].prix__c = 20; // augmenter le prix products[1].prix__c = 5;
prix Test.startTest(); update products; Test.stopTest();
// diminuer le
Voir aussi :
Didacticiel n 6 : Ajout de tests l'application
tape 4 : Excution du test
Rsum
Rsum
Dans ce didacticiel, vous avez cr des tests pour le dclencheur Apex et observ comment les outils de test intgrs peuvent
aider obtenir une couverture de code de 100 %. La cration de tests d'units lors du dveloppement est ncessaire pour le
dploiement et reprsente aussi l'une des cls de la russite long terme d'un dploiement.
Il est toutefois important de noter que la couverture de code n'est pas le seul objectif d'un test. Vous devez galement valider
tous les scnarios possibles et il en manque un au test que vous venez de crer. En l'tat, le test vrifie uniquement les relevs
de facture dont le statut est Ngociation. Il devrait galement contrler les autres valeurs de statut. Par exemple, si le statut
d'un relev de facture n'est pas Ngociation, l'augmentation ou la diminution du prix ne devrait avoir aucun effet.
Voir aussi :
Didacticiel n 6 : Ajout de tests l'application
tape 5 : Affichage de la couverture de code et amlioration des tests
Manuel d'utilisation Force.com | Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce | 54
Visualforce est un framework (cadre d'applications) d'interface utilisateur base sur des composants pour la plate-forme
Force.com. Dans les didacticiels prcdents, nous avons labor et tendu votre application en utilisant une interface utilisateur
gnre automatiquement. Visualforce offre beaucoup plus de contrle sur l'interface utilisateur grce un cadre d'affichage
qui comprend un langage de balisage semblable l'HTML, une bibliothque de composants rutilisables, qui peuvent tre
tendue, et un modle de contrleur bas sur un Apex. Visualforce prend en charge le style Model-View-Controller (MVC)
pour la conception de l'interface utilisateur, qui est trs flexible.
Dans ce didacticiel, vous allez utiliser Visualforce afin de crer une nouvelle interface utilisateur pour l'application Entrept,
qui affiche une feuille d'inventaire permettant de rpertorier chaque article en stock et de mettre jour les quantits. L'objectif
de la feuille d'inventaire est de mettre jour le systme informatique avec les dcomptes physiques des articles, s'ils changent.
Prrequis
Connaissances de base
Pour ce didacticiel, il est prfrable de matriser les langages de balisage tels que HTML et XML, sans tre indispensable.
Voir aussi :
tape 1 : Activation du Mode de dveloppement de Visualforce
tape 2 : Cration d'une page Visualforce
tape 3 : Ajout d'une ressource statique Feuille de style
tape 4 : Ajout d'un contrleur la page
tape 5 : Affichage de la Feuille d'inventaire en tant que page Visualforce
Rsum
Manuel d'utilisation Force.com | Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce | 55
Voir aussi :
Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce
tape 2 : Cration d'une page Visualforce
Manuel d'utilisation Force.com | Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce | 56
4. Changez le terme Congratulations de la balise <h1> en Feuille d'inventaire et supprimez les commentaires.
Le code de la page doit se prsenter comme suit :
<apex:page>
<h1>Feuille d'inventaire</h1>
</apex:page>
5. Cliquez sur l'icne Enregistrer en haut de la fentre Page Editor. La page est recharge pour appliquer vos modifications.
En savoir plus
Notez que le code de la page est trs semblable un code HTML. Une page Visualforce combine des balises HTML, telles
que <h1>, des balises Visualforce spcifiques commenant par <apex:>
Voir aussi :
Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce
tape 1 : Activation du Mode de dveloppement de Visualforce
tape 3 : Ajout d'une ressource statique Feuille de style
Manuel d'utilisation Force.com | Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce | 57
4. Cliquez sur Parcourir, puis recherchez le fichier Styles.zip que vous venez de tlcharger.
5. Dans la liste de slection Contrle du cache, slectionnez Public.
3. Vous devez maintenant indiquer la page l'emplacement de la feuille de style. Insrez une ligne sous la premire balise
<apex:page>, puis tapez <apex:
4. L'diteur est dot d'une fonction de mise en vidence de la syntaxe, qui affiche une liste droulante d'lments disponibles
dans ce contexte. Commencez taper stylesheet, puis slectionnez apex:stylesheet lorsque le code s'affiche dans
la liste droulante.
Manuel d'utilisation Force.com | Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce | 58
Notez la nouvelle prsentation de la page avec une police et un emplacement diffrents pour le titre, et l'absence d'en-tte et
de menu latral.
En savoir plus
Examinons plus en dtails le code de la feuille de style.
$Resources est une variable globale laquelle Visualforce a accs. $Resource.styles permet de rfrencer la ressource
Voir aussi :
Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce
tape 2 : Cration d'une page Visualforce
tape 4 : Ajout d'un contrleur la page
4. Cliquez sur l'icne Enregistrer en haut de la fentre Page Editor. La page n'affiche aucune modification. Cependant, vous
avez indiqu que la page doit utiliser un contrleur et dfini la variable products. Par consquent, la variable sera disponible
dans le corps de la page et reprsentera une liste d'enregistrements Article.
Manuel d'utilisation Force.com | Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce | 59
En savoir plus
L'attribut recordSetVar active un contrleur de liste standard qui fournit une prise en charge de contrleur supplmentaire
pour rpertorier un nombre d'enregistrements avec la pagination. Sa valeur, que vous avez dfinie sur products , permet
d'inclure une nouvelle variable, products, l'ensemble des enregistrements afficher dans la page Visualforce.
Voir aussi :
Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce
tape 3 : Ajout d'une ressource statique Feuille de style
tape 5 : Affichage de la Feuille d'inventaire en tant que page Visualforce
5. Vous allez maintenant dfinir chaque colonne, puis dterminer l'origine des donnes en recherchant le champ appropri
dans la variable pitem. Ajoutez le code suivant entre les balises dataTable ouvrante et fermante.
<apex:dataTable value="{!products}" var="pitem" rowClasses="odd,even"> <apex:column
headerValue="Produit"> <apex:outputText value="{!pitem.name}"/> </apex:column>
</apex:dataTable>
L'attribut headerValue a simplement fourni un titre d'en-tte pour la colonne, qui est suivi d'une liste de lignes : une
ligne pour chaque enregistrement d'article. L'expression {!pitem.name} indique que vous souhaitez afficher le champ
de nom sur la ligne actuelle.
Manuel d'utilisation Force.com | Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce | 60
7. Ajoutez maintenant deux colonnes supplmentaires aprs la balise fermante de la premire colonne.
<apex:column headerValue="Inventaire"> <apex:outputField
value="{!pitem.Inventaire_total__c}"/> </apex:column> <apex:column headerValue="Dcompte
physique"> <apex:inputField value="{!pitem.Inventaire_total__c}"/> </apex:column>
Remarque: La deuxime colonne est un champ inputField, pas outputField. Le champ inputField affiche
une valeur, mais il permet galement de la modifier.
8. Cliquez sur Enregistrer pour gnrer une feuille d'inventaire ! Elle rpertorie les enregistrements d'articles, affiche l'inventaire
actuel et fournit un champ de saisie pour le dcompte physique.
9. Pour parfaire la prsentation, ajoutez un bouton permettant de modifier le dcompte physique de n'importe quelle ligne,
puis actualisez les valeurs de la page. Pour cela, saisissez le code suivant directement au-dessus de la ligne </apex:form>.
<br/> <apex:commandButton action="{!quicksave}"
En savoir plus
Le composant dataTable produit un tableau avec des lignes, chaque ligne tant trouve en effectuant une itration sur
la liste. La contrleur standard que vous utilisez pour cette page a t dfini sur Article__c et recordSetVar a t
dfini sur products. Le contrleur renseigne ainsi automatiquement la variable de la liste de produits avec les
enregistrements d'articles rcuprs dans la base de donnes. Le composant dataTable utilise cette liste.
Vous devez rfrencer la ligne actuelle pendant que vous effectuez une itration sur la liste. Cette instruction var="pitem"
attribue une variable appele pitem qui contient la ligne actuelle.
Les attributs rowClasses et styleClass utilisent simplement certains styles de la feuille CSS que vous avez charge
dans la ressource statique. Vous pouvez les retirer sans risque, seule la prsentation en souffrira !
Chaque contrleur standard dispose de diverses mthodes pour tous les objets Force.com. Le composant commandButton
affiche le bouton et invoque une mthode appele quicksave dans le contrleur standard, qui met jour les valeurs dans
les enregistrements. Ici, vous mettez jour le dcompte physique du produit et procdez un enregistrement rapide, qui
actualise le produit avec le nouveau dcompte.
La mise en page n'est pas prsente dans cet exemple, mais la fonctionnalit existe. Si vous disposez d'un nombre
d'enregistrements parcourir suffisant, ajoutez le code suivant sous commandButton pour l'action de page-flipping
(tournage de page).
<apex:commandLink action="{!next}" value="Suivant" rendered="{!hasNext}" />
Voir aussi :
Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce
tape 4 : Ajout d'un contrleur la page
Rsum
Manuel d'utilisation Force.com | Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce | 61
Rsum
Flicitations ! Vous avez cr une nouvelle interface pour votre application Entrept en crant une page Visualforce qui utilise
un contrleur standard. Votre page est hautement configurable. Par exemple, vous pouvez aisment changer les donnes
affiches dans chaque ligne en modifiant les composants de la colonne. La page utilise galement de nombreuses fonctionnalits
fournies en arrire-plan par le contrleur standard. Par exemple, le contrleur interroge automatiquement la base de donnes
pour rechercher tous les enregistrements d'articles et les attribuer la variable products. Il fourni galement un outil de
sauvegarde des donnes via l'enregistrement rapide.
Vous avez cr quelques composants Visualforce. Vous pouvez dsormais publier ces fonctionnalits dans un site Web. Vous
allez dcouvrir cette tape dans le Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites.
Voir aussi :
Didacticiel n 7 : laboration d'une interface utilisateur personnalise en utilisant Visualforce
tape 5 : Affichage de la Feuille d'inventaire en tant que page Visualforce
Manuel d'utilisation Force.com | Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites | 62
L'application que vous venez de crer ncessite que vous vous connectiez pour l'utiliser. Bien que Force.com prenne en charge
votre application dans un environnement multi-utilisateurs, vous devez parfois liminer la connexion, par exemple sur un site
Web public.
Les Sites permettent de crer des sites Web publics et des applications directement intgrs votre organisation sans que les
utilisateurs se connectent avec un nom d'utilisateur et un mot de passe. Vous pouvez publier des informations stockes dans
votre organisation via l'URL de marque de votre choix. Vous pouvez galement adapter la prsentation des pages du site la
marque de votre organisation. Les sites tant hbergs sur des serveurs Force.com, aucun problme d'intgration ne se pose.
Puisque les sites sont crs sur des pages natives, la validation des donnes dans les informations collectes est automatiquement
excute. Vous pouvez galement permettre aux utilisateurs de s'inscrire, ou de se connecter, de faon transparente un portail
associ depuis votre site public.
Dans ce didacticiel, vous allez crer une page Visualforce, activer des Sites pour votre organisation, enregistrer votre nom de
domaine Force.com et publier la page Visualforce que vous avez cre en tant que catalogue de produits public en ligne.
Prrequis
Didacticiel Visualforce
Vous devez crer la page Visualforce en suivant les instructions du Didacticiel n 7 : laboration d'une interface utilisateur
personnalise en utilisant Visualforce la page 54.
Voir aussi :
tape 1 : Cration d'une page de catalogue de produits
tape 2 : Enregistrement d'un nom de domaine Force.com
tape 3 : Cration d'un site Force.com
tape 4 : Configuration et test du site
Rsum
Manuel d'utilisation Force.com | Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites | 63
1. Cliquez sur Configuration Dvelopper Pages. Si l'diteur Visualforce est toujours ouvert, cliquez sur le bouton
Retour de votre navigateur jusqu' la page Configuration.
2. Slectionnez la page Feuille_Inventaire que vous avez cre.
3. Cliquez sur Cloner.
4. Dans l'diteur Page Editor, changez les champs tiquette et Nom en Catalogue.
5. Toujours dans l'diteur Page Editor, modifiez le contenu de la balise <h1> en Catalogue de produits.
6. Recherchez le lignes suivantes :
<apex:column headerValue="Inventaire"> <apex:outputField
value="{!pitem.Inventaire_total__c}"/> </apex:column>
8. Vous allez maintenant effectuer des modifications similaires dans la colonne suivante pour afficher le prix. Changez
Dcompte physique en Prix. Changez inputfield en outputfield. Changez Inventaire_total__c en
Prix__c, comme indiqu ci-dessous.
<apex:column headerValue="Prix"> <apex:outputField value="{!pitem.Prix__c}"/>
</apex:column>
9. Pour terminer, supprimez les balises <apex:form> ouvrante et fermante, et <apex:commandButton>, car vous ne
souhaitez pas accepter de saisie dans cette page.
10. Vrifiez que votre code se prsente comme indiqu ci-dessous, puis cliquez sur Enregistrer.
<apex:page standardStylesheets="false" showHeader="false" sidebar="false"
standardController="Article__c" recordSetVar="products">
<apex:stylesheet value="{!URLFOR($Resource.styles, 'styles.css')}" />
<h1>Catalogue de produits</h1>
<apex:dataTable value="{!products}" var="pitem" rowClasses="odd,even"> <apex:column
headerValue="Produit"> <apex:outputText value="{!pitem.name}"/> </apex:column> <apex:column
headerValue="Description"> <apex:outputField value="{!pitem.Description__c}"/>
</apex:column> <apex:column headerValue="Prix"> <apex:outputField
value="{!pitem.Prix__c}"/> </apex:column> </apex:dataTable>
</apex:page>
En savoir plus
ce stade, notez plusieurs points importants.
De nombreux composants de la plate-forme Force.com peuvent tre clons et, comme vous l'avez constat, le clonage d'une
page Visualforce est ais.
Les contrleurs standard de la page Visualforce rendent toutes vos donnes aisment accessibles. Il suffit de modifier deux
valeurs dans le tableau pour afficher les donnes de champs diffrents.
Manuel d'utilisation Force.com | Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites | 64
Avez-vous remarqu qu'il est facile de modifier un champ d'entre en champ de sortie ? Le contrleur standard Visualforce
est puissant, mais vous pouvez l'tendre pour crer des fonctionnalits personnalises, et vous pouvez mme crer votre
propre contrleur.
Voir aussi :
Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites
tape 2 : Enregistrement d'un nom de domaine Force.com
Voir aussi :
Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites
tape 1 : Cration d'une page de catalogue de produits
tape 3 : Cration d'un site Force.com
Manuel d'utilisation Force.com | Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites | 65
Voir aussi :
Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites
tape 2 : Enregistrement d'un nom de domaine Force.com
tape 4 : Configuration et test du site
Manuel d'utilisation Force.com | Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites | 66
s'affiche. Le visiteur anonyme du site Web n'est pas encore autoris visualiser les donnes prsentes dans la page.
Corrigeons ce problme. Revenez la page de configuration.
3. Cliquez sur le lien tiquette du site, qui doit se nommer Catalogue.
4. Cliquez sur Paramtres d'accs public, puis cliquez sur Modifier dans la section Dtails du profil.
5. Accdez la section Autorisations de l'objet personnalis, puis slectionnez l'autorisation Lecture pour l'objet Articles.
Remarque: Si un message d'autorisation requise s'affiche, vous n'avez probablement pas activ votre Page
d'accueil du site actif sur Catalogue l'tape prcdente.
En savoir plus
Vous avez attribu une page Visualforce unique au site et vous l'avez dfinie comme page d'accueil de ce site. Vous pouvez
maintenant crer des pages Visualforce supplmentaires et les attribuer galement au site. Par exemple, si vous ajoutez la
page Meme au site, vous pouvez accder cette page avec une URL semblable
http://workbook-developer-edition.na1.force.com/Meme (selon votre nom domaine bien entendu).
Force.com enregistre le nombre de vues de page d'un site Developer Edition et lui impose une limite de bande passante
quotidienne.
Manuel d'utilisation Force.com | Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites | 67
Les Sites permettent d'utiliser un serveur de distribution de contenu global afin d'accder et de mettre en cache rapidement
les pages de votre site dans des environnements de production. Il vous suffit de modifier le composant page pour insrer
une instruction cache.
<apex:page cache="true" expires="600">
Voir aussi :
Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites
tape 3 : Cration d'un site Force.com
Rsum
Rsum
Flicitations, vous avez cr un site Web public ! Tout internaute dans le monde peut accder au site que vous venez de crer,
et parcourir votre page d'accueil. Pour crer le site, vous avez clon une page Visualforce, puis activ votre organisation Developer
Edition pour la fonctionnalit Sites. Vous avez ensuite enregistr un nom de domaine Force.com unique, enregistr la page
comme page d'accueil, modifi la scurit et test le site pour vrifier son fonctionnement.
Vous disposez d'un site avec un catalogue de produits. L'tape logique suivante est de permettre aux personnes de commander
des articles. Vous allez le faire dans le Didacticiel n 9 : Cration d'une boutique la page 68.
Voir aussi :
Didacticiel n 8 : Cration d'une page Web publique en utilisant les Sites
tape 4 : Configuration et test du site
Apex est un langage de programmation orient objet. Apex permet de crer des classes et des mthodes, de faire des appels
la base de donnes, de crer de services Web, d'envoyer des e-mails et davantage. Dans ce didacticiel, vous allez crer une
simple page d'une boutique Visualforce utilisant un contrleur que vous allez crire en Apex. Vous allez galement crer une
classe Apex, dcouvrir une autre syntaxe Apex et apprendre comment transmettre des valeurs entre une page Visualforce et
son contrleur.
Prrequis
Sous-application Entrept
Vous devez commencer par crer une application Entrept de base en suivant les instructions du Didacticiel n 2 : Ajout
de relations la page 13.
Configuration logicielle requise
Vous pouvez utiliser l'IDE Force.com pour ce didacticiel. Dans ce cas, Eclipse 3.3 ou 3.4 et le composant IDE Force.com
sont requis : wiki.developerforce.com/index.php/Force.com_IDE. Pour crer un projet, reportez-vous Cration d'un
projet dans l'IDE Force.com la page 90.
Les autorisations Mode dveloppeur , Modifier toutes les donnes et Auteur Apex
Puisque ce didacticiel s'appuie sur le langage Apex, assurez-vous de disposer des autorisations requises pour crer des
classes Apex.
Voir aussi :
tape 1 : Cration d'un contrleur
tape 2 : Ajout de mthodes au contrleur
tape 3 : Cration de la boutique
tape 4 : Bonus - Mise jour de la page avec AJAX
Rsum
Votre boutique rudimentaire va inclure deux mthodes : getProducts(), qui renvoie les produits affichs dans votre boutique,
et shop(), qui s'excute lorsque les produits ont t slectionns.
Pour crer une classe dans l'interface Web :
1. Cliquez sur Configuration Dvelopper Classes Apex.
2. Cliquez sur Nouveau.
3. Ajoutez le code suivant comme dfinition de la classe, puis cliquez sur Enregistrement rapide.
public class Boutique {
}
Voir aussi :
Didacticiel n 9 : Cration d'une boutique
tape 2 : Ajout de mthodes au contrleur
2. Dans la classe actuelle ( la ligne suivante), dfinissez un champ qui contient une liste de DisplayMerchandise, ainsi
qu'une classe interne appele DisplayMerchandise pour contenir les donnes.
DisplayMerchandise[] products; public class DisplayMerchandise { public Article__c
merchandise { get; set; } public Decimal count { get; set; } public
DisplayMerchandise(Article__c item) { this.merchandise = item; } }
4. Vrifiez que votre code se prsente comme indiqu ci-dessous, puis cliquez sur Enregistrer.
public class Boutique { public PageReference shop() { return null; }
DisplayMerchandise[] products;
public class DisplayMerchandise { public Article__c merchandise { get; set; } public
Decimal count { get; set; } public DisplayMerchandise(Article__c item) { this.merchandise
= item; } }
public DisplayMerchandise[] getProducts() { if (products == null) { products = new
DisplayMerchandise[]{}; for (Article__c item : [SELECT id, name, description__c, prix__c
FROM Article__c WHERE Inventaire_total__c > 0]) { products.add(new
DisplayMerchandise(item)); } } return products; } }
Vous avez dsormais termin la dfinition d'un simple contrleur. Il utilise des classes et des mthodes Apex standard pour
accder la base de donnes.
En savoir plus
La classe DisplayMerchandise enveloppe le type Article que vous avez dj dans la base de donnes, en ajoutant un
nouveau champ dcimal. Le constructeur vous permet de crer une instance DisplayMerchandise en passant un
enregistrement Article existant. La variable d'instance products est dfinie en tant que liste d'instances DisplayMerchandise.
La mthode getProducts() excute une requte (le texte entre crochets, galement appele requte SOQL) qui renvoie
tous les enregistrements Articles dont l'inventaire total est positif. Elle itre ensuite sur les enregistrements renvoys par la
requte, en les ajoutant une liste de produits DisplayMerchandise qui est ensuite renvoye.
Voir aussi :
Didacticiel n 9 : Cration d'une boutique
tape 1 : Cration d'un contrleur
tape 3 : Cration de la boutique
Remarque: L'attribut controller="Boutique" indique la page Visualforce que vous crez d'utiliser la classe
Apex Boutique pour son contrleur.
5. Vous tes prt insrer le contenu du formulaire entre les balises form ouvrante et fermante. Vous allez crer un tableau
qui itre sur les produits et un bouton qui appelle la mthode shop. Saisissez le code ci-dessous la ligne suivante, entre
les balises form ouvrante et fermante :
<apex:dataTable value="{!products}" var="pitem" rowClasses="odd,even"> <apex:column
headerValue="Produit"> <apex:outputText value="{!pitem.merchandise.name}"/> </apex:column>
<apex:column headerValue="Prix"> <apex:outputText value="{!pitem.merchandise.prix__c}"/>
</apex:column> <apex:column headerValue="Quantit"> <apex:inputText
value="{!pitem.count}"/> </apex:column> </apex:dataTable> <br /> <apex:commandButton
action="{!shop}" value="Acheter" />
6. Cliquez sur Enregistrer. Votre Boutique doit se prsenter comme dans l'illustration ci-dessous.
En savoir plus
Nous avons utilis ici de nombreux lments. Examinons-les plus en dtails.
L'attribut de valeur dataTable est dfini sur products , qui indique que le tableau doit itrer sur une liste appele
products. Puisque vous utilisez un contrleur personnalis, Visualforce recherche automatiquement une mthode appele
getProducts() dans votre contrleur Apex.
La mthode getProducts() de votre contrleur renvoie une grappe d'objets DisplayMerchandise. Chaque grappe
forme une nouvelle ligne et est attribue la variable pitem de la page Visualforce durant l'itration de dataTable.
La page Visualforce contient une action, {!shop}. Comme il s'agit d'une action, une mthode portant un nom identique
est utilise dans le contrleur Apex.
Voir aussi :
Didacticiel n 9 : Cration d'une boutique
tape 2 : Ajout de mthodes au contrleur
tape 4 : Bonus - Mise jour de la page avec AJAX
Vous venez de crer un volet de sortie identifi par msg, qui affiche un article partir du contrleur appel "message",
qui n'est pas encore cr.
4. Cliquez sur Enregistrer. L'diteur indique que vous n'avez aucune mthode ou proprit appele message et vous invite
en crer une.
5. Cliquez sur Crer une proprit Apex 'Boutique.message'.
Vous avez modifi la page Visualforce afin d'utiliser une mise jour AJAX existante. Elle met jour le volet identifi par "msg"
aprs avoir appel la mthode shop() du contrleur. Modifiez maintenant la mthode shop() afin de mettre jour la
proprit du message affiche dans le volet avec une liste d'lments slectionns.
1. Cliquez sur l'onglet Contrleur en regard de l'onglet Page Editor.
2. Recherchez la mthode shop() (lignes 4 6) et remplacez-la avec le code suivant :
public PageReference shop() { message = 'Vous avez achet : '; for (DisplayMerchandise
p: products) { if (p.count > 0) { message += p.merchandise.name + ' (' + p.count + ')
'; } } return null; }
Remarque: Notez que ce code utilise simplement la variable products. Visualforce s'assure automatiquement
que les donnes modifies dans l'interface utilisateur sont refltes par les donnes de la variable products.
3. Cliquez sur l'icne Enregistrer.
4. Testez maintenant le panier d'achat. Ajoutez une quantit un article, puis cliquez sur Acheter. Notez le champ de texte
qui s'affiche sous la liste des articles, indiquant la quantit de produits achets.
En savoir plus
Ce simple ajout prsente de nombreuses fonctionnalits puissantes.
Comme vous l'avez vu dans cette tape, Visualforce a automatiquement reflt les modifications apportes aux donnes
du formulaire dans la variable products. Cette fonctionnalit est trs puissante et permet d'laborer rapidement des formulaires
et d'autres pages de saisie complexes.
Lorsque vous cliquez sur le bouton Acheter, le volet est mis jour sans actualisation complte de l'cran. L'effet AJAX,
qui ncessite gnralement une manipulation JavaScript complexe, a t ralis avec un simple attribut reRender.
Voir aussi :
Didacticiel n 9 : Cration d'une boutique
tape 3 : Cration de la boutique
Rsum
Rsum
Apex est un langage puissant de programmation oriente objet, qui comprend de nombreuses fonctionnalits habituellement
disponibles dans des langages similaires tels que Java. Dans ce didacticiel, vous avez cr une classe Apex et utilis quelques
fonctionnalits du langage, telles que les grappes, l'itration et l'interrogation de la base de donnes. Si vous avez effectu
l'tape bonus, vous avez modifi la page Visualforce pour utiliser les donnes renvoyes au contrleur afin d'afficher un message
en utilisant une mise jour AJAX, sans actualisation de la page entire.
Vous pouvez ensuite crer un portail authentifi pour permettre aux personnes de se connecter votre site, de crer un nom
d'utilisateur et un mot de passe, et d'acheter des articles. Pour cela, vous devez crer un portail, que nous ne prsentons pas
dans ce manuel. Nous avons toutefois inclus des tapes dtailles pour prsenter la cration d'un portail fonctionnant avec la
sous-application que vous avez cre. Visitez la page developer.force.com/workbook pour consulter le didacticiel consacr au
portail et d'autres complments ce manuel.
Vous pouvez galement distribuer votre sous-application en l'intgrant un package publier ou en la dployant dans une
organisation de production. Pour plus d'informations, reportez-vous Distribution de votre application la page 91.
Voir aussi :
Didacticiel n 9 : Cration d'une boutique
tape 4 : Bonus - Mise jour de la page avec AJAX
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 75
Adobe Flash Builder for Force.com est un ensemble d'outils qui permet de dvelopper des sous-applications Force.com Stratus,
applications de bureau fonctionnant sous l'environnement Adobe Integrated Runtime (AIR), qui exploitent la logique et les
capacits de base de donnes Force.com. Les sous-applications Force.com Stratus peuvent fonctionner en ligne et hors ligne.
Elles sont par consquent idales pour les utilisateurs qui ne disposent pas toujours d'une connexion Internet, mais qui doivent
accder aux donnes de vos sous-applications Force.com.
Ce didacticiel montre comment utiliser Adobe Flash Builder for Force.com afin de crer une sous-application Force.com
Stratus de base appele Suivi inventaire, qui fournit un accs hors ligne aux donnes des articles. La sous-application doit
permettre aux responsables d'effectuer un suivi d'inventaire sur des Tablet PC lorsqu'ils se dplacent dans un entrept quip
d'une connexion Wi-Fi irrgulire. Elle inclura les fonctionnalits de sous-application Force.com Stratus standard ci-dessous.
Un cran de connexion qui demande aux utilisateurs leurs identifiants et tablit une connexion avec Force.com lorsqu'ils
sont en ligne.
Une interface de rsolution des conflits permettant aux utilisateurs de grer aisment les conflits qui se produisent lorsque
les valeurs de la sous-application Force.com Stratus violent les rgles de validation ou sont en conflit avec les modifications
effectues par d'autres utilisateurs.
Une barre d'tat qui informe les utilisateurs de la connexion Internet de la sous-application Force.com Stratus et indique
le nombre de conflits de donnes et d'erreurs non rsolus.
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 76
Pour crer la sous-application, nous allons utiliser les technologies Adobe Flash, telles que MXML et les composants
ActionScript, avec les classes Force.com Stratus gnres par Adobe Flash Builder for Force.com. Il n'est cependant pas
ncessaire de connatre MXML et ActionScript pour crer la sous-application Inventaire Stratus. Ce didacticiel contient le
code dont vous avez besoin pour crer et utiliser votre premire sous-application Force.com Stratus.
ATTENTION: Adobe Flash Builder for Force.com est actuellement disponible uniquement dans les organisations
Developer Edition en tant qu'aperu pour dveloppeur. Les fonctionnalits peuvent changer profondment avant sa
disponibilit complte. Dans l'aperu du dveloppeur, n'utilisez pas Adobe Flash Builder for Force.com pour crer des
sous-applications destines des environnements de production.
Voir aussi :
tape 1 : Configuration des informations personnelles Salesforce.com
tape 2 : Cration d'une Configuration de porte-documents hors-ligne
tape 3 : Gnration de votre WDSL Entreprise et tlchargement d'un certificat client
tape 4 : Installation et lancement de Adobe Flash Builder for Force.com
tape 5 : Cration d'un projet Force.com Stratus
tape 6 : Dfinition des attributs du composant Stratus Application
tape 7 : Cration d'un composant Window Suivi Inventaire
tape 8 : Test de la sous-application Suivi Inventaire
Rsum
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 77
Voir aussi :
Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com.
tape 2 : Cration d'une Configuration de porte-documents hors-ligne
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 78
6. Cliquez sur Enregistrer. La page de dtails Configuration des porte-documents hors-ligne s'affiche.
7. Cliquez sur Modifier dans la liste associe Ensembles de donnes.
8. Cliquez sur Ajouter.
9. Slectionnez Article, puis cliquez sur OK.
10. Slectionnez Nom de l'article dans la liste de slection Organiser par.
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 79
En savoir plus
Les configurations de porte-documents hors-ligne sont des ensembles de paramtres qui dterminent les enregistrements
disponibles dans les sous-applications Force.com Stratus et dans Connect Offline Force.com. Connect Offline est une application
cliente qui permet d'accder un sous-ensemble de donnes Force.com l'aide de la mme interface de navigateur que le
systme en ligne, mais sans connexion Internet. Connect Offline permet d'afficher, de modifier, de crer et de supprimer des
comptes, des activits, des contacts, des opportunits, des pistes et des enregistrements d'objet personnalis (groupes de relations
incluses). Vous pouvez galement ajouter et mettre jour des produits et des planifications dans les opportunits.
Vous pouvez crer plusieurs configurations de porte-documents et associer chacune d'elles un utilisateur et un profil
spcifique afin de rpondre simultanment aux besoins de diffrents types d'utilisateurs hors ligne. Par exemple, une configuration
peut inclure des pistes et des opportunits pour les commerciaux, et une autre inclure des comptes et les opportunits associes
pour les responsables de compte.
Voir aussi :
Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com.
tape 1 : Configuration des informations personnelles Salesforce.com
tape 3 : Gnration de votre WDSL Entreprise et tlchargement d'un certificat client
Voir aussi :
Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com.
tape 2 : Cration d'une Configuration de porte-documents hors-ligne
tape 4 : Installation et lancement de Adobe Flash Builder for Force.com
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 80
Tlchargez le fichier zip Adobe Flash Builder for Force.com depuis le site developer.force.com/flashbuilder.
Dcompressez le contenu du fichier zip.
Double-cliquez sur le programme d'installation.
Une fois l'installation termine double-cliquez sur le raccourci Adobe Flash Builder for Force.com de votre Bureau.
Voir aussi :
Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com.
tape 3 : Gnration de votre WDSL Entreprise et tlchargement d'un certificat client
tape 5 : Cration d'un projet Force.com Stratus
3. Saisissez Suivi inventaire dans Nom du projet, puis slectionnez Application de bureau (excution dans
Adobe AIR).
4. Cliquez sur Suivant.
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 81
5. Acceptez les paramtres par dfaut pour le dossier de sortie, puis cliquez sur Suivant.
6. Saisissez com.salesforce.SuiviInventaire dans le champ ID d'application. L'environnement d'excution
AIR et le systme d'exploitation identifient l'application. Pour garantir un ID d'application unique, utilisez la notation
inverse du nom de domaine.
7. Cliquez sur Terminer pour continuer.
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 82
Voir aussi :
Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com.
tape 4 : Installation et lancement de Adobe Flash Builder for Force.com
tape 6 : Dfinition des attributs du composant Stratus Application
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 83
5. Enregistrez le fichier.
Voir aussi :
Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com.
tape 5 : Cration d'un projet Force.com Stratus
tape 7 : Cration d'un composant Window Suivi Inventaire
Un composant Spark Window qui spcifie les espaces de noms, la couleur de l'arrire-plan et les dimensions de la
sous-application Force.com Stratus. Le composant comprend galement un attribut windowComplete qui dtermine la
fonction excute lorsqu'un utilisateur se connecte. L'attribut showStatusBar, qui dtermine si l'application restitue la
barre d'tat Flash Builder standard, est dfini sur false pour permettre l'application d'afficher la barre d'tat Stratus la
place.
Un composant Spark Layout qui organise les lments de mise en page selon leurs paramtres individuels.
Un composant Spark VerticalLayout qui organise les lments de mise en page dans une squence verticale, de haut
en bas, avec des espaces en option entre les lments et un remplissage en option autour de la squence d'lments.
Un composant Spark VGroup qui cre un regroupement vertical des lments de l'interface utilisateur.
Un composant Spark Label qui cre une tiquette pour le regroupement vertical.
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 84
Un composant XML Script dans lequel vous pouvez saisir l'ActionScript. Ce composant contient l'ActionScript par
dfaut qui initialise les donnes lorsque la sous-application Force.com Stratus s'ouvre.
Un composant Stratus StatusBar qui restitue une barre d'tat en bas de la sous-application Force.com Stratus.
Modifiez le code par dfaut afin de mettre en oeuvre la logique de la sous-application Suivi Inventaire comme suit :
1. Supprimez le composant Label.
<s:Label text="Emplacement de votre contenu"/>
2. Dans le composant VGroup, ajoutez un composant Stratus FieldContainer. Les composants Stratus FieldContainer
regroupent les donnes et simplifient le processus de manipulation de plusieurs champs dans une seule opration. Le
composant FieldContainer que vous crez ici restitue galement les dtails de l'enregistrement slectionn en haut de
l'cran.
Dfinissez la largeur du composant FieldContainer sur 100% et saisissez l'ID _editFieldContainer. Vous allez
rfrencer l'ID FieldContainer plus loin dans le code.
<stratus:FieldContainer id="_editFieldContainer" width="100%"> </stratus:FieldContainer>
3. Dans le composant FieldContainer, ajoutez un composant LabelAndField pour chaque champ de l'objet Article
que vous souhaitez afficher, puis rfrencez chaque champ par son nom d'API Force.com interne. Un composant
LabelAndField est un composant Stratus qui restitue la valeur du champ Salesforce.com avec son tiquette. Les champs
que vous crez avec le composant FieldAndLabel fonctionnent automatiquement dans les sous-applications Force.com
Stratus de la mme faon que dans l'interface utilisateur Salesforce.com. Par exemple, les champs de date affichent un
calendrier sur un simple clic. Les champs respectent galement les dpendances de champ et fournissent automatiquement
l'dition en ligne, les dtails de survol, les notifications d'erreur ainsi que le texte d'aide de l'icne Info.
<stratus:LabelAndField field="Article__c.Name" /> <stratus:LabelAndField
field="Article__c.Description__c" /> <stratus:LabelAndField field="Article__c.Prix__c"
/> <stratus:LabelAndField field="Article__c.Inventory_total__c" />
4. Une fois les composants LabelAndField ajouts, assurez-vous d'insrer l'lment fermant FieldContainer si vous ne
l'avez pas dj fait.
</stratus:FieldContainer>
5. Ajoutez ensuite un bouton Spark standard, tiquetez-le Enregistrer et configurez-le pour excuter une fonction appele
onEditSaveClick. que vous allez crire plus loin.
<s:Button label="Enregistrer" click="onEditSaveClick()"/>
6. Sous le bouton Enregistrer, dans l'interface utilisateur Suivi Inventaire, vous souhaitez restituer une liste d'enregistrements
d'articles. Vous utilisez pour cela un composant ActionScript DataGrid. Saisissez le code comme suit :
<mx:DataGrid id="_dataGrid" width="100%" height="100%" dataProvider="{_gridDataProvider}"
itemClick="onDataGridItemClick()"> <mx:columns> <mx:DataGridColumn dataField="Nom"/>
<mx:DataGridColumn dataField="Description__c" headerText="Description"/> <mx:DataGridColumn
dataField="Prix__c" headerText="Prix"/> <mx:DataGridColumn dataField="Inventaire_total__c"
headerText="Inventaire total"/> </mx:columns> </mx:DataGrid>
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 85
Notez que l'attribut dataProvider rfrence une variable que vous allez crer plus loin et l'attribut itemClick rfrence
une fonction que vous allez galement crer plus loin.
7. Le composant final dans l'lment VGroup est le composant Stratus StatusBar, qui fait partie du code par dfaut. Laissez
ce composant inchang et assurez-vous d'ajouter l'lment fermant VGroup.
<stratus:StatusBar/> </s:VGroup>
8. L'interface utilisateur de la sous-application Suivi Inventaire est en place. Vous devez toutefois ajouter l'ActionScript qui
rcupre les donnes Salesforce.com et les enregistre dans la sous-application Force.com Stratus. Commencez l'ActionScript
en important les classes dont vous avez besoin pour l'ActionScript dans la section <![CDATA[ de l'lment <fx:Script>.
Le code se prsente comme suit :
import mx.collections.ArrayCollection; import mx.data.IManaged; import
com.salesforce.stratus.StratusWrapper; import com.salesforce.stratus.StratusResponder;
import services.stratus.Article__c; import com.salesforce.stratus.StratusMessage;
ArrayCollection : classe wrapper ActionScript qui expose une grappe en tant que collection accessible et qui peut
tre manipule.
IManaged : interface ActionScript qui fournit le contrat pour un objet gr.
StratusWrapper : composant Stratus qui enveloppe la fonctionnalit Data Management Service (DMS) d'Adobe,
un composant cl de la plate-forme Adobe AIR qui fournit un modle de gestion de la synchronisation des donnes
client-serveur.
StratusResponder : composant Stratus qui s'assure que les fonctions responder NULL ne gnrent aucun problme
interne.
Article__c : classe ActionScript de l'objet Article gnre par Adobe Flash Builder for Force.com.
StratusMessage : composant Stratus qui fournit des messages d'erreur et d'information contextuels et standard,
notamment lors de conflit de donnes.
9. Crez une variable qui contient les donnes d'articles. Le code utilisera cette variable pour afficher les donnes dans la liste.
[Bindable] private var _gridDataProvider:ArrayCollection = null;
10. Crez une variable que votre code peut utiliser pour accder la fonctionnalit DMS.
private var _stratusWrapper:StratusWrapper;
11. La fonction onWindowComplete() dans le code par dfaut interroge la base de donnes lors du chargement de l'application.
Modifiez cette fonction pour renvoyer de faon spcifique les donnes des articles. La fonction complte se prsente comme
suit :
public function onWindowComplete():void { new StratusMessage(StratusMessage.STATUS_INFO,
"Application initialise").showAsStatus(); _stratusWrapper = StratusWrapper.getInstance();
_stratusWrapper.query("select * from Article__c", new StratusResponder(
function(rows:ArrayCollection):void { _gridDataProvider = rows; }, null )); }
Vous avez rfrenc une fonction appele attribut WindowComplete dans l'lment Window au dbut de cette tape du
didacticiel.
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 86
12. Crez une fonction nomme onEditSaveClick qui copie en mmoire, depuis l'interface utilisateur, les modifications
qu'un utilisateur effectue dans les donnes.
private function onEditSaveClick():void {
_editFieldContainer.fieldCollection.updateObject(new StratusResponder(commitToDB, null));
}
Cette fonctionnalit est dclenche par un utilisateur en cliquant sur le bouton Enregistrer. Cette fonction excute galement
une simple validation des donnes saisies par l'utilisateur. Si les donnes sont valides, la fonction appelle la fonction
commitToDB.
13. Crez la fonction commitToDB, qui valide les donnes dans la mmoire de la base de donnes et les efface du composant
FieldContainer.
private function commitToDB(managedObject:IManaged):void {
_stratusWrapper.save(managedObject, new StratusResponder(
function(result:StratusMessage):void { _editFieldContainer.fieldCollection.clear(); },
null )); }
14. Crez une fonction qui restitue les donnes FieldContainer dans la sous-application Force.com Stratus. Rfrencez le
composant FieldContainer avec l'ID que vous avez dfini plus haut (_editFieldContainer).
private function onDataGridItemClick():void { var merchandise:Article__c =
_dataGrid.selectedItem as Article__c;
_editFieldContainer.fieldCollection.render(merchandise); }
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 87
Voir aussi :
Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com.
tape 6 : Dfinition des attributs du composant Stratus Application
tape 8 : Test de la sous-application Suivi Inventaire
3. Dans l'cran de connexion, saisissez le nom d'utilisateur et le mot de passe de la sous-application Force.com, puis cliquez
sur Connexion. L'interface utilisateur Suivi Inventaire s'affiche.
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 88
4. Slectionnez un enregistrement dans la liste et modifiez ses donnes, puis cliquez sur Enregistrer.
5. Connectez-vous la sous-application Force.com et vrifiez que vos modifications sont affiches.
6. Pour tester les capacits de rsolution des conflits de donnes, modifiez un champ dans votre sous-application Force.com,
cliquez sur Enregistrer, puis modifiez le mme champ dans la sous-application Suivi Inventaire en utilisant une valeur
diffrente. Lorsque vous cliquez sur Enregistrer dans la sous-application Suivi Inventaire, notez l'alerte de la barre d'tat
qui signale un conflit.
7. Cliquez sur Rsoudre dans la barre d'tat pour lancer l'interface de rsolution des conflits.
Manuel d'utilisation Force.com | Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com. | 89
L'interface de rsolution des conflits permet de visualiser les valeurs dans Salesforce.com et dans la sous-application Suivi
Inventaire. Slectionnez la valeur que vous souhaitez conserver, puis cliquez sur Continuer vers le rcapitulatif.
Voir aussi :
Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com.
tape 7 : Cration d'un composant Window Suivi Inventaire
Rsum
Rsum
Dans ce didacticiel, vous avez cr une sous-application Force.com Stratus qui permet aux utilisateurs de visualiser et de
modifier les donnes Force.com avec et sans connexion Internet. Ce didacticiel prsente les notions fondamentales de Adobe
Flash Builder for Force.com avec peu de code. Vous pouvez videmment utiliser Adobe Flash Builder for Force.com pour
crer des sous-applications Force.com Stratus beaucoup plus puissantes afin d'optimiser l'interaction entre les utilisateurs et
vos sous-applications Force.com.
Voir aussi :
Didacticiel n 10 : Cration d'une sous-application de bureau avec Adobe Flash Builder for Force.com.
tape 8 : Test de la sous-application Suivi Inventaire
Annexe
Cration et connexion un environnement test sandbox
Si vous utilisez la version Free Edition, vous devez effectuer l'ensemble du dveloppement dans un environnement test sandbox.
Pour crer cet environnement :
1.
2.
3.
4.
5.
La cration d'une copie d'organisation de production prend un peu de temps. Pour suivre la progression, actualisez votre
navigateur et observez le champ Statut. Si vous ne souhaitez pas attendre, poursuivez vos activits et nous vous enverrons
un e-mail une fois la copie termine.
Lorsque l'environnement test sandbox est disponible, connectez-vous comme suit :
1. Si vous tes pass une autre page durant la copie de l'environnement sandbox, cliquez sur Configuration Gestion des
donnes Sandbox.
2. En regard de l'environnement sandbox, cliquez sur Connexion.
3. Votre navigateur ouvre une page de connexion. Saisissez votre mot de passe, puis cliquez sur Connexion.
En savoir plus
Une fois connect, notez que le champ Nom d'utilisateur est diffrent de votre nom d'utilisateur habituel. Force.com
ajoute automatiquement votre nom sandbox pour vous permettre de vous connecter plusieurs environnements test sandbox.
Notez galement que l'URL dans la barre d'adresse de votre navigateur a chang. Chaque environnement test sandbox possde
sa propre instance, qui est diffrente de celle utilise par votre organisation habituelle.
Remarque: Si vous obtenez une erreur LOGIN_MUST_USE_SECURITY_TOKEN, cela signifie que votre
adresse IP actuelle n'est pas reconnue dans une plage rseau de confiance. Vous devez rinitialiser votre jeton de
scurit. Dans l'interface utilisateur de Salesforce.com, cliquez sur Configuration Mes informations personnelles
Rinitialiser mon jeton de scurit, puis suivez les instructions affiches.
3. Dans la page Project Content, cliquez sur Finish pour rcuprer les composants Apex et Visualforce.
Les packages non grs permettent de distribuer des copies de composants intgrs, qui comprennent l'ensemble du code
source. Ces packages sont gnralement gratuits, sans option de mise niveau. Une fois le package non gr install dans
une autre organisation, en tant qu'diteur, vous n'avez aucun contrle sur l'utilisation des composants intgrs.
Les packages grs permettent de distribuer des copies de composants intgrs en gardant le contrle de la proprit
intellectuelle et des licences. Vous pouvez galement distribuer aisment des mises niveau pour les clients qui ont install
d'anciennes versions de l'application. Les packages grs sont plus efficaces pour distribuer des applications dans Force.com
AppExchange.
Pour plus d'informations sur les packages, reportez-vous Prsentation des packages dans l'aide en ligne de Force.com.
propos du dploiement
Pour dployer votre code dans une organisation de production dont vous possdez les identifiants de connexion, vous disposez
des deux options suivantes :
Si vous matrisez l'interface ligne de commande, utilisez l'Outil de migration Force.com pour le dploiement. Pour plus
d'informations, reportez-vous au guide wiki.developerforce.com/index.php/Migration_Tool_Guide.
Si vous prfrez une interface graphique, utilisez l'IDE Force.com. Pour plus d'informations, reportez-vous la page
wiki.developerforce.com/index.php/Force.com_IDE.