INTRODUCTION TO APEX
Force.comApex is a strongly-typed, object-oriented programming language that allows you to write code that executes on the Force.com
platform. Out of the box, Force.com provides a lot of high-level services, such as Web services, scheduling of code execution, batch
processing, triggers—and Visualforce back-end logic. All of these require you to write Apex.
In this section we’ll start with some set up, and then write some very simple Apex to introduce you to the tools. Then we’ll jump right
into the deep end, and you’ll learn enough Apex to create your first “real” Apex class. The code you’ll add to your organization will provide
custom functionality that you’ll use in the following section, to create a mobile-aware Visualforce page that you deploy to Salesforce1.
This section does assume you know a little about programming. If you don’t, you’ll still be able to complete the exercises, but you might
not understand every aspect. (And that’s OK!)
When you’re finished with this section, you will have done the following.
• Open the Developer Console, the advanced development tool for Force.com, and use it to create, edit, and run Apex code.
• Execute Apex code snippets in the Execute Anonymous Apex window. (You’ll even know what “anonymous Apex” means!)
• Create Apex classes and methods.
Know some of the similarities and differences between Apex and other programming languages, such as Java, C#, and PHP.
• Execute a SOQL query in Apex, and process the results of that query.
• Create and run tests that verify the correct behavior of your Apex code, and understand what code coverage is and how to check
it.
Set Up Your Development Environment
In this short lesson, you’ll prepare your DE org for the exercises that follow. You’ll install a package with some supplementary resources,
load the Salesforce1 browser testing environment, and install the Salesforce1 mobile app on your mobile device of choice.
Install the Enhanced Warehouse Data Model
To prepare your developer organization for the exercises in this and the following section, you need to import the Warehouse data
model and sample data.
You might be familiar with the Warehouse app if you’ve gone through tutorials in other workbooks, or at a hands-on workshop. The
Warehouse app used here is an enhanced version that includes additional custom objects and data, and some supporting code.
1. In your browser go to http://bit.ly/warehouse_schema11
2. If you’re already logged in, you’re redirected to the Package Installation Details page. Otherwise, log in with your Developer Edition
credentials.
3. Click Continue, Next, Next, and Install.
4. After the installation finishes, click the Force.com app menu and select Warehouse.
5. Click the Data tab and then click the Create Data button.
The package contains a pre-built Visualforce page, as well as some supporting resources. You’ll learn about them right after your
development and testing environments are set up.
25
Pdf link open in new window - insert, remove PDF links in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Free C# example code is offered for users to edit PDF document hyperlink (url), like inserting and deleting
add hyperlink pdf; add hyperlinks pdf file
Pdf link open in new window - VB.NET PDF url edit library: insert, remove PDF links in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Help to Insert a Hyperlink to Specified PDF Document Page
add hyperlinks to pdf; pdf link to specific page
Access the Mobile Browser Web App
When developing Visualforce pages for the Salesforce1 mobile app, you don’t want to use the familiar
https://<instance>/apex/<pageName> URL to view the page: you want to see how the pages look in the mobile app.
The best way to test your pages is with the actual mobile app, because it provides the most realistic experience. However, since it’s a
pain to grab your phone every time you want to see a change, you can open a new browser tab and use the one.app mobile browser
version.
1. In your browser, open a new tab.
2. Copy and paste your Salesforce instance home URL into the address bar of the new tab, and add /one/one.app to the end.
For example, if your Salesforce instance has an URL of https://na4.salesforce.com, use
https://na4.salesforce.com/one/one.app.
3. Press Return to load the edited URL.
You should now see the mobile browser version of Saleforce1. As you go through the exercises in this workbook, you can develop in
one tab and then test in the other!
Important:  The /one/one.app version is great for development, but you should always test on the actual devices and
browsers that you intend to support.
Download the Salesforce1 Mobile App
For final testing of the app you’re about to build, you’ll need to install the Salesforce1 mobile app on your device.
If you’ve already downloaded the Salesforce1 mobile app, you can skip this step.
1. Use your mobile device’s browser to go to www.salesforce.com/mobile, select the appropriate platform, and download
Salesforce1.
2. Open Salesforce1 from your mobile device.
3. Enter your Salesforce credentials and tap Log in to Salesforce.
4. If you’re prompted to allow access to your data, tap OK and continue.
If you haven’t already explored Salesforce1, now is a great time to check it out. Being familiar with its functionality will help you create
apps that work well inside it.
Using the Developer Console
The Developer Console lets you execute Apex code statements. It also lets you execute Apex methods within an Apex class or object.
In this tutorial you open the Developer Console, execute some basic Apex statements, and toggle a few log settings.
Activating the Developer Console
After logging into your Salesforce environment, the screen displays the current application you’re using (in the diagram below, it’s
Warehouse), as well as your name.
26
Access the Mobile Browser Web App
Introduction to Apex
C# PDF: PDF Document Viewer & Reader SDK for Windows Forms
Please note that, there will be a pop-up window "cannot open your file" if your loaded Please click the following link to see more C# PDF imaging project
add link to pdf file; add links to pdf
VB.NET Image: VB Code to Download and Save Image from Web URL
to download image from website link more easily. reImage, "c:/reimage.png", New PNGEncoder()) End powerful & profession imaging controls, PDF document, image
add hyperlink in pdf; adding an email link to a pdf
Open the Developer Console under Your Name or the quick access menu (
).
You can open the Developer Console at any time.
SEE ALSO:
Salesforce Help: Open the Developer Console
Using the Developer Console to Execute Apex Code
The Developer Console can look overwhelming, but it’s just a collection of tools that help you work with code. In this lesson, you’ll
execute Apex code and view the results in the Log Inspector. The Log Inspector is a useful tool you’ll use often.
1. Click Debug > Open Execute Anonymous Window or CTRL+E.
2. In the Enter Apex Code window, enter the following text: System.debug( 'Hello World' ' );
Note: System.debug() is like using System.out.println() in Java (or printf() if you’ve been around a
while ;-). But, when you’re coding in the cloud, where does the output go? Read on!
3. Deselect Open Log and then click Execute.
Every time you execute code, a log is created and listed in the Logs panel.
Double-click a log to open it in the Log Inspector. You can open multiple logs at a time to compare results.
Log Inspector is a context-sensitive execution viewer that shows the source of an operation, what triggered the operation, and what
occurred afterward. Use this tool to inspect debug logs that include database events, Apex processing, workflow, and validation logic.
The Log Inspector includes predefined perspectives for specific uses. Click Debug > Switch Perspective to select a different view, or
click CTRL+P to select individual panels. You’ll probably use the Execution Log panel the most. It displays the stream of events that occur
when code executes. Even a single statement generates a lot of events. The Log Inspector captures many event types: method entry
and exit, database and web service interactions, and resource limits. The event type USER_DEBUG indicates the execution of a
System.debug() statement.
27
Using the Developer Console to Execute Apex Code
Introduction to Apex
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
Open source codes can be added to C# class. String inputFilePath = Program.RootPath + "\\" 1.pdf"; PDFDocument doc = new PDFDocument(inputFilePath
add links to pdf in acrobat; add hyperlink pdf file
C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
is trying to display a PDF document file inside a browser window. PDFDocument pdf = new PDFDocument(@"C:\input.pdf"); pdf.ConvertToVectorImages(ContextType.HTML
add hyperlink to pdf online; chrome pdf from link
1. Click Debug > Open Execute Anonymous Window or CTRL+E and enter the following code:
System.debug( 'Hello World' );
System.debug( System.now() );
System.debug( System.now() + 10 );
2. Select Open Log and click Execute.
3. In the Execution Log panel, select Executable. This limits the display to only those items that represent executed statements. For
example, it filters out the cumulative limits.
4. To filter the list to show only USER_DEBUG events, select Debug Only or enter USER in the Filter field.
Note:  The filter text is case sensitive.
Congratulations—you have successfully executed code on the Force.com platform and viewed the results!
28
Using the Developer Console to Execute Apex Code
Introduction to Apex
VB.NET Word: VB.NET Code to Draw and Write Text and Graphics on
fileName, New WordDecoder()) 'use WordDecoder open a wordfile Dim Word document function, please link to Word & profession imaging controls, PDF document, tiff
change link in pdf file; pdf link open in new window
C# TIFF: C#.NET TIFF Document Viewer, View & Display TIFF Using C#
TIFF Mobile Viewer in most mobile browsers; Open, load & Free to convert TIFF document to PDF document for management Please link to get more detailed tutorials
convert a word document to pdf with hyperlinks; pdf edit hyperlink
Tell Me More...
Help in the Developer Console
To learn more about the Developer Console, click Help > Help Docs… in the Developer Console.
Anonymous Blocks
The Developer Console allows you to execute code statements on the fly. You can quickly evaluate the results in the Logs panel.
The code that you execute in the Developer Console is referred to as an anonymous block. Anonymous blocks run as the current
user and can fail to compile if the code violates the user’s object- and field-level permissions. Note that this isn’t the case for Apex
classes and triggers.
Summary
To execute Apex code and view the results of the execution, use the Developer Console. The detailed execution results include not only
the output generated by the code, but also events that occur along the execution path. Such events include the results of calling another
piece of code and interactions with the database.
Creating and Instantiating Classes
Apex is an object-oriented programming language, and much of the Apex you write will be contained in classes, sometimes referred
to as blueprints or templates for objects. In this tutorial you’ll create a simple class with two methods, and then execute them from the
Developer Console.
Creating an Apex Class Using the Developer Console
To create an Apex class in the Developer Console:
1. Open the Developer Console.
2. Click File > New > Apex Class.
3. Enter HelloWorld for the name of the new class and click OK.
4. A new empty HelloWorld class is created. Add a static method to the class by adding the following text between the braces:
public static void sayYou() {
System.debug( 'You' );
}
5. Add an instance method by adding the following text just before the final closing brace:
public void sayMe() {
System.debug( 'Me' );
}
29
Summary
Introduction to Apex
6. Click File > Save.
Tell Me More...
You’ve created a class called HelloWorld with a static method sayYou() and an instance method sayMe(). Looking at
the definition of the methods, you’ll see that they call another class, System, invoking the method debug() on that class, which
will output strings.
• If you invoke the sayYou() method of your class, it invokes the debug() method of the System class, and you see the
output.
• The Developer Console validates your code in the background to ensure that the code is syntactically correct and compiles successfully.
Making mistakes, such as typos in your code, is inevitable. If you make a mistake in your code, errors appear in the Problems pane
and an exclamation mark is added next to the pane heading: Problems!.
• Expand the Problems panel to see a list of errors. Clicking on an error takes you to the line of code where this error is found. For
example, the following shows the error that appears after you omit the closing parenthesis at the end of the System.debug
statement.
30
Creating an Apex Class Using the Developer Console
Introduction to Apex
Re-add the closing parenthesis and notice that the error goes away.
SEE ALSO:
Salesforce Help: Open the Developer Console
Calling a Class Method
Now that you’ve created the HelloWorld class, follow these steps to call its methods.
1. Execute the following code in the Developer Console Execute Anonymous Window to call the HelloWorld class’s static method.
(See Activating the Developer Console if you’ve forgotten how to do this.) If there is any existing code in the entry panel, delete it
first. Notice that to call a static method, you don’t have to create an instance of the class.
HelloWorld.sayYou();
2. Open the resulting log.
3. Set the filters to show USER_DEBUG events. (Also covered in Activating the Developer Console). “You” appears in the log:
4. Now execute the following code to call the HelloWorld class’s instance method. Notice that to call an instance method, you
first have to create an instance of the HelloWorld class.
HelloWorld hw = new HelloWorld();
hw.sayMe();
5. Open the resulting log and set the filters.
“Me” appears in the Details column. This code creates an instance of the HelloWorld class, and assigns it to a variable called
hw. It then calls the sayMe() method on that instance.
6. Clear the filters on both logs, and compare the two execution logs. The most obvious differences are related to creating the
HelloWorld instance and assigning it to the variable hw. Do you see any other differences?
Congratulations—you have now successfully created and executed new code on the Force.com platform!
Creating an Apex Class Using the Salesforce User Interface
You can also create an Apex class in the Salesforce user interface.
1. From Setup, enter Apex Classes in the Quick Find box, then select Apex Classes.
2. Click New.
3. In the editor pane, enter the following code:
public class MessageMaker {
}
31
Calling a Class Method
Introduction to Apex
4. Click Quick Save. You could have clicked Save instead, but that closes the class editor and returns you to the Apex Classes list. Quick
Save saves the Apex code, making it available to be executed, but lets you continue editing—making it easier to add to and modify
the code.
5. Add the following code to the class:
public static string helloMessage() {
return('You say "Goodbye," I say "Hello"');
}
6. Click Save.
You can also view the class you’ve just created in the Developer Console and edit it.
1. In the Developer Console, click File > Open.
2. In the Entity Type panel, click Classes, and then double-click MessageMaker from the Entities panel.
The MessageMaker class displays in the source code editor. You can edit the code there by typing directly in the editor and
saving the class.
Summary
In this tutorial you learned how to create and list Apex classes. The classes and methods you create can be called from the Developer
Console, as well as from other classes and code that you write.
Tell Me More...
Alternatively, you can use the Force.com IDE to create and execute Apex code. For more information, search for “Force.com IDE” on
the Developer Force site: https://developer.salesforce.com/.
Creating the 
WarehouseUtils
Class
In this exercise, we turn to real work. You’ll write a new Apex class that searches Salesforce to find records that match a query, and makes
those records available for use on a Visualforce page.
Here’s the scenario. You’re going to write a small app to give mobile technicians that work for the Acme Wireless organization a way to
find nearby warehouses. For example, if the technician is out on a call and needs a part, they can use this page to look for warehouses
within a 20-mile radius. For each warehouse, a map should display a pin along with the warehouse name, address, and phone number.
32
Summary
Introduction to Apex
The Apex and Visualforce code that you’re about to write will do all of that inside Salesforce1 on a mobile device. It’s going to be cool.
Create the 
WarehouseUtils
Apex Class
First you need to define the new class and give it a constructor method.
Depending on where an Apex class is going to be used, you might need to conform to expected interfaces or conventions. For example,
the WarehouseUtils class could be used two ways: as a Visualforce controller extension from a Visualforce page, and as a Remote
Action from Visualforce JavaScript remoting.
A controller extension is used to extend the capabilities of a Visualforce controller, by adding additional functionality in the form of
methods that can be called by the page. A Visualforce page can have only one controller, but can have one, none, or many controller
extensions.
To be a controller extension, an Apex class needs to have a constructor that accepts a Visualforce controller as its only parameter. (We’ll
look at the requirements for Remote Actions later.)
1. From Setup, enter Apex Classes in the Quick Find box, then select Apex Classes, and then click New.
2. In the Editor enter the following code.
global with sharing class WarehouseUtils {
public WarehouseUtils(ApexPages.StandardSetController controller) { }
// findNearbyWarehouses method goes here
}
3. Click Quick Save.
The constructor method takes a ApexPages.StandardSetController object as its only parameter. This allows the class to
be used as a Visualforce controller extension with a Standard List Controller. To also work with a Standard Controller, overload the
constructor to take a different parameter type. That is, add a second constructor method that takes an
ApexPages.StandardController parameter.
public WarehouseUtils(ApexPages.StandardController controller) { }
These constructors are empty, but in a more complex controller extension you would save the controller as an instance variable. Do you
think you know enough Apex by now to do that? Give it a try!
Add a “Stub” 
findNearbyWarehouses
Method
Next, stub in the method that will be used by the Visualforce page.
Each public and global method in a controller extension is available to be used by an associated Visualforce page. To call the method
the page can reference it in an expression, or it can call the method directly using JavaScript remoting.
In this case, we want to create a method that will query for warehouses located near the mobile technician who is using the app. This
means the method needs to know where the technician is located, so we’ll pass in latitude and longitude values that the Salesforce1
app can provide using the built-in geolocation capabilities of the device it’s running on. Visualforce expressions can’t take parameters
directly, so we’re planning to use JavaScript remoting. For now, we’ll just write a method “stub” that takes latitude and longitude
parameters, and returns a list of warehouse records.
33
Create the WarehouseUtils Apex Class
Introduction to Apex
1. In your code editor, replace the comment line // findNearbyWarehouses method d goes here with the following
code.
// Find warehouses nearest a geolocation
@RemoteAction
global static List<Warehouse__c> findNearbyWarehouses(String lat, String lon) {
// Initialize results to an empty list
List<Warehouse__c> results = new List<Warehouse__c>();
// method implementation goes here
// Return the query results
return(results);
}
2. Click Quick Save.
Although it doesn’t do anything yet, this method definition illustrates the essentials of an Apex method.
• global: The scope of the method. Methods to be called by JavaScript remoting, called Remote Actions, must be either global
or public.
• static
: This is a class method, as opposed to an instance method. This means you can call the method without instantiating an
object of this class. Remote Action methods must be static.
• List<Warehouse__c>
: The data type of the method’s return value.
• findNearbyWarehouses: The name of the method.
• (String lat, String lon): The method’s parameters.
The remainder of the method, between the braces—what there is so far!—is the implementation. You’ll write that next!
Perform a Query and Return the Results
Now it’s time to write the actual method implementation, which will take the latitude and longitude values provided by the user’s device
and find nearby warehouses.
To search for the relevant records, you need to convert the provided parameters into a complete SOQL query. SOQL is the primary query
language of the Force.com platform. You can use it in Apex, as we’ll do here, but you can use it with other Salesforce APIs as well.
We’ll construct the query dynamically, using string concatenation to combine the necessary SOQL elements with the parameter values.
Then we’ll execute the query, and return the results.
1. Inside the method implementation block, replace the comment line // method implementation n goes s here with the
following code.
// SOQL query to get the nearest warehouses
String queryString =
'SELECT Id, Name, Location__Longitude__s, Location__Latitude__s, ' +
'Street_Address__c, Phone__c, City__c ' +
'FROM Warehouse__c ' +
'WHERE DISTANCE(Location__c, GEOLOCATION('+lat+','+lon+'), \'mi\') < 20 ' +
'ORDER BY DISTANCE(Location__c, GEOLOCATION('+lat+','+lon+'), \'mi\') ' +
'LIMIT 10';
34
Perform a Query and Return the Results
Introduction to Apex
Documents you may be interested
Documents you may be interested