This repository has been archived by the owner on Sep 27, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added a custom setting to control trigger execution & debug statements (
#8) Renamed the protected methods so they fit the verb naming convention - existing classes need to be updated Added a new hierarchy custom setting called TriggerSettings__c * Triggers can be toggled globally using the field TriggerSettings__c.ExecuteTriggers__c * Individual triggers can be disabled using the field TriggerSettings__c.HandlerClassesToSkip__c. The name of each handler class to skip (ex: 'LeadTriggerHandler') should be put on a separate line * Debug statements inside TriggerHandler can be toggled using the field TriggerSettings__c.EnableDebugging__c
- Loading branch information
Showing
9 changed files
with
129 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# Apex Trigger Framework | ||
<a target="_blank" href="https://githubsfdeploy.herokuapp.com?owner=jongpie&repo=ApexTriggerFramework"> | ||
<img alt="Deploy to Salesforce" src="https://github.com/raw/afawcett/githubsfdeploy/master/src/main/webapp/resources/img/deploy.png"> | ||
</a> | ||
|
||
## Features | ||
* Implements Salesforce best practices of 1 trigger per object & logicless triggers | ||
* The abstract class TriggerHandler.cls handles determining the current context and calling 1 of 7 protected methods - triggers only have to call the public execute() method | ||
* Provides recursion detection/prevention by checking the list of trigger records have already been processed | ||
* Allows triggers to be enabled/disabled both globally and individually at the org, profile and user levels (hierarchy custom setting) | ||
* Allows framework debug statements to be enabled/disabled | ||
* Recursion prevention: in the event that there is a recursive loop, each handler detects that it has already processed the records and skips duplicated execution | ||
|
||
|
||
### Example Implementation: LeadTriggerHandler.cls |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
src/classes/LeadTriggerHandler_Test.cls → src/classes/LeadTriggerHandler_Tests.cls
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> | ||
<apiVersion>37.0</apiVersion> | ||
<apiVersion>38.0</apiVersion> | ||
<status>Active</status> | ||
</ApexClass> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata"> | ||
<customSettingsType>Hierarchy</customSettingsType> | ||
<enableFeeds>false</enableFeeds> | ||
<fields> | ||
<fullName>EnableDebugging__c</fullName> | ||
<defaultValue>true</defaultValue> | ||
<externalId>false</externalId> | ||
<inlineHelpText>Controls if debug statements from TriggerHandler are shown in the logs</inlineHelpText> | ||
<label>Enable Debugging</label> | ||
<trackTrending>false</trackTrending> | ||
<type>Checkbox</type> | ||
</fields> | ||
<fields> | ||
<fullName>ExecuteTriggers__c</fullName> | ||
<defaultValue>true</defaultValue> | ||
<externalId>false</externalId> | ||
<label>Execute Triggers</label> | ||
<trackTrending>false</trackTrending> | ||
<type>Checkbox</type> | ||
</fields> | ||
<fields> | ||
<fullName>HandlerClassesToSkip__c</fullName> | ||
<externalId>false</externalId> | ||
<inlineHelpText>Enter any handler classes that should be skipped (1 per line). For example: | ||
LeadTriggerHandler | ||
TaskTriggerHandler</inlineHelpText> | ||
<label>Handler Classes to Skip</label> | ||
<required>false</required> | ||
<trackTrending>false</trackTrending> | ||
<type>TextArea</type> | ||
</fields> | ||
<label>Trigger Settings</label> | ||
<visibility>Protected</visibility> | ||
</CustomObject> |