Wednesday, 15 August 2018

After executing workflow rules again before trigger and after triggers will execute,how can you avoid?

class :
==========

global class validator_cls
{

 private static boolean blnAlreadyDone=false;

 public static boolean hasAlreadyDone()
  {
     return blnAlreadyDone;
  }

 public static boolean hasAlreadyDone()
  {
     blnAlreadyDone=true;
  }


}

Class :
============


public class AccountTriggerHandler
{

 public void OnBeforeInsert(Account[] newaccounts)
 {
   if(!validator_cls.hasAlreayDone)
     {

        AddUpdateFields(newAccounts);
        validator_cls.setAlreadyDone();
     }

 }


}

Trigger :
==============

Trigger AccountTrigger on Account(before insert,after insert,before update,after update)
{

AccountTriggerHandler handler=new AccountTriggerHandler();

/* Before Insert */

 if(Trigger.isBefore && Trigger.isInsert)
  {
    handler.OnBeforeInsert(Trigger.new);
  }
/* After Insert */
  else if(Trigger.isAfter && Trigger.isInsert)
  {
     handler.onAfterInsert(Trigger.new);
  }
/* Before Update */
  else if(Trigger.isBefore && Trigger.isUpdate)
  {
    handler.onBeforeUpdate(Trigger.old,Trigger.new,Trigger.newMap);
  }
/* After Update */
  else if(Trigger.isAfter && Trigger.isUpdate)
  {
    handler.onAfterUpdate(Trigger.old,Trigger.new,Trigger.newmap);
  }
/* Before Delete */
  else if(Trigger.isBefore && Trigger.isDelete)
  {
    handler.onBeforeDelete(Trigger.old,Trigger.oldmap);
  }
/* After Delete */
  else if(Trigger.isAfter && Trigger.isDelete)
  {
    handler.OnAfterDelete(Trigger.old,Trigger.oldmap);
  }
  else if(Trigger.isUnDelete)
  {
    handler.onUndelete(Trigger.new);
  }

}

No comments:

Post a Comment