Showing posts with label Apex Controller. Show all posts
Showing posts with label Apex Controller. Show all posts

Thursday, 12 April 2018

[#Blogged] First Code back in 2014 - Attachment Upload in Salesforce.

Hey #Ohana,

I am amazed to share the First apex class I wrote back in 10/17/2014.

Apex class used to upload an attachment referencing Parent Id in the Visualforce Page.
Salesforce attachment represents a file that a User has uploaded and attached to a parent standard or custom object record. If the user has created permission on a parent object, then only he/she can able to attach an attachment to the parent object.

You can have a look at the amazing video by Jeff Douglas

When Did you code first time and which functionality was that?

Thursday, 1 March 2018

[#Blogged]Transient Keyword in Salesforce

Declaring variables as transient reduces view state size. A common use case for the transient keyword is a field on a Visualforce page that is needed only for the duration of a page request, but should not be part of the page's view state and would use too many system resources to be recomputed many times during a request.
The transient variables are not passed to view state and therefore not stored in View State.

difference between transient instance variable and a static variable?

Static methods, variables, or initialization code are associated with a class and are only allowed in outer classes.
When you declare a method or variable as static, it's initialized only once when a class is loaded. All static member variables in a class are initialized before any object of the class is created.  Indeed they aren't transmitted as part of the view state for a Visualforce page.
Using static variables will cause only one instance of the variable to be loaded when the application loads and that variable will not go out of memory until the app is closed.  It holds information that is common to all instances on a class and It is shared between them instead of being created a new with each instance.
while
Transient keyword to declare instance variable that can not be saved and should not be transmitted as part of view state for visual force page.
Basically, View State is an encrypted, hidden field on a Visualforce page that keeps track of Apex controller state & Visualforce page state between server requests. This field is only generated when there is a tag present on a page.

ViewState is only used on a single page that handles postbacks. Once you redirect to the new page, the ViewState is lost.


The Whole Process of Calling is like this :

A. URL Requested
B. Apex Controller Instantiated on Server
C. Controller State Serialized & Encrypted to View State
D. Page Markup Sent to Browser & Rendered
E. View State Decrypted & Deserialized (for Postbacks)

View State Automatically keeps track of field values for you and Allows for easy AJAX functionality. In order to remove View State Error, we use 4 methods.

A. Reduce Number of Components
B. Use the transient Keyword
C. Use JavaScript Remoting
D. Use the Streaming API


References: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_keywords_transient.htm

Tuesday, 20 February 2018

[#Blogged]Granular Locking in Salesforce

Granular Locking in Salesforce

The system employs additional logic to allow multiple updates to proceed simultaneously if there is no hierarchical or other relationship between the roles or groups involved.

For example: if you trying to edit the user details but on the other hand automated process is already doing that then you are not allowed to edit.

for this we use granular locking, this will not lock the entire table but only specific data.

What are the key advantages of granular locking?

1) Groups that are in separate hierarchies can be manipulated concurrently

2) Public groups and roles that do not include territories can be manipulated concurrently

3) Users can be added concurrently to territories and public groups

4) User provisioning can occur in parallel

5) A single-long running process, such as a role delete, only blocks a small subset of operations

Benefits to customers:

Customers who frequently experience locking that restricts their ability to manage manual and automated group maintenance operations.
Enable granular locking, which attempts to lock only the modified portions of the table. This can improve the performance of the following items:
1) Adding/deleting/transferring user from a territory
2) Re-parent a territory
3) Create or delete a territory within a hierarchy
4) Adding or removing a forecast manager


Check the below link for more information
https://resources.docs.salesforce.com/sfdc/pdf/draes.pdf

Tuesday, 6 February 2018

[#Blogged] Quick Start: Heroku Connect - #Trailhead Badge157

Heroku is a container-based cloud Platform as a Service (PaaS). Developers use Heroku to deploy, manage, and scale modern apps. Our platform is elegant, flexible, and easy to use, offering developers the simplest path to getting their apps to market.
Heroku is fully managed, giving developers the freedom to focus on their core product without the distraction of maintaining servers, hardware, or infrastructure. The Heroku experience provides services, tools, workflows, and polyglot support—all designed to enhance developer productivity. 

Lets Quick Start on Heroku with the Help of Trailhead.

Prerequisites:

Heroku account
  • Before Deploying an application to Heroku, make sure you have an active Heroku Account.If not, Navigate to https://signup.heroku.com and create a Heroku account.
Contact Custom field  
  • Add a new field to the Contact Object:
  • In Setup, click the Object Manager tab next to the Home tab.
    Click the Contact object.
    Click Fields & Relationships.
    Click New.
    For Data Type, select Text, and click Next.
    Complete the custom field as follows:
    Field Label: External Phone ID
    Length: 10
    Field Name: External_Phone_ID
    Unique: Select Do not allow duplicate values
    External ID: Select Set this field as the unique record identifier from an external system
    Click Next.
Deploy an Application
  1. Login into Heroku Account.
  2.  Deploy the sample Phone Change Application.
  3. Select the United States as the Region, then click Deploy App.
  4. After the app has been deployed, you can manage it in the Heroku Dashboard by clicking the Manage App button and view the app by clicking the View button.

Provision the Heroku Postgres Add-on and Provision the Heroku Connect Add-on

Provision the Heroku Postgres Add-on
Connect, Use, and Develop
Databases are multi-ingress: use them from any cloud, PaaS, or your local computer. It is easy to connect with common languages & frameworks including Rails, Django, PHP, and Java: configuration strings are generated for them automatically.
Scale and Grow
Scale vertically by choosing from a range of plans. Plans differ based on the size of their hot-data-set, the portion of data available and optimized on-the-fly in high-speed RAM. When the time comes, scale horizontally by adding read-only followers that stay up-to-date with the master database.
Starter Steps :

  1.  Click the Manage App button to visit the Heroku Dashboard and click on your new application.
  2.  Click the Resources tab.
  3.  In the search area in the Add-ons section, type Heroku Postgres, click Enter and then click Provision. 
Provision the Heroku Connect Add-on
Seamless Heroku and Salesforce data synchronization
Heroku Connect makes it easy for you to build Heroku apps that share data with your Salesforce deployment. Using bi-directional synchronization between Salesforce and Heroku Postgres, Heroku Connect unifies the data in your Postgres database with the contacts, accounts and other custom objects in the Salesforce database. Easily configured with a point and click UI, it’s simple to get the service up and running in minutes – no coding or complex configuration is required. 
Starter Steps :
  1.  Click the Manage App button to visit the Heroku Dashboard and click on your new application.
  2.  Click the Resources tab.
  3.  In the search area in the Add-ons section, type Heroku Connect, click Enter and then click Provision 
Heroku Connect locates the Heroku Postgres database that you provisioned in the previous step.
  • Click Next and then click Authorize
  • Now set up Heroku Connect.
Authorize Heroku Connect to access your Salesforce Org. Log in to Salesforce with your Trailhead Playground /Developer Org credentials you collected above.
Create a mapping between the Contact object in Salesforce and a table in the Heroku Postgres database.

  • In Heroku, click Create Mapping. Select the Contact object.
    In the Database -> Salesforce section, select the Write database updates to Salesforce using -- None -- as the unique identifier option and choose External_Phone_ID__c from the dropdown list.
  • Click Save.When you've completed the mapping setup, the data begin synchronizing.  
Our application is now syncing (bidirectionally) a subset of the Contact object in Salesforce with a new table in the Heroku Postgres database associated with your app.
When the syncing is complete, open your Heroku app in a new browser tab, by entering http://APP_NAME.herokuapp.com and replacing APP_Name with your app name.

Complete the form and Since you had previously set up the bidirectional sync with Salesforce using Heroku Connect, this should also automatically update the contact record in Salesforce.

References :
 https://elements.heroku.com/addons/heroku-postgresql
https://trailhead.salesforce.com/projects/quickstart-heroku-connect/steps/qs-heroku-connect-1