Salesforce Platform Developer II - Salesforce Fundamentals
Heroku
About Heroku Heroku is designed from the ground up for developer productivity, removing the pains of managing infrastructure, operations, and scaling, so you and your team can focus on delivering amazing apps to customers. Heroku provides instant deployment, streamlined workflows, a marketplace of fully managed cloud services, and built-in best practices for application development—all from a single, scalable, reliable platform for running and managing your apps. Heroku provides the essential tools and building blocks for your applications, including: Support for Node.js, Java, Python, Ruby, and PHP, so your development team can be productive immediately with languages they already know. Heroku Connect, which makes it easy for you to build Heroku apps that share data with your Salesforce environment. Using bi-directional synchronization between Salesforce and Heroku Postgres, Heroku Connect unifies the data in your Postgres database with the contacts, accounts, and other standard and custom objects in the Salesforce database, letting you effortlessly combine the capabilities of the Force.com and Heroku platforms. A robust, on-demand Add-on marketplace of fully managed services you can add and scale in a single command, including services for monitoring, logging, persistence, caching, and mail delivery. Add-ons give you the power to easily provision and consume top technologies, including Redis, MongoDB, PubNub, Mailgun, Hadoop, and more, without needing to manage the underlying infrastructure. Mobile backend services for essential mobile app infrastructure, including push notifications, data synchronization, and in-app purchases. Heroku Postgres, a SQL database-as-a-service that lets you focus on your data with continuous protection, automated health checks, simple configuration, easy set-up of read-only replicas, and powerful querying features. More than an infrastructure provider, Heroku is a developer productivity platform designed from the ground-up to maximize developer productivity and application maintainability at every stage of the lifecycle, featuring: An efficient, safe workflow that lets you deploy with Git and easily create staging, development, and production environments for fast and continuous delivery. A simple, powerful model for scaling your app up as your grow. Easy, intuitive interfaces and tools — including a powerful command line interface and streamlined dashboard. Built-in collaboration for more efficient work across your team, extended team, and third-party partners, such as application development shops. Centralized billing and management for all of your apps.
Fuel
Marketing Cloud ExactTarget API ExactTarget's core offerings include an award-winning product, called Fuel, that powers multi-channel marketing programs for many of the world's top brands. The foundation of the ExactTarget Marketing Cloud, Fuel is open to third-party development, enabling you to build upon, extend, and integrate with ExactTarget's industry-leading digital marketing products. Fuel SDKs First, download the Fuel SDK for your preferred environment. The Fuel SDKs are wrappers around Fuel's APIs that enable developers to integrate with those APIs by using native language constructs. You can find the SDKs at https://code.exacttarget.com/sdks. Fuel SDKs are available for Java, .NET, PHP, Python, and Ruby. You'll be using the PHP SDK to build your app, but all Fuel SDKs employ common patterns, so you'll be able to adapt the example code to any of the other SDKs fairly easily. Install the PHP SDK in a subdirectory of your workspace, called sdk. Make sure that you have all dependencies installed as described in the SDK's README. Building the App explains how to configure the SDK, but don't worry about that now. The SDKs provide protocol agnostic interfaces across Fuel's SOAP and REST APIs as well as automated token management and other features that are designed to reduce development time. Our SOAP API is our oldest and most comprehensive API, but its functionality is limited to the ExactTarget email application, and like all SOAP APIs, it's fairly heavyweight. Our REST API is newer and less comprehensive, but it exposes a broader set of Marketing Cloud capabilities and is more lightweight and easy to use (and is getting more comprehensive with every release). Both share a common authentication mechanism based on OAuth 2. By using the SDKs, you get the best of both worlds. And, in most cases, you can accomplish the same task with less code by using the SDKs. We've also encapsulated common patterns and best practices directly into the SDKs. That's why they're the most popular way to integrate with the Fuel Platform. If there's no SDK for your preferred environment, or if you'd rather not use an SDK, don't worry—you can always access the APIs directly. We'll show you a few examples of how to do that, but we won't be able to be comprehensive. You can find more information about how to use the API directly at Code@ExactTarget. Using Fuel to Send Email One of the most common uses of Fuel is to send email. This section walks you through the process of sending an email to a list of subscribers. This example is designed to illustrate many of the basic concepts that you will need to use Fuel programatically to send email, both promotionally and transactionally. Specifically, you'll learn how to add attributes associated with purchase activity to the subscriber data model. You'll learn how to create a list, add a subscriber to that list, create an email, send the email to the list, and get back tracking events from the send, all programatically. Finally, you'll learn how to use content scripting to build a highly personalized message using additional data sets.
Force.com
Overview of Force.com Force.com, a core component of the Salesforce App Cloud, is designed to help create custom apps in minutes. Administrators and users can build apps using intuitive drag-and-drop tools, a powerful workflow and approval engine, and much more. Developers and ISVs can build apps using programmatic tools, open APIs, and the leading languages and frameworks. Force.com provides APIs that can be used for developing integration and data access applications, adding application logic to your organization's data, creating custom user interfaces or integrating existing application user interfaces in your organizations, and developing applications that use the Salesforce social and collaboration functionality. Because there are no servers or software to buy or manage, you can focus solely on building apps that include built-in social and mobile functionality, business processes, reporting, and search. Your apps run on a secure, proven service that scales, tunes, and backs up data automatically. For integration and data access, Force.com provides: SOAP API: A SOAP-based API for accessing your Salesforce data. REST API: A REST-based API for accessing your Salesforce data. Metadata API: An API used for managing and migrating organization metadata. Bulk API: A REST-based API for asynchronously loading or querying very large sets of data. Streaming API: A push technology API for efficiently managing notifications of organization data changes. Salesforce Object Query Language (SOQL): A query language used to form complex queries, used in many of the Salesforce APIs. Salesforce Object Search Language (SOSL): A search language used to form complex data searches, used in many of the Salesforce APIs. Tooling API: A REST- and SOAP-based API used for creating custom Salesforce development tools. Salesforce Reports and Dashboards REST API: A REST-based API used for running and accessing report data in Salesforce. For application logic, Force.com provides: Apex: An object-oriented programming language that lets you add business logic, triggers, and more to you organization's data. For user interface development and integration, Force.com provides: Visualforce: A tag-based markup language used for building applications and custom interfaces in Salesforce. Force.com Canvas: A set of tools and frameworks used to integrate your existing web applications directly in Salesforce.
Querying Currency Fields in Multi-currency Orgs
Use convertCurrency() in the SELECT statement of a SOQL query to convert currency fields to the user's currency. This action requires that the org has multiple currencies enabled. The following syntax is for using convertCurrency() with the SELECT clause: convertCurrency(field) For example: SELECT Id, convertCurrency(AnnualRevenue) FROM Account Use an ISO code that your org has enabled and made active. If you don't put in an ISO code, the numeric value is used instead of comparative amounts. Using the previous example, opportunity records with JPY5001, EUR5001, and USD5001 would be returned. If you use IN in a WHERE clause, you can't mix ISO code and non-ISO code values. To format currencies according to the user's local, use FORMAT() with SELECT() statements. In this example, convertedCurrency is an alias for the returned amount, which is formatted appropriately in the user interface. SELECT amount, FORMAT(amount) Amt, convertCurrency(amount) editDate, FORMAT(convertCurrency(amount)) convertedCurrency FROM Opportunity where id = <> SELECT FORMAT(MIN(closedate)) Amt FROM opportunity If an org has enabled advanced currency management, dated exchange rates are used when converting currency fields on opportunities, opportunity line items, and opportunity history. With advanced currency management, convertCurrency uses the conversion rate that corresponds to a given field (for example, CloseDate on opportunities). When advanced currency management isn't enabled, the most recent conversion date entered is used. Considerations and Workarounds You can't use the convertCurrency() function in a WHERE clause. If you do, an error is returned. Use the following syntax to convert a numeric value to the user's currency from any active currency in your org. WHERE Object_name Operator ISO_CODEvalue For example: SELECT Id, Name FROM Opportunity WHERE Amount > USD5000 In this example, opportunity records are returned if the record's currency Amount value is greater than the equivalent of USD5000. For example, an opportunity with an amount of USD5001 is returned, but not JPY7000. You can't convert the result of an aggregate function into the user's currency by calling the convertCurrency() function. If a query includes a GROUP BY or HAVING clause, currency data returned by using an aggregate function, such as SUM() or MAX(), is in the org's default currency. For example: SELECT Name, MAX(Amount) FROM Opportunity GROUP BY Name HAVING MAX(Amount) > 10000 You can't use ISO_CODE value to represent a value in a particular currency, such as USD, when you use an aggregate function. For example, the following query does't work. SELECT Name, MAX(Amount) FROM Opportunity GROUP BY Name HAVING MAX(Amount) > USD10000 You can't use convertCurrency() with ORDER BY. Ordering is always based on the converted currency value, just like in reports.
History Objects
Using Relationship Queries with History Objects Custom objects and some standard objects have an associated history object that tracks changes to an object record. You can use SOQL relationship queries to traverse a history object to its parent object. For example, the following query returns every history row for Foo__c and displays the name and custom fields of Foo: SELECT OldValue, NewValue, Parent.Id, Parent.name, Parent.customfield__c FROM foo__history This example query returns every Foo object row together with the corresponding history rows in nested subqueries: SELECT Name, customfield__c, (SELECT OldValue, NewValue FROM foo__history) FROM foo__c