SlideShare una empresa de Scribd logo
1 de 52
Visualforce and Apex
Workshop
Bilbao – Universidad de Deusto
 Daniel Expósito López
• Developer Corporate R&D
• FinancialForce.com (Spain)
• Mail: dexposito@financialforce.com
• Twiter: @daniexpo71
Speaker
Safe Harbor
Safe harbor statement under the Private Securities Litigation Reform Act of 1995:
This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of
the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking
statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service
availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future
operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use
of our services.
The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our
service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth,
interruptions or delays in our Web hosting, breach of our security measures, the outcome of intellectual property and other litigation, risks associated with
possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and
motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-
salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial
results of salesforce.com, inc. is included in our annual report on Form 10-Q for the most recent fiscal quarter ended July 31, 2012. This documents and
others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site.
Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be
delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available.
Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
Go Social!
@salesforcedevs
Salesforce Developers
+Salesforce Developers
Salesforce Developers
Salesforce Developers
 Introducción a Visualforce y Apex
 Visualforce
 Controlador Estándar (Standard Controller)
 Controlador Extendido (Controller Extension)
 Controlador Apex Personalizado (Custom Controller)
 Creación y ejecución de Unit Tests
 Enlaces de interés
 Preguntas y dudas
Agenda
El código que se va a escribir en el workshop lo podéis encontrar en:
https://github.com/northspainsalesforcedevelopergroup/elevator
20150226
Modulo 1:
Introducción a Visualforce y Apex
Introducción a Visualforce y Apex
Introducción
 Force.com incluye diferentes herramientas que nos permiten crear aplicaciones bastante completas desde cero sin tener que escribir ni una
sola línea de código (asistentes de creación de aplicaciones, objetos, tabs, layouts, …)
 Pero también proporciona servicios de alto nivel como web services, ejecución de código planificada, procesos por lotes, triggers, lógica de
backend para pantallas, etc. Todo esto requiere programación en Apex y Visualforce.
Apex
 Lenguaje de programación orientado a objetos, fuertemente tipificado que permite escribir código que se ejecute en la plataforma Force.com
 Apex permite a los desarrolladores añadir lógica a la mayoría de eventos del sistema incluyendo botones, actualización de registros y lógica
para las pantallas
 Usa sintaxis muy similar a Java.
 Apex es interpretado, ejecutado y controlado completamente por la plataforma Force.com.
 Clases e interfaces.
Apex y Java
Igual
 Tipos de datos primitivos
 Control de flujo (if, for, while, …)
 Manejo de excepciones
 Colecciones: Lists, Sets, …
Diferente
 Insensible a mayúsculas
 Strings con comillas simples: 'Joe'
 Tipo de dato Id
 Built-in support para acceso a BD.
Introducción a Visualforce y Apex
Visualforce
 Framework basado en componentes para la creación de interfaces de usuario en la plataforma Force.com.
 Permite construir pantallas sofisticadas mediante un lenguaje basado en tags similares a HTML (con prefijo apex) y una librería de
componentes reusables que puede ser extendida.
 Similar a JSP y ASP. Controlador basado en APEX
 VisualForce se construyen combinando componentes de la plataforma, HTML, hojas de estilo o cualquier tecnología web o framework de
javascript que permita crear interfaces de usuario mas dinámicas y animadas.
 Cuando un usuario accede a una pagina visualforce el servidor realiza cualquier procesamiento requerido por la página, convierte la página a
HTML y devuelve el resultado al navegador para mostrarlo.
Introducción a Visualforce y Apex
MVC Model-View-Controller
 Salesforce usa el patrón de diseño Modelo-Vista-Controlador (MVC) que ayuda a la separación de conceptos y como beneficios proporciona
un código mas reusable y minimiza el impacto de los cambios.
 La vista (visualforce) interactúa con un controlador (clase apex) que implementa alguna funcionalidad para la página. Por ejemplo, la lógica a
ejecutar cuando se pulsa un botón.
 El controlador interactúa con el modelo (custom objects) obteniendo datos que se quieran mostrar.
 Salesforce proporciona “Controladores Estándar” para los objetos que pueden ser usados para interactuar con los datos, por lo tanto en
algunos casos no necesitaremos escribir el código para el controlador.
 Aunque también puedes extender los controladores o crear tu propios controladores personalizados.
Model-View-Controller en Salesforce
View
• Standard Pages
• Visualforce Pages
• External apps
Controller
• Standard Controllers
• Controller Extensions
• Custom Controllers
Model
• Objects
• Triggers (Apex)
• Classes (Apex)
Modulo 2:
Visualforce
Visualforce: Creación de visualforce
 Vamos a crear una primera visualforce “holamundo” bastante simple que nos servirá para familiarizarnos con el editor de visualforce y la
creación de páginas.
Development Mode
 Development Mode nos permite acceder a un editor de páginas visualforce que a través del navegador para poder ver el código y
previsualizar el aspecto de la página al mismo tiempo. Development mode también contiene un editor de Apex para trabajar con controladores
y extensiones.
 Para habilitar el Development mode ir a:
• Configuración > Gestionar usuarios > Usuarios
• Editar vuestro usuario
• Seleccionar “Modo de desarrollo”
• Guardar
• Configuración > Mi información personal > Información personal
• Modificar
• Seleccionar “Modo de desarrollo”
• Guardar
Visualforce: Creación de visualforce
 En el navegador añadimos /apex/holamundo a la instancia de Salesforce.
Por ejemplo si tu instancia es https://eu5.salesforce.com, la nueva URL será https://eu5.salesforce.com/apex/holamundo.
 A continuación deberíais ver el siguiente error:
 Pulsa en el enlace Create Page holamundo y se abrirá el editor de visualforce con algún código por defecto.
Visualforce: Creación de visualforce
 Se abrirá el editor de visualforce con algo de código por defecto:
Visualforce: Creación de visualforce
Menú del editor de Visualforce
 Las opciones del editor son las siguientes:
– Guardar y previsualizar
– Buscar
– Ir a línea
– Hacer/Deshacer
– Aumentar/Decrementar tamaño de fuente
 Otras opciones:
– Enlace a la ayuda de componentes visualforce
– Información sobre donde es usada la visualforce
– Minimizar/Maximizar editor de visualforce
– Cerrar development mode
Visualforce: Creación de visualforce
Component Reference
 Listado de componentes que se pueden incluir en una visualforce.
 Para cada componente encontramos una descripción.
Visualforce: Creación de visualforce
Modificar la Visualforce
 Volvemos a editar nuestra primera visualforce hello con el editor de visualforce
 Reemplazamos el contenido por lo siguiente:
 Botón Save
 El contenido de la pagina se refresca automáticamente.
 Una visualforce siempre tiene que empezar y terminar con el tag apex:page (componente visualforce)
 Los tags de visualforce siguen el formato XML por lo tanto también hay algunos tags que se auto-cierran. Por ejemplo: <apex:detail />
 Generalmente se puede modificar el comportamiento y/o apariencia de un componente añadiéndole atributos. Los atributos son pares
nombre/valor que se añaden al componente. Por ejemplo: sidebar="false".
Visualforce: Creación de visualforce
Añadir atributos usando auto-ayuda
 Añadimos el atributo sidebar=“false” a nuestro tag de <apex:page>
 Guardamos y vemos que efectivamente la parte de la izquierda de nuestra ventana ha desaparecido.
 Posiciona el cursor después de las segundas comillas y pulsa espacio. Aparece una lista de atributos válidos para el componente apex:page.
 Elige el atributo showHeader y ponlo a false. Guarda y verás que esta vez tu página tiene un aspecto diferente. Con este atributo hemos
eliminado la cabecera de la página.
 Vuelve a ponerlo a true y vuelve a guardar.
Visualforce: Creación de visualforce
Componentes Adicionales
 Añade el siguiente código a la visualforce y guardar:
 PageBlock: Un área de una página que usa un estilo similar a la apariencia de Salesforce pero sin ningún contenido por defecto.
 PageBlockSection: Una sección de datos que se incluye en el componente < apex:pageBlock > component. Es similar a una sección en la
definición de layout de un objeto estándar de salesforce.
Visualforce: Creación de visualforce
La pantalla tiene el siguiente aspecto con los estilos de Salesforce:
Visualforce: Creación de visualforce
Variables globales y formulas
 Force.com guarda información sobre el usuario conectado en una variable global llamada User. Se puede acceder a esta variable global y
cualquier otra mediante una expresión de lenguaje con la siguiente sintaxis:
{! $<global variable>.<field name>}
 {! …} indica a la visualforce que cualquier contenido dentro es dinámico y su valor debe ser calculado y sustituido en tiempo de ejecución.
 Otras variables globales: Page, Label, Profile, …
 Aparte de las variables globales, visualforce también soporta fórmulas que permiten manipular valores.
Visualforce: Otras formas de trabajar con VF
Configuración
 Hay otras formas alternativas de crear y editar visualforce sin usar el development mode.
 Desde Configuración
• Configuración > Desarrollo > Páginas
• Nuevo
Visualforce: Otras formas de trabajar con VF
Developer Console
 Desde Developer Console (Consola de Desarrollador)
• File > New > Visualforce Page
Visualforce: Otras formas de trabajar con VF
Otros
 Force.com IDE (Eclipse Plugin)
 MavensMate (Sublime Plugin)
Email
Templates
Embedded in Page
Layouts
Generate PDFs
Custom Tabs
Mobile
Interfaces
Page Overrides
Dónde puedo usar una Visualforce?
Tipos de Controladores
 En el paradigma MVC la vista interactúa con un controlador que contendrá alguna funcionalidad necesaria para la página. Por ejemplo, la
lógica a ejecutar cuando un botón es pulsado.
 Lo objetos de la plataforma tienen standard controllers por defecto que pueden ser usados para interactuar con los datos asociados a ese
objeto y en muchos casos no necesitaremos escribir el código del controlador. Por lo tanto al trabajar con visualforce tenemos las siguientes
opciones:
– Usar el controlador estándar de salesforce para el objeto.
– Extender el controlador estándar añadiendo nueva funcionalidad.
– Crear un controlador personalizado desde cero.
Modulo 3:
Controlador Estándar
Standard Controller
Ejemplo: Crear nueva VF “producto”
Controlador Estándar (Standard Controller)
Controlador Estándar (Standard Controller)
Conseguir el ID de un registro y añadirlo a la URL
 Cuando la página visualforce interactúa con otras paginas en tu aplicación, puedes pasarle el identificador de un registro y la visualforce
puede mostrar la información de dicho registro.
 Por ejemplo:
– Ir a la aplicación Almacén
– Ir al tab del objeto Productos
– Pulsa en alguno de los registros y la pantalla mostrara los detalles de ese registro
– La URL cambia a algo parecido a esto: https://<your salesforceinstance>.salesforce.com/0018000000MDfn1
(el ID es la serie de dígitos del final: 0018000000MDfn1)
Controlador Estándar (Standard Controller)
Añadir Id a la URL
 Añadimos el Id del registro a la URL de la visualforce como parámetro
Controlador Estándar (Standard Controller)
Introducir datos usando formularios
 Vamos a crear una nueva visualforce llamada producto2
 Usando los componentes <apex:form> , <apex:inputfield> y <apex:commandButton> podemos crear una página visualforce para crear/editar
datos.
 <apex:form> es un componente que empaqueta todo lo que incluye para enviarlo al servidor como parte de una acción.
 <apex:inputField> crea un campo de formulario para un campo del objeto.
 <apex:commandButton> añade un botón a la interfaz de usuario de la página.. Este botón lanza una acción cuando es pulsado. En este
caso la acción es el save() del standard controller.
 <apex:pageMessages> para mostrar cualquier error o mensaje del formulario.
 Igual que en los ejemplos anteriores podemos añadir un Id válido en la URL:
 Si añadimos un Id estaremos editando y modificando un registro existente.
 En otro caso crearemos registros nuevos.
Ejemplo: Crear nueva VF “producto2”
Controlador Estándar (Standard Controller)
La pantalla resultante tiene el siguiente aspecto:
Modulo 4:
Controlador Extendido
Controller Extension
Controlador Extendido (Controller Extension)
Controlador Extendido
 Un controlador extendido es una clase personalizada escrita en APEX
 Trabaja sobre el mismo objeto que el controlador estándar.
 Puede sobreescribir el comportamiento del controlador estándar y añadir nuevo funcionamiento.
Modulo 5:
Controlador Personalizado
Custom Controller
Controlador Personalizado (Custom Controller)
 Con el controlador estándar la plataforma nos proporciona la funcionalidad básica para la pantalla.
 Un controlador personalizado te permite ir mas allá de ese comportamiento básico.
 El controlador contiene la lógica y la manipulación de datos necesaria para la página visualforce. Cuando necesitas sobre escribir la
funcionalidad existente, personalizar la navegación a través de la aplicación o un control mas exhaustivo sobre el acceso a la información,
visualforce nos permite escribir un controlador personalizado usando APEX y controlar la lógica de la aplicación de principio a fin.
Crear un Custom Controller
 Un controlador es simplemente una clase APEX. El único requerimiento para que una clase APEX se use como controlador es que exista.
 El controlador ni hereda de otra clase, ni implementa ninguna interfaz.
 Desde Configuración
• Configuración > Dsarrollo > Clases de Apex
• Nuevo
• Añadir la clase publica ProductoController
• Guardar
Controlador Personalizado (Custom Controller)
Crear un Visualforce
 Vamos a crear una nueva visualforce llamada productocustom que utilice nuestro controlador personalizado:
Añadir funcionalidad al controlador y la visualforce
 Método getProductos: Un método que recupera la información de los registros en la org mediante una consulta SOQL y los devuelve en una
lista.
 Clase interna VistaProductos: Podríamos pasar directamente los custom objects de la base de datos a la vista, pero eso no sería del todo
correcto. Por eso crearemos una clase interna para usar correctamente el patrón de diseño MVC.
 Modificar la visualforce: Modificar la visualforce productocustom para que obtenga la lista de productos llamando al método getProductos y los
muestre en pantalla.
Ejemplo: “ProductoController”
Ejemplo: “productocustom”
Controlador Personalizado (Custom Controller)
Modulo 6:
Unit Tests
Unit Tests
Definición de Unit Test
 En programación una prueba unitaria es una forma de comprobar el correcto funcionamiento de un módulo de código.
 Esto sirve para asegurar que cada uno de los módulos funcione correctamente por separado. Luego, con las pruebas de integración se podrá
asegurar el correcto funcionamiento del sistema o subsistema en cuestión.
Ventajas de Unit Test
 Fomentan el cambio
 Simplifican la integración
 Documenta el código
 Separación de la interfaz y la implementación
 Errores mas acotados y fáciles de localizar
Unit Test en Salesforce
 Salesforce requiere una cobertura del 75% para garantizar la calidad del código si:
– tu código va a ser empaquetado y subido a la AppExchange
– va a despleagarse en una org de producción
 Cobertura: Número de líneas de código cubiertas por los tests / Número total de líneas de código
Ejemplo: “ProductoControllerTest”
Unit Tests
Ejecutar Unit Tests y comprobar resultado:
 Configuración > Desarrollo > Ejecución de pruebas de Apex
Modulo 7:
Enlaces de Interés y preguntas
Enlaces de Interés
Enlaces generales:
 Power Point del workshop
• http://slideshare.net/northspainsalesforcedevelopergroup
 Código del workshop
• https://github.com/northspainsalesforcedevelopergroup/elevator20150226
 Meetup de Bilbao
• http://www.meetup.com/Spain-Salesforce-Developer-User-Group/
• http://www.meetup.com/Spain-Salesforce-Developer-User-Group/events/220539551/
 Salesforce Essentials Madrid
• https://www.salesforce.com/es/events/details/sfe15-madrid/
Información sobre visualfoce:
 Workbook de Visualforce
• http://www.salesforce.com/us/developer/docs/workbook_vf/index.htm
 Visualforce Technical library
• https://developer.salesforce.com/page/User_Interface
 Trailhead
• https://developer.salesforce.com/trailhead
Preguntas y dudas
Daniel Expósito López
Developer Corporate R&D FinancialForce.com (Spain)
• Mail: dexposito@financialforce.com
• Twiter: @daniexpo71
Feedback Elevate Bilbao: http://bit.ly/elevate-bilbao

Más contenido relacionado

La actualidad más candente

Microsoft crm
Microsoft crmMicrosoft crm
Microsoft crm
rinozante
 
Run Time Solutions Web CRM One 2.0 -
Run Time Solutions  Web CRM One 2.0 -Run Time Solutions  Web CRM One 2.0 -
Run Time Solutions Web CRM One 2.0 -
Run Time Solutions
 

La actualidad más candente (17)

El futuro de Marketing Digital con Salesforce
El futuro de Marketing Digital con Salesforce El futuro de Marketing Digital con Salesforce
El futuro de Marketing Digital con Salesforce
 
Diseño y Análisis de una Plataforma e-Commerce
Diseño y Análisis de una Plataforma e-CommerceDiseño y Análisis de una Plataforma e-Commerce
Diseño y Análisis de una Plataforma e-Commerce
 
Adopcion de Salesforce en el mundo real por KaizenStep
Adopcion de Salesforce en el mundo real por KaizenStepAdopcion de Salesforce en el mundo real por KaizenStep
Adopcion de Salesforce en el mundo real por KaizenStep
 
Proyecto Final Administración de Servidores
Proyecto Final Administración de ServidoresProyecto Final Administración de Servidores
Proyecto Final Administración de Servidores
 
Tienda Virtual.- Gygacom
Tienda Virtual.- GygacomTienda Virtual.- Gygacom
Tienda Virtual.- Gygacom
 
Sap b1 crm
Sap b1 crmSap b1 crm
Sap b1 crm
 
Presentacion salesforce lightning. el bueno, el feo y el malo. Por KaizenStep
Presentacion salesforce lightning. el bueno, el feo y el malo. Por KaizenStepPresentacion salesforce lightning. el bueno, el feo y el malo. Por KaizenStep
Presentacion salesforce lightning. el bueno, el feo y el malo. Por KaizenStep
 
Modelo de tres capas de ecommerce
Modelo de tres capas de ecommerceModelo de tres capas de ecommerce
Modelo de tres capas de ecommerce
 
Microsoft crm
Microsoft crmMicrosoft crm
Microsoft crm
 
La Evolución a un modelo eCommerce en 5 capas
La Evolución a un modelo eCommerce en 5 capasLa Evolución a un modelo eCommerce en 5 capas
La Evolución a un modelo eCommerce en 5 capas
 
TECNOLOGIAS DE INTEGRACION
TECNOLOGIAS DE INTEGRACIONTECNOLOGIAS DE INTEGRACION
TECNOLOGIAS DE INTEGRACION
 
Run Time Solutions Web CRM One 2.0 -
Run Time Solutions  Web CRM One 2.0 -Run Time Solutions  Web CRM One 2.0 -
Run Time Solutions Web CRM One 2.0 -
 
Novedades microsoft dynamics_nav_2018
Novedades microsoft dynamics_nav_2018Novedades microsoft dynamics_nav_2018
Novedades microsoft dynamics_nav_2018
 
Optimización de customer journeys por medio de datos sociales y transaccionales.
Optimización de customer journeys por medio de datos sociales y transaccionales.Optimización de customer journeys por medio de datos sociales y transaccionales.
Optimización de customer journeys por medio de datos sociales y transaccionales.
 
Multiple Listing Service
Multiple Listing Service
Multiple Listing Service
Multiple Listing Service
 
Bibitor hoja de producto y vídeo de nuestra solución ERP para el sector de be...
Bibitor hoja de producto y vídeo de nuestra solución ERP para el sector de be...Bibitor hoja de producto y vídeo de nuestra solución ERP para el sector de be...
Bibitor hoja de producto y vídeo de nuestra solución ERP para el sector de be...
 
Brochure Potentiaweb
Brochure PotentiawebBrochure Potentiaweb
Brochure Potentiaweb
 

Similar a Salesforce Bilbao Elevate '15 - 4th developer workshop

Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
cok12v
 
02 webinar gestion_expedientes_v0.6.1-intix
02 webinar gestion_expedientes_v0.6.1-intix02 webinar gestion_expedientes_v0.6.1-intix
02 webinar gestion_expedientes_v0.6.1-intix
Roger CARHUATOCTO
 
Diseño de sistemas
Diseño de sistemasDiseño de sistemas
Diseño de sistemas
unefa
 
DOCUMENTACION CDS Y ABAP RAP.docx
DOCUMENTACION CDS Y ABAP RAP.docxDOCUMENTACION CDS Y ABAP RAP.docx
DOCUMENTACION CDS Y ABAP RAP.docx
NONES2
 

Similar a Salesforce Bilbao Elevate '15 - 4th developer workshop (20)

Anteproyecto salazar bolivar
Anteproyecto salazar bolivarAnteproyecto salazar bolivar
Anteproyecto salazar bolivar
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
Construcción de un siti web
Construcción de un siti webConstrucción de un siti web
Construcción de un siti web
 
Html5
Html5Html5
Html5
 
Joomla
JoomlaJoomla
Joomla
 
Sistema de ventas, compras y almacén
Sistema de ventas, compras y almacénSistema de ventas, compras y almacén
Sistema de ventas, compras y almacén
 
Curso Analytics 2
Curso Analytics 2Curso Analytics 2
Curso Analytics 2
 
4 Jhs J Developer Adf
4  Jhs J Developer Adf4  Jhs J Developer Adf
4 Jhs J Developer Adf
 
02 webinar gestion_expedientes_v0.6.1-intix
02 webinar gestion_expedientes_v0.6.1-intix02 webinar gestion_expedientes_v0.6.1-intix
02 webinar gestion_expedientes_v0.6.1-intix
 
Tema 3
Tema 3Tema 3
Tema 3
 
Migacion forms apex
Migacion forms   apexMigacion forms   apex
Migacion forms apex
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 
Diseño web
Diseño webDiseño web
Diseño web
 
Diseño de sistemas
Diseño de sistemasDiseño de sistemas
Diseño de sistemas
 
DOCUMENTACION CDS Y ABAP RAP.docx
DOCUMENTACION CDS Y ABAP RAP.docxDOCUMENTACION CDS Y ABAP RAP.docx
DOCUMENTACION CDS Y ABAP RAP.docx
 
Salesforce III developer day bbva innovation center Madrid by @almazanjl
Salesforce III developer day bbva innovation center Madrid by @almazanjlSalesforce III developer day bbva innovation center Madrid by @almazanjl
Salesforce III developer day bbva innovation center Madrid by @almazanjl
 
EasyDev
EasyDevEasyDev
EasyDev
 
Microsoluciones: Excel superavanzado bases de datos access
Microsoluciones: Excel superavanzado bases de datos access Microsoluciones: Excel superavanzado bases de datos access
Microsoluciones: Excel superavanzado bases de datos access
 
Diseño web
Diseño webDiseño web
Diseño web
 

Más de northspainsalesforcedevelopergroup

Más de northspainsalesforcedevelopergroup (20)

17th Salesforce Developer Group meeting in Bilbao
17th Salesforce Developer Group meeting in Bilbao17th Salesforce Developer Group meeting in Bilbao
17th Salesforce Developer Group meeting in Bilbao
 
Salesforce Elevate - Bilbao '17 - Separación de Conceptos - SoC
Salesforce Elevate - Bilbao '17 - Separación de Conceptos - SoCSalesforce Elevate - Bilbao '17 - Separación de Conceptos - SoC
Salesforce Elevate - Bilbao '17 - Separación de Conceptos - SoC
 
Salesforce Elevate - Bilbao '17 - Process automation with and without code
Salesforce Elevate - Bilbao '17 - Process automation with and without codeSalesforce Elevate - Bilbao '17 - Process automation with and without code
Salesforce Elevate - Bilbao '17 - Process automation with and without code
 
Salesforce Elevate - Bilbao '17 - Introducción FinancialForce
Salesforce Elevate - Bilbao '17 - Introducción FinancialForceSalesforce Elevate - Bilbao '17 - Introducción FinancialForce
Salesforce Elevate - Bilbao '17 - Introducción FinancialForce
 
Salesforce Elevate - Bilbao '17 - Introducción NTS
Salesforce Elevate - Bilbao '17 - Introducción NTSSalesforce Elevate - Bilbao '17 - Introducción NTS
Salesforce Elevate - Bilbao '17 - Introducción NTS
 
Salesforce Elevate - Bilbao '17 - Chatbot y Salesforce
Salesforce Elevate - Bilbao '17 - Chatbot y SalesforceSalesforce Elevate - Bilbao '17 - Chatbot y Salesforce
Salesforce Elevate - Bilbao '17 - Chatbot y Salesforce
 
Salesforce Elevate - Bilbao '17 - Introducción Salesforce
Salesforce Elevate - Bilbao '17 - Introducción SalesforceSalesforce Elevate - Bilbao '17 - Introducción Salesforce
Salesforce Elevate - Bilbao '17 - Introducción Salesforce
 
14th Salesforce Developer Group meeting in Bilbao
14th Salesforce Developer Group meeting in Bilbao14th Salesforce Developer Group meeting in Bilbao
14th Salesforce Developer Group meeting in Bilbao
 
12th Salesforce Developer Group meeting in Bilbao
12th Salesforce Developer Group meeting in Bilbao12th Salesforce Developer Group meeting in Bilbao
12th Salesforce Developer Group meeting in Bilbao
 
13th Salesforce Developer Group meeting in Bilbao
13th Salesforce Developer Group meeting in Bilbao13th Salesforce Developer Group meeting in Bilbao
13th Salesforce Developer Group meeting in Bilbao
 
11th Salesforce Developer Group meeting in Bilbao
11th Salesforce Developer Group meeting in Bilbao11th Salesforce Developer Group meeting in Bilbao
11th Salesforce Developer Group meeting in Bilbao
 
9th Salesforce Developer Group meeting in Bilbao
9th Salesforce Developer Group meeting in Bilbao9th Salesforce Developer Group meeting in Bilbao
9th Salesforce Developer Group meeting in Bilbao
 
8th Salesforce Developer Group meeting in Bilbao
8th Salesforce Developer Group meeting in Bilbao8th Salesforce Developer Group meeting in Bilbao
8th Salesforce Developer Group meeting in Bilbao
 
6th Salesforce Developer Group - Bilbao
6th Salesforce Developer Group - Bilbao6th Salesforce Developer Group - Bilbao
6th Salesforce Developer Group - Bilbao
 
Salesforce Bilbao Elevate 2015 - Presentación principal y FinancialForce
Salesforce Bilbao Elevate 2015 - Presentación principal y FinancialForceSalesforce Bilbao Elevate 2015 - Presentación principal y FinancialForce
Salesforce Bilbao Elevate 2015 - Presentación principal y FinancialForce
 
Salesforce Elevate Bilbao 2015 - Desuto Presentación
Salesforce Elevate Bilbao 2015 - Desuto PresentaciónSalesforce Elevate Bilbao 2015 - Desuto Presentación
Salesforce Elevate Bilbao 2015 - Desuto Presentación
 
Salesforce Bilbao Elevate 2015 - Nts cloud computing y sfdc
Salesforce Bilbao Elevate 2015 - Nts cloud computing y sfdcSalesforce Bilbao Elevate 2015 - Nts cloud computing y sfdc
Salesforce Bilbao Elevate 2015 - Nts cloud computing y sfdc
 
Salesforce Bilbao Elevate '15 - 2nd developer workshop
Salesforce Bilbao Elevate '15 - 2nd developer workshopSalesforce Bilbao Elevate '15 - 2nd developer workshop
Salesforce Bilbao Elevate '15 - 2nd developer workshop
 
Salesforce Bilbao Elevate '15 - 1st developer workshop
Salesforce Bilbao Elevate '15 - 1st developer workshopSalesforce Bilbao Elevate '15 - 1st developer workshop
Salesforce Bilbao Elevate '15 - 1st developer workshop
 
5th Salesforce Developer Group - Bilbao
5th Salesforce Developer Group - Bilbao5th Salesforce Developer Group - Bilbao
5th Salesforce Developer Group - Bilbao
 

Último

S01.s1 - Clasificación de las Industrias.pdf
S01.s1 - Clasificación de las Industrias.pdfS01.s1 - Clasificación de las Industrias.pdf
S01.s1 - Clasificación de las Industrias.pdf
SalomeRunco
 
Unidad 2 Métodos Numéricos. Solución de ecuaciones algebraicas.docx
Unidad 2 Métodos Numéricos. Solución de ecuaciones algebraicas.docxUnidad 2 Métodos Numéricos. Solución de ecuaciones algebraicas.docx
Unidad 2 Métodos Numéricos. Solución de ecuaciones algebraicas.docx
AlanCarrascoDavila
 

Último (20)

Myoelectric_Control_for_Upper_Limb_Prostheses.en.es (2).pdf
Myoelectric_Control_for_Upper_Limb_Prostheses.en.es (2).pdfMyoelectric_Control_for_Upper_Limb_Prostheses.en.es (2).pdf
Myoelectric_Control_for_Upper_Limb_Prostheses.en.es (2).pdf
 
metodos de fitomejoramiento en la aolicacion de plantas
metodos de fitomejoramiento en la aolicacion de plantasmetodos de fitomejoramiento en la aolicacion de plantas
metodos de fitomejoramiento en la aolicacion de plantas
 
Balance materia y energia procesos de Secado
Balance materia y energia procesos de SecadoBalance materia y energia procesos de Secado
Balance materia y energia procesos de Secado
 
Matematica Basica Limites indeterminados
Matematica Basica Limites indeterminadosMatematica Basica Limites indeterminados
Matematica Basica Limites indeterminados
 
docsity-manzaneo-y-lotizacion para habilitacopm urbana
docsity-manzaneo-y-lotizacion para habilitacopm urbanadocsity-manzaneo-y-lotizacion para habilitacopm urbana
docsity-manzaneo-y-lotizacion para habilitacopm urbana
 
dokumen.tips_311-determinacion-del-espacio-estatico.pptx
dokumen.tips_311-determinacion-del-espacio-estatico.pptxdokumen.tips_311-determinacion-del-espacio-estatico.pptx
dokumen.tips_311-determinacion-del-espacio-estatico.pptx
 
1.1 Los 14 principios del Toyota Way -2024.pdf
1.1 Los 14 principios del Toyota Way -2024.pdf1.1 Los 14 principios del Toyota Way -2024.pdf
1.1 Los 14 principios del Toyota Way -2024.pdf
 
Sistema de alumbrado.pptx fjhhgghrhgghhuughuh
Sistema de alumbrado.pptx fjhhgghrhgghhuughuhSistema de alumbrado.pptx fjhhgghrhgghhuughuh
Sistema de alumbrado.pptx fjhhgghrhgghhuughuh
 
INFORME de actividades para pago de servicio
INFORME de actividades para pago de servicioINFORME de actividades para pago de servicio
INFORME de actividades para pago de servicio
 
UNIDAD 2.- SENSORES.TIPOS DE SENSORES Y SU CLASIFICAIÓN
UNIDAD 2.- SENSORES.TIPOS DE SENSORES  Y SU CLASIFICAIÓNUNIDAD 2.- SENSORES.TIPOS DE SENSORES  Y SU CLASIFICAIÓN
UNIDAD 2.- SENSORES.TIPOS DE SENSORES Y SU CLASIFICAIÓN
 
Semana 1 - Introduccion - Fluidos - Unidades.pptx
Semana 1 - Introduccion - Fluidos - Unidades.pptxSemana 1 - Introduccion - Fluidos - Unidades.pptx
Semana 1 - Introduccion - Fluidos - Unidades.pptx
 
Video sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptxVideo sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptx
 
IG01 Instalacion de gas, materiales, criterios, recomendaciones
IG01 Instalacion de gas, materiales, criterios, recomendacionesIG01 Instalacion de gas, materiales, criterios, recomendaciones
IG01 Instalacion de gas, materiales, criterios, recomendaciones
 
S01.s1 - Clasificación de las Industrias.pdf
S01.s1 - Clasificación de las Industrias.pdfS01.s1 - Clasificación de las Industrias.pdf
S01.s1 - Clasificación de las Industrias.pdf
 
Unidad 2 Métodos Numéricos. Solución de ecuaciones algebraicas.docx
Unidad 2 Métodos Numéricos. Solución de ecuaciones algebraicas.docxUnidad 2 Métodos Numéricos. Solución de ecuaciones algebraicas.docx
Unidad 2 Métodos Numéricos. Solución de ecuaciones algebraicas.docx
 
Presentacion Feria Cientifica Proyecto.pptx
Presentacion Feria Cientifica Proyecto.pptxPresentacion Feria Cientifica Proyecto.pptx
Presentacion Feria Cientifica Proyecto.pptx
 
Practica_Calificada_03333333333333333.pdf
Practica_Calificada_03333333333333333.pdfPractica_Calificada_03333333333333333.pdf
Practica_Calificada_03333333333333333.pdf
 
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALESCAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
 
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
 
Diseño digital - M. Morris Mano - 3ed.pdf
Diseño digital - M. Morris Mano - 3ed.pdfDiseño digital - M. Morris Mano - 3ed.pdf
Diseño digital - M. Morris Mano - 3ed.pdf
 

Salesforce Bilbao Elevate '15 - 4th developer workshop

  • 1. Visualforce and Apex Workshop Bilbao – Universidad de Deusto
  • 2.  Daniel Expósito López • Developer Corporate R&D • FinancialForce.com (Spain) • Mail: dexposito@financialforce.com • Twiter: @daniexpo71 Speaker
  • 3. Safe Harbor Safe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of intellectual property and other litigation, risks associated with possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non- salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-Q for the most recent fiscal quarter ended July 31, 2012. This documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
  • 4. Go Social! @salesforcedevs Salesforce Developers +Salesforce Developers Salesforce Developers Salesforce Developers
  • 5.  Introducción a Visualforce y Apex  Visualforce  Controlador Estándar (Standard Controller)  Controlador Extendido (Controller Extension)  Controlador Apex Personalizado (Custom Controller)  Creación y ejecución de Unit Tests  Enlaces de interés  Preguntas y dudas Agenda
  • 6. El código que se va a escribir en el workshop lo podéis encontrar en: https://github.com/northspainsalesforcedevelopergroup/elevator 20150226
  • 7. Modulo 1: Introducción a Visualforce y Apex
  • 8. Introducción a Visualforce y Apex Introducción  Force.com incluye diferentes herramientas que nos permiten crear aplicaciones bastante completas desde cero sin tener que escribir ni una sola línea de código (asistentes de creación de aplicaciones, objetos, tabs, layouts, …)  Pero también proporciona servicios de alto nivel como web services, ejecución de código planificada, procesos por lotes, triggers, lógica de backend para pantallas, etc. Todo esto requiere programación en Apex y Visualforce. Apex  Lenguaje de programación orientado a objetos, fuertemente tipificado que permite escribir código que se ejecute en la plataforma Force.com  Apex permite a los desarrolladores añadir lógica a la mayoría de eventos del sistema incluyendo botones, actualización de registros y lógica para las pantallas  Usa sintaxis muy similar a Java.  Apex es interpretado, ejecutado y controlado completamente por la plataforma Force.com.  Clases e interfaces.
  • 9. Apex y Java Igual  Tipos de datos primitivos  Control de flujo (if, for, while, …)  Manejo de excepciones  Colecciones: Lists, Sets, … Diferente  Insensible a mayúsculas  Strings con comillas simples: 'Joe'  Tipo de dato Id  Built-in support para acceso a BD.
  • 10. Introducción a Visualforce y Apex Visualforce  Framework basado en componentes para la creación de interfaces de usuario en la plataforma Force.com.  Permite construir pantallas sofisticadas mediante un lenguaje basado en tags similares a HTML (con prefijo apex) y una librería de componentes reusables que puede ser extendida.  Similar a JSP y ASP. Controlador basado en APEX  VisualForce se construyen combinando componentes de la plataforma, HTML, hojas de estilo o cualquier tecnología web o framework de javascript que permita crear interfaces de usuario mas dinámicas y animadas.  Cuando un usuario accede a una pagina visualforce el servidor realiza cualquier procesamiento requerido por la página, convierte la página a HTML y devuelve el resultado al navegador para mostrarlo.
  • 11. Introducción a Visualforce y Apex MVC Model-View-Controller  Salesforce usa el patrón de diseño Modelo-Vista-Controlador (MVC) que ayuda a la separación de conceptos y como beneficios proporciona un código mas reusable y minimiza el impacto de los cambios.  La vista (visualforce) interactúa con un controlador (clase apex) que implementa alguna funcionalidad para la página. Por ejemplo, la lógica a ejecutar cuando se pulsa un botón.  El controlador interactúa con el modelo (custom objects) obteniendo datos que se quieran mostrar.  Salesforce proporciona “Controladores Estándar” para los objetos que pueden ser usados para interactuar con los datos, por lo tanto en algunos casos no necesitaremos escribir el código para el controlador.  Aunque también puedes extender los controladores o crear tu propios controladores personalizados.
  • 12. Model-View-Controller en Salesforce View • Standard Pages • Visualforce Pages • External apps Controller • Standard Controllers • Controller Extensions • Custom Controllers Model • Objects • Triggers (Apex) • Classes (Apex)
  • 14. Visualforce: Creación de visualforce  Vamos a crear una primera visualforce “holamundo” bastante simple que nos servirá para familiarizarnos con el editor de visualforce y la creación de páginas. Development Mode  Development Mode nos permite acceder a un editor de páginas visualforce que a través del navegador para poder ver el código y previsualizar el aspecto de la página al mismo tiempo. Development mode también contiene un editor de Apex para trabajar con controladores y extensiones.  Para habilitar el Development mode ir a: • Configuración > Gestionar usuarios > Usuarios • Editar vuestro usuario • Seleccionar “Modo de desarrollo” • Guardar • Configuración > Mi información personal > Información personal • Modificar • Seleccionar “Modo de desarrollo” • Guardar
  • 15. Visualforce: Creación de visualforce  En el navegador añadimos /apex/holamundo a la instancia de Salesforce. Por ejemplo si tu instancia es https://eu5.salesforce.com, la nueva URL será https://eu5.salesforce.com/apex/holamundo.  A continuación deberíais ver el siguiente error:  Pulsa en el enlace Create Page holamundo y se abrirá el editor de visualforce con algún código por defecto.
  • 16. Visualforce: Creación de visualforce  Se abrirá el editor de visualforce con algo de código por defecto:
  • 17. Visualforce: Creación de visualforce Menú del editor de Visualforce  Las opciones del editor son las siguientes: – Guardar y previsualizar – Buscar – Ir a línea – Hacer/Deshacer – Aumentar/Decrementar tamaño de fuente  Otras opciones: – Enlace a la ayuda de componentes visualforce – Información sobre donde es usada la visualforce – Minimizar/Maximizar editor de visualforce – Cerrar development mode
  • 18. Visualforce: Creación de visualforce Component Reference  Listado de componentes que se pueden incluir en una visualforce.  Para cada componente encontramos una descripción.
  • 19. Visualforce: Creación de visualforce Modificar la Visualforce  Volvemos a editar nuestra primera visualforce hello con el editor de visualforce  Reemplazamos el contenido por lo siguiente:  Botón Save  El contenido de la pagina se refresca automáticamente.  Una visualforce siempre tiene que empezar y terminar con el tag apex:page (componente visualforce)  Los tags de visualforce siguen el formato XML por lo tanto también hay algunos tags que se auto-cierran. Por ejemplo: <apex:detail />  Generalmente se puede modificar el comportamiento y/o apariencia de un componente añadiéndole atributos. Los atributos son pares nombre/valor que se añaden al componente. Por ejemplo: sidebar="false".
  • 20. Visualforce: Creación de visualforce Añadir atributos usando auto-ayuda  Añadimos el atributo sidebar=“false” a nuestro tag de <apex:page>  Guardamos y vemos que efectivamente la parte de la izquierda de nuestra ventana ha desaparecido.  Posiciona el cursor después de las segundas comillas y pulsa espacio. Aparece una lista de atributos válidos para el componente apex:page.  Elige el atributo showHeader y ponlo a false. Guarda y verás que esta vez tu página tiene un aspecto diferente. Con este atributo hemos eliminado la cabecera de la página.  Vuelve a ponerlo a true y vuelve a guardar.
  • 21. Visualforce: Creación de visualforce Componentes Adicionales  Añade el siguiente código a la visualforce y guardar:  PageBlock: Un área de una página que usa un estilo similar a la apariencia de Salesforce pero sin ningún contenido por defecto.  PageBlockSection: Una sección de datos que se incluye en el componente < apex:pageBlock > component. Es similar a una sección en la definición de layout de un objeto estándar de salesforce.
  • 22. Visualforce: Creación de visualforce La pantalla tiene el siguiente aspecto con los estilos de Salesforce:
  • 23. Visualforce: Creación de visualforce Variables globales y formulas  Force.com guarda información sobre el usuario conectado en una variable global llamada User. Se puede acceder a esta variable global y cualquier otra mediante una expresión de lenguaje con la siguiente sintaxis: {! $<global variable>.<field name>}  {! …} indica a la visualforce que cualquier contenido dentro es dinámico y su valor debe ser calculado y sustituido en tiempo de ejecución.  Otras variables globales: Page, Label, Profile, …  Aparte de las variables globales, visualforce también soporta fórmulas que permiten manipular valores.
  • 24. Visualforce: Otras formas de trabajar con VF Configuración  Hay otras formas alternativas de crear y editar visualforce sin usar el development mode.  Desde Configuración • Configuración > Desarrollo > Páginas • Nuevo
  • 25. Visualforce: Otras formas de trabajar con VF Developer Console  Desde Developer Console (Consola de Desarrollador) • File > New > Visualforce Page
  • 26. Visualforce: Otras formas de trabajar con VF Otros  Force.com IDE (Eclipse Plugin)  MavensMate (Sublime Plugin)
  • 27. Email Templates Embedded in Page Layouts Generate PDFs Custom Tabs Mobile Interfaces Page Overrides Dónde puedo usar una Visualforce?
  • 28. Tipos de Controladores  En el paradigma MVC la vista interactúa con un controlador que contendrá alguna funcionalidad necesaria para la página. Por ejemplo, la lógica a ejecutar cuando un botón es pulsado.  Lo objetos de la plataforma tienen standard controllers por defecto que pueden ser usados para interactuar con los datos asociados a ese objeto y en muchos casos no necesitaremos escribir el código del controlador. Por lo tanto al trabajar con visualforce tenemos las siguientes opciones: – Usar el controlador estándar de salesforce para el objeto. – Extender el controlador estándar añadiendo nueva funcionalidad. – Crear un controlador personalizado desde cero.
  • 30. Ejemplo: Crear nueva VF “producto”
  • 32. Controlador Estándar (Standard Controller) Conseguir el ID de un registro y añadirlo a la URL  Cuando la página visualforce interactúa con otras paginas en tu aplicación, puedes pasarle el identificador de un registro y la visualforce puede mostrar la información de dicho registro.  Por ejemplo: – Ir a la aplicación Almacén – Ir al tab del objeto Productos – Pulsa en alguno de los registros y la pantalla mostrara los detalles de ese registro – La URL cambia a algo parecido a esto: https://<your salesforceinstance>.salesforce.com/0018000000MDfn1 (el ID es la serie de dígitos del final: 0018000000MDfn1)
  • 33. Controlador Estándar (Standard Controller) Añadir Id a la URL  Añadimos el Id del registro a la URL de la visualforce como parámetro
  • 34. Controlador Estándar (Standard Controller) Introducir datos usando formularios  Vamos a crear una nueva visualforce llamada producto2  Usando los componentes <apex:form> , <apex:inputfield> y <apex:commandButton> podemos crear una página visualforce para crear/editar datos.  <apex:form> es un componente que empaqueta todo lo que incluye para enviarlo al servidor como parte de una acción.  <apex:inputField> crea un campo de formulario para un campo del objeto.  <apex:commandButton> añade un botón a la interfaz de usuario de la página.. Este botón lanza una acción cuando es pulsado. En este caso la acción es el save() del standard controller.  <apex:pageMessages> para mostrar cualquier error o mensaje del formulario.  Igual que en los ejemplos anteriores podemos añadir un Id válido en la URL:  Si añadimos un Id estaremos editando y modificando un registro existente.  En otro caso crearemos registros nuevos.
  • 35. Ejemplo: Crear nueva VF “producto2”
  • 36. Controlador Estándar (Standard Controller) La pantalla resultante tiene el siguiente aspecto:
  • 38. Controlador Extendido (Controller Extension) Controlador Extendido  Un controlador extendido es una clase personalizada escrita en APEX  Trabaja sobre el mismo objeto que el controlador estándar.  Puede sobreescribir el comportamiento del controlador estándar y añadir nuevo funcionamiento.
  • 40. Controlador Personalizado (Custom Controller)  Con el controlador estándar la plataforma nos proporciona la funcionalidad básica para la pantalla.  Un controlador personalizado te permite ir mas allá de ese comportamiento básico.  El controlador contiene la lógica y la manipulación de datos necesaria para la página visualforce. Cuando necesitas sobre escribir la funcionalidad existente, personalizar la navegación a través de la aplicación o un control mas exhaustivo sobre el acceso a la información, visualforce nos permite escribir un controlador personalizado usando APEX y controlar la lógica de la aplicación de principio a fin. Crear un Custom Controller  Un controlador es simplemente una clase APEX. El único requerimiento para que una clase APEX se use como controlador es que exista.  El controlador ni hereda de otra clase, ni implementa ninguna interfaz.  Desde Configuración • Configuración > Dsarrollo > Clases de Apex • Nuevo • Añadir la clase publica ProductoController • Guardar
  • 41. Controlador Personalizado (Custom Controller) Crear un Visualforce  Vamos a crear una nueva visualforce llamada productocustom que utilice nuestro controlador personalizado: Añadir funcionalidad al controlador y la visualforce  Método getProductos: Un método que recupera la información de los registros en la org mediante una consulta SOQL y los devuelve en una lista.  Clase interna VistaProductos: Podríamos pasar directamente los custom objects de la base de datos a la vista, pero eso no sería del todo correcto. Por eso crearemos una clase interna para usar correctamente el patrón de diseño MVC.  Modificar la visualforce: Modificar la visualforce productocustom para que obtenga la lista de productos llamando al método getProductos y los muestre en pantalla.
  • 46. Unit Tests Definición de Unit Test  En programación una prueba unitaria es una forma de comprobar el correcto funcionamiento de un módulo de código.  Esto sirve para asegurar que cada uno de los módulos funcione correctamente por separado. Luego, con las pruebas de integración se podrá asegurar el correcto funcionamiento del sistema o subsistema en cuestión. Ventajas de Unit Test  Fomentan el cambio  Simplifican la integración  Documenta el código  Separación de la interfaz y la implementación  Errores mas acotados y fáciles de localizar Unit Test en Salesforce  Salesforce requiere una cobertura del 75% para garantizar la calidad del código si: – tu código va a ser empaquetado y subido a la AppExchange – va a despleagarse en una org de producción  Cobertura: Número de líneas de código cubiertas por los tests / Número total de líneas de código
  • 48. Unit Tests Ejecutar Unit Tests y comprobar resultado:  Configuración > Desarrollo > Ejecución de pruebas de Apex
  • 49. Modulo 7: Enlaces de Interés y preguntas
  • 50. Enlaces de Interés Enlaces generales:  Power Point del workshop • http://slideshare.net/northspainsalesforcedevelopergroup  Código del workshop • https://github.com/northspainsalesforcedevelopergroup/elevator20150226  Meetup de Bilbao • http://www.meetup.com/Spain-Salesforce-Developer-User-Group/ • http://www.meetup.com/Spain-Salesforce-Developer-User-Group/events/220539551/  Salesforce Essentials Madrid • https://www.salesforce.com/es/events/details/sfe15-madrid/ Información sobre visualfoce:  Workbook de Visualforce • http://www.salesforce.com/us/developer/docs/workbook_vf/index.htm  Visualforce Technical library • https://developer.salesforce.com/page/User_Interface  Trailhead • https://developer.salesforce.com/trailhead
  • 52. Daniel Expósito López Developer Corporate R&D FinancialForce.com (Spain) • Mail: dexposito@financialforce.com • Twiter: @daniexpo71 Feedback Elevate Bilbao: http://bit.ly/elevate-bilbao