ಸೇಲ್ಸ್‌ಫೋರ್ಸ್‌ನಲ್ಲಿ ವಿನ್ಯಾಸ ಮಾದರಿಗಳು

ಪರಿಚಯ

ನಮ್ಮ ಕೋಡ್ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಮತ್ತು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ವಿನ್ಯಾಸದ ಮಾದರಿಗಳನ್ನು ಮುಖ್ಯವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಯಾವುದೇ ಗವರ್ನರ್ ಮಿತಿಗಳನ್ನು ಹೊಡೆಯುವುದನ್ನು ತಡೆಯಲು ಇದು ಸಹಾಯ ಮಾಡುತ್ತದೆ.

ವಿನ್ಯಾಸ ಮಾದರಿ ಎಂದರೇನು?

ಡಿಸೈನ್ ಪ್ಯಾಟರ್ನ್ ಪದೇ ಪದೇ ಸಂಭವಿಸುವ ಸಮಸ್ಯೆ, ಕೋರ್ ಮತ್ತು ಪರಿಹಾರದ ಪರಿಣಾಮಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ. ಇದು ನಿಜವಾದ ಅನುಷ್ಠಾನದ ವಿವರಗಳನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ.

ಸೇಲ್ಸ್‌ಫೋರ್ಸ್‌ನಲ್ಲಿ ವಿವಿಧ ರೀತಿಯ ವಿನ್ಯಾಸ ಮಾದರಿಗಳು

ಸೇಲ್ಸ್‌ಫೋರ್ಸ್‌ನಲ್ಲಿ ಸಿಂಗಲ್‌ಟನ್ ಪ್ಯಾಟರ್ನ್

ಪ್ರತಿ ವಹಿವಾಟಿಗೆ ಒಂದು ವರ್ಗದ ಒಂದು ನಿದರ್ಶನವನ್ನು ರಚಿಸಬಹುದಾದ ರಚನೆಯ ವಿನ್ಯಾಸದ ಮಾದರಿಗಳಲ್ಲಿ ಇದು ಒಂದಾಗಿದೆ. ಒಂದೇ ವಹಿವಾಟಿನಲ್ಲಿ ವರ್ಗದ ನಿದರ್ಶನದ ಪುನರಾವರ್ತಿತ ಮರಣದಂಡನೆಯಿಂದಾಗಿ, ಮಿತಿ ವಿನಾಯಿತಿ ಪಡೆಯಲು ಹೆಚ್ಚಿನ ಅವಕಾಶಗಳಿವೆ. ಈ ಮಾದರಿಯು ವರ್ಗದ ಪುನರಾವರ್ತಿತ ತತ್‌ಕ್ಷಣವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.

ಕೆಳಗೆ ಕೆಲವು ಸನ್ನಿವೇಶಗಳಿವೆ:

1. ಅಪ್ಲಿಕೇಶನ್ ಕಾನ್ಫಿಗರೇಶನ್ ರೀಡರ್

2. ಯುಟಿಲಿಟಿ ವರ್ಗ (ಗಣಿತದಂತೆ)

3. ಡೇಟಾಬೇಸ್‌ನೊಂದಿಗೆ ಸಂಪರ್ಕ

4. ಲಾಗರ್

ಉದಾಹರಣೆ:

ಕೋಡ್‌ನೊಂದಿಗೆ ಸಮಸ್ಯೆ

ಖಾತೆಯಲ್ಲಿ ಅಕೌಂಟ್ ಟ್ರಿಗ್ಗರ್ ಅನ್ನು ಟ್ರಿಗರ್ ಮಾಡಿ (ಸೇರಿಸುವ ಮೊದಲು, ಅಪ್‌ಡೇಟ್ ಮಾಡುವ ಮೊದಲು) accRec.recordTypeId = aert.Id; } } ಸಾರ್ವಜನಿಕ ವರ್ಗ AccountExampleRecordType { public String Id {get; ಖಾಸಗಿ ಸೆಟ್;} public AccountExampleRecordType(){ Id = Account.sObjectType.getDescribe().getRecordTypeInfosByName() .get('Example').getRecordTypeId(); } }

 

ಮೇಲಿನ ಕೋಡ್‌ನಲ್ಲಿನ ಸಮಸ್ಯೆ ಏನೆಂದರೆ, ಬಹು ದಾಖಲೆಗಳನ್ನು ಸೇರಿಸಿದರೆ ಅಥವಾ ನವೀಕರಿಸಿದರೆ, ಪ್ರತಿ ದಾಖಲೆಗೆ ಪ್ರತಿ ಬಾರಿ 'AccountExampleRecordType' ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ರಚಿಸುವುದರಿಂದ ನಾವು ಗವರ್ನರ್ ಮಿತಿ ಸಮಸ್ಯೆಯನ್ನು ಪಡೆಯುತ್ತೇವೆ.

ಪರಿಹಾರ: ಸಿಂಗಲ್ಟನ್ ಪ್ಯಾಟರ್ನ್

ಸಿಂಗಲ್‌ಟನ್ ಪ್ಯಾಟರ್ನ್‌ನೊಂದಿಗೆ ಅಳವಡಿಸಲಾಗಿರುವ 'AccountExampleRecordType' ಹ್ಯಾಂಡ್ಲರ್ ವರ್ಗವನ್ನು ಕೆಳಗೆ ನೀಡಲಾಗಿದೆ.

ಸಾರ್ವಜನಿಕ ವರ್ಗ AccountExampleRecordType { // ವರ್ಗ ಖಾಸಗಿ ಸ್ಥಿರವಾದ AccountExampleRecordType ನಿದರ್ಶನವನ್ನು ಉಲ್ಲೇಖಿಸುವುದು = ಶೂನ್ಯ; //ರೆಕಾರ್ಡ್ ಟೈಪ್ ಐಡಿ ಸಾರ್ವಜನಿಕ ಸ್ಟ್ರಿಂಗ್ ಐಡಿ {ಪಡೆಯಿರಿ; ಖಾಸಗಿ ಸೆಟ್;} //ಖಾಸಗಿ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ರೆಕಾರ್ಡ್ ಪ್ರಕಾರದ ಐಡಿಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತಾರೆ ಖಾಸಗಿ AccountExampleRecordType(){ Id = Account.sObjectType.getDescribe().getRecordTypeInfosByName() .get('ಉದಾಹರಣೆ').getRecordTypeId(); } //ರೆಕಾರ್ಡ್ ಪ್ರಕಾರದ ಸಾರ್ವಜನಿಕ ಸ್ಥಿರ ಅಕೌಂಟ್ ಎಕ್ಸಾಂಪಲ್ ರೆಕಾರ್ಡ್‌ಟೈಪ್ ಗೆಟ್‌ಇನ್ಸ್‌ಟನ್ಸ್ (){ //ಲೇಜಿ ಲೋಡಿಂಗ್ ರೂಪಾಂತರವಾಗಿದ್ದರೆ (ಉದಾಹರಣೆಗೆ == ಶೂನ್ಯ){ ನಿದರ್ಶನ = ಹೊಸ ಖಾತೆಎಕ್ಸಾಂಪಲ್ ರೆಕಾರ್ಡ್‌ಟೈಪ್ (); ರಿಟರ್ನ್ ನಿದರ್ಶನ; } } }

 

ಸೇಲ್ಸ್‌ಫೋರ್ಸ್‌ನಲ್ಲಿ ಅಲಂಕಾರಿಕ ಮಾದರಿ

ಇದು ರಚನಾತ್ಮಕ ವಿನ್ಯಾಸ ಮಾದರಿಯ ಒಂದು ಭಾಗವಾಗಿದೆ. ಸೇಲ್ಸ್‌ಫೋರ್ಸ್‌ನಲ್ಲಿ ಅಪೆಕ್ಸ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು sObject ಗೆ ಹೆಚ್ಚುವರಿ ಕಾರ್ಯವನ್ನು ಒದಗಿಸಲು ಇದನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.

ಉದಾಹರಣೆ:

ಸಾರ್ವಜನಿಕ ವರ್ಗದ ವೆಚ್ಚಕ್ಲಾಸ್ ಡೆಕೋರೇಟರ್ {ಸಾರ್ವಜನಿಕ ಪಟ್ಟಿ ಪರಿವರ್ತಿತ ವೆಚ್ಚಗಳು{ಸೆಟ್; ಪಡೆಯಿರಿ;} //ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಪಬ್ಲಿಕ್ ಎಕ್ಸ್‌ಪೆನ್ಸ್‌ಕ್ಲಾಸ್ ಡೆಕೋರೇಟರ್(){ ಪಟ್ಟಿ ವೆಚ್ಚಗಳು = [ಐಡಿ, ಹೆಸರು, ಮೊತ್ತ__c ಅನ್ನು ಖರ್ಚು__ಸಿಯಿಂದ ಆಯ್ಕೆ ಮಾಡಿ]; if(expenses.size() > 0){ convertedExpenses = ಹೊಸ ಪಟ್ಟಿ(); ಫಾರ್(Expense__c ಖರ್ಚು : ವೆಚ್ಚಗಳು){ convertedExpenses.add(ಹೊಸ ವೆಚ್ಚಗಳುConverted(ವೆಚ್ಚ)); } } } } ಸಾರ್ವಜನಿಕ ವರ್ಗದ ವೆಚ್ಚಗಳು ಪರಿವರ್ತಿತ {ಡಬಲ್ ಡಾಲರ್ToInr = 79.85; ಡಬಲ್ ಡಾಲರ್ToEuro = 0.98 ಡಬಲ್ ಡಾಲರ್ToChf = 0.97; ಸಾರ್ವಜನಿಕ ಸ್ಟ್ರಿಂಗ್ ಖರ್ಚಿನ ಹೆಸರು {ಪಡೆಯಿರಿ; ಸೆಟ್;} ಸಾರ್ವಜನಿಕ ಡಬಲ್ ಎಕ್ಸ್‌ಇನ್‌ಡಾಲರ್ {ಪಡೆಯಿರಿ; ಸೆಟ್;} ಸಾರ್ವಜನಿಕ ಡಬಲ್ expInInr {get; ಸೆಟ್;} ಸಾರ್ವಜನಿಕ ಡಬಲ್ expInEuro {get; ಸೆಟ್;} ಸಾರ್ವಜನಿಕ ಡಬಲ್ expInChf {get; ಸೆಟ್;} ಸಾರ್ವಜನಿಕ ವೆಚ್ಚಗಳು ಪರಿವರ್ತಿತ (Expense__c ಖರ್ಚು){expenceName = ಖರ್ಚು.ಹೆಸರು; expInDollar = ಖರ್ಚು. ಮೊತ್ತ__c; expInInr = expInDollar * dollarToInr; expInEuro = expInDollar * dollarToEuro; expInChf = expInDollar * dollarToChf; } }

 

ಎಲ್ಲಾ ವೆಚ್ಚಗಳನ್ನು ತೋರಿಸಲು ವಿಷುಯಲ್ ಫೋರ್ಸ್ ಪುಟ

 

ಸೇಲ್ಸ್‌ಫೋರ್ಸ್‌ನಲ್ಲಿ iTrigger ಫ್ಯಾಕ್ಟರಿ ಪ್ಯಾಟರ್ನ್

ಈ ವಿನ್ಯಾಸದ ಮಾದರಿಯು ಪ್ರಚೋದಕವನ್ನು ಸಾಮಾನ್ಯಗೊಳಿಸಲು ಮತ್ತು ಮರಣದಂಡನೆಯ ಹರಿವನ್ನು ನಿಯಂತ್ರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದು ಪ್ರಚೋದಕ ತಾರ್ಕಿಕತೆಯನ್ನು ತೆಗೆದುಹಾಕುವ ಮೂಲಕ ಘಟಕ ಪರೀಕ್ಷೆಯನ್ನು ಹೆಚ್ಚು ಸರಳಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಅನೇಕ ಟ್ರಿಗ್ಗರ್‌ಗಳೊಂದಿಗೆ ಸಂಸ್ಥೆಯಲ್ಲಿ ಕೆಲಸ ಮಾಡಲು ಜನರ ಗುಂಪಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.

ಉದಾಹರಣೆ:

ಸಾರ್ವಜನಿಕ ಇಂಟರ್ಫೇಸ್ ITriggerPattern{ ಅನೂರ್ಜಿತ ಮೊದಲು ಇನ್ಸರ್ಟ್ (ಪಟ್ಟಿ ಹೊಸ ದಾಖಲೆಗಳು); ಅಪ್‌ಡೇಟ್‌ಗೆ ಮುನ್ನ ಅನೂರ್ಜಿತ (ಮ್ಯಾಪ್ ನ್ಯೂ ರೆಕ್, ಮ್ಯಾಪ್ ಓಲ್ಡ್ ರೆಕ್); ಅಳಿಸುವ ಮೊದಲು (ನಕ್ಷೆ ಹಳೆಯ ದಾಖಲೆಗಳು); ಅನೂರ್ಜಿತ ಆಫ್ಟರ್ ಇನ್ಸರ್ಟ್ (ಮ್ಯಾಪ್ ನ್ಯೂ ರೆಕಾರ್ಡ್ಸ್); ಅನೂರ್ಜಿತವಾದ ನಂತರ ಅಪ್‌ಡೇಟ್ (ನಕ್ಷೆ ಹೊಸ ದಾಖಲೆಗಳು, ನಕ್ಷೆ (ಹಳೆಯ ದಾಖಲೆಗಳು)); ಅನೂರ್ಜಿತವಾದ ನಂತರ ಅಳಿಸಿ (ನಕ್ಷೆ ಹಳೆಯ ದಾಖಲೆಗಳು); ಅನೂರ್ಜಿತವಾದ ನಂತರ ಅಳಿಸುವಿಕೆ (ನಕ್ಷೆ ಹಳೆಯ ದಾಖಲೆಗಳು); ಬೂಲಿಯನ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ (); } ಸಾರ್ವಜನಿಕ ವರ್ಗ ಟ್ರಿಗ್ಗರ್‌ಕ್ಲಾಸ್{ ಸಾರ್ವಜನಿಕ ಸ್ಥಿರ ನಿರರ್ಥಕ ಡೆಮೊ(ITriggerPattern pattHandler){ if(Trigger.isBefore){ if(Trigger.isInsert) pattHandler.BeforeInsert(trigger.new); if(Trigger.isUpdate) pattHandler.BeforeUpdate(trigger.newMap, trigger.oldMap); if(Trigger.isDelete) pattHandler.BeforeDelete(trigger.oldMap); } if(Trigger.isAfter){ if(Trigger.isInsert) pattHandler.AfterInsert(trigger.newMap); if(Trigger.isUpdate) pattHandler.AfterUpdate(trigger.newMap, trigger.oldMap); if(Trigger.isDelete) pattHandler.AfterDelete(trigger.oldMap); if(Trigger.isUnDelete) pattHandler.AfterDelete(trigger.oldMap); } } }

 

ಸೇಲ್ಸ್‌ಫೋರ್ಸ್‌ನಲ್ಲಿ ಸ್ಟ್ರಾಟಜಿ ಪ್ಯಾಟರ್ನ್

ಇದು ವರ್ತನೆಯ ವಿನ್ಯಾಸದ ಮಾದರಿಯನ್ನು ಹೊಂದಿದೆ, ಇದು ಅಲ್ಗಾರಿದಮ್‌ಗಳ ಕುಟುಂಬವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ, ಅದು ರನ್‌ಟೈಮ್‌ನಲ್ಲಿ ಆಯ್ಕೆ ಮಾಡಬಹುದಾದ ಮತ್ತು ಪರಸ್ಪರ ಬದಲಾಯಿಸಿಕೊಳ್ಳುವಂತೆ ಮಾಡುತ್ತದೆ.

ಉದಾಹರಣೆ:

ಸಾರ್ವಜನಿಕ ಇಂಟರ್ಫೇಸ್ ಪಾವತಿಗೇಟ್ವೇ{ ಬೂಲಿಯನ್ ಪೇ (ಡಬಲ್ ಎಎಮ್ಟಿ); } ಸಾರ್ವಜನಿಕ ವರ್ಗ ಕ್ರೆಡಿಟ್‌ಕಾರ್ಡ್ ಪಾವತಿ ಗೇಟ್‌ವೇಯನ್ನು ಅಳವಡಿಸುತ್ತದೆ{ ಸ್ಟ್ರಿಂಗ್ ಹೆಸರು; ಸ್ಟ್ರಿಂಗ್ ಕಾರ್ಡ್‌ನಂಬ್; ಸ್ಟ್ರಿಂಗ್ ಸಿವಿವಿ; ಡೇಟ್ ಡೋ; ಸಾರ್ವಜನಿಕ ಬೂಲಿಯನ್ ಪಾವತಿ (ಡಬಲ್ ಎಎಮ್‌ಟಿ){ //ರೆಸ್ಟ್ API ಬಳಸಿಕೊಂಡು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಇಂಟರ್ಫೇಸ್ } } ಸಾರ್ವಜನಿಕ ವರ್ಗ mQuickPaymentStrategy ಪಾವತಿ ಗೇಟ್‌ವೇ{ ಸ್ಟ್ರಿಂಗ್ ಇಮೇಲ್ ಐಡಿಯನ್ನು ಅಳವಡಿಸುತ್ತದೆ; ಸಾರ್ವಜನಿಕ ಬೂಲಿಯನ್ ಪಾವತಿ (ಡಬಲ್ ಎಎಮ್ಟಿ){ //ಮೊಬಿಕ್ವಿಕ್ ಇಂಟರ್ಫೇಸ್ ರೆಸ್ಟ್ API ಬಳಸಿ } }

 

ಸೇಲ್ಸ್‌ಫೋರ್ಸ್‌ನಲ್ಲಿ "ಒಂದು ವಸ್ತುವಿಗೆ ಒಂದು ಟ್ರಿಗ್ಗರ್" ವಿನ್ಯಾಸದ ಮಾದರಿ

ಸೇಲ್ಸ್‌ಫೋರ್ಸ್‌ನಿಂದ ಹೆಚ್ಚು ಶಿಫಾರಸು ಮಾಡಲ್ಪಟ್ಟಿದೆ ಮತ್ತು ಪ್ರತಿ ವಸ್ತುವಿನ ಮೇಲೆ ಒಂದೇ ಪ್ರಚೋದಕವನ್ನು ಬರೆಯಲು ಉತ್ತಮ ಅಭ್ಯಾಸವಾಗಿದೆ ಏಕೆಂದರೆ ನಾವು ಪ್ರತಿ ವಸ್ತುವಿನ ಮೇಲೆ ಅನೇಕ ಪ್ರಚೋದಕಗಳನ್ನು ಬರೆದರೆ, ಪ್ರಚೋದಕದಲ್ಲಿ ಯಾವುದೇ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಕ್ರಮವಿಲ್ಲದ ಕಾರಣ ಸಂಘರ್ಷ ಮತ್ತು ದೋಷಗಳು ಸಂಭವಿಸಬಹುದು.

ಸಹಾಯಕ ವರ್ಗದಿಂದ ವಿಭಿನ್ನ ವಿಧಾನಗಳನ್ನು ಆಹ್ವಾನಿಸಲು ನಾವು ಸಂದರ್ಭ ವೇರಿಯಬಲ್‌ಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು.

ಉದಾಹರಣೆ:

ಖಾತೆಯಲ್ಲಿ ಅಕೌಂಟ್ ಟ್ರಿಗ್ಗರ್ ಅನ್ನು ಟ್ರಿಗರ್ ಮಾಡಿ (ಇನ್ಸರ್ಟ್ ಮಾಡಿದ ನಂತರ, ಅಪ್‌ಡೇಟ್ ನಂತರ){ if(Trigger.isAfter && Trigger.isInsert){ UpdateCase.caseMethod(Trigger.new); UpdateOpportunity.oppMethod(Trigger.new); } }

 

ಪ್ರತಿಕ್ರಿಯಿಸುವಾಗ

ಸ್ಪ್ಯಾಮ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಈ ಸೈಟ್ ಅಕಿಸ್ಸೆಟ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ನಿಮ್ಮ ಕಾಮೆಂಟ್ ಡೇಟಾವನ್ನು ಹೇಗೆ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ತಿಳಿಯಿರಿ.