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