
El Framework para Pruebas de Salesforce
El Framework para pruebas de Salesforce es importante para asegurarnos de que nuestras aplicaciones no rompan la funcionalidad y se ejecuten como se espera.
Luego de leer este post podrás aprender a describir las principales características y funcionalidades del Framework para pruebas de Salesforce, además de, las consideraciones y opciones disponibles para ejecutar pruebas seleccionadas al implementar componentes de Apex.
¿Por que usar el Framework Para Pruebas de Salesforce?
- Para asegurar un desarrollo exitoso a largo plazo y que la aplicación funcione como se espera.
- Además, para garantizar que los cambios y extensiones de una aplicación no interrumpan la funcionalidad.
- Se requiere para implementar una aplicación de Salesforce en el cliente.
Características del Framework Para Pruebas de Salesforce
- Escribir Unit Tests (test unitarios) para clases y triggers de Apex.
- Ejecutar Unit Tests o varias pruebas en ejecución juntas.
- Revisar los resultados de la prueba para ver si tiene éxito o fallan en el Developer Console.
- Generar cobertura (code coverage) para el código cada vez que se ejecuta una prueba.
Requisitos de implementación
- La cobertura general del código en una organización debe ser del 75% para una implementación exitosa.
- Las clases y triggers de Apex deben compilarse correctamente.
- Las clases y métodos de prueba no están incluidas en la cobertura de código requerida.
Unit Tests del Framework Para Pruebas de Salesforce
- Son creadas y ejecutadas para ayudar a facilitar un código sin errores.
- Se puede probar el código en un solo y en varios registros.
- Permite tener un conjunto de pruebas de regresión para volver a ejecutar cada vez que se actualiza el código.
- Test suites (colección de pruebas) pueden ser creados para ejecutar múltiples clases de prueba.
- Se proporcionan herramientas integradas para permitir la ejecución y análisis de pruebas unitarias.
- Incluye ayuda para cargar data de prueba de diferentes fuentes.
- Se ejecutan sin arrojar alguna excepción límite o desconocida.
- El código Apex ejecutado en métodos de prueba está sujeto a límites reguladores.
- La cobertura del código se genera para las clases Apex y se activa cada vez que se ejecuta una prueba.
- Todos los disparadores Apex deben tener al menos 1 línea de cobertura de código.
- Parallel Apex Testing permite ejecutar pruebas unitarias en paralelo y ayuda a acelerar el tiempo de ejecución.
Limitaciones de Unit Test
- No se puede enviar correos electrónicos salientes. El código Apex que envía un mensaje de correo electrónico se ejecuta satisfactoriamente, pero no se envía un email desde la org.
- Los Unit tests no pueden realizar HTTP callouts. Para probar Apex callouts, se pueden usar respuestas simuladas (Mock Responses) que se crean mediante la interfaz HttpCalloutMock.
Ejecución de pruebas seleccionadas
Las pruebas seleccionadas son una opción que permite especificar las únicas clases de prueba a ejecutar.
- Para clarificar la cobertura de algunos códigos Apex.
- La cobertura de código es calculado individualmente por cada clase y trigger, además, es diferente del porcentaje de la cobertura del código general.
- Ejecuta un subconjunto de resultados para realizar pruebas más rápidas.
- Solo es para clases de prueba, no para métodos individuales.
Opciones de prueba con Change Sets
Para deployar un código de Sandbox a Producción podemos usar Change Sets. Sin embargo, cuando lo usamos, hay cuatro opciones de prueba disponibles.
- Default: La opción predeterminada en Production es ejecutar pruebas locales. Por otro lado, en sandbox, no se ejecutan pruebas.
- Run Local Test: Ejecuta todas las pruebas, excepto Managed Package Tests.
- All Tests: Ejecuta todas las pruebas, incluyendo Managed Package Tests.
- Specified Tests: Las clases de prueba a ejecutar se especifican en una lista.
Más Información Acerca de Framework Para Pruebas de Salesforce
- What are Apex Unit Tests?
- What to Test in Apex
- Get Started withi Apex Unit Tests
- Choose Which Tests to Run in a Deployment
- Choose Test Options for Change Sets
- Running a Subset of Tests in a Deployment
- Code Coverage Best Practices
Para aprender más de Salesforce, puedes visitar Static and Instance in Apex Salesforce

Lightning Web Component in Salesforce
A Lightning Web Component in Salesforce is a framework to build custom components, using HTML and modern Javascript, to run efficiently and save resources in our apps.
Types of Lightning Web Component in Salesforce
- UI Component: Custom components that users can interact with via interfaces, buttons, forms, etc.
- Service Component (Library): Serves a helper library, however, is created to have variables or functions that can be shared between components.
Contents for Lightning Web Component in Salesforce
HTML File
- Every UI Component must have an HTML file.
- The root tag should be <template>.
- Convention name is <component>.html, for example, mainComponent.html.
- When a component renders, the <template> tag is replaced with the name of the component with “c” at the begining, as default namespace.
<!-- Code --> <template> <h1>Hello World</h1> </template>
<!-- Rendered --> <c-main-component> <h1>Hello World</h1> </c-main-component>
Javascript File
- A Javascript file is required in any type of Lightning Web Component.
- Follows the naming convention <component>.js, for example, mainComponent.js
- The class name must be written in Camel Case such as: class MainComponent.
- We can import a class, function or variable declared in a module using the import keyword.
- Javascript files in Lightning web components are ES6 or ES2015 (ECMAScript) modules.
- Every component that has UI must have the code below:
import {LightningElement} from 'lwc'; class MainComponent extends LightningElement { //code here } export default MainComponent;
- A custom component should extends the class LightningElement as the code above.
- The export default keywords allows to use this class by other components.
- A javascript file can contain: Private properties, event handlers and Public API (via public properties and methods using @api)
- Fields defined in a Lightning web component class are reactive. Meaning, if the value of a field changed in the controller, the component automatically rerenders.
- Use the decorator @track to detect any changes made to its properties or elements in an object or array.
Configuration File
- Configuration file is required for every component.
- Defines the metadata for the component. Also, includes the design configuration.
- Naming as <component>.js-meta.xsml. For example, mainComponent.js-meta.xml.
<?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metada"> <apiVersion>45.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightning__AppPage</target> </targets> </LightningComponentBundle>
CSS File
- Name convention as <component>.css. For example, mainComponent.css.
- Uses standard CSS.
- Does not override other styles on other parts of a page, only scoped to the component.
- Only once CSS per Lightning web component.
- Custom Aura tokens are created to style Aura components and can be used as variables for css. (See the code example)
<!--- MyAuraTokens.tokens --> <aura:tokens> <aura:token name="myBaseFontNames" value="Helvetica, Arial" /> <aura:token name="myBaseFontColor" value="#222222" /> </aura:tokens>
/* myLightningWebComponent.css */ .bodyClass { font-family: var(--c-myBaseFontNames); color: var(--c-myBaseFontColor); }
- Can create a Lightning Web Component that contains only a CSS and configuration file and, then imported by another Lightning Web Component that needs it.
- To import a CSS Module, use @import statement. For example: @import “c/mainComponent”
SVG Icon
- A custom icon can be defined for the custom component including an SVG file.
- It’s naming convention is <component>.svg such as mainComponent.svg.
- Only one SVG file is allowed per Lightning web component.
- The SVG file is added to the top-level component folder.
- SVG icon is visible in Lightning App Builder and Experience Builder.
Tests for Lightning Web Component in Salesforce
- Component tests for Lightning Web Component are run using Jest.
- Jest is a third-party testing framework used to test Javascript code.
- Create a folder __tests__ on the component folder to contain all the test files.
- The convention name recommended is <component>.test.js such as testMainComponent.test.js
- Jest tests are created locally and run independently of Salesforce.
Access to Resources from Lightning Web Component in Salesforce
- Static Resources can be imported using @salesforce/resourceUrl.
- Content Asset Files can be imported using @salesforce/contentAssetUrl.
- Custom Labels used for implementing multilingual features can be imported using @salesforce/label.
- In addition, can import Internationalization Properties using @salesforce/i18n scoped module.
- User Information can be imported using @salesforce/user.
- Form Factor of the device is accessed by importing @salesforce/client/formFactor.
//Using a static resource in lwc import { LightningElement } import staticGVallejos from "@salesforce/resourceUrl/gvallejosLWC"; class MainComponent extends LightningElement { imgGVallejos = staticGVallejos + "/gvallejosLWC/images/gVallejos.png"; }
Checking User Permissions in Lightning Web Component in Salesforce
- The scoped modules @salesforce/userPermissions and @salesforce/CustomPermission are used to check permissions in Lightning Web Component.
- To check a user permission:
import canCustomizeReports from '@salesforce/userPermission/CreateCustomizeReports';
- To check custom permissions:
//component.js import { LightningElement } from 'lwc'; import hasViewGoogleSlides from '@salesforce/customPermission/ViewGoogleSlides'; export default class App extends LightningElement { get isViewButtonVisible () { return hasViewGoogleSlides; } openGoogleSlides(e) { ... } }
<!-- component.html --> <template> <template if:true={isViewButtonVisible}> <lightning-button label="View Content" onclick={openGoogleSlides}></lightning-button> </template> </template>
Considerations When Using Lightning Web Component Model
- A Lightning Web Component cannot contain an Aura Component.
- In addition, the methods loadScript and loadStyle available through the platformResourceLoader module is used to load Javascript and CSS files respectively.
- Finally, unlike Aura Components, Javascript and CSS files referencing takes place in the controller instead of the template.
Learn More
- Introducing Lightning Web Component
- Define a Component
- Data Binding in a Template
- Component JavaScript File
- Configuration File Tags
- Create a CSS Style Sheet for a Component
- Access Static Resources, Labels, Internationalization Properties, User IDs, and Form Factors
If you want to learn more about Salesforce go to Lightning Component Framework

Lightning Web Component en Salesforce
Un Lightning Web Component (LWC) en Salesforce es un framework para construir componentes personalizados, usando HTML y Javascript moderno, para que nuestras aplicaciones funcionen de manera eficiente y ahorren recursos.
Tipos de Lightning Web Components
- UI Component: Son componentes personalizados con los que los usuarios pueden interactuar a través de interfaces, botones, formularios, etc.
- Service Component (Library): Sirve como librería auxiliar, es decir, está creado para tener variables o funciones que se pueden compartir entre componentes.
Contenido para Lightning Web Component
HTML File
- Todo componente UI debe tener un archivo HTML.
- La etiqueta raíz debe ser <template>.
- El nombre convencional es <component>.html, por ejemplo, mainComponent.html
- Cuando un componente se renderiza, la etiqueta <template> es remplazada, predeterminadamente, con el nombre del componente con la letra “c” al principio.
<!-- Code --> <template> <h1>Hello World</h1> </template>
<!-- Rendered --> <c-main-component> <h1>Hello World</h1> </c-main-component>
Javascript File
- Se requiere de un archivo Javascript para cualquier tipo de Lightning Web Component.
- Persigue el nombre convencional <component>.js, por ejemplo, mainComponent.js.
- El nombre de la clase debe escribirse en Camel Case como: class MainComponent.
- Podemos importar una clase, función o variable declarada en un módulo usando la palabra clave “import”
- Los archivos Javascript en LWC son módulos ES6 o ES2015 (ECMAScript).
- Todo componente que tiene UI debe tener el código a continuación:
import {LightningElement} from 'lwc'; class MainComponent extends LightningElement { //code here } export default MainComponent;
- Un componente personalizado puede extender la clase LightningElement como en el código anterior.
- Las palabras clave export default permite usar esta clase mediante otros componentes.
- Un archivo Javascript puede contener: Propietarios privados, controladores de eventos y APIs Públicos (a través de propiedades públicas y métodos usando @api).
- Los campos definidos en una clase Lightning Web Componente son reactivos. Es decir, que si el valor del archivo cambia en el controlador, el componente se renderiza automáticamente.
- Usa el decorador @track para detectar cualquier cambio hecho a sus prioridades o elementos de un objeto o array.
Configuración File
- Se requiere del archivo de configuración para cada componente.
- Define la metadata del componente. Además, incluye el diseño de la configuración.
- Nombrarlo como <component>.js-meta.xsml. Por ejemplo, mainComponent.js-meta.xml.
<?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metada"> <apiVersion>45.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightning__AppPage</target> </targets> </LightningComponentBundle>
CSS FILE
- Podemos nombrarlos como <component>.css. Por ejemplo: mainComponent.css.
- Utiliza CSS estándar.
- No anula los estilos de otras partes de la página, solo se aplica al componente.
- Se require sólo de un CSS por LWC.
- Los Custom Aura Tokens brindan estilo a los Aura components y se pueden utilizar como variables para CSS. (Ver el código de ejemplo)
<!--- MyAuraTokens.tokens --> <aura:tokens> <aura:token name="myBaseFontNames" value="Helvetica, Arial" /> <aura:token name="myBaseFontColor" value="#222222" /> </aura:tokens>
/* myLightningWebComponent.css */ .bodyClass { font-family: var(--c-myBaseFontNames); color: var(--c-myBaseFontColor); }
- Podemos crear un Lightning Web Component que contenga solo un CSS y un archivo de configuración. Luego podemos importarlo por medio de otro LWC que lo necesite.
- Para importar un Modulo CSS, podemos usar la declaración @import. Por ejemplo: @import “c/mainComponent”
SVG Icon
- Para definir un ícono personalizado debemos incluir un archivo SVG en el componente.
- Su nombre convencional es <component>.svg como mainComponent.svg.
- Solo un archivo SVG es permitido por cada Lightning web Component.
- El archivo SVG es adicionado a la carpeta de componentes de nivel superior.
- SVG Icon es visible en Lightning App Builder y Experience Builder.
Pruebas para Lightning Web Component en Salesforce
- Las pruebas para Lightning Web Componente se ejecutan usando Jest.
- Jest es un framework para pruebas externo que se usa para probar nuestro código Javascript
- Podemos crear una carpeta __tests__ en los archivos del componente para guarda todos los datos de prueba.
- El nombre convencional recomendado es <component>.test.js como testMainComponent.test.js.
- Las pruebas Jest son creadas localmente y se ejecutan independientemente de Salesforce.
Acceso a Recursos de Lightning Web Component en Salesforce
- Para importar Recursos Estáticos (Static Resources) se debe usar @salesforce/resourceUrl.
- Los archivos de activos (assets) pueden ser importados usando @salesforce/contentAssetUrl.
- Las etiquetas personalizadas usadas para implementar multi-lenguajes pueden ser importadas usando @salesforce/label.
- Adicionalmente, se puede importar propiedades de internalización usando el módulo de ámbito @salesforce/i18n.
- La información del usuario puede ser importada usando @salesforce/user.
- Para acceder al Form Factor del dispositivo se puede importar @salesforce/client/formFactor.
//Using a static resource in lwc import { LightningElement } import staticGVallejos from "@salesforce/resourceUrl/gvallejosLWC"; class MainComponent extends LightningElement { imgGVallejos = staticGVallejos + "/gvallejosLWC/images/gVallejos.png"; }
Permisos de usuario de un Lightning Web Component
- Para comprobar permisos en Lightning Web Component podemos usar los módulos de alcance @salesforce/userPermissions y @salesforce/CustomPermission.
- Si queremos verificar el permiso de un usuario, podemos escribir el siguiente código:
import canCustomizeReports from '@salesforce/userPermission/CreateCustomizeReports';
- En el siguiente código vemos como se pueden verificar los permisos personalizados:
//component.js import { LightningElement } from 'lwc'; import hasViewGoogleSlides from '@salesforce/customPermission/ViewGoogleSlides'; export default class App extends LightningElement { get isViewButtonVisible () { return hasViewGoogleSlides; } openGoogleSlides(e) { ... } }
<!-- component.html --> <template> <template if:true={isViewButtonVisible}> <lightning-button label="View Content" onclick={openGoogleSlides}></lightning-button> </template> </template>
Consideraciones al Usar el Modelo Lightning Web Component
- Un Lightning Web Component no puede contener un Aura Component.
- Adicionalmente, los métodos loadScript y loadStyle disponibles a través del módulo platformResourceLoader son usados para cargar archivos Javascript y CSS respectivamente.
- Finalmente, a diferencia de los Aura Components, las referencias de los archivos Javascript y CSS, se realizan en el controlador, en lugar de en el template.
Más Información
- Introducing Lightning Web Component
- Define a Component
- Data Binding in a Template
- Component JavaScript File
- Configuration File Tags
- Create a CSS Style Sheet for a Component
- Access Static Resources, Labels, Internationalization Properties, User IDs, and Form Factors
Si quieres aprender más sobre Salesforce puedes ir a Lightning Component Framework
Si quieres saber cómo hacer un lightning web component paso por paso, puedes ver el siguiente video Aprende a crear una aplicación para ver los casos de COVID-19 que hay en tu país

Ways to include Visualforce pages into Lightning Platform
Visualforce pages into Lightning Platform have several ways to be included in Salesforce. Do you want to know more about it?
When an organization has complex business processes which require unique UI and are not support by existing functionality, we can use Visualforce pages, that’s the importance of it.
Applications of Visualforce Pages into Lightning Platform
A Visualforce Page (VFP) can be incorporated into Force.com as tabs, home pages, page layouts, buttons, links, components, menu items, quick actions and pages.
Tabs
When creating a custom tab we are allow to embed Visualforce pages.
Go to Setup and search for “Tabs“. In the Visualforce Tabs section we are allow to create a new tab related a visualforce page.

In addition, we can override Tab home Pages. Overriding tabs only works when the Visualforce pages uses the standard list controller for that tab, that means, using custom controllers or no controller.
Page Layouts
We can embed visualforce pages into page layouts. However, that VFP should use the standard controller of the standard or custom object associated with the page layout.

Button or Link
We can configure Buttons or links to launch Visualforce pages. Also, we can override buttons or actions in standard or custom objects.
To create a custom button for an standard object, go to the “Buttons, Links and Actions” section in the object and clic in “New Button or Link”, select the visualforce page option in Content Source and, finally, add it to the Object’s Layout from Mobile & Lightning Actions.


To replace a standard button, link or action. Go to that section in the object, select the button and clic in Edit and select as “override with” option your visualforce page.


Learn More
- Get Started with Visualforce
- Where Visualforce Pages Can Appear in the Salesforce Mobile App
- Customize Navigation
- Contenidos Web en Visualforce Pages: HTML, CSS y Javascript
To know more about Salesforce can go to The Lightning Component Framework

¿Cómo incluir Visualforce en Lightning Platform?
Visualforce en Lightning Platform puede ser incluida de muchas maneras, más de las que normalmente tenemos en cuenta.
Cuando una organización tiene procesos de negocio complejos que requieran una interfaz UI, no compatible con la funcionalidad existente, podemos usar Visualforce pages.
A continuación vamos a ver las diferentes maneras de incluir una Visualforce en Salesforce.
Formas de Incluir Visualforce en Lightning Platform
Una visualforce page (VFP) puede ser incorporada, en Force.com, como tabs, páginas de inicio, layouts, botones, links, componentes, menu items, acciones rápidas y páginas.
Tabs
Al crear una pestaña personalizada (custom tabs) podemos incrustar páginas de Visualforce de la siguiente manera:
Vamos a “Setup” y buscamos “Tabs“. En la sección Visualforce Tabs, podemos crear una nueva pestaña relacionada con la visualforce page.

Adicionalmente, podemos sobrescribir las pestañas del inicio (Home Tabs). No obstante, para sobrescribir estas pestañas debemos utilizar, únicamente, controladores personalizados o no usar controladores en nuestra visualforce page.
Página Layouts
Podemos incrustar páginas Visualforce en los layouts de un object. Sin embargo, esta visualforce debe usar el standard controller del objeto estándar o personalizado asociado con el layout.

Botones o Links
Podemos configurar botones o links para abrir Visualforce pages. Además, podemos sobrescribir botones o acciones en objetos estándar o personalizados.
Para crear un botón personalizado en un objeto estándar, vamos a la sección “Buttons, Links and Actions” en el objeto deseado, damos clic en “New Button o Link” y seleccionamos la opción Visualforce Page en Content Source. Luego, debemos agrégalo al layout del objeto en la sección Mobile & Lightning Actions.


Para reemplazar un botón, link o acción, vayamos a esta sección en el objeto, seleccionamos el botón deseado y damos clic en Edit. A continuación, seleccionamos nuestra visualforce page en las opciones correspondientes.


Más Información
- Get Started with Visualforce
- Where Visualforce Pages Can Appear in the Salesforce Mobile App
- Customize Navigation
- Contenidos Web en Visualforce Pages: HTML, CSS y Javascript
Para saber más sobre Salesforce puedes ir a Lightning Component Framework

The Lightning Component Framework
The Lightning Component Framework is a UI framework that allows building single-page web apps with dynamic and responsive user interfaces in Salesforce.
Benefits of Using Lightning Component Framework
- Utilizes event-driven architecture. Therefore, components are capable of listening and response events.
- Can build responsive applications.
- Uses Javascript on the client side and Apex on the server side.
- Utilizes a stateful client and a stateless server. It means, it calls the server only when is necessary incresing the effience of the app.
- Can use Aura or Lightning Web Components to build components that coexist and interoperate on a page.
- Can use in different context. For example, can be used in Custom Tabs, Lightning Experience and the Salesforce mobile app.
- Components are reusable and reduce time development.
Event-Driven in Lightning Component Framework
- Utilizes event-driven architecture which consists of event procedures, event consumers, and channels.
- To handle information in real time when an event occurs.
- Simplifies communication by decoupled event producers from event consumers.
- A component can subscribe to an application event or a visible component event.
Built-in Apps
- Theres a wide range of built-in components to build apps quickly.
- Can be responsive.
- Can be use in different devices without problems.
- Also, can build reusable components building blocks and accelerate app development.
- Can customize applications and components using the Salesforce Design Guidelines call Lightning System Design.
Multiple Uses Cases
- Components can be accessed from the navigation menu in the Salesforce Mobile App.
- In addition, Lightning components can be added to Visualforce Pages usign the <apex:includeLightning /> component.
- We can publish components on the Appexchange and shared with others.
- Standard and custom components can be added to Lightning Pages using the Lightning App Builder.
- Finally, we can use Experience Builder to add componentes in a community.
Increased Performance
- Lightning components runs on stateful and stateless architecture to use resources efficiently.
- Increses efficiency by utilizing server, browser, devices and network intelligently.
- Use Javascript on the client side to manage UI component metadata and data.
- Client calls the server or only sends requests to it only when necessary.
- Server only sends the data that is needed by the client.
- Can use JSON format to exhange data between client and server.
More Information
- What is Salesforce Lightning?
- Why Use the Lightning Component Framework?
- Event-Driven Software Architecture
- Why Use the Aura Components Programming Model?
- Trailhead – Use Lightning Components in Lightning Experience
For more Salesforce information: Static and Instance in Apex Salesforce

Lightning Component Framework
Lightning Component es un framework UI que permite crear páginas web simples, responsive y con interfaces dinámicas en Salesforce.
Beneficios de usar Lightning Component Framework
- Utiliza una arquitectura even-driven. Por lo tanto, los componentes son capaces de escuchar y responder a eventos.
- Pueden construir aplicaciones responsive, es decir, se adaptan a cualquier dispositivo.
- Usa Javascript en el lado del cliente y Apex en el lado del servidor.
- Usa un cliente stateful y un servidor stateless. Es decir, llama al servidor solo cuando es necesario, incrementando la eficiencia de la aplicación.
- Puede usar Aura o Lightning Web Components para construir componentes que coexistan e interoperen en una misma página.
- Se puede usar en diferente contexto. Por ejemplo, se puede utilizar en Pestañas Personalizadas, Lightning Experience y en la aplicación movil de Salesforce.
- Además, los componentes son reusables y reducen el tiempo de desarrollo.
Event-Driven en Lightning Component Framework
- Utiliza la arquitectura even-driven. Es decir, consta de procedimientos y consumidores de eventos, además de, canales.
- Se utiliza para manejar información en tiempo real cuando un evento ocurre.
- Adicionalmente, simplifica la comunicación de los productores de eventos desacoplando a los consumidores de eventos.
- Un componente puede suscribirse a una aplicación del evento o ser visible para los eventos del componente.
Aplicaciones Integradas
- Salesforce brinda una gran cantidad de componentes integrados para crear aplicaciones rápidamente.
- Pueden ser responsive, por lo tanto, se pueden utilizar en diferentes dispositivos sin problema.
- Además, se pueden construir componentes reusables, construyendo bloques que aceleren el desempeño de la aplicación.
- Se pueden personalizar las aplicaciones utilizando Lightning System Design.
Múltiples Casos de Uso
- Se pueden acceder a los componentes desde el menú de navegación en la Aplicación Movil de Salesforce.
- Adicionalmente, podemos incluir Lightning Components en Visualforce Pages usando el componente <apex:includeLightning />.
- Los componentes estándar y personalizados pueden ser agregados a Lightning Pages usando Lightning App Builder.
- Además, Podemos publicar componentes en el AppExchange y compartirlo con otros.
- Finalmente, podemos usar Experience Builder para agregar componentes a una comunidad.
Incrementan el Rendimiento
- Se ejecutan en una arquitectura stateful y stateless para utilizar los recursos de manera eficiente.
- Por otro lado, incrementan su eficiencia al utilizar el servidor, navegador, dispositivos y la red de forma inteligente.
- Usan Javascript en el lado del cliente para administrar componentes UI, metadata y data.
- El cliente llama al servidor o envía solicitudes solo cuando sea necesario.
- El servidor solo envía los datos que el cliente necesite.
- Se puede utilizar el formato JSON para intercambiar datos entre el cliente y el servidor.
Más Información
- What is Salesforce Lightning?
- Why Use the Lightning Component Framework?
- Event-Driven Software Architecture
- Why Use the Aura Components Programming Model?
- Trailhead – Use Lightning Components in Lightning Experience
Para saber más de Salesforce puedes ir a Apex estático e instanciado en Salesforce

Static and Instance in Apex Salesforce
If you are a Salesforce developer, you need to know everything about static and instance in Apex Salesforce to code as a pro with good programming principles.
In apex classes can’t be static. Nonetheless, we can have static methods, variables and initialization code. Also we can have instance methods, member variables and initialization code, which have no modifier, and local variables.
Static Characteristics in Apex
Static methods, variables and initialization code could be:
- Associated with a class.
- Only in outer classes.
- Only when a class is loaded.
- No transmitted as part of the view state for a Visualforce page.
Instance Characteristics in Apex
Instance methods, member variables, and initialization code could be:
- Associated with a particular object.
- No definition modifier.
- Created with every object instantied from the class declared.
Using Static Methods and Variables
- Only with outer classes. That means, classes that can have inner classes.
- Doesn’t require an instance of the class in order to run.
- All static variables are initialized before an object of a class is created.
- A static method is used as a utility method. For example, when we need to access to raw data without make an object declaration.
- A static variable is static only within the scope of the Apex transaction. Can be used as a flags in Apex Triggers.
- A static variable or method can’t be accessed through an instance of that class.
- An inner class behaves like a static class and doesn’t require the static keyword. Those classes doesn’t need to be declared.
- In other words, use static methods and variables when you don’t need the abstraction of an object but straight code.
- Ask yourself “Does it make sense to call this method, even if no object has been constructed yet?” If so, it should definitely be static.
public class P { public static boolean firstRun = true; }
trigger T1 on Account (before delete, after delete, after undelete) { if(Trigger.isBefore){ if(Trigger.isDelete){ if(p.firstRun){ Trigger.old[0].addError('Before Account Delete Error'); p.firstRun=false; } } } }
Using Instance Methods and Variables
- Are used by instance of a class, that is, by an object.
- Instance member variable is declared inside a class.
- Usually use instance member variables to affect the behavior of the method.
- In other words, use it when depends of an object and could affect their behaviour. For example, a Point, need an instance of x and y to be created.
public class Plotter { // This inner class manages the points class Point { Double x; Double y; Point(Double x, Double y) { this.x = x; this.y = y; } Double getXCoordinate() { return x; } Double getYCoordinate() { return y; } } List<Point> points = new List<Point>(); public void plot(Double x, Double y) { points.add(new Point(x, y)); } // The following method takes the list of points and does something with them public void render() { } }
References
- Static and Instance Methods, Variables, and Initialization Code – Apex developer Guide
- When to use static methods – Stackoverflow
- Static and Instance in Apex Salesforce – Salesforce Learning Point
To learn more about Salesforce can see: Contenidos Web en Visualforce Pages

Apex estático e instanciado en Salesforce
Como desarrolladores de esta plataforma, necesitamos conocer sobre Apex estático e instanciado en Salesforce, así podremos programar a un nivel profesional con buenos principios del ámbito.
Las clases en Apex no pueden ser estáticas, sin embargo, podemos utilizar métodos estáticos, variables y códigos de inicialización. Por otro lado, podemos tener métodos instanciados y códigos de inicialización sin modificador ni variables locales.
Características de Apex Estático
Los métodos estáticos, variables y códigos de inicialización pueden:
- Estar asociados con una clase.
- Aparecen sólo en clases externas.
- Se ejecutan sólo cuando una clase es ejecutada.
- No pueden trasmitirse como parte del view state de una Visualforce page.
Características de Apex Instanciado
Los métodos instanciados, variables miembro y códigos de inicialización pueden:
- Estar asociados con un objeto particular.
- No tienen un modificador de definición.
- Se crean con cada objeto instanciado cuando la clase se ejecuta.
Usando Métodos y Variables Estáticas
- Solo en clases externas. Es decir, clases que pueden incluir clases internas.
- No se requiere una instancia de la clase para ejecutarse.
- Todas las variables estáticas son inicializadas antes de que un objeto de la clase sea creado.
- Un método estático es usado como un método de utilidad (Utility). Por ejemplo, cuando necesitemos acceder a datos que no necesitan la declaración de un objeto.
- Una variable estática es estática solo dentro del alcance de la transacción Apex. Así mismo, pueden ser usadas como banderas en Apex Triggers (Código de Ejemplo).
- No podemos acceder a una variable o método estático a través de la instancia de una clase.
- Una clase interna se comporta como una clase estática y no requiere la palabra clave static. Además, estas clases no necesitan ser declaradas.
- En otras palabras, se usan métodos y variables estáticas cuando no se necesita la abstracción de un objeto pero si de código directo.
- Pregúntate “¿Tiene sentido llamar a este método, incluso si ningún objeto ha sido construido todavía?” Si es así, el método debería ser estático.
public class P { public static boolean firstRun = true; }
trigger T1 on Account (before delete, after delete, after undelete) { if(Trigger.isBefore){ if(Trigger.isDelete){ if(p.firstRun){ Trigger.old[0].addError('Before Account Delete Error'); p.firstRun=false; } } } }
Usando Instancia de métodos y variables
- Son usados por la instancia de una clase, es decir, por un objeto.
- La instancia de una variable miembro es declarada dentro de una clase.
- Usualmente se usa la variable de instancia (member) para afectar el comportamiento del método.
- En otras palabras, se usa cuando depende de un objeto y puede afectar su comportamiento. Por ejemplo, un Point, necesita instanciar x y y antes de ser creada.
public class Plotter { // This inner class manages the points class Point { Double x; Double y; Point(Double x, Double y) { this.x = x; this.y = y; } Double getXCoordinate() { return x; } Double getYCoordinate() { return y; } } List<Point> points = new List<Point>(); public void plot(Double x, Double y) { points.add(new Point(x, y)); } // The following method takes the list of points and does something with them public void render() { } }
Referencias sobre Apex Estático e Instanciado
- Static and Instance Methods, Variables, and Initialization Code – Apex developer Guide
- When to use static methods – Stackoverflow
- Static and Instance in Apex Salesforce – Salesforce Learning Point
Para aprender más sobre Salesforce puedes ir a Contenidos Web en Visualforce Pages

Contenidos web en Visualforce Pages
Existen diferentes tipos de contenidos web en visualforce pages de Salesforce como HTML, CSS, javascript, mapas y frames. A continuación vamos a entender cuáles son y cómo se utilizan.
Tipos de Contenidos Web en Visualforce
Los tipos de contenido web que pueden ser usados en Visualforce Pages son: HTML, CSS, JAVASCRIPT, IFRAMES y MAPS.
HTML
- Se puede utilizar el código HTML regular en Visualforce pages. Por Ejemplo: <html>, <body>, <head> y <h1>.
- Además, podemos generar automáticamente las etiquetas HTML en Visualforce.
- Se pueden anular las etiquetas HTML.
- Por último, se puede incluir CSS en línea dentro de las etiquetas HTML.
CSS
- Pueden utilizarse mediante la etiqueta <apex:stylesheet>.
- Podemos utilizar código css llamando a la variable $Resource. Por ejemplo: <apex:stylesheet value=”{!$Resource.customStyleSheet}” />
- Así mismo, el atributo styleClass define las clases de estilo en las etiquetas. Por ejemplo: <apex:outputPanel styleClass=”dataTable”>
- El atributo style permite configurar los estilos directamente. Por Ejemplo: <p style=”margin: 5px;”>
Javascript
- Javascript puede ser incluido utilizando <apex:includescript>. Por ejemplo: <apex:includescript value=”{!$Resource.JavascriptFile}” />
- La etiqueta <script> puede ser utilizada para acceder a funciones de javascript.
- Se pueden utilizar las variables $Resource para acceder a los archivos de javascript.
- Debemos subir como recursos estáticos los archivos javascript a utilizar.
Mapas e Iframes
- Para mostrar mapas se puede utilizar el componente <apex:map>
- Además, se pueden utilizar marcadores con la etiqueta <apex:mapMarker>
- Para mostrar páginas web externas se pueden utilizar iframes con la etiqueta <apex:iframe>. Por ejemplo: <apex:iframe src=”https:://www.wikipedia.org” />
Recursos Estáticos (Static Resources)
- Son utilizados para almacenar archivos y ser referenciados en Visualforce pages.
- Pueden incluir imágenes, stylesheets, javascript y librerias.
Finalmente, para saber más sobre contenidos web en visualforce de Salesforce:
- Manually Override Automatic <html> and <body> Tag Generation
- Trailhead – Create & Edit Visualforce Pages
- Extending Salesforce Styles with Stylesheets
- Using Custom Styles
- Using Javascript in Salesforce
- Visualforce Developer Guide – apex:iframe
- Creating Maps with Visualforce
Si quieres saber más sobre Salesforce puedes ir a: