SlideShare une entreprise Scribd logo
1  sur  31
Coding the Cloud: An Introduction
to Apex Code

       Force.com Platform Fundamentals


                     Andrew Albert, salesforce.com
Safe Harbor Statement
“Safe harbor” statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-
looking statements including but not limited to statements concerning the potential market for our existing service offerings
and future offerings. All of our forward looking statements involve risks, uncertainties and assumptions. If any such risks or
uncertainties materialize or if any of the assumptions proves incorrect, our results could differ materially from the results
expressed or implied by the forward-looking statements we make.

The risks and uncertainties referred to above include - but are not limited to - risks associated with possible fluctuations in
our operating results and cash flows, rate of growth and anticipated revenue run rate, errors, interruptions or delays in our
service or our Web hosting, our new business model, our history of operating losses, the possibility that we will not remain
profitable, breach of our security measures, the emerging market in which we operate, our relatively limited operating
history, our ability to hire, retain and motivate our employees and manage our growth, competition, our ability to continue to
release and gain customer acceptance of new and improved versions of our service, customer and partner acceptance of
the AppExchange, successful customer deployment and utilization of our services, unanticipated changes in our effective
tax rate, fluctuations in the number of shares outstanding, the price of such shares, foreign currency exchange rates and
interest rates.

Further information on these and other factors that could affect our financial results is included in the reports on Forms 10-
K, 10-Q and 8-K and in other filings we make with the Securities and Exchange Commission from time to time. These
documents are available on the SEC Filings section of the Investor Information section of our website at
www.salesforce.com/investor. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-
looking statements, except as required by law.
Andrew Albert
Technical Evangelist
Apex Code: Logic-as-a-Service

                             What is it?


                             What can it do?


                             How do I use it?


                             Well, let‟s see it!
Introducing Apex
  Force.com allows many customizations through User
   Interface
  Force.com API allows developers to write client-side
   programs or integrations for more flexibility in their
   applications
    – Client side programs have performance costs
    – Lack transactional control across API requests
    – Cost and complexity of client hosting server code
  APEX was introduced to address those issues and to
   revolutionize the way developers create on-demand
   applications.
Apex Code Is
 Strongly-typed, object-based programming language
 Enables developers to execute logic and transaction
  control statements on Force.com
 Runs natively on the server
 Code executes on the server when initiated by User
  Interface via Buttons & Events, and data through the
  API
 Java or C#-like syntax
 Transactional
How can you use Apex Code?
 Database Trigger
   - Apex Code that is executed in response to a
     database interaction


     Example: Apex trigger is initiated whenever a new
     Contact record is inserted.


 Class
   - Similar to a Java or .NET class
   - A trigger can call an Apex Class
Differences between Triggers and Classes
  Triggers execute implicitly in response to a database
   action
  Apex class methods can be explicitly called in many
   areas of the Force.com


  For example:
    (a) Email to Apex Services
    (b) Apex Web Services
    (c) Visualforce controllers
How is Apex Different?
  Executes directly on the Force.com
  Eliminates network traffic between client application
   and Force.com
  Apex Code tightly integrated to the rest of the platform
   functionality
  Changes to the metadata referenced in Apex Code will
   cause an automatic recompilation the next time those
   components are executed
Language Basics
Data Types – Primitive
   -   String
   -   Boolean
   -   Date and DateTime
   -   Integer, Long, Double
   -   ID (Force.com database record identifier)
   -   Blob (for storing binary data)
   -   Sobject (object representing a Force.com standard or custom
       object)
   Example:
       DateTime dt = System.now() + 1;
       Boolean isClosed = true;
       String sCapsFirstName = „Andrew‟.toUpperCase();
       Account acct = new Account(); //Sobject example
Language Basics (cont)
 Data Types – Collections
    -   Lists
    -   Sets
    -   Maps
    -   Arrays


    Example:
         List<Integer> myList = new List<Integer>();
         myList.add(12); //Add the number 12 to the list
         myList.get(0); //Access to first integer stored in the List
Language Basics (cont)
 Statements and Expressions
    - If/Else
    - For Loops
    - Do/While Loops
    - While Loops

    Example:
       Integer count = 0;
       while(count < 11){
            System.debug(„Count = „ + count);
            count++;
       }
Language Basics (cont)
 Exception Handling
    - Try/Catch/Finally statements
    - Ability to create and throw your own Exceptions

    Example:
       public class OtherException extends BaseException {}
       Try{
           //Add code here
           throw new OtherException(„Something went wrong here…‟);
       } Catch (OtherException oex) {
           //Caught a custom exception type here
       } Catch (Exception ex){
           //Caught all other exceptions here
       }
Force.com Query Languages
 SOQL – Salesforce object Query Language
   String myName = „Acme‟;
        Account[] accts = [select ID from Account where name =:myName] //Pass in a variable


 SOSL – Salesforce object Search Language
   List<List<SObject>> searchList = [FIND '415' IN PHONE FIELDS RETURNING Account, Contact ];
   Account [] accounts = ((List<Account>)searchList[0]);
   Contact [] contacts = ((List<Contact>)searchList[1]);
Data Manipulation with Apex
  DML (Data Manipulation Language)
    -   Insert
    -   Update
    -   Upsert - Operation to create a new or update existing record
        based on an external id.
    -   Delete
    -   Undelete
Here’s what it looks like                                                  Interface
                                                                        Implementation
                                                                                                     Function
                                                                                                    Declaration
 1 1 global class tasks implements Messaging.InboundEmailHandler {
 2 2
 3 3 global Messaging.InboundEmailResult handleInboundEmail(Messaging.inboundEmail email,
 4 4                                 Messaging.InboundEnvelope env){
 5 5
 6 6 // Create inboundEmailResult object for returning the result of the Force.com Email Service
 7 7 Messaging.InboundEmailResult result = new Messaging.InboundEmailResult();
 8 8
 9 9 String myPlainText = '‟;                                                                         Object
 101                                                                                               Instantiation
                                                    Variable Declaration
 111 // Add the email plain text into the local variable
 121 try {
 131      myPlainText = email.plainTextBody.substring(0, email.plainTextBody.indexOf('<stop>'));
 141 } catch (System.StringException e) {
 151      myPlainText = email.plainTextBody;                                           Exception
 161      System.debug('No <stop> in email: ' + e);                                     Handling
 171 }
 181
 191 // new Task object to be created                                    List Creation                   Comment
 202 List<Task> newTask = new List<Task>();                                                               Syntax
 212
 222 /* Try to lookup any contacts based on the email from address
 232 / If there is more than 1 contact with the same email address
 24      / an exception will be thrown and the catch statement will be called
 25     */
 262 try {
 272       Contact vCon = Id, Name, Email From Contact Where Email = :email.fromAddress]
                    [Select
 28
 29                  ...
                                                                               Query Language
Bulk data operations with Apex
  Commonly, the ordering of process for an apex solution is as follows:
     1)   Records are retrieved from the Force.com database with a query
          statement
     2)   The array of records ismodified in the processing of your Apex
          Code
     3)   The array of records is then sent back to the object through a
          data manipulation statement




          These actions are performed in bulk on the Force.com
Bulk data operations with Apex (cont)

  Apex Code must be designed to handle bulk operations
  Why is this important?
     -   The Force.com enforces limits to how many records can be
         processed at a time (governor limits)
  Examples:
      Limit on the number of records that can be queried.
      Limit on the number of records that be modified.
  Limits are calculated by the number of records invoking the Apex
   Code code
Handling Bulk operations - example
Testing

 Apex Code to test your Apex Code
 Code to help developers perform and automate unit testing
 Enables the platform to execute these “test methods” during
  deployment
 Force.com requires that at least 75% of your Apex is
  covered by testing before code can be deployed to a
  Production environment (100% is ideal!)
 Unit test methods are denoted with testMethod keyword.
 testMethods do not modify any data in your org
What can you do with Apex Code?
 Triggers
 Apex Web Services
 Email Services
 SOA (callouts)
 Visualforce Controllers
What can you do with Apex Code?
  Triggers
    – Code runs when data changes to ensure business logic is
      applied
    – Executes on the server when data changes in either the UI or API.



  Email Services
    – Send & Receive emails, including attachments, with custom
      logic to process contents.
    – Includes all standard email attributes, use email templates, and
      supports plain text or HTML.
    – Force.com generates a unique email address to process the
      contents.
What else can you do with Apex Code?
  Apex Web Services
   – Develop new Force.com Web Services
   – Define and expose a custom Web Service for an external service
     to invoke.
   – As simple as adding the “webService” keyword to a Apex method
   – WSDL automatically available

  Consume other Web Services
   – Provides integration with external Web Services
   – Apex provides integration with Web services that utilize SOAP
     and WSDL, or HTTP services
What else can you do with Apex Code?
 Visualforce Controllers
   – Apex logic accessed by Visualforce pages through custom
     controllers and controller extensions.
   – Apex Class that drives the logic when a user interacts with the
     Visualforce pages.
Winter ‘09 Apex Feature – Dynamic Apex

                                                                  Streamline code design
public class displayFields{
……
//Retrieves available SObjects with Global Describe
                                                                   eliminate repetitive code by
private Map <String, Schema.SObjectType> schemaMap =
Schema.getGlobalDescribe();                                        constructing dynamic procedures
//Retrieve accessible fields for specified object
public List<Field> showFields(String selectedObject) {
                                                                   for query, search, and data
fields.clear();
Map <String, Schema.SObjectField> fieldMap =                       manipulation
schemaMap.get(selectedObject).getDescribe().fields.getMap();
//for each field – determine whether the running user has
access to the field
                                                                  Describe methods
    for(Schema.SObjectField f : fieldMap.Values()){
        Schema.DescribeFieldResult df = f.getDescribe();
        if(df.isAccessible()){
                                                                   New Apex methods to describe
             fields.add(f);
        }                                                          schema including object definition
    }
return fields;                                                     and field definitions.
}

                                                                  User permission awareness
                                                                   The power of system level access
                                                                   with the capability to enforce user
                                                                   permissions and constraints
Winter ‘09 Apex Feature – Async Apex

global class myclass {
    public class MyException extends Exception{}
                                                      Asynchronous execution
    public static void throwException() {
      System.debug('calling throw exception');        Supports web service callouts
      throw new MyException('for bar');
    }                                                  from triggers
  @future(callout=true) static void voidvoid() {
     System.debug('void void');                       Monitoring UI provides
     Http http = new Http();
     HttpRequest req = new HttpRequest();              detailed view of status and
     req.setMethod('GET');
     req.setEndpoint('http://www.cheenath.com');       execution time
     HttpResponse res = http.send(req);
     System.debug(res.getBody());
     //throw new MyException('for bar');
  }
  @future static void createAccount(String n) {
     Account a = new Account(name=n);
     insert a;
  }
Additional Dreamforce 2008 Apex Sessions

 Apex Test Coverage Best Practices
   – Tuesday, 2:00-3:00PM, Esplanade 305
 Hands-On : Apex Code
   – Tuesday, 2:00-3:00PM, South 102
 Development As A Service – Building and Deploying Apps
  in the Cloud
   – Wednesday, 10:15-11:15AM, Esplanade 303
Force.com Library
 Books
  – Developer‟s Guide to the Force.com
  – Force.com Cookbook
  – Creating On-Demand Apps
 Apex Language Reference
Additional Resources
  Developer.Force.com
    – Force.com Developer Community
    – Apex Developer Guide & Language Reference
    – Recorded technical presentations and whitepapers
    – Apex Message Boards

   Sign up for free Developer Edition
   Training Courses & Certification
     – DEV401: Force.com essentials
     – DEV501: Visualforce, Apex, DaaS (Development As A Service)
Session Feedback
Let us know how we’re doing and enter to win an iPod nano!
    Please score the session from 5 to 1 (5=excellent,1=needs
       improvement) in the following categories:
         Overall rating of the session
         Quality of content
         Strength of presentation delivery
         Relevance of the session to your organization


               Additionally, please fill in the name of each speaker &
               score them on overall delivery.


                We strive to improve, thank you for filling out our survey.
QUESTION & ANSWER
     SESSION

Contenu connexe

Tendances

Introduction to the Salesforce Security Model
Introduction to the Salesforce Security ModelIntroduction to the Salesforce Security Model
Introduction to the Salesforce Security ModelSalesforce Developers
 
SOQL in salesforce || Salesforce Object Query Language || Salesforce
SOQL in salesforce || Salesforce Object Query Language || SalesforceSOQL in salesforce || Salesforce Object Query Language || Salesforce
SOQL in salesforce || Salesforce Object Query Language || SalesforceAmit Singh
 
Getting Started With Apex REST Services
Getting Started With Apex REST ServicesGetting Started With Apex REST Services
Getting Started With Apex REST ServicesSalesforce Developers
 
Salesforce customization vs configuration
Salesforce customization vs configurationSalesforce customization vs configuration
Salesforce customization vs configurationCloud Analogy
 
Flow in Salesforce
Flow in SalesforceFlow in Salesforce
Flow in Salesforcevikas singh
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionSalesforce Developers
 
Episode 6 - DML, Transaction and Error handling in Salesforce
Episode 6 - DML, Transaction and Error handling in SalesforceEpisode 6 - DML, Transaction and Error handling in Salesforce
Episode 6 - DML, Transaction and Error handling in SalesforceJitendra Zaa
 
Episode 20 - Trigger Frameworks in Salesforce
Episode 20 - Trigger Frameworks in SalesforceEpisode 20 - Trigger Frameworks in Salesforce
Episode 20 - Trigger Frameworks in SalesforceJitendra Zaa
 
Ivan Gubynskyy Salesforce CRM and Platform Overview
Ivan Gubynskyy Salesforce CRM and Platform OverviewIvan Gubynskyy Salesforce CRM and Platform Overview
Ivan Gubynskyy Salesforce CRM and Platform OverviewLogeekNightUkraine
 
Salesforce Presentation
Salesforce PresentationSalesforce Presentation
Salesforce PresentationChetna Purohit
 
Lwc presentation
Lwc presentationLwc presentation
Lwc presentationNithesh N
 
Salesforce Org Health Check & Performance Testing
Salesforce Org Health Check & Performance TestingSalesforce Org Health Check & Performance Testing
Salesforce Org Health Check & Performance TestingImtiazBinMohiuddin
 
Salesforce Lightning Process builder
Salesforce Lightning Process builderSalesforce Lightning Process builder
Salesforce Lightning Process builderThinqloud
 
Salesforce integration best practices columbus meetup
Salesforce integration best practices   columbus meetupSalesforce integration best practices   columbus meetup
Salesforce integration best practices columbus meetupMuleSoft Meetup
 
Episode 10 - External Services in Salesforce
Episode 10 - External Services in SalesforceEpisode 10 - External Services in Salesforce
Episode 10 - External Services in SalesforceJitendra Zaa
 

Tendances (20)

Introduction to the Salesforce Security Model
Introduction to the Salesforce Security ModelIntroduction to the Salesforce Security Model
Introduction to the Salesforce Security Model
 
SOQL in salesforce || Salesforce Object Query Language || Salesforce
SOQL in salesforce || Salesforce Object Query Language || SalesforceSOQL in salesforce || Salesforce Object Query Language || Salesforce
SOQL in salesforce || Salesforce Object Query Language || Salesforce
 
Getting Started With Apex REST Services
Getting Started With Apex REST ServicesGetting Started With Apex REST Services
Getting Started With Apex REST Services
 
Salesforce customization vs configuration
Salesforce customization vs configurationSalesforce customization vs configuration
Salesforce customization vs configuration
 
Flow in Salesforce
Flow in SalesforceFlow in Salesforce
Flow in Salesforce
 
Top Benefits of Salesforce in Business
Top Benefits of Salesforce in BusinessTop Benefits of Salesforce in Business
Top Benefits of Salesforce in Business
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An Introduction
 
Introduction to Apex Triggers
Introduction to Apex TriggersIntroduction to Apex Triggers
Introduction to Apex Triggers
 
Salesforce APIs
Salesforce APIsSalesforce APIs
Salesforce APIs
 
Episode 6 - DML, Transaction and Error handling in Salesforce
Episode 6 - DML, Transaction and Error handling in SalesforceEpisode 6 - DML, Transaction and Error handling in Salesforce
Episode 6 - DML, Transaction and Error handling in Salesforce
 
Episode 20 - Trigger Frameworks in Salesforce
Episode 20 - Trigger Frameworks in SalesforceEpisode 20 - Trigger Frameworks in Salesforce
Episode 20 - Trigger Frameworks in Salesforce
 
Ivan Gubynskyy Salesforce CRM and Platform Overview
Ivan Gubynskyy Salesforce CRM and Platform OverviewIvan Gubynskyy Salesforce CRM and Platform Overview
Ivan Gubynskyy Salesforce CRM and Platform Overview
 
Salesforce Presentation
Salesforce PresentationSalesforce Presentation
Salesforce Presentation
 
Lwc presentation
Lwc presentationLwc presentation
Lwc presentation
 
Salesforce Org Health Check & Performance Testing
Salesforce Org Health Check & Performance TestingSalesforce Org Health Check & Performance Testing
Salesforce Org Health Check & Performance Testing
 
Salesforce Lightning Process builder
Salesforce Lightning Process builderSalesforce Lightning Process builder
Salesforce Lightning Process builder
 
Oracle Fusion Application
Oracle Fusion ApplicationOracle Fusion Application
Oracle Fusion Application
 
Introduction to Visualforce
Introduction to VisualforceIntroduction to Visualforce
Introduction to Visualforce
 
Salesforce integration best practices columbus meetup
Salesforce integration best practices   columbus meetupSalesforce integration best practices   columbus meetup
Salesforce integration best practices columbus meetup
 
Episode 10 - External Services in Salesforce
Episode 10 - External Services in SalesforceEpisode 10 - External Services in Salesforce
Episode 10 - External Services in Salesforce
 

En vedette

Apex basics-for Beginners
Apex basics-for BeginnersApex basics-for Beginners
Apex basics-for Beginnershrakhra
 
Apex code-fundamentals
Apex code-fundamentalsApex code-fundamentals
Apex code-fundamentalsAmit Sharma
 
APEX navigation concepts
APEX navigation conceptsAPEX navigation concepts
APEX navigation conceptsTobias Arnhold
 
Apex - How to create a master detail form
Apex - How to create a master detail formApex - How to create a master detail form
Apex - How to create a master detail formViveka Solutions
 
Introduction to Apache Apex
Introduction to Apache ApexIntroduction to Apache Apex
Introduction to Apache ApexApache Apex
 
Alt tab - better apex tabs
Alt tab - better apex tabsAlt tab - better apex tabs
Alt tab - better apex tabsEnkitec
 
Salesforce Intro
Salesforce IntroSalesforce Intro
Salesforce IntroRich Helton
 
Salesforce DUG - Queueable Apex
Salesforce DUG - Queueable ApexSalesforce DUG - Queueable Apex
Salesforce DUG - Queueable ApexAkshay Varu
 
High Reliability DML and Concurrency Design Patterns for Apex
High Reliability DML and Concurrency Design Patterns for ApexHigh Reliability DML and Concurrency Design Patterns for Apex
High Reliability DML and Concurrency Design Patterns for ApexSalesforce Developers
 
APEX & MTdoxx
APEX & MTdoxxAPEX & MTdoxx
APEX & MTdoxxMT AG
 
Using Node.js for Mocking Apex Web Services
Using Node.js for Mocking Apex Web ServicesUsing Node.js for Mocking Apex Web Services
Using Node.js for Mocking Apex Web ServicesJeff Douglas
 
How to Get Started with Salesforce Lightning
How to Get Started with Salesforce LightningHow to Get Started with Salesforce Lightning
How to Get Started with Salesforce LightningSalesforce Admins
 
What you need to know on Force.com in 10 slides
What you need to know on Force.com in 10 slidesWhat you need to know on Force.com in 10 slides
What you need to know on Force.com in 10 slidesGuillaume Windels
 
Salesforce Lightning Components Workshop
Salesforce Lightning Components WorkshopSalesforce Lightning Components Workshop
Salesforce Lightning Components WorkshopChristophe Coenraets
 
What is force.com?
What is force.com?What is force.com?
What is force.com?Roy Gilad
 

En vedette (20)

Apex basics-for Beginners
Apex basics-for BeginnersApex basics-for Beginners
Apex basics-for Beginners
 
Intro to Apex Programmers
Intro to Apex ProgrammersIntro to Apex Programmers
Intro to Apex Programmers
 
Apex code-fundamentals
Apex code-fundamentalsApex code-fundamentals
Apex code-fundamentals
 
APEX navigation concepts
APEX navigation conceptsAPEX navigation concepts
APEX navigation concepts
 
Apex - How to create a master detail form
Apex - How to create a master detail formApex - How to create a master detail form
Apex - How to create a master detail form
 
Introduction to Apache Apex
Introduction to Apache ApexIntroduction to Apache Apex
Introduction to Apache Apex
 
Alt tab - better apex tabs
Alt tab - better apex tabsAlt tab - better apex tabs
Alt tab - better apex tabs
 
Salesforce Intro
Salesforce IntroSalesforce Intro
Salesforce Intro
 
Salesforce DUG - Queueable Apex
Salesforce DUG - Queueable ApexSalesforce DUG - Queueable Apex
Salesforce DUG - Queueable Apex
 
High Reliability DML and Concurrency Design Patterns for Apex
High Reliability DML and Concurrency Design Patterns for ApexHigh Reliability DML and Concurrency Design Patterns for Apex
High Reliability DML and Concurrency Design Patterns for Apex
 
APEX & MTdoxx
APEX & MTdoxxAPEX & MTdoxx
APEX & MTdoxx
 
Using Node.js for Mocking Apex Web Services
Using Node.js for Mocking Apex Web ServicesUsing Node.js for Mocking Apex Web Services
Using Node.js for Mocking Apex Web Services
 
Indian it industry
Indian it industryIndian it industry
Indian it industry
 
Visualforce
VisualforceVisualforce
Visualforce
 
How to Get Started with Salesforce Lightning
How to Get Started with Salesforce LightningHow to Get Started with Salesforce Lightning
How to Get Started with Salesforce Lightning
 
What you need to know on Force.com in 10 slides
What you need to know on Force.com in 10 slidesWhat you need to know on Force.com in 10 slides
What you need to know on Force.com in 10 slides
 
Intro to Force.com Webinar presentation
Intro to Force.com Webinar presentationIntro to Force.com Webinar presentation
Intro to Force.com Webinar presentation
 
Salesforce asynchronous apex
Salesforce asynchronous apexSalesforce asynchronous apex
Salesforce asynchronous apex
 
Salesforce Lightning Components Workshop
Salesforce Lightning Components WorkshopSalesforce Lightning Components Workshop
Salesforce Lightning Components Workshop
 
What is force.com?
What is force.com?What is force.com?
What is force.com?
 

Similaire à Introduction to apex code

Introduction to apex
Introduction to apexIntroduction to apex
Introduction to apexRinku Saini
 
Powershell Tech Ed2009
Powershell Tech Ed2009Powershell Tech Ed2009
Powershell Tech Ed2009rsnarayanan
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsSalesforce Developers
 
SQL Server 2000 Research Series - Transact SQL
SQL Server 2000 Research Series - Transact SQLSQL Server 2000 Research Series - Transact SQL
SQL Server 2000 Research Series - Transact SQLJerry Yang
 
Salesforce1 Platform for programmers
Salesforce1 Platform for programmersSalesforce1 Platform for programmers
Salesforce1 Platform for programmersSalesforce Developers
 
ADO.NET Data Services
ADO.NET Data ServicesADO.NET Data Services
ADO.NET Data Servicesukdpe
 
Play framework training by Neelkanth Sachdeva @ Scala Traits Event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala Traits Event , New Delh...Play framework training by Neelkanth Sachdeva @ Scala Traits Event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala Traits Event , New Delh...Neelkanth Sachdeva
 
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...Knoldus Inc.
 
Automating Performance Monitoring at Microsoft
Automating Performance Monitoring at MicrosoftAutomating Performance Monitoring at Microsoft
Automating Performance Monitoring at MicrosoftThousandEyes
 
Accelerated data access
Accelerated data accessAccelerated data access
Accelerated data accessgordonyorke
 
Chapter 14 sql injection
Chapter 14 sql injectionChapter 14 sql injection
Chapter 14 sql injectionnewbie2019
 
Preethi apex-basics-jan19
Preethi apex-basics-jan19Preethi apex-basics-jan19
Preethi apex-basics-jan19Preethi Harris
 
PowerShell Technical Overview
PowerShell Technical OverviewPowerShell Technical Overview
PowerShell Technical Overviewallandcp
 
Intro to the Salesforce Command Line Interface for Admins
Intro to the Salesforce Command Line Interface for AdminsIntro to the Salesforce Command Line Interface for Admins
Intro to the Salesforce Command Line Interface for AdminsSalesforce Admins
 
Visual Studio.NET
Visual Studio.NETVisual Studio.NET
Visual Studio.NETsalonityagi
 

Similaire à Introduction to apex code (20)

My cool new Slideshow!
My cool new Slideshow!My cool new Slideshow!
My cool new Slideshow!
 
Introduction to apex
Introduction to apexIntroduction to apex
Introduction to apex
 
Development withforce
Development withforceDevelopment withforce
Development withforce
 
Powershell Tech Ed2009
Powershell Tech Ed2009Powershell Tech Ed2009
Powershell Tech Ed2009
 
Sql injection
Sql injectionSql injection
Sql injection
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong Foundations
 
SQL Server 2000 Research Series - Transact SQL
SQL Server 2000 Research Series - Transact SQLSQL Server 2000 Research Series - Transact SQL
SQL Server 2000 Research Series - Transact SQL
 
Salesforce1 Platform for programmers
Salesforce1 Platform for programmersSalesforce1 Platform for programmers
Salesforce1 Platform for programmers
 
ADO.NET Data Services
ADO.NET Data ServicesADO.NET Data Services
ADO.NET Data Services
 
Play framework training by Neelkanth Sachdeva @ Scala Traits Event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala Traits Event , New Delh...Play framework training by Neelkanth Sachdeva @ Scala Traits Event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala Traits Event , New Delh...
 
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
 
Automating Performance Monitoring at Microsoft
Automating Performance Monitoring at MicrosoftAutomating Performance Monitoring at Microsoft
Automating Performance Monitoring at Microsoft
 
Asp.net tips
Asp.net tipsAsp.net tips
Asp.net tips
 
ELEVATE Paris
ELEVATE ParisELEVATE Paris
ELEVATE Paris
 
Accelerated data access
Accelerated data accessAccelerated data access
Accelerated data access
 
Chapter 14 sql injection
Chapter 14 sql injectionChapter 14 sql injection
Chapter 14 sql injection
 
Preethi apex-basics-jan19
Preethi apex-basics-jan19Preethi apex-basics-jan19
Preethi apex-basics-jan19
 
PowerShell Technical Overview
PowerShell Technical OverviewPowerShell Technical Overview
PowerShell Technical Overview
 
Intro to the Salesforce Command Line Interface for Admins
Intro to the Salesforce Command Line Interface for AdminsIntro to the Salesforce Command Line Interface for Admins
Intro to the Salesforce Command Line Interface for Admins
 
Visual Studio.NET
Visual Studio.NETVisual Studio.NET
Visual Studio.NET
 

Dernier

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 

Dernier (20)

E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 

Introduction to apex code

  • 1. Coding the Cloud: An Introduction to Apex Code Force.com Platform Fundamentals Andrew Albert, salesforce.com
  • 2. Safe Harbor Statement “Safe harbor” statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward- looking statements including but not limited to statements concerning the potential market for our existing service offerings and future offerings. All of our forward looking statements involve risks, uncertainties and assumptions. If any such risks or uncertainties materialize or if any of the assumptions proves incorrect, our results could differ materially from the results expressed or implied by the forward-looking statements we make. The risks and uncertainties referred to above include - but are not limited to - risks associated with possible fluctuations in our operating results and cash flows, rate of growth and anticipated revenue run rate, errors, interruptions or delays in our service or our Web hosting, our new business model, our history of operating losses, the possibility that we will not remain profitable, breach of our security measures, the emerging market in which we operate, our relatively limited operating history, our ability to hire, retain and motivate our employees and manage our growth, competition, our ability to continue to release and gain customer acceptance of new and improved versions of our service, customer and partner acceptance of the AppExchange, successful customer deployment and utilization of our services, unanticipated changes in our effective tax rate, fluctuations in the number of shares outstanding, the price of such shares, foreign currency exchange rates and interest rates. Further information on these and other factors that could affect our financial results is included in the reports on Forms 10- K, 10-Q and 8-K and in other filings we make with the Securities and Exchange Commission from time to time. These documents are available on the SEC Filings section of the Investor Information section of our website at www.salesforce.com/investor. Salesforce.com, inc. assumes no obligation and does not intend to update these forward- looking statements, except as required by law.
  • 4. Apex Code: Logic-as-a-Service  What is it?  What can it do?  How do I use it?  Well, let‟s see it!
  • 5. Introducing Apex  Force.com allows many customizations through User Interface  Force.com API allows developers to write client-side programs or integrations for more flexibility in their applications – Client side programs have performance costs – Lack transactional control across API requests – Cost and complexity of client hosting server code  APEX was introduced to address those issues and to revolutionize the way developers create on-demand applications.
  • 6. Apex Code Is  Strongly-typed, object-based programming language  Enables developers to execute logic and transaction control statements on Force.com  Runs natively on the server  Code executes on the server when initiated by User Interface via Buttons & Events, and data through the API  Java or C#-like syntax  Transactional
  • 7. How can you use Apex Code?  Database Trigger - Apex Code that is executed in response to a database interaction Example: Apex trigger is initiated whenever a new Contact record is inserted.  Class - Similar to a Java or .NET class - A trigger can call an Apex Class
  • 8. Differences between Triggers and Classes  Triggers execute implicitly in response to a database action  Apex class methods can be explicitly called in many areas of the Force.com  For example: (a) Email to Apex Services (b) Apex Web Services (c) Visualforce controllers
  • 9. How is Apex Different?  Executes directly on the Force.com  Eliminates network traffic between client application and Force.com  Apex Code tightly integrated to the rest of the platform functionality  Changes to the metadata referenced in Apex Code will cause an automatic recompilation the next time those components are executed
  • 10. Language Basics Data Types – Primitive - String - Boolean - Date and DateTime - Integer, Long, Double - ID (Force.com database record identifier) - Blob (for storing binary data) - Sobject (object representing a Force.com standard or custom object) Example: DateTime dt = System.now() + 1; Boolean isClosed = true; String sCapsFirstName = „Andrew‟.toUpperCase(); Account acct = new Account(); //Sobject example
  • 11. Language Basics (cont) Data Types – Collections - Lists - Sets - Maps - Arrays Example: List<Integer> myList = new List<Integer>(); myList.add(12); //Add the number 12 to the list myList.get(0); //Access to first integer stored in the List
  • 12. Language Basics (cont) Statements and Expressions - If/Else - For Loops - Do/While Loops - While Loops Example: Integer count = 0; while(count < 11){ System.debug(„Count = „ + count); count++; }
  • 13. Language Basics (cont) Exception Handling - Try/Catch/Finally statements - Ability to create and throw your own Exceptions Example: public class OtherException extends BaseException {} Try{ //Add code here throw new OtherException(„Something went wrong here…‟); } Catch (OtherException oex) { //Caught a custom exception type here } Catch (Exception ex){ //Caught all other exceptions here }
  • 14. Force.com Query Languages  SOQL – Salesforce object Query Language String myName = „Acme‟; Account[] accts = [select ID from Account where name =:myName] //Pass in a variable  SOSL – Salesforce object Search Language List<List<SObject>> searchList = [FIND '415' IN PHONE FIELDS RETURNING Account, Contact ]; Account [] accounts = ((List<Account>)searchList[0]); Contact [] contacts = ((List<Contact>)searchList[1]);
  • 15. Data Manipulation with Apex  DML (Data Manipulation Language) - Insert - Update - Upsert - Operation to create a new or update existing record based on an external id. - Delete - Undelete
  • 16. Here’s what it looks like Interface Implementation Function Declaration 1 1 global class tasks implements Messaging.InboundEmailHandler { 2 2 3 3 global Messaging.InboundEmailResult handleInboundEmail(Messaging.inboundEmail email, 4 4 Messaging.InboundEnvelope env){ 5 5 6 6 // Create inboundEmailResult object for returning the result of the Force.com Email Service 7 7 Messaging.InboundEmailResult result = new Messaging.InboundEmailResult(); 8 8 9 9 String myPlainText = '‟; Object 101 Instantiation Variable Declaration 111 // Add the email plain text into the local variable 121 try { 131 myPlainText = email.plainTextBody.substring(0, email.plainTextBody.indexOf('<stop>')); 141 } catch (System.StringException e) { 151 myPlainText = email.plainTextBody; Exception 161 System.debug('No <stop> in email: ' + e); Handling 171 } 181 191 // new Task object to be created List Creation Comment 202 List<Task> newTask = new List<Task>(); Syntax 212 222 /* Try to lookup any contacts based on the email from address 232 / If there is more than 1 contact with the same email address 24 / an exception will be thrown and the catch statement will be called 25 */ 262 try { 272 Contact vCon = Id, Name, Email From Contact Where Email = :email.fromAddress] [Select 28 29 ... Query Language
  • 17. Bulk data operations with Apex  Commonly, the ordering of process for an apex solution is as follows: 1) Records are retrieved from the Force.com database with a query statement 2) The array of records ismodified in the processing of your Apex Code 3) The array of records is then sent back to the object through a data manipulation statement These actions are performed in bulk on the Force.com
  • 18. Bulk data operations with Apex (cont)  Apex Code must be designed to handle bulk operations  Why is this important? - The Force.com enforces limits to how many records can be processed at a time (governor limits)  Examples:  Limit on the number of records that can be queried.  Limit on the number of records that be modified.  Limits are calculated by the number of records invoking the Apex Code code
  • 20. Testing  Apex Code to test your Apex Code  Code to help developers perform and automate unit testing  Enables the platform to execute these “test methods” during deployment  Force.com requires that at least 75% of your Apex is covered by testing before code can be deployed to a Production environment (100% is ideal!)  Unit test methods are denoted with testMethod keyword.  testMethods do not modify any data in your org
  • 21. What can you do with Apex Code?  Triggers  Apex Web Services  Email Services  SOA (callouts)  Visualforce Controllers
  • 22. What can you do with Apex Code?  Triggers – Code runs when data changes to ensure business logic is applied – Executes on the server when data changes in either the UI or API.  Email Services – Send & Receive emails, including attachments, with custom logic to process contents. – Includes all standard email attributes, use email templates, and supports plain text or HTML. – Force.com generates a unique email address to process the contents.
  • 23. What else can you do with Apex Code?  Apex Web Services – Develop new Force.com Web Services – Define and expose a custom Web Service for an external service to invoke. – As simple as adding the “webService” keyword to a Apex method – WSDL automatically available  Consume other Web Services – Provides integration with external Web Services – Apex provides integration with Web services that utilize SOAP and WSDL, or HTTP services
  • 24. What else can you do with Apex Code?  Visualforce Controllers – Apex logic accessed by Visualforce pages through custom controllers and controller extensions. – Apex Class that drives the logic when a user interacts with the Visualforce pages.
  • 25. Winter ‘09 Apex Feature – Dynamic Apex  Streamline code design public class displayFields{ …… //Retrieves available SObjects with Global Describe eliminate repetitive code by private Map <String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe(); constructing dynamic procedures //Retrieve accessible fields for specified object public List<Field> showFields(String selectedObject) { for query, search, and data fields.clear(); Map <String, Schema.SObjectField> fieldMap = manipulation schemaMap.get(selectedObject).getDescribe().fields.getMap(); //for each field – determine whether the running user has access to the field  Describe methods for(Schema.SObjectField f : fieldMap.Values()){ Schema.DescribeFieldResult df = f.getDescribe(); if(df.isAccessible()){ New Apex methods to describe fields.add(f); } schema including object definition } return fields; and field definitions. }  User permission awareness The power of system level access with the capability to enforce user permissions and constraints
  • 26. Winter ‘09 Apex Feature – Async Apex global class myclass { public class MyException extends Exception{}  Asynchronous execution public static void throwException() { System.debug('calling throw exception');  Supports web service callouts throw new MyException('for bar'); } from triggers @future(callout=true) static void voidvoid() { System.debug('void void');  Monitoring UI provides Http http = new Http(); HttpRequest req = new HttpRequest(); detailed view of status and req.setMethod('GET'); req.setEndpoint('http://www.cheenath.com'); execution time HttpResponse res = http.send(req); System.debug(res.getBody()); //throw new MyException('for bar'); } @future static void createAccount(String n) { Account a = new Account(name=n); insert a; }
  • 27. Additional Dreamforce 2008 Apex Sessions  Apex Test Coverage Best Practices – Tuesday, 2:00-3:00PM, Esplanade 305  Hands-On : Apex Code – Tuesday, 2:00-3:00PM, South 102  Development As A Service – Building and Deploying Apps in the Cloud – Wednesday, 10:15-11:15AM, Esplanade 303
  • 28. Force.com Library  Books – Developer‟s Guide to the Force.com – Force.com Cookbook – Creating On-Demand Apps  Apex Language Reference
  • 29. Additional Resources  Developer.Force.com – Force.com Developer Community – Apex Developer Guide & Language Reference – Recorded technical presentations and whitepapers – Apex Message Boards  Sign up for free Developer Edition  Training Courses & Certification – DEV401: Force.com essentials – DEV501: Visualforce, Apex, DaaS (Development As A Service)
  • 30. Session Feedback Let us know how we’re doing and enter to win an iPod nano! Please score the session from 5 to 1 (5=excellent,1=needs improvement) in the following categories:  Overall rating of the session  Quality of content  Strength of presentation delivery  Relevance of the session to your organization Additionally, please fill in the name of each speaker & score them on overall delivery. We strive to improve, thank you for filling out our survey.
  • 31. QUESTION & ANSWER SESSION