13
Webservice API Webportale mit Force.com verbinden. PHP 5, Symfony 2 & SOAP. Johannes Heinen, code mitte GmbH

Webservice API - Webportale mit Force.com verbinden

Embed Size (px)

DESCRIPTION

Vortrag von Johannes Heinen, code mitte GmbH, beim code force Meet-up vom 11. Juni 2012.

Citation preview

Page 1: Webservice API - Webportale mit Force.com verbinden

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

Ü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

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

... the ugly

Abbildung: Cal Evans [https://secure.flickr.com/photos/calevans]

Page 5: Webservice API - Webportale mit Force.com verbinden

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

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

● "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

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

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

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

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

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

Danke für die Aufmerksamkeit.