lightning connect dug_26_nov2015
TRANSCRIPT
Lightning ConnectDUG Granada 26 Nov 2015
Agustina García Odeian @agarciaodeianAlba Azcona Rivas @Alba_ARivas
¿Qué es Lightning Connect?●Feature que permite visualizar tablas de datos
alojadas en sistemas externos en Salesforce:
● No es un ETL (Extract - Transform - Load)● Los datos NO se copian● Se pueden leer bajo demanda y en TIEMPO REAL
como si formaran parte de nuestro esquema● Se pueden escribir si el datasource lo permite
External datasource● Para poder trabajar con Lightning Connect
necesitamos un external datasource. Este puede ser un repositorio externo Google Drive, Sharepoint, Amazon, una base de datos…
● Hay que elegir un adapter para comunicarse con el datasource: Lightning Connect OData 2.0, OData 4.0
● OData es un protocolo que permite el acceso a datos en tiempo real mediante peticiones REST.
● Puede estar autenticado (OAuth) o no.Vamos a crear un external datasource:- Nuestro datasource será un spreadsheet: https://goo.gl/auSswl- Setup → Develop → External Datasource - Type: OData 2.0 - URL: https://sheltered-badlands-4799.herokuapp.com/InMemoryProducerExample.svc
External datasource● Custom Connector - Apex Connector Framework
●Provider class●Connection class
External objects●Es un nuevo tipo de objeto que permite
visualizar la información que tenemos en nuestro external datasource
Vamos a crear un external object:- En la página de detalle del External Datasource, click en “Validate & Sync”- Sincroniza el objeto “HotelReservation”- Puedes ver que se ha creado un nuevo objeto en Setup → Develop External Objects.
External objects●¿En qué se diferencia un external object de un
objeto custom?● Acaba en __x● External Datasource: datasource desde el cual lo
hemos creado● Name field: indica cuál de los campos del objeto
será el Name.● Standard fields:
● External Id: identifica de forma unívoca al registro● Display URL: URL a través de la cual consumimos el
objeto
Tabs y layouts●Podemos crear una tab para el external object
como hacemos normalmente.
●Podemos modificar el page layout, compact layout y search layouts del objeto, como si de un objeto normal se tratara.
Vamos a crear una tab para nuestro external object:- Crea una tab para “HotelReservation”- Ve a la tab y modifica las columnas del layout para mostrar
todos los campos
Demo
External lookup●Crea un lookup hacia un external object. Es decir,
podemos crear un external lookup:● De custom object hacia external object● De external object hacia otro external object
Vamos a crear un external lookup:- Crea un objeto que se llame “ParkingReservation”. Varias reservan de parking pueden estar asociadas a la misma reserva de habitación.- Crea un external lookup en ParkingReservation al external object
“HotelReservation”.- Crea una tab para el objeto Parking Reservation- Crea una reserva de parking desde la nueva tab
Indirect lookup●Es un lookup desde un external object hacia un
objecto custom o standard.
●El custom o standard object que vamos a utilizar tiene que tener un unique External Id.
Vamos a crear un indirect lookup:- Vamos a utilizar el objeto Account para asociarlo con las personas que hacen las reservas. - Crea un external id en Account llamado “Guest Name” (Guest_Name__c).- Utiliza el script populate_accounts.txt para crear Accounts con
los mismos datos que tenemos en nuestra tabla externa.- Edita el campo Guest Name de Hotel Reservation para que sea un
indirect lookup hacia el campo Guest Name de Account.- Puedes ver el resultado viendo la lista de Hotel Reservations.- Edita el layout de Account para añadir la related list de Hotel
Reservations.
VF, Apex and SOQL●Podemos crear código Apex para el external
object, leer sus datos mediante SOQL y crear páginas Visualforce.
Vamos a crear una página VF para poder imprimir facturas de las reservas:- Crea un controlador para Hotel Reservation (HotelRervationController.cls). - Crea una página VF que haga uso del controlador y cree la factura en PDF (reservation_invoice.page).- Crea un botón “Print Invoice” en la vista de detalle de Hotel
Reservation que nos lleve a la página VF.- Añádelo al layout de la vista de detalle.- Comprueba el resultado.
FieldSets●También podemos crear FieldSets para un
external object.
Vamos a crear un fieldset y sobreescribir la página de detalle de Hotel Reservation con un VF que muestre este fieldset- Crea un fieldset para el external object Hotel Reservation (Reservation_Information). - Crea una página VF que haga uso del controlador y renderice los campos indicados en el fieldset (reservation_view.page).- Sobreescribe el comportamiento del boón view para que muestre la
nueva página.- Comprueba el resultado.
Aún hay más…●También puedes visualizar tu objeto en
Salesforce1, y como dijimos anteriormente modificar su compact layout para personalizar los campos que se muestran.
●Puedes seguir tus external objets a través de los feeds de Chatter (aunque sin Field History Tracking).
●Se puede acceder a ellos a través de las APIs SOAP y REST de SF.
●Puedes aplicar FLS a tus external objects.
Writability●Antes de la Winter 16 read-only. A partir de la
Winter 16, writable!!
●Esto implica que a partir de la Winter 16, podemos utilizar operaciones DML en nuestro código Apex para escribir estos objetos.
●Diferencias en cuanto al momento en el que se commitean los datos. Para ello:
Limitaciones●Sólo podemos tener 100 external objects / org
●No podemos crear relaciones Master - Detail
●Workaround con Indirect y External Lookups
●No podemos crear Reports // Dashboards
●No se pueden crear Triggers
●No se pueden utilizar en fórmulas o workflow.
●Todo lo relacionado con sharing no aplica para los external objects.
Más información● Blog de Agustina: http://agarciaodeian.com/2015/10/20/external-objects-what-lightning-connect-offers-to-us/
Gracias por venir!!