webservice api - webportale mit force.com verbinden
DESCRIPTION
Vortrag von Johannes Heinen, code mitte GmbH, beim code force Meet-up vom 11. Juni 2012.TRANSCRIPT
![Page 1: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/1.jpg)
Webservice APIWebportale mit Force.com verbinden. PHP 5, Symfony 2 & SOAP. Johannes Heinen, code mitte GmbH
![Page 2: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/2.jpg)
Über mich● Webentwickler bei code mitte
○ PHP, Javascript○ Apex & Visualforce
● Jahrelange Erfahrung in Konzeption, Design &
Implementierung von Websites, -Portalen, -Shops,-Katalogen, -Applikationen, -[...]
● Seit einskommafünf Jahren in der Salesforce-Cloud
![Page 3: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/3.jpg)
Force.com Platform● The good, ...
○ Cloudbasiert: "No Software" (in the meaning of "to install")
○ Ein unkomplizierter Stack für "alles" (Ausgabe, Geschäftslogik, Persistenz)
○ Sofort einsatzbereit (theoretisch)
● ... the bad, ...○ Layout/GUI components, "Rahmenwerk"○ "Intranet" vs. "Internet", CRM Platform
vs. Website○ Erst wachsende Erfahrung mit "großen"
Projekten (Test-Fixtures, Deployment <3)
○ "No Software"?Photo: salesforce.com
![Page 4: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/4.jpg)
... the ugly
Abbildung: Cal Evans [https://secure.flickr.com/photos/calevans]
![Page 5: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/5.jpg)
PHP● Bewährte, stabile
Entwicklungsplattform● Wartungsarm● Kostengünstig● Geringe
Entwicklungszeiten● Verfügbare Experten,
verfügbares Expertenwissen
● Community● "Agil"
● Software! (und HW)
● (Fast) keine Standardisierung => SPL vs. JSR
● (Fast) Keine Interfaces/Contracts => Funktionen() vs. API
● Vorsicht vor dem Spaghetticode!
● Nicht "Enterprise" genug?
![Page 6: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/6.jpg)
PHP vs. Apex/VF● Keine Einschränkungen durch standardisierte GUI-
Components oder das "Salesforce-Layout"
● Beliebige Ausgabe○ HTML(5), JSON, XML○ PDF○ JPEG, PNG, GIF○ Flash○ Video
● Nahezu jedes Design kann umgesetzt, jedes Frontend
"bedient" werden
![Page 7: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/7.jpg)
● "Web application framework"○ lose gekoppelt, komponentenbasiert○ stabil, testabgedeckt○ große Community○ international be- und anerkannt○ implementiert viele Standards und best practices anderer
Sprachen und Frameworks● "State-Of-The-Art"
○ PHP 5.3.x● Reduziert oder verbirgt PHP-Nachteile und
StolpersteineMacht die strukturierte, wartbare und effiziente Entwicklung großer Softwareprojekte auf der PHP-Plattform möglich (bzw. reduziert gelegentlich dabei auftretende Schmerzen auf ein Minimum)
Symfony 2
![Page 8: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/8.jpg)
PHP & Force.com● Force.com-Toolkit für PHP (5.3)
○ via PHP:SOAP■ Webservice API Partner/Enterprise■ Custom Webservices
● Das "M" in MVC
○ SOQL-Queries: query(), queryMore(), retrieve(), ...○ DML-Statements
■ create(), update(), upsert()■ Prepared Statements!
![Page 9: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/9.jpg)
Symfony 2 & Force.comMittels zur Laufzeit zugänglichen Metainformationen ("Reflection")
● describeLayout()● describeSobject()
können Symfony-Formtypes und Validatoren generiert werden, zum Beispiel
● (HTML 5) Formtypes○ Date, Datetime, (dependent) Picklist, Email, Phone, Required
fields, minlength, maxlength-Attributes, etc.● Validators
○ "Contains-Validator" (Picklist)○ Complex (Custom)-Validator (Address Validation, Serialnumber
validity check)
![Page 10: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/10.jpg)
Symfony 2 & Force.com (2)Vorteile:● I18n auf der Plattform (Field-Labels)● Minimaler Pflegeaufwand, bspw. bei Picklist-Values● "Rapid" form development● Absolute Flexibilität bei der Weiterverarbeitung der
gesammelten und validierten POST-Daten.● Einfaches, automatisiertes Rendern ganzer Formulare
auf Basis von describeLayout()-Rastern (foreach row in rows, foreach col in row, [...])
Nachteilig ist ein gewisser overhead an SOAP-Calls und Metadaten-Aggregierung.
=> Caching
![Page 11: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/11.jpg)
Symfony 2 & Force.com (3)Wiederverwendbares Symfony-Modul ("CodemitteForceBundle")
● Form-Extensions (type "sfdc_field")○ Ein Form-Type für "alles"
● Twig-Template-Extensions○ Form-Helptexts○ Form-labels werden auf der Force.com Plattform übersetzt, no
need 4 I18n○ Form-Templates (für bspw. Dependent-Picklists oder Phone-
Type)● Validation-Extension
○ Still under heavy development● Pagelayout2Form-Renderer
○ Still under heavy development
![Page 12: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/12.jpg)
Und nun ...... ein kurzer Blick auf das neue, Force.com & PHP-getriebene Portal
appletini.com
Photo: Sherry Elliott
![Page 13: Webservice API - Webportale mit Force.com verbinden](https://reader033.vdokument.com/reader033/viewer/2022061208/5488bb6db47959140d8b57e0/html5/thumbnails/13.jpg)
Danke für die Aufmerksamkeit.