Ye Meri Life Hai - Chirag Mehta

Be Good & Do Good!

Page 13 of 134

Salesforce – Steps to Schedule/Reschedule Apex (Apex Scheduler)

Steps to Schedule Apex

  1. Define Scheduled Apex Class
  2. global class scheduledMerge implements Schedulable{
    global void execute(SchedulableContext SC) {
    mergeNumbers M = new mergeNumbers();
    }}

  3. Run the system.schedule Anonymous Code to Schedule the Apex Class (Read More on System.Schedule @ http://tinyurl.com/yg2d7qj)
  4. Setup | Monitoring | Scheduled Jobs to list the above Scheduled Job

Steps to Update Scheduled Apex Code

  1. Delete the Scheduled Job from Setup | Monitoring | Scheduled Jobs
  2. Edit/Update the underlying Apex Class. (Save will result in “the class has pending jobs” error, if you haven’t deleted the Scheduled Job i.e., STEP1 is prerequisite for this STEP2)
  3. Run the Anonymous Code to Schedule the Apex Class (system.schedule)
  4. Setup | Monitoring | Scheduled Jobs to list the above Scheduled Job

HTML Email Tracking in Salesforce

Outbound HTML emails are tracked by default if your organization uses HTML email templates. You can select or deselect this setting at Setup | Customize | Activities | Activity Settings to control email tracking. If you disable email tracking, email tracking information for your organization is no longer stored. However, the HTML Email Status related list remains on page layouts and email tracking reports remain on the Reports tab.

After sending an HTML email, you can track the date it was first opened, the number of times it was opened, and the date it was most recently opened.

Salesforce.com – Apex Web Service Callout Using @future

Jeff

The addition of asynchronous Web service callouts to external services is a feature that developers have been requesting for quite awhile in Salesforce.com. Using the new @future annotation, your methods execute the callout when Salesforce.com has resources available. One of the great benefits is that it allows you to perform callouts during trigger executions.

Today, I developed the callouts from trigger. There are many limitations which I came across and which are documented very well by Jeff on his blog post http://blog.jeffdouglas.com/2009/03/16/restful-web-service-callout-using-post/

I kept on trying to use complex data types, unless i reached Jeff post and found that only primitive data types are supported in future methods. To paraphrase, following are the points to be taken note of when using the future annotation:

  • No more than 10 method calls per Apex invocation
  • No more than 200 method calls per Salesforce license per 24 hours
  • The parameters specified must be primitive dataypes, arrays of primitive datatypes, or collections of primitive datatypes.
  • Methods with the future annotation cannot take sObjects or objects as arguments.
  • Methods with the future annotation cannot be used in Visualforce controllers in either getMethodName or setMethodName methods, nor in the constructor.

Also good note of points about asynchronous call outs can be read at Salesforce Blog

  • Like any asynchronous method. the callout must be in a static method and return a void type.
  • The system executes the asynchronous call when it has available resources – this means that you can’t assume anything about when the call will be executed.
  • The asynchronous method executes in a different transaction context than the trigger. A failure of the callout will have no effect on the transaction controlling the trigger (i.e. changes will not be rolled back). You will have to build in suitable compensation logic yourself to account for any exceptions in the callout.
  • Keep the governor limits in mind when making callouts. We are constrained by the interface provided by the remote web service. If the remote web service were to provide any kind of batch processing interface, choose that instead of making individual calls. It helps avoid hitting the governor limits and will be more performant as well since there are fewer round trips to make.

Salesforce – Schedule Apex to run at any time interval

Following is the snippet of anonymous code which will help you to schedule your apex for any interval. The Time parameter is not well structured and because of it I had to put in efforts in compiling the time parameter.

Update (@23 Nov 2011) – Use below code to schedule apex class 10mins (change it as per your need) from now

String str = system.now().addMinutes(10).format(‘ss mm HH dd MM ? yyyy’);
System.schedule(‘Registration Report’, str , new scheduledApexClassName());

  

I am documenting all the parameters neatly, which will help you to schedule apex to run at any time interval even minutes. Below code executes Apex every 10 minutes.

scheduledApexClassName m = new scheduledApexClassName();

String seconds = ‘0’; //Execute at Zero Seconds
String minutes = ‘10,20,30,40,50’; //Execute at every 10th minute of hour
String hours = ‘*’; // Execute Every Hour
String dayOfMonth = ‘*’; // Execute Every Day of the Month
String month = ’11’; //Execute only in November(11)
String dayOfWeek = ‘?’; //Execute on all 7 days of the Week
String year = ‘2009’; //Execute only for year 2009

//Seconds Minutes Hours Day_of_month Month Day_of_week optional_year
String sch = seconds + ‘ ‘ + minutes + ‘ ‘ + hours + ‘ ‘ + dayOfMonth + ‘ ‘ + month + ‘ ‘ + dayOfWeek + ‘ ‘ + year;
//String sch = ‘0 10,20,30,40,50 * * 11 ? 2009’;

system.schedule(‘Registration Report’, sch, m);

Execute above code in system log i.e., execute above annonymous code and it will schedule your Apex Class.

For More Information on how to define a Schedule Apex Class refer http://na1.salesforce.com/help/doc/en/salesforce_winter10_release_notes.pdf#rn_162_apex_scheduler

Indian Animation Industry

In possible good news for a faltering animation industry in India, NASSCOM has forecasted that the industry will grow to USD 1 billion by 2012 from an estimated USD 494 million in 2008.

The report, released at the NASSCOM Animation & Gaming Summit 2009 in Hyderabad, outlines the key challenges for the animation and vfx markets. Noteworthy among them are: ‘the limited demand for animation due to limited promotional budgets and restricted theatrical distribution, scarcity of long-term financing for animated films, competition from foreign animation and restricted use of vfx in Bollywood.’

Interestingly, the animation entertainment segment (which includes feature films, direct-to-DVD, advertising and TV) accounted only 22% of the total market in 2008; while vfx accounted for a mere 13% of the pie. As of today several animation films are in the pipeline for release next year. Biren Ghose, Chairman of NAGFO, who recently joined Paprikaas as General Manager, said, “Not many of the 15 or so animation films that have been announced will release next year.”

On a positive note, he said, “Visual effects (vfx) is an emerging market. About 8-12% of a movie’s budget is spent on vfx. Despite questions raised about the failure of vfx-heavy movies, it has to be noted that Aladin’s vfx budget was only 16% (10-20 crores) of the total cost. In other countries, box-office revenues are small chunk of total profit made by a feature, but in India box-office collection plays a major part in the revenues.”

He also added that animation industry should adapt to Bollywood’s example of having restructured to a higher profitability model, post recession.

Salesforce – Adobe Flash Builder for Force.com Webinar

Force.com Adobe Flash Builder is a  jointly developed integrated development environment (IDE) that gives developers a single, powerful tool for building cloud-based rich Internet applications (RIAs).

:: View the recorded webinar on Force.com Adobe Flash Builder
http://wiki.developerforce.com/index.php/Tech_Talk:_Adobe_Flash_Builder_for_Force.com

:: Reference other resources
http://developer.force.com/flashbuilder
http://www.adobe.com/devnet/salesforce/index.html

Salesforce AJAX Toolkit Shell

Came across something tweak toolkit installed and accessible right inside of any Salesforce.com Org. Access Salesforce AJAX Toolkit Shell @ http://instanceName.salesforce.com/soap/ajax/17.0/debugshell.html.

Enter the instanceName, such as na1, for your organization. You can see the instanceName in the URL field of your browser after logging
in to Salesforce.com.

Salesforce – Date (Calendar) Picker in VisualForce

In general it is a bad idea to use any of the javascript calls that references any standard app features.  These can and do change frequently and might have side effects that are hard to track down.

To get the datePicker the best solution right now is to use inputField and then use an empty SObject with a date field to store the value for you.

Visualforce

<apex:inputField value=”{!proxyObject.closeDate}”/>

Controller

Opportunity o = new Opportunity();
public Opportunity getProxyObject() { return o; }

then in your controller when you need to access the date you ask for o.closeDate.

Source : Salesforce Community

How do I escape ampersands in batch files?

Q: How do I escape ampersands in a batch file (or from the Windows command line) in order to use the start command to open web pages with ampersands in the URL? Double quotes will not work with start; this starts a new command line window instead.

  1. ‘&’ is used to separate commands therefore you can use ^ to escape the ‘&’
  2. Note that you need to supply a dummy first argument in this case, as start will treat the first argument as a title for the new console windows, if it is quoted. So the following should work (and does here):
start "" "http://www.google.com/search?client=opera&rls=en

Also note,if there are URL encoded characters (e.g. space is encoded as %20) in the URL and it is in a batch file then ‘%’ must be encoded as ‘%%’. This is not the case in the example.

Source : http://stackoverflow.com/questions/1327431/how-do-i-escape-ampersands-in-batch-files

Salesforce – Know-How : Anonymous Block

  1. Unlike classes and triggers, anonymous blocks execute as the current user and can fail to compile if the script violates the user’s object- and field-level permissions. So, essentially, it is only allows the user to do what they could through the API.
  2. if you don’t have CRUD for delete on Account, you can’t delete Accounts through anonymous blocks.
  3. The Author Apex profile perm, only applies to Apex that is stored in the org’s metadata (i.e. normal Apex Classes and Triggers that run in system mode).
  4. As far as Async Apex (Batch Apex), it doesn’t look like it is possible because @future requires the method be static but anonymous blocks can’t have static methods
« Older posts Newer posts »