Shorten Your Development Time with an Extensible Design for Apex

12
Shorten Your Development Time with An Extensible Design for Apex! (NOT a Uni-tasker!) Robert Nunemaker, Citrix Systems Inc., Senior Systems Architect

description

Throwing hundreds (or thousands) of lines in a trigger or class will quickly get out of hand. How do you reverse engineer it? How do you see what the trigger is doing? How do you scale and make enhancements without impacting existing code? Join us to learn about a customized coding pattern: EDA - Event, Distpatch, Action. EDA will address all of this and make your code scalable, as well as efficient and very maintainable.

Transcript of Shorten Your Development Time with an Extensible Design for Apex

Page 1: Shorten Your Development Time with an Extensible Design for Apex

Shorten Your Development Time with An Extensible Design for Apex!(NOT a Uni-tasker!)

Robert Nunemaker, Citrix Systems Inc., Senior Systems Architect

Page 2: Shorten Your Development Time with an Extensible Design for Apex

Safe harborSafe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.

Page 3: Shorten Your Development Time with an Extensible Design for Apex

Robert J NunemakerSenior Systems Architect

Page 4: Shorten Your Development Time with an Extensible Design for Apex

Ask Yourself• How many of you have triggers and/or classes that have hundreds of

lines?

• How many have had to spend hours reverse engineering code just to find

where something occurs, its dependencies, and how to change it?

• How many don’t code, but wish they could know what is going on inside

the multiple triggers?

• Why can’t we get contractors/new hires to code consistently?

Page 5: Shorten Your Development Time with an Extensible Design for Apex

Objectives• Provide another flexible tool for your Apex Development

• Provoke thought into standard patterns (or free-style) that don’t take shared resources into

account.

• Provide a pattern that managers, analysts, and developers alike can benefit from.

• Advantages:

o Scales VERY well.

o VERY readable and easy to maintain.

o VERY modular and a single point of DML and Error handling.

o Limits reverse engineering and regression testing.

Page 6: Shorten Your Development Time with an Extensible Design for Apex

The Design!• What IS EDA?

o Event, Dispatch, Action

o Learn the parable of the Plumber!

• Error Handling Benefits

o One place of handling; no need to handle again.

o DML for other objects rolled back to requesting object.

Page 7: Shorten Your Development Time with an Extensible Design for Apex

The Design!Let’s look an example trigger for a custom object called Account_Segmentation__c using Eclipse.

Page 8: Shorten Your Development Time with an Extensible Design for Apex

The Design! (Enhancement)• When an Account Segmentation is Deleted, we need to update all linking Account Segmentation fields to be initialized

to NULL.

• How? EASY!

o Create your Service method first to update Accounts as necessary. Notice how you can concentrate on the task;

not the “hooks”.

o BUT, those updates are to be put into the sObject LIST for update by the Dispatcher (already coded!).

o Don’t forget your errorMAP population.

o Finally add your small code fragment in your Dispatch Action method:

o DONE!

Page 9: Shorten Your Development Time with an Extensible Design for Apex

The Design!• Considerations

o Script statements limits are now effectively removed in Winter ’14.

o Modularization of functionality.

o Other patterns can be used in the Service (Action).

o @Future must still be done in Service.

o Test class considerations (bPreventRecursion).

• Non-Developer Benefits

o No need to read code; just look at Dispatcher Action methods.

o After initial development, enhancements much faster.

o Regression testing easier and sometimes not necessary!

• Snippets in Eclipse!

Page 10: Shorten Your Development Time with an Extensible Design for Apex

Final Thoughts• Hopefully you’ve seen how this pattern can benefit stability, scale, maintainability, and

development velocity.

o Ask yourself – Where can you benefit?

• It can be used by developers, analysts, and management to aid them in clarity and future

development needs.

• Even if you don’t use it as shown, maybe it will lead you to some ideas of how to make yourself

more scalable or efficient.

• Most important, does it help you provide better velocity in your enhancements to your customers?

• Chatter posting will include the code, including enhancement code, and instructions on how to

create your own Snippets for Eclipse!

Page 11: Shorten Your Development Time with an Extensible Design for Apex
Page 12: Shorten Your Development Time with an Extensible Design for Apex