Watch live video of this topic at: https://youtu.be/KgsHQzd6sLM
Web Application Development with breeze.js is a report by Vyacheslav Bukach, software developer at Softengi, at Workaround seminars.
This topic will be interesting for: developers who want to simplify data access.
We'll talk about:
- Breeze.js Basics & Capabilities
- SPA & Data Access
- Querying Data
- Working with Entities (Changing, Caching, Validation)
- Validation.
Organizer: Workaround seminars in Softengi were started in February 2014 as closed architectural workshops for company employees. In October 2014 it was renamed to Workaround seminars and became open for all developers and software architects.
Subscribe to Softengi YouTube channel and be the first to receive our new videos.
www.softengi.com
Unit-IV; Professional Sales Representative (PSR).pptx
Web Apps Development With Breeze.js. Workaround Seminars
1. WEB APPS DEVELOPMENT WITH
BREEZE.JS
AUTHOR:
VIACHESLAV BUKACH
SOFTWARE DEVELOPER AT SOFTENGI
2. • BREEZE IS A JAVASCRIPT LIBRARY THAT HELPS YOU TO MANAGE DATA IN
RICH CLIENT APPLICATION
• FIRST RELEASE – SEPTEMBER 17, 2012
• LAST RELEASED VERSION – 1.4.16 (JULY 13. 2014)
BREEZE
3. • - CAPABILITIES
• - REQUIREMENTS
• - CLIENT SIDE
• - SERVER SIDE
• - OTHER
OUTLINE
4. • DATA RETRIEVAL VIA SERVICE CALLS
• DATA CACHING ON CLIENT
• CHANGES TRACKING
• SAVE CHANGES VIA SERVICE CALLS
• VALIDATION
• EXPORT/IMPORT DATA ON FOR OFFLINE STORAGE
• WORK WITH ODATA SERVICES
CAPABILITIES
6. • ENTITYMANAGER IS THE BRAINS OF BREEZE CLIENT SIDE FUNCTIONALITY
• - MAKES SERVICE CALLS
• - CACHES METADATA AND QUERY RESULTS
• - CREATES ENTITIES
• - VALIDATES ENTITIES
• - FORMS UPDATE REQUESTS
• - HANDLES MERGING REQUERY AND SAVECHANGES RESULTS WITH CACHED
ENTITIES
ENTITY MANAGER
9. • METADATA IS USED BY BREEZE ENTITYMANAGER FOR MANY ASPECTS
• ENTITY TYPE INFORMATION
• CREATING ENTITIES
• MANAGING KEY PROPERTIES FOR ENTITIES
• MANAGING ENTITY RELATIONSHIPS
• VALIDATION
• DEFAULT VALUES
• ALLOW ENTITYMANAGER TO BE SMART ABOUT SENDING CHANGE BATCHES
• PARENT-CHILD RELATIONSHIPS AND QUERY EXECUTION ORDER
METADATA
12. • BREEZE ROUTING IS ACTION-BASED
• URL INCLUDES CONTROLLER NAME AND METHOD (ACTION) ON CONTROLLER
TO INVOKE
• ALLOWS MANY DIFFERENT QUERY METHODS TO BE EXPOSED FROM THE SAME
CONTROLLER
• BREEZE ROUTING IS AUTO- CONFIGURED ON START- UP
BREEZE ROUTING CONFIGURATION
13. • BASED ON WEBAPI CONTROLLER
• SIMPLE ATTRIBUTE TO ADD TO AN APICONTROLLER
• ADDS FILTERS FOR METADATA AND QUERY REQUEST HANDLING
• SIMPLIFIES SERVER CODING PATTERN
CONTROLLER
14. • METADATA
• - RETURNS THE EDM AS CLIENT METADATA
• QUERY METHODS
• - RETURNS IQUERYABLE
• - NO EXPLICIT PARAMETERS
• - ODATA QUERY PARAMETERS ARE TURNED INTO EXPRESSION TREE
THAT IS EXECUTED AGAINST RETURNED IQUERYABLE BY THE FILTER
• SAVECHANGES
• - TAKES JOBJECT BUNDLE(BATCH OF ENTITIES)
• - HANDS IT OF TO EFCONTEXTPROVIDER TO PROCESS REQUEST
BREEZE CONTROLLER METHODS
15. • CONTEXTPROVIDER ENCAPSULATES THREE MAIN FUNCTIONS:
• - INSTANTIATION OF A CONTEXT FOR ACCESSING THE DATA STORE
• - GENERATION (OR ACQUISITION) OF METADATA TO SEND TO BREEZE CLIENTS
• - PROCESSING "CHANGE-SET" SAVE REQUESTS
• ALTERNATIVES TO ENTITY FRAMEWORK:
• - NHIBERNATE PROVIDER
• - YOU ARE ABLE TO IMPLEMENT YOUR OWN CUSTOM CONTEXT PROVIDER
• - ALSO YOU CAN EXTEND EFCONTEXTPROVIDER TO ADD CUSTOM CODE
CONTEXT PROVIDERS
16. • - BASIC QUERYING/CACHING
• - EDITING/SAVING
• - ENTITY CREATION
• - WORKING WITH ENTITY ON THE CLIENT
• - VALIDATIONS
OTHER
17. • ENTITYQUERY OBJECTS DEFINE THE QUERY TO BE EXECUTED
• - DEFINE THE MODEL RESOURCE COLLECTION THROUGH THE FROM() METHOD
• EXPOSES CHAINABLE METHODS FOR SUPPORTED QUERY OPERATIONS
• - WHERE/ORDERBY/TAKE/SKIP
• EXECUTED THROUGH ENTITYMANAGER
• - CALL ENTITYMANAGER.EXECUTEQUERY() OR ENTITYQUERY.EXECUTE()
• THE QUERY IS PASSED FROM THE CLIENT TO THE SERVER VIA ODATA
QUERY SYNTAX
• - EVEN IF NOT AN ODATA SERVER
• CAN BE EXECUTED LOCALLY AGAINST THE CACHE AS WELL
CREATING ENTITY QUERIES
18. • CAN EASILY QUERY THE ENTITIES THAT HAVE ALREADY BEEN LOADED INTO
THE ENTITYMANAGER CACHE
• SYNCHRONOUS:
• - ENTITYMANAGER.EXECUTEQUERYLOCALLY
• - RETURNS THE ARRAY OF MATCHING ENTITIES DIRECTLY
• ASYNCHRONOUS:
• - ENTITYQUERY.USING(FETCHSTRATEGY.FROMLOCALCACHE)
• - EXECUTE QUERY THROUGH ENTITYMANAGER.EXECUTEQUERY
• - RETURNS PROMISES AS NORMAL
• - ONLY EXECUTES AGAINST THE LOCAL CACHE
FETCHING FROM CACHE
19. • BREEZE APPENDS AN ENTITYASPECT OBJECT TO EVERY ENTITY IT
MANAGES
• CONTAINS METADATA AND STATE INFORMATION ABOUT THE ENTITY
• USED FOR
• - CHECKING/MODIFYING ENTITY STATE
• - OBTAIN ORIGINAL VALUES OF MODIFIED ENTITIES
• - OBTAINING REFERENCE TO ITS ASSOCIATED ENTITYMANAGER
• - VALIDATION
• - MONITORING PROPERTY CHANGE EVENTS
ENTITY ASPECT
20. • - ENTITYASPECT
• - MODIFYING ENTITIES
• - SAVING CHANGES TO THE SERVER
• - CREATING ENTITIES
• - REJECTING AND ACCEPTING CHANGES
• - DELETING ENTITIES
• - NAMED SAVES
EDITING AND SAVING
21. • ENTITY PROPERTIES ARE OBSERVABLES
• - RAISE CHANGE NOTIFICATIONS TO ANY SUBSCRIBERS WHEN PROPERTY IS
SET
• BREEZE ENTITYMANAGER TRACKS CHANGES TO ANY ENTITIES THAT ARE
ATTACHED
• ENTITYMANAGER WILL KNOW WHEN PROPERTIES GET MODIFIED AND
KEEPS A LIST OF THOSE ENTITIES THAT HAVE CHANGED
MODIFYING ENTITITES
22. • SIMPLY CALL ENTITYMANAGER.SAVECHANGES
• ENTITYMANAGER FORMS A BATCH FROM ALL THE ENTITIES THAT WERE
MODIFIED, ADDED, OR DELETED
• MAKES THE CALL TO THE SERVICE WITH THE BATCH
• - SAVECHANGES METHOD BY DEFAULT
• GETS BACK A RESPONSE CONTAINING ALL THE PERSISTED ENTITIES
• - IN CASE OF SERVER COMPUTED PROPERTIES
• - PRIMARY KEYS
• MERGES ENTITIES BACK INTO THE CLIENT SIDE CACHE
SAVING CHANGES TO THE SERVER
23. • NEED TO BE CONSTRUCTED THROUGH BREEZE
• BASED ON METADATA OBJECT MODEL
• - WITH AN ENTITYASPECT ATTACHED
• - WITH OBSERVABLE PROPERTIES
• - WITH TEMPORARY KEYS IF SERVER GENERATED KEY PROPERTIES
• TWO WAYS:
• ENTITYMANAGER.CREATEENTITY
• - CREATES AN INSTANCE
• - ATTACHES TO THE CACHE
• ENTITYTYPE.CREATEENTITY
• - GET REFERENCE TO METADATA STORE
• - GET ENTITYTYPE FROM THE METADATA STORE
• - CREATE THE ENTITY FROM THE ENTITYTYPE
• - ADD THE ENTITY TO THE ENTITYMANAGER’S CACHE
CREATING NEW ENTITIES
24. • ENTITYMANAGER.REJECTCHANGES
• - REVERTS ALL ENTITIES RETRIEVED FROM THE SERVER TO THEIR ORIGINAL
VALUES / UNCHANGED STATE
• - DETACHES AND RELEASES ANY ENTITIES THAT HAVE BEEN ADDED
• ENTITYASPECT.REJECTCHANGES
• - IF ENTITY RETRIEVED FROM SERVER, REVERTS STATE AND PROPERTY
VALUES TO ORIGINAL
• - IF ENTITY WAS ADDED, DETACHES ENTITY FROM ENTITYMANAGER CACHE
REJECTING CHANGES
25. ENTITYASPECT.SETDELETED
• - ENTITY WILL NOT BE PART OF LOCAL QUERY RESULTS
• - BREEZE WILL SEND ENTITY INFO TO SERVER SIDE ON SAVECHANGES
• - ENTITY WILL BE REMOVED FROM THE CACHE AFTER SUCCESSFUL
COMPLETION OF A SAVECHANGES CALL AND RELEASED BY BREEZE
DELETING ENTITIES
26. ENTITYMANAGER.SAVECHANGES NORMALLY CALLS “SAVECHANGES ”
• - ALL MODIFIED, ADDED, DELETED ENTITIES
• - ALL TYPES IN ONE BUNDLE
CAN TARGET SAVE METHODS WITH OTHER NAMES
• - SAVEOPTIONS PARAMETER TO SAVECHANGES , SET RESOURCENAME
PROPERTY
CAN SEND SPECIFIC COLLECTIONS OF ENTITIES
• - PASS ENTITY ARRAY TO SAVECHANGES
NAMED SAVES
27. ENTITYASPECT.ENTITYSTATE PROPERTY
• UNCHANGED – AFTER BEING LOADED BY A QUERY OR AFTER SUCCESSFUL
SAVECHANGES
• MODIFIED – PREVIOUSLY UNCHANGED ENTITY HAS A PROPERTY CHANGE
• ADDED – ENTITY HAS BEEN CREATED AND ADDED TO THE CACHE, BUT NOT SAVED
TO BACK END
• DELETED – PREVIOUSLY UNCHANGED ENTITY IS MARKED FOR DELETION
• DETACHED
• - NEWLY CREATED ENTITY THAT HAS NOT BEEN ADDED TO THE CACHE
• - ADDED ENTITY THAT GETS MARKED FOR DELETION
• - DELETED ENTITY AFTER SAVECHANGES IS COMPLETE
• - ENTITIES THAT WERE IN THE CACHE WHEN ENTITYMANAGER.CLEAR IS
CALLED
• - ENTITYMANAGER.DETACHENTITY CALLED
ENTITY STATES
28. ENTITYMANAGER.EXPORTENTITIES ([ ENTITYARRAY ])
• RETURNS STRING BUNDLE – SERIALIZED COPY OF THE ENTITY AND THEIR STATE
INFORMATION
• IF NO PARAM , EXPORTS ENTIRE CACHE CONTENTS
• IF ARRAY PASSED IN, ONLY THOSE ENTITIES ARE EXPORTED
ENTITYMANAGER.IMPORTENTITIES (BUNDLE, [CONFIG ]) – STATIC
• CREATES A NEW ENTITYMANAGER INSTANCE, POPULATES ITS CACHE WITH THE
BUNDLE, RETURNS IT
• OPTIONAL CONFIG ARGUMENT WITH MERGESTRATEGY TO OVERRIDE DEFAULT
ENTITYMANAGER.IMPORTENTITIES (BUNDLE, [CONFIG ]) – INSTANCE
• MERGES ENTITIES INTO EXISTING ENTITYMANAGER CACHE
• OPTIONAL CONFIG ARGUMENT WITH MERGESTRATEGY TO OVERRIDE DEFAULT
EXPORTING/IMPORTING ENTITIES
29. CLIENT AND SERVER SIDE SUPPORT
YOU ARE ABLE TO DEFINE CLIENT AND SERVER SIDE RULES
• - BECOME A PART OF METADATA FOR MODEL
ERRORS ASSOCIATED WITH ENTITIES
ENTITYASPECT
• - MANUAL VALIDATION
• - ACCESSING VALIDATION ERRORS
VALIDATION
30. ENTITIES ARE VALIDATED DURING SAVECHANGES
• SERVER LOGIC IS EXECUTED
• 403 STATUS CODE AND ENTITIES WITH VALIDATION ERRORS ATTACHED ARE
THROWN
• ERRORS ARE ASSOCIATED WITH ENTITIES IN THE CACHE
VALIDATION ON THE SERVER
32. SOME VALIDATION RULES ARE CREATED AUTOMATICALLY BASED ON METADATA
• - DATA TYPES: NUMERIC TYPES, BOOL , BYTE, DATE, DURATION, GUID , STRING
• - REQUIRED, STRINGLENGTH
OTHER RULES CAN BE ADDED ON THE CLIENT SIDE
RULES ARE CHECKED
• - WHEN PROPERTIES CHANGE
• - WHEN YOU ADD/ATTACH AN ENTITY TO THE CACHE
• - WHEN YOU TRY TO SAVECHANGES
• - WHEN ENTITIES ARE LOADED INTO CACHE FROM A QUERY (OFF BY DEFAULT)
• - CONFIGURABLE – ENTITYMANAGER.VALIDATIONPROPERTIES
AUTOMATIC VALIDATION
33. THERE ARE SEVERAL VALIDATION RULES, DEFINED INSIDE VALIDATOR CLASS
• - DATA TYPES, REGULAR EXPRESSIONS, PHONE, EMAIL, CREDITCARD, URL
VALIDATOR ALLOWS YOU TO:
• - REGISTER CUSTOM VALIDATION RULES
• - MANUALLY VALIDATE
• - MANAGE ERROR MESSAGE TEMPLATES
BUILT IN CLIENT SIDE VALIDATION RULES
34. ANY JS LIBRARY
BEST (IF WE NEED DATA BINDING ADVANTAGE):
• KNOCKOUT, ANGULAR ETC.
WORKS WELL WITH REQUIRE.JS FOR MODULE DEPENDENCY CHECKING
BREEZE AND OTHER JS LIBRARIES/TOOLS