Skip to main content

State management examples

We differentiate between the following type of EVA applications:

  • customer sales application (web shop/eCommerce)
  • customer on-boarding application (CRM)
  • employee front-office application (POS, CRM, Sales, Tasks)
  • employee back-office application (Admin)

Below we will detail some high over state diagrams for each of these application types. The diagrams will show the application level state setup for their core purpose. These are not meant as 100% detailed diagrams of our current software but should help developers looking to build their own EVA backed applications.

Customer sales application (web shop / eCommerce)#

This application type differentiates itself by not starting with a logged in user of type Customer. An anonymous customer can browse content and products. Products can be added to an empty order which may or may not be taken through a checkout. It will allow a customer to register itself using the application.

flowchart LR subgraph system endpoint --- configuration end subgraph current user u_details[user] --- u_orders[order history] u_orders --- u_order_details[order details] u_register[register] --- u_details u_login[login] --- u_details u_details --- u_loyalty[loyalty program] u_details --- crm_address_book[user address book] --- crm_address_book_item[user address] end subgraph current order u_details -- attach ---- o_cart o_cart[current cart] -- CreateOrderFromShoppingCart --- o_details[current order] o_cart --- o_cart_requirements[cart requirements] o_cart -- Inferred --- o_cart_changes[cart changes] o_payments --- o_transaction_details[transaction details] o_details --- o_payments[payments] o_details --- o_requirements[order requirements] %% Order requirements (place/checkout) o_cart_requirements -- Inferred --- o_status_place[cart place status] o_requirements -- Inferred --- o_status_checkout[order checkout status] %% Order discounts and product actions o_cart --- o_potential_discounts[potential discounts] o_cart --- o_ppa_list[pick product actions] o_ppa_list -- Inferred --- o_status_ppa[pick product status] o_ppa_list --- o_ppa_details[pick product details] o_ppa_details -- Choose --- o_cart end subgraph promotions d_discounts_list[discount list] --- d_details[discount details] d_details -- Add / Remove --- o_cart end subgraph product catalog p_details --- p_availability[product availability] p_details --- p_bundle[product bundle] p_details --- p_configurable[configurable product] p_details --- p_service[service product] p_search[product list/search] --- p_details[product details] p_bundle --- p_bundle-products[bundle products] --- p_bundle_product_details[bundle product details] p_details -- asset url --- configuration %% Add product to order p_details[product details] -- Add / Remove / Modify --- o_cart p_bundle -- Add / Remove / Modify --- o_cart p_configurable -- Add / Remove / Modify --- o_cart p_service -- Add / Remove / Modify --- o_cart %% Local state p_details --- p_recent[recent products] p_details --- p_comparison[product comparison] end

Customer on-boarding application#

This application type is meant for user registration, retention and loyalty programs. This is a very specialised application type mostly seen for larger brands. Logging in to this application is required and the user must be of type Customer. It will allow a customer to register itself using the application.

flowchart LR subgraph system endpoint --- configuration end subgraph current user u_details[user] u_register[register] --- u_details u_login[login] --- u_details u_details --- u_loyalty[loyalty program] end

Employee front-office application (POS)#

These applications are (mostly) used in-store and support the employee with the sales process. Logging in to this application is required and the user must be of type Employee. An employee will need to be created using the admin application and cannot self-register using the application.

flowchart LR subgraph system endpoint --- configuration end subgraph user tasks t_list[task list] --- t_details[task details] t_details -- start/ stop --- t_active[current task] t_active -- assign --- u_details end subgraph current employee u_details[current employee] u_login[login] --- u_details u_details --- u_stations[station list] u_stations --- u_station_details[station details] end subgraph crm crm_user_list[user list] --- crm_user_details[user details] crm_address_book[user address book] --- crm_address_book_item[user address] crm_user_details --- crm_address_book crm_user_details --- crm_loyalty[loyalty program] end subgraph current order crm_user_details -- attach ---- o_cart u_station_details -- select ---- o_payments o_cart[current cart] -- CreateOrderFromShoppingCart --- o_details[current order] o_cart --- o_cart_requirements[cart requirements] o_cart -- Inferred --- o_cart_changes[cart changes] o_payments --- o_transaction_details[transaction details] o_details --- o_payments[payments] o_details --- o_requirements[order requirements] %% Order requirements (place/checkout) o_cart_requirements -- Inferred --- o_status_place[cart place status] o_requirements -- Inferred --- o_status_checkout[order checkout status] %% Order discounts and pick product o_cart --- o_potential_discounts[potential discounts] o_cart --- o_ppa_list[pick product actions] o_ppa_list -- Inferred --- o_status_ppa[pick product status] o_ppa_list --- o_ppa_details[pick product details] o_ppa_details -- Choose --- o_cart end subgraph product catalog p_details --- p_availability[product availability] p_details --- p_bundle[product bundle] p_details --- p_configurable[configurable product] p_details --- p_service[service product] p_search[product list/search] --- p_details[product details] p_bundle --- p_bundle-products[bundle products] --- p_bundle_product_details[bundle product details] p_details -- asset url --- configuration %% Add product to order p_details[product details] -- Add / Remove / Modify --- o_cart p_bundle -- Add / Remove / Modify --- o_cart p_configurable -- Add / Remove / Modify --- o_cart p_service -- Add / Remove / Modify --- o_cart %% Local state p_details --- p_recent[recent products] p_details --- p_comparison[product comparison] end subgraph promotions d_discounts_list[discount list] --- d_details[discount details] d_details -- Add / Remove --- o_cart end