#GPUGSummit | #INreno15 #GPUGSummit DEVELOPING SERVICE APPLICATIONS WITH DEXTERITY A NO NONSENSE STEP-BY-STEP GUIDE David Musgrave MVP Managing Director, Winthrop Development Consultants Mariano Gomez MVP Senior Software Engineer, Mekorma
#GPUGSummit | #INreno15 Introductions Service Based Architecture Microsoft Dexterity Service Patterns – Wrapped Windows – Decoupled Business Logic Steps to Create Service Enabled Procedures Q & A 2 AGENDA
#GPUGSummit | #INreno15 Managing Director of Winthrop Development Consultants Microsoft Dynamics GP Most Valuable Professional (MVP) Worked with Microsoft for 13 and a half years Lives in Winthrop, a suburb in the city of Perth Where is Perth, Western Australia? 3 DAVID MUSGRAVE
#GPUGSummit | #INreno15
Senior Software Engineer at Mekorma Microsoft Dynamics GP Most Valuable Professional (MVP) Lives in Atlanta, Georgia, USA Born on a small Colombian island off the coast of Nicaragua Where is San Andres Island? 6 MARIANO GOMEZ
#GPUGSummit | #INreno15
Introductions Service Based Architecture Creating Service Enabled Procedures – Wrapped Windows – Decoupled Q & A 9 AGENDA
#GPUGSummit | #INreno15
SERVICE BASED ARCHITECTURE
#GPUGSummit | #INreno15
Endpoint
#GPUGSummit | #INreno15 PATTERN: [Context]/[Resource Path(keys)]?[Query String] Hypothetical Examples GET … /Tenants(Default)/Companies(Contoso)/Sales/Customers(AARONFITZ0001)?format=summary POST … /Tenants(Default)/Companies(Contoso)/Sales/Customers DELETE … /Tenants(Default)/Companies(Fabrikam.%20Inc)/Manufacturing/Boms(WIDGET123) GET … /Tenants(Default)/Companies(Fabrikam.%20Inc)/Products(Id=346)/Boms?limit=20 THE ENDPOINT URI STRUCTURE Inc.) /Dynamics/Inventory/Items(100XLG).xml
#GPUGSummit | #INreno15 Discover available operations on a live deployment—just add /Help Use to model your code or extract info from system Provides info on objects, parameter requirements Discovery not filtered by security— you may see operations you can’t call Example URI does not provide company context DISCOVER YOUR URI
#GPUGSummit | #INreno15 MICROSOFT DEXTERITY SERVICE PATTERNS
#GPUGSummit | #INreno15 WRAPPED WINDOW PATTERN Validations Performed Commit logic executed ServiceCreateCustomer(customerObj) Field Mapping
#GPUGSummit | #INreno15 18 DECOUPLED BUSINESS LOGIC PATTERN Validations Moved UI is reoriented to call validations
#GPUGSummit | #INreno15 STEPS TO CREATE SERVICE APPLICATIONS
#GPUGSummit | #INreno15 STEPS
#GPUGSummit | #INreno15 SERVICE BASED ARCHITECTURE BEST PRACTICES
#GPUGSummit | #INreno15 WRAPPED WINDOW PATTERN
#GPUGSummit | #INreno15 WRAPPED WINDOWS
#GPUGSummit | #INreno15 REPLACING WARNING_DIALOGS
#GPUGSummit | #INreno15 ASK MESSAGES WITH PREDETERMINED ACTION
#GPUGSummit | #INreno15 ASK MESSAGES AND ADD ON THE FLY
#GPUGSummit | #INreno15 RETURN MESSAGES: FAILURE VS. WARNING
#GPUGSummit | #INreno15 ADDITIONAL TRACE LOGGING
#GPUGSummit | #INreno15 SERVICE PROCEDURES
#GPUGSummit | #INreno15 DECOUPLED BUSINESS LOGIC
#GPUGSummit | #INreno15 DECOUPLED BUSINESS LOGIC Business Logic is provided by source other than a UI form. – Ex. sproc, other web service, pass thru sql, “PD” forms in the dictionary. Ex of PD form. Form\IV_Item Should be faster than wrapped window. Encourages separation of business logic and presentation. Might require a refactor if business logic currently resides in a form. – How do decide whether to refactor? Frequency of use and throughput should drive the decision.
#GPUGSummit | #INreno15 DECOUPLED BUSINESS LOGIC No implicit datatype validation/conversion. – Map statement in wrapped window takes care of casing, signed vs unsigned precision and nulls. – In decoupled these things need to be coded. Examples for Decimals, Drop down lists and radio groups.
#GPUGSummit | #INreno15 DECOUPLED BUSINESS LOGIC Check for valid sign and precision. Check for valid value for a Drop Down or Radio Group.
#GPUGSummit | #INreno15 DECOUPLED BUSINESS LOGIC Force strings to upper case as needed, for instance Item Number Code must provide default values as needed in case the user passes a null value. Demo create an Item.
#GPUGSummit | #INreno15
David Musgrave’s Winthrop Development Consultants Blog The Microsoft Dynamics GP Blogster blog (by Mariano Gomez) Developing for Microsoft Dynamics GP Blog – retired (by David Musgrave & the Developer Support Team) or 36 LINKS
#GPUGSummit | #INreno15
QUESTIONS? Contact: &
#GPUGSummit | #INreno15 Main Topic 1: Size 22pt – Subtopic: Size 20 pt Main Topic 2: Size 22pt – Subtopic: Size 20 pt Main Topic 3: Size 22pt – Subtopic: Size 20 pt 39 HEADER TEXT: SIZE 30PT
SECTION TITLE
QUESTIONS? Contact: