8445-7.book Page 1 Wednesday, February 21, 2007 4:00 PM Andreas Holubek, Christian Metzger Salesforce.com – Entwicklerhandbuch 8445-7.book Page 2 Wednesday, February 21, 2007 4:00 PM 8445-7.book Page 3 Wednesday, February 21, 2007 4:00 PM Andreas Holubek, Christian Metzger Salesforce.com Entwicklerhandbuch On-Demand-Anwendungen mit Apex und Apex Code 8445-7.book Page 4 Wednesday, February 21, 2007 4:00 PM Andreas Holubek, Christian Metzger: Salesforce.com Entwicklerhandbuch ISBN: 978-3-935084-45-7 © 2007 entwickler.press Ein Imprint der Software & Support Verlag GmbH http://www.entwickler-press.de http://www.software-support.biz Ihr Kontakt zum Verlag und Lektorat: [email protected] Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar. Korrektorat: mediaService, Siegen Satz: mediaService, Siegen Umschlaggestaltung: Melanie Hahn, Maria Rudi Belichtung, Druck & Bindung: M.P. Media-Print Informationstechnologie GmbH, Paderborn Alle Rechte, auch für Übersetzungen, sind vorbehalten. Reproduktion jeglicher Art (Fotokopie, Nachdruck, Mikrofilm, Erfassung auf elektronischen Datenträgern oder andere Verfahren) nur mit schriftlicher Genehmigung des Verlags. Jegliche Haftung für die Richtigkeit des gesamten Werks kann, trotz sorgfältiger Prüfung durch Autor und Verlag, nicht übernommen werden. Die im Buch genannten Produkte, Warenzeichen und Firmennamen sind in der Regel durch deren Inhaber geschützt. 8445-7.book Page 5 Wednesday, February 21, 2007 4:00 PM Inhaltsverzeichnis V Vorwort 9 1 Einleitung 11 1.1 Überblick über die Apex-Plattform von Salesforce.com 11 1.2 Anwendungen für die Apex-Plattform 13 1.3 Der Weg durch das Buch 14 2 Salesforce.com planen, einrichten und konfigurieren 15 2.1 Überblick über die Planung, die Einrichtung und das Customizing von Salesforce.com 15 2.2 Die Planung der Einführung von Salesforce.com 15 2.3 Customizing von Salesforce.com 17 Benutzerdefinierte Felder 18 Validierungsregeln 20 Seitenlayouts 21 Suchlayouts 23 Schaltflächen und Links 24 2.4 Zugriffsrechte und Sichtbarkeit von Daten 25 Tipps und Tricks zum Vorgehen 29 2.5 Einrichten und Verwalten von Workflows 31 Workflow-Regeln 31 Genehmigungsprozesse 31 Aufgaben 32 Benachrichtigungen 32 Feldaktualisierungen 32 Ausgehende Nachrichten 33 2.6 Beispiel Rollout-Plan für eine Salesforce.com-Einführung 33 Vorbereitung 33 Systemkonfiguration 35 Datenmanagement/Migration 46 Einführung 48 Nachverfolgung 51 3 Initial Load 53 3.1 Vorhandene Datenquellen 53 3.2 Probleme des Initial Load 55 Datenaktualität 55 Datenqualität 56 Heterogene Quellen 58 Salesforce.com Entwicklerhandbuch 5 8445-7.book Page 6 Wednesday, February 21, 2007 4:00 PM Inhaltsverzeichnis Qualitative Abgrenzung 60 Quantitative Abgrenzung 61 Lade-Programme 62 3.3 Ablauf des Initial Load selbst 63 3.4 Ein einfaches Beispiel für einen Initial Load 65 3.5 10 Tipps zum Initial Load 70 Administrator-Rechte 70 Scripte 70 „Fingerabdruck“ 71 Preisbucheinträge 71 Account OwnerId 71 Importdaten archivieren 72 Validieren. Validieren. Validieren. 72 Lade-Programme erst spät schreiben 72 Lade-Programme für periodischen Abgleich vorbereiten 72 Kein direkter API-Zugriff im Lade-Programm 73 4 Anwendungen mit dem Apex Builder – Grundlagen 75 4.1 Apex Builder im Überblick 75 4.2 Bestandteile einer Anwendung 76 Benutzerdefiniertes Objekt (Custom Object) 77 Benutzerdefinierte Felder 82 Seitenlayout für das Objekt und Felder bestimmen 98 Tabs (Seiten) 105 Benutzerdefinierte Links (Custom Links) 112 Bilder und Dokumente 116 Anwendungen 118 Layouts für Suche und Übersichten 121 S-Controls 122 4.3 Entwicklungstipps 126 Best Practices 126 Migration von Daten beim Einfügen einer Master-Detail-Beziehung 127 5 Anwendungen mit dem Apex Builder – das Projekt 129 5.1 Beispielanwendung – Issue Tracking 129 5.2 Entwicklung der Objekte 130 5.3 Seiten entwickeln 140 5.4 Anwendung entwickeln 147 5.5 Packen und private Veröffentlichung der Anwendung 148 5.6 Veröffentlichung der Anwendung im öffentlichen AppExchange Directory 154 5.7 Testanwendung (Test Drive Organisation) 159 6 Apex Toolkit für Eclipse 161 6.1 Überblick 161 6 8445-7.book Page 7 Wednesday, February 21, 2007 4:00 PM Inhaltsverzeichnis 6.2 Installation und Apex-Projekt 161 6.3 Abfragen 163 6.4 S-Controls 163 7 S-Controls und das AjaxToolkit 165 7.1 Überblick 165 7.2 JavaScript 165 7.3 Struktur einer JavaScript-Anwendung 166 7.4 Ajax Toolkit anwenden 167 7.5 Abfragen und Ergebnisse anzeigen 169 8 Anwendungen entwickeln mit dem Apex Web Service API 171 8.1 Web Services 171 Überblick 171 Web Service Description Language (WSDL) 172 Nachrichten 175 WSDL zu Language-Generatoren 176 Salesforce WSDL 177 8.2 Eine erste Verbindung 178 Vorbereitungen 178 Verbindung mit Salesforce.com aufbauen 184 Umgang mit Verbindungsdaten 187 8.3 Fallstudie: Verwendung des Web Service API für einen Angebotsrechner 188 Spezifikation der Aufgabenstellung 188 Verwendung des Salesforce API 195 Nutzen der Generizität des Ansatzes 211 9 Batchprozesse und Salesforce.com DataExchange 213 9.1 Hinter den Kulissen 213 Daten up-to-date halten 213 Auswertungen 213 Maschinelle Batch-Verarbeitung ist unverzichtbar 214 9.2 Design des Abgleichs 215 Was – Wie – Wo abgleichen? 215 CRUD in Salesforce 217 Eindeutigkeit 218 Das Delete-Problem 218 Eine Fallstudie 219 Architektur-Empfehlungen für den Abgleich 223 Fehlerbehandlung 224 Performanz 227 Helferlein 228 9.3 Salesforce.com DataExchange 228 Anforderungen 228 Beispiel: Kommando-Datei und Trace 230 Salesforce.com Entwicklerhandbuch 7 8445-7.book Page 8 Wednesday, February 21, 2007 4:00 PM Inhaltsverzeichnis <login> 233 <general> 233 <tasks> und <task> 234 Kommando: Extract 235 Kommando: Insert 236 Kommando: Update 236 Kommando: Delete 237 Kommando: Selective_Delete 238 Kommando: Mixed_Mode 238 Kommandos: MetaInfo/Extract_Numbers 239 Download von Salesforce.com DataExchange 239 10 Apex Code – On-Demand-Programmiersprache 241 10.1 Überblick 241 10.2 Apex Code schreiben und veröffentlichen 242 Apex Code – Webschnittstelle 243 Apex Code – Eclipse-Integration 243 10.3 Ein einleitendes Beispiel 244 Das Beispiel 244 Apex Code Package anlegen (Apex Code) 245 Account-Objekt suchen (Apex Code) 245 Neuen Kontakt anlegen (Apex Code) 245 S-Control anlegen (Apex Builder) 246 Web-Tab anlegen (Apex Builder) 247 Test (Salesforce.com) 247 10.4 Apex-On-Demand-Sprache 248 Hinweise 248 Datentypen, SObjects, Variablen und Ausdrücke 248 Arrays, Sets und Maps 252 Ablaufsteuerung 256 SOQL-Abfragen 257 Benutzerdefinierte Methoden 259 Data Manipulation Language (DML)-Anweisungen 259 Transaktionen 261 Exception Handling (Ausnahmen) 262 System-Statische Methoden 263 10.5 Apex Packages 264 10.6 Objekte sperren 264 10.7 Apex Code mittels AJAX ausführen 265 10.8 Trigger 265 10.9 Test und Code Coverage 265 A Literaturverzeichnis 267 B Die Autoren 268 Stichwortverzeichnis 269 8 8445-7.book Page 9 Wednesday, February 21, 2007 4:00 PM V Vorwort Die Apex-Plattform von Salesforce.com ist eine der ersten greifbaren Implementierun- gen der On-Demand Idee für den globalen Austausch von Businessanwendungen und deren Entwicklung. Viele der vorhandenen Ideen und Konzepte der Softwareentwicklung lassen sich natürlich weiter verwenden. Das Bündeln der Anwendungen in einem zentralen Verzeichnis, dem AppExchange Directory, ist jedoch eine spannende Sache. Die Idee hinter dem Buch entstand nicht zuletzt aus den verschiedenen Herangehens- weisen an die Apex-Plattform. Zum einen kann der Leser die integrierte Entwicklung mit dem Apex Builder kennen lernen, zum anderen aber auch die Entwicklung von eigenen externen Anwendungen, welche das Apex API nutzen. Mit Ihrem Salesforce.com-Account werden zudem schon vorgefertigte Anwendungen, wie das Customer Relationship Management (CRM), mitgeliefert. Nicht zuletzt deshalb haben wir uns entschieden, auch der Anpassung des Salesforce.com-Account einen Teil des Buches zu widmen. Solch ein Buch entsteht nicht über Nacht, noch wird es im eigentlichen Sinne von nur zwei Autoren geschrieben. Viele Ideen, Hinweise und auch Schriftstücke sind innerhalb der arlanis Software AG entstanden und wurden von uns mit benutzt. Wie möchten uns an dieser Stelle für die immense Mitarbeit an den Kapiteln bei Diane Cremille, Reinhard Greeven und Georg Spengler bedanken. Nicht zuletzt haben wir auch immer wieder verschiedene Teile, Lösungen und Ideen diskutiert und von verschiedenen Seiten beleuchtet. So geht ein freundliches Danke an dieser Stelle auch an Jörg Selig und Michael Kammholz. Von Seiten Salesforce.com danken wir besonders dem deutschen Accountmanager Herrn Wolfgang Kiene, der in vielen Meetings und Besprechungen unsere Arbeit unter- stützt hat. Unser besonderer Dank geht auch an Judith Przibill und Daniel Hejda von der Firma W.C. Heraeus GmbH, die in vielen Besprechungen während eines großen Einführungs- projektes uns mit Anregungen und Ideen zur Seite standen. Ein wenig ist so ein Buch wie Software. Trotz großer Sorgfalt kann man nicht verhindern, dass der ein oder andere Bug übrig bleibt. Wenn Sie also Kritik, Anmerkungen oder auch Wünsche haben, senden Sie uns einfach eine Mail. Wir werden versuchen, dies alles in den kommenden Versionen zu berücksichtigen. Die jeweils letzten Ergänzungen und auch die Beispiele können Sie unter http://www.arlanis.com/deutsch/books.php finden. Andreas Holubek, Christian Metzger Im Januar 2007 Salesforce.com Entwicklerhandbuch 9 8445-7.book Page 10 Wednesday, February 21, 2007 4:00 PM