Webservice API
Webportale mit Force.com verbinden. PHP 5,
Symfony 2 & SOAP.

Johannes Heinen, code mitte GmbH
Ü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
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)   Photo: salesforce.com
     ○   "No Software"?
... the ugly




               Abbildung: Cal Evans [https://secure.flickr.com/photos/calevans]
PHP
● Bewährte, stabile       ● Software! (und HW)
  Entwicklungsplattform   ● (Fast) keine
● Wartungsarm               Standardisierung => SPL
● Kostengünstig             vs. JSR
● Geringe                 ● (Fast) Keine
  Entwicklungszeiten        Interfaces/Contracts =>
● Verfügbare Experten,      Funktionen() vs. API
  verfügbares             ● Vorsicht vor dem
  Expertenwissen            Spaghetticode!
● Community               ● Nicht "Enterprise"
● "Agil"                    genug?
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
Symfony 2
 ●   "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
   Stolpersteine
Macht die strukturierte, wartbare und effiziente
Entwicklung großer Softwareprojekte auf der PHP-
Plattform möglich (bzw. reduziert gelegentlich dabei auftretende Schmerzen auf ein Minimum)
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!
Symfony 2 & Force.com
Mittels 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)
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
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
Und nun ...
... ein kurzer Blick auf das neue,
Force.com & PHP-getriebene Portal




         appletini.com




                                     Photo: Sherry Elliott
Danke für die Aufmerksamkeit.

Webservice API - Webportale mit Force.com verbinden

  • 1.
    Webservice API Webportale mitForce.com verbinden. PHP 5, Symfony 2 & SOAP. Johannes Heinen, code mitte GmbH
  • 2.
    Ü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
  • 3.
    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) Photo: salesforce.com ○ "No Software"?
  • 4.
    ... the ugly Abbildung: Cal Evans [https://secure.flickr.com/photos/calevans]
  • 5.
    PHP ● Bewährte, stabile ● Software! (und HW) Entwicklungsplattform ● (Fast) keine ● Wartungsarm Standardisierung => SPL ● Kostengünstig vs. JSR ● Geringe ● (Fast) Keine Entwicklungszeiten Interfaces/Contracts => ● Verfügbare Experten, Funktionen() vs. API verfügbares ● Vorsicht vor dem Expertenwissen Spaghetticode! ● Community ● Nicht "Enterprise" ● "Agil" genug?
  • 6.
    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
  • 7.
    Symfony 2 ● "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 Stolpersteine Macht die strukturierte, wartbare und effiziente Entwicklung großer Softwareprojekte auf der PHP- Plattform möglich (bzw. reduziert gelegentlich dabei auftretende Schmerzen auf ein Minimum)
  • 8.
    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!
  • 9.
    Symfony 2 &Force.com Mittels 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)
  • 10.
    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
  • 11.
    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
  • 12.
    Und nun ... ...ein kurzer Blick auf das neue, Force.com & PHP-getriebene Portal appletini.com Photo: Sherry Elliott
  • 13.
    Danke für dieAufmerksamkeit.