Sunday 21 February 2016

Ajax-Salesforce Complete Material


Ajax tool kit with salesforce

Salesforce offer AJAX tool kit to run javascript and allowing user to make a connection with Salesforce and query salesforce from javascript, the data in-return can be handled in own fashion to be displayed on the page

Note : Ajax tool kit should be used when you want to work with records upto
       200  with 5 to 6 fields in the object

The following are examples of scenarios that require case-by-case analysis:
Ø  Update more than 200 records.
Ø  Update records that are unusually large. For example, what happens if the user clicks the browser stop button?
Ø  Recalculate a complex value for more than 200 records.

Step 1: include  connection.js in the visualforce page.

        <script src="/soap/ajax/30.0/connection.js" type="text/javascript">

        </script>

Step 2: Pass the session id  to Connection.SessionID

        1.sforce.connection.sessionId = "{!$Api.Session_ID}";
              
                       Or
        2.We can login using username and password
       
        Var result =Sforce.connection.login(username,password+resettoken);
       
        sforce.connection.sessionId=result.sessionId;

step 3 :Write a query :

        string str='select id,name from Account';


step 4: Execute the Query

        var queryResult = sforce.connection.query(str);


Step 5: Check wheather the queryResult has element ;


         if(queryResult.size >0)

Step 6: Get all the records into an array

        var records = queryResult.getArray('records');



Example 1:Login to the sforce using loginid and password:

<apex:page >
 <apex:form>
   <apex:commandButton  value="click" onclick="show()"/>
 </apex:form>
 <script src="/soap/ajax/30.0/connection.js" type="text/javascript">
 </script>
 <script>
    function show(){
     try{
 var result = sforce.connection.login("batch197@QEdge.com",
                                      "password+recuritytoken");
         alert("logged in with session id " + result.sessionId);
       }catch(error) {
         alert(error);
       }
     }
  </script>  
</apex:page>
============================================================================
Example 2:  Login to the sforce using API sessionid

<apex:page id="pageId">
<apex:form>
<script src="/soap/ajax/30.0/connection.js" type="text/javascript"></script>
<script>
function show() {
 try {
       sforce.connection.sessionId = "{!$Api.Session_ID}";       
       var queryResult = sforce.connection.query("Select Name, Industry From
                                                   Account where Name!=null")      
        if (queryResult.size > 0) {
                               var output = "";
                               var records = queryResult.getArray('records');
                var result='';
               for (var i = 0; i <records.length; i++) {
                 var account = records[i];
                 result += account.Name ;
   }                            document.getElementById('{!$Component.output}').innerHTML=result;
                                
        }
  } catch(error) {
        queryFailed(error, output);
    }
 }
 function queryFailed(error, out) {
    out.innerHTML = "<font color=red>An error:</font> <p>" + error;
 }
 </script>
 <apex:commandButton value="click" onclick="show()"  />
     <apex:outputLabel id="output"></apex:outputLabel>
</apex:form> 
</apex:page>


==============================
Reference Codes:
//-- Ajax Query: sync
  result = sforce.connection.query("Select Name,Id from User");
  records = result.getArray("records");
  for (var i=0; i<records.length; i++) {
    var record = records[i];
    log(record.Name + " -- " + record.Id);
  }
============================================================================
//-- Ajax Query: async
  var result = sforce.connection.query("Select Name,Id from User", {
      onSuccess : success,
      onFailure : failure
    });

  function success(result) {
    var records = result.getArray("records");

    for (var i=0; i<records.length; i++) {
      var record = records[i];
      log(record.Name + " -- " + record.Id);
    }
  }

  function failure(error) {
    log("oops something went wrong " + error);
  }
=============================================================================
//-- Ajax Query: async inline function
  var result = sforce.connection.query("Select Name,Id from User", {
      onSuccess : function(result) {
         var records = result.getArray("records");

         for (var i=0; i<records.length; i++) {
           var record = records[i];
           log(record.Name + " -- " + record.Id);
         }
      },
      onFailure : function(error) {
        log("oops something went wrong " + error);
      }
  });
=============================================================================
//-- Ajax Query: query result iterator
  var result = sforce.connection.query("Select Name,Id from User", {
    onSuccess : success, onFailure : failure});

  function success(result) {
    var it = new sforce.QueryResultIterator(result);
    while(it.hasNext()){
      var record = it.next();
      log(record.Name + " -- " + record.Id);
    }
  }

  function failure(error) {
    log("oops something went wrong " + error);
  }
============================================================================

//-- Ajax Query: query more sync
  var result = sforce.connection.query("select name, id from account");

  var queryMore = true;
  while (queryMore) {
      var records = result.getArray("records");
      var sb = new sforce.StringBuffer();

      for (var i = 0; i < records.length; i++) {
        sb.append(records[i].Name).append(",");
      }

      log(records.length);
      log(sb.toString());

      if (result.queryLocator == null) {
        queryMore = false;
      } else {
        result = sforce.connection.queryMore(result.queryLocator);
    }
  }
==========================================================================
//-- Ajax Query: query more async
  sforce.connection.query("Select Name,Id from Account", {
      onSuccess : success, onFailure : log });

  function success(result) {
    var records = result.getArray("records");

    var sb = new sforce.StringBuffer();
    for (var i=0; i<records.length; i++) {
      var record = records[i];
      sb.append(record.Name).append(",");
    }

    log(records.length);
    log(sb.toString());

    if (result.queryLocator) {
      sforce.connection.queryMore(result.queryLocator, {
          onSuccess : success, onFailure : log});
    }
  }
=============================================================================

//-- Ajax Query: query all sync
  var result = sforce.connection.queryAll("Select Name,Id from User");
  var records = result.getArray("records");

  for (var i=0; i<records.length; i++) {
    var record = records[i];
    log(record.Name + " -- " + record.Id);
  }

//-- Ajax Query: limit
  var result = sforce.connection.query("Select Name,Id from Account limit 10", {
    onSuccess : success, onFailure : failure});

  function success(result) {
    var it = new sforce.QueryResultIterator(result);
    while(it.hasNext()){
      var record = it.next();
      log(record.Name + " -- " + record.Id);
    }
  }

  function failure(error) {
    log("oops something went wrong " + error);
  }
========================================================================
//-- Ajax Query: relationships
  var result = sforce.connection.query("SELECT c.Id, c.firstname, " +
    "c.lastname, c.leadsource, a.Id, a.name, a.industry, c.accountId " +
    "FROM Contact c, c.account a limit 10");

  var it = new sforce.QueryResultIterator(result);

  while(it.hasNext()) {
    var record = it.next();
    var accountName = record.Account ? record.Account.Name : null;

    log( record.FirstName + " " + record.LastName +
         " in account " + accountName);
  }
==========================================================================

//-- Ajax Query: joins
  var result = sforce.connection.query("select a.name, a.industry, " +
    "(select c.lastname, c.leadsource from a.contacts c) " +
    "from account a limit 100");

  var ait = new sforce.QueryResultIterator(result);

  while(ait.hasNext()) {
    var account = ait.next();

    var contacts = [];
    if (account.Contacts) {
      var cit = new sforce.QueryResultIterator(account.Contacts);
      while(cit.hasNext()) {
        var contact = cit.next();
        contacts.push(contact.LastName);
      }
    }

    log(account.Name + ": " + contacts.join(","));
  }

=============================================================================


//-- Ajax CRUD: create - sync
  var account = new sforce.SObject("Account");
  account.Name = "my new account";
  var result = sforce.connection.create([account]);

  if (result[0].getBoolean("success")) {
    log("new account created with id " + result[0].id);
  } else {
    log("failed to create account " + result[0]);
  }
============================================================================
//-- Ajax CRUD: create - async
  var account = new sforce.SObject("Account");
  account.Name = "my new account";

  sforce.connection.create([account],
    {onSuccess : success, onFailure : failed});

  function success(result) {
    if (result[0].getBoolean("success")) {
      log("new account created with id " + result[0].id);
    } else {
      log("failed to create account " + result[0]);
    }
  }

  function failed(error) {
    log("oops something went wrong " + error);
  }
===========================================================================
//-- Ajax CRUD: create- with other data types
  var campaign = new sforce.SObject("Campaign");
  campaign.Name = "new campaign";
  campaign.ActualCost = 12938.23;
  campaign.EndDate = new Date();
  campaign.IsActive = true;

  sforce.connection.create([campaign ],
    {onSuccess : success, onFailure : log});

  function success(result) {
    if (result[0].getBoolean("success")) {
      log("new campaign created with id " + result[0].id);
    } else {
      log("failed to create campaign " + result[0]);
    }
  }
===========================================================================









//-- Ajax CRUD: create- batch
  var accounts = [];

  for (var i=0; i<10; i++) {
    var account = new sforce.SObject("Account");
    account.Name = "my new account " + i;
    accounts.push(account);
  }

  var result = sforce.connection.create(accounts);

  for (var i=0; i<result.length; i++) {
    if (result[i].getBoolean("success")) {
      log("new account created with id " + result[i].id);
    } else {
      log("failed to create account " + result[i]);
    }
  }
==========================================================================
//-- Ajax CRUD: create- with base64Binary
  fr = sforce.connection.query("select name,id from folder");

  records = fr.getArray("records");
  if (records.size == 0) {
    log("unable to find any folders");
  }

  folderId = records[0].Id;
  log(folderId);

  var doc = new sforce.SObject("document");
  doc.Name = "new doc";
  doc.FolderId = folderId;
  doc.Body = new sforce.Base64Binary("some body string");

  result = sforce.connection.create([doc]);
  log(result);

  doc = sforce.connection.retrieve("name,body",
    "document", [result[0].id]);

  log(doc[0].getBase64Binary("Body"));
=============================================================================
//-- Ajax CRUD: delete
  //create an account
  var account = new sforce.SObject("Account");
  account.Name = "my new account";
  var result = sforce.connection.create([account]);

  if (result[0].getBoolean("success")) {
    log("new account created with id " + result[0].id);
    account.Id = result[0].id;
  } else {
    throw ("failed to create account " + result[0]);
  }

  //now delete that account
  var delResult = sforce.connection.deleteIds([account.Id]);
  if (delResult[0].getBoolean("success")) {
    log("account with id " + result[0].id + " deleted");
  } else {
    log("failed to delete account " + result[0]);
  }

===========================================================================
//-- Ajax CRUD: update
  //create an account
  var account = new sforce.SObject("Account");
  account.Name = "manoj";
  account.Phone = "2837484894";
  result = sforce.connection.create([account]);

  //update that account
  account.id = result[0].id;
  account.Phone = "12398238";
  result = sforce.connection.update([account]);

  if (result[0].getBoolean("success")) {
    log("account with id " + result[0].id + " updated");
  } else {
    log("failed to update account " + result[0]);
  }
=============================================================================
//-- Ajax CRUD: upserta

//-- Ajax CRUD: merge
  //create two accounts
  var account1 = new sforce.SObject("Account");
  account1.Name = "manoj";
  account1.Phone = "2837484894";

  var account2 = new sforce.SObject("Account");
  account2.Name = "cheenath";
  account2.Phone = "938475950";

  var result = sforce.connection.create([account1, account2]);
  if (result.length != 2) throw "create failed";

  account1.id = result[0].id;
  account2.id = result[1].id;

  //create merge request
  var request = new sforce.MergeRequest();
  request.masterRecord = account1;
  request.recordToMergeIds = account2.id;

  //call merge
  result = sforce.connection.merge([request]);
  if (result[0].getBoolean("success")) {
    log("merge success " + result[0]);
  } else {
    log("merge failed " + result[0]);
  }
=============================================================================
//-- Ajax CRUD: undelete
  var account = new sforce.SObject("Account");
  account.Name = "account to delete";
  account.Phone = "2837484894";
  result = sforce.connection.create([account]);
  account.id = result[0].id;
  log("account created " + account);

  result = sforce.connection.deleteIds([account.id]);
  if (!result[0].getBoolean("success")) throw "delete failed";
  log("account deleted " + result);

  result = sforce.connection.undelete([account.id]);
  if (!result[0].getBoolean("success")) throw "undelete failed";
  log("account undeleted " + result[0]);
=========================================================================
//-- Ajax CRUD: retrieve
  var account = new sforce.SObject("Account");
  account.Name = "retrieve update test";
  account.Phone = "2837484894";
  var result = sforce.connection.create([account]);
  if (result[0].getBoolean("success") == false) throw "create failed";
  log("account created " + result[0]);

  result = sforce.connection.retrieve("Name,Phone", "Account", [result[0].id]);
  if (result[0] == null) throw "retrive failed";
  log("account retrieved: " + result[0]);

  result[0].Phone = "111111111111";
  result = sforce.connection.update(result);
  if (result[0].getBoolean("success") == false) throw "update failed";
  log("account updated: " + result[0]);
=============================================================================
//-- Ajax CRUD: retrieve async
  var account = new sforce.SObject("Account");
  account.Name = "retrieve update test";
  account.Phone = "2837484894";
  var result = sforce.connection.create([account]);
  if (result[0].getBoolean("success") == false) throw "create failed";
  log("account created " + result[0]);

  var callback = {
    onSuccess: function(result) {
      if (result[0] == null) throw "retrive failed";
      log("account retrieved: " + result[0]);
    },
    onFailure: function(error) {
      log("failed due to " + error);
    }
  };

  result = sforce.connection.retrieve("Name,Phone", "Account",
     [result[0].id], callback);

//-- Ajax Describe: SObject
  var result = sforce.connection.describeSObject("Account");

  log(result.label + " : " + result.name + " : ");

  log("---------- fields ---------");
  for (var i=0; i<result.fields.length; i++) {
    var field = result.fields[i];
    log(field.name + " : " + field.label + " : " + field.length + " : ");
  }

  log("---------- child relationships ---------");
  for (var i=0; i<result.childRelationships.length; i++) {
    var cr = result.childRelationships[i];
    log(cr.field + " : " + cr.childSObject);
  }

  log("---------- record type info ----------");
  for (var i=0; i<result.recordTypeInfos.length; i++) {
    var rt = result.recordTypeInfos[i];
    log(rt.name);
  }
=============================================================================
//-- Ajax Describe: SObjects
  var result = sforce.connection.describeSObjects(["Account", "Contact"]);

  for (var i=0; i<result.length; i++) {
    log(result[i].label + " : " + result[i].name + " : ");
  }

//-- Ajax Describe: global
  var result = sforce.connection.describeGlobal();

  var types = result.getArray("types");
  for (var i=0; i<types.length; i++) {
    log(types[i]);
  }

//-- Ajax Describe: layout
  var result = sforce.connection.describeLayout("Account");

  var layouts = result.getArray("layouts");

  for (var i=0; i<layouts.length; i++) {
    var layout = layouts[0];
    detailLayoutSections(layout.detailLayoutSections);
  }


  function detailLayoutSections(sections) {
    for (var i=0; i<sections.length; i++) {
      var section = sections[i];
      log(section.columns + ":" + section.heading + ":");
      layoutRows(section.getArray("layoutRows"));
    }
  }

  function layoutRows(rows) {
    for (var i=0; i<rows.length; i++) {
      var row = rows[i];
      layoutItems(row.getArray("layoutItems"));
    }
  }

  function layoutItems(items) {
    for (var i=0; i<items.length; i++) {
      var item = items[i];
      log("  " + item.label);
    }
  }
=============================================================================

//-- Ajax Describe: tabs
  var result = sforce.connection.describeTabs();

  for (var i=0; i<result.length; i++) {
    var tabSet = result[i];
    log( tabSet.label);
    displayTabs(tabSet.get("tabs"));
  }

  function displayTabs(tabs) {
    for( var i=0; i<tabs.length; i++) {
      var tab = tabs[i];
      log( "  " + tab.label + " " + tab.url);
    }
  }

============================================================================
//-- Ajax Util: get deleted
  var start = new Date();
  var end = new Date();
  start.setDate(end.getDate() - 1);

  var result = sforce.connection.getDeleted("Account", start, end);

  var records = result.getArray("deletedRecords");

  log("following records are deleted:");

  for (var i=0; i<records.length; i++) {
    log(records[i].id);
  }

==============================================================================
//-- Ajax Util: get updated
  var start = new Date();
  var end = new Date();
  start.setDate(end.getDate() - 1);

  var result = sforce.connection.getUpdated("Account", start, end);

  var records = result.getArray("ids");

  log("following records are updated:");
  for (var i=0; i<records.length; i++) {
    log(records[i]);
  }
============================================================================
//-- Ajax Util: convert lead
  var account = new sforce.SObject("Account");
  account.Name = "convert lead sample";
  account.Phone = "2837484894";
  result = sforce.connection.create([account]);
  account.Id = result[0].id;

  var lead = new sforce.SObject("Lead");
  lead.Country = "US";
  lead.Description = "This is a description";
  lead.Email = "someone@somewhere.com";
  lead.FirstName = "first";
  lead.LastName = "last";
  lead.Company = account.Name;
  result = sforce.connection.create([lead]);
  lead.Id = result[0].id;

  var convert = new sforce.LeadConvert();
  convert.accountId = account.Id;
  convert.leadId = lead.Id;
  convert.convertedStatus = "Qualified";

  result = sforce.connection.convertLead([convert]);
  if (result[0].getBoolean("success")) {
    log("lead converted " + result[0]);
  } else {
    log("lead convert failed " + result[0]);
  }


//-- Ajax System: login
  try{
    var result = sforce.connection.login("manoj1@cheenath.com", "123456");
    log("logged in with session id " + result.sessionId);
  }catch(error) {
    if (error.faultcode.indexOf("INVALID_LOGIN") != -1) {
      log("check your username and passwd, invalid login");
    } else {
      log(error);
    }
  }

//-- Ajax System: get server timestamp
  var result = sforce.connection.getServerTimestamp();
  log(result.timestamp);

//-- Ajax System: get user info
  var user = sforce.connection.getUserInfo();
  log("Hello " + user.userName);
  log("Your email id is " + user.userEmail);
  log("and you work for " + user.organizationName);

//-- Ajax System: set/reset password
  var username = "manoj1@cheenath.com";

  var result = sforce.connection.query(
    "SELECT ID from User WHERE User.username='" + username + "'");

  var records = result.getArray("records");
  if (records.length != 1) throw "unable to find user";
  var id = records[0].Id;

  sforce.connection.resetPassword(id);
  sforce.connection.setPassword(id, "123456");

//-- Ajax Remote Proxy: http get sync

    /* This feature is not enabled by default.
       Please contact support */
    sforce.connection.remoteFunction({
        url : "http://www.cheenath.com",
        onSuccess : function(response) {
            log("Got response" + response);
        },
        onFailure : function(error) {
            log("ERROR: " + error);
        },
        async: false
    });

//-- Ajax Remote Proxy: http get async

    /* This feature is not enabled by default.
       Please contact support */
    sforce.connection.remoteFunction({
        url : "http://www.cheenath.com",
        onSuccess : function(response) {
            log("Got response" + response);
        },
        onFailure : function(error) {
            log("ERROR: " + error);
        },
        async: true
    });

//-- Ajax Remote Proxy: web service

    /* This feature is not enabled by default.
       Please contact support */
  var envelope =
        '<soap:Envelope xmlns:mrns0="urn:xmethods-CurrencyExchange" ' +
        'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" ' +
        'xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" ' +
        'xmlns:xs="http://www.w3.org/2001/XMLSchema" ' +
        'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' +
        '<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' +
        '<mrns0:getRate><country1 xsi:type="xs:string">us</country1>' +
        '<country2 xsi:type="xs:string">india</country2> </mrns0:getRate> </soap:Body> </soap:Envelope>';

    sforce.connection.remoteFunction({
        url : "http://services.xmethods.net/soap",
        requestHeaders: {"Content-Type":"text/xml",
            "SOAPAction": "\"\""
        },
        requestData: envelope,
        method: "POST",
        onSuccess : function(response) {
            log(response);
        },
        onFailure : function(response) {
            log("Failed testRemoteFunctionPostAsync " + response)
        }
    });

//-- Ajax Remote Proxy: xml mime type

    /* This feature is not enabled by default.
       Please contact support */

  var envelope =
        '<soap:Envelope xmlns:mrns0="urn:xmethods-CurrencyExchange" ' +
        'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" ' +
        'xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" ' +
        'xmlns:xs="http://www.w3.org/2001/XMLSchema" ' +
        'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' +
        '<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' +
        '<mrns0:getRate><country1 xsi:type="xs:string">us</country1>' +
        '<country2 xsi:type="xs:string">india</country2> </mrns0:getRate> </soap:Body> </soap:Envelope>';

    sforce.connection.remoteFunction({
        url : "http://services.xmethods.net/soap",
        mimeType: "text/xml",
        requestHeaders: {"Content-Type":"text/xml",
            "SOAPAction": "\"\""
        },
        requestData: envelope,
        method: "POST",
        onSuccess : function(response) {
            log("response is " + typeof response);
            logXml(response);
        },
        onFailure : function(response) {
            log("Failed testPostMimeType: " + response)
        }
    });

    function logXml(node) {
      if (node.nodeValue == null) {
        log(node.nodeName);
      } else {
        log(node.nodeName + ":" + node.nodeValue);
      }
      var children = node.childNodes;
      for (var i = 0; i < children.length; i++) {
        logXml(children[i]);
      }
    }
===================================================================
//-- Ajax Misc: search
  var result = sforce.connection.search(
    "find {manoj} in Name fields RETURNING Account(name, id)");

  if (result) {
    var records = result.getArray("searchRecords");

    for (var i=0; i<records.length; i++) {
      var record = records[i].record;
      log(record.Id + " -- " + record.Name);
    }
  } else {
    log("No records found");
  }

====================================================================

No comments:

Post a Comment