Współdzielenie listy zakupów – „pull” czy „push”?

W ramach poprzedniego wpisu dotyczącego elektronicznej listy zakupów wskazałem, że jedną z funkcjonalności dostępnych w aplikacjach wspierających zakupy, jest możliwość współdzielenia listy zakupów. W aplikacji, z której korzystałem, to współdzielenie oparte było o podawanie adresu e-mail, przy założeniu, że zarówno tworzący listę, jak i ją otrzymujący jest zarejestrowanym użytkownikiem aplikacji i ma założone konto na serwerze aplikacji.

Użytkownicy aplikacji w ramach udostępnionej listy mogą:

  • dodawać/edytować produkty na liście,
  • śledzić postęp zakupów realizowanych przez drugą osobę,
  • kopiować listę na przyszłość.

Założeniem dla funkcjonowania współdzielenia listy zakupów, był dostęp do sieci Internet z poziomu urządzenia, na którym jest zainstalowana aplikacja. W sytuacji utraty dostępu do sieci Internet, zmiany na liście oczekiwały na podłączenie się drugiego użytkownika listy. W przypadku dostępu do sieci Internet przez obydwa urządzenia, zmiany były przekazywane w miarę na bieżąco.

Wspólny proces dla obydwu użytkowników jest przedstawiony na poniższym diagramie.

wspoldzielenie450px_1

Dla współdzielenia listy można byłoby zastosować dwa modele „współpracy”:

  • model „push” (aplikacja inicjująca zmianę przy pomocy pośrednika przekazuje zmiany do drugiej aplikacji)
  • model „pull” (jedna aplikacja przekazuje zmiany do wspólnego miejsca, a druga odpytuje o ewentualne zmiany w liście)

Wariant: model „push
Użytkownik – właściciel listy – rejestruje listę, udostępnia ją, a następnie wprowadza na niej zmiany. Wszystkie te elementy są przesyłane na serwer obsługujący aplikację. Każda zmiana jest rejestrowana i przekazywana do aplikacji odbiorcy listy (wskazanego poprzez e-mail). Serwer wysyła informację o zmianach do aplikacji użytkownika, rejestrując wysłane zmiany. Ewentualna zmiana przez drugą aplikację jest wysyłana analogiczną ścieżką. Na diagramie przedstawiona została ta komunikacja, gdzie każda zmiana jest „pchana” (ang. push) na serwer a następnie do drugiej aplikacji.

wspoldzielenie450px_2

W tym celu został wykorzystany wykres wyglądający jak diagram sekwencji (znany z UML) z pewnymi dodatkami. W projektowaniu rozwiązań można znaleźć wzorzec fire-and-forget, w którym informacje są przesyłane bez oczekiwania na reakcję odbiorcy. Trochę jak tutaj, bo w tym modelu aplikacja nie czeka na informację zwrotną.

Wariant: model „pull
Podobnie jak w poprzednim wariancie, użytkownik – właściciel listy – rejestruje listę, udostępnia ją, a następnie wprowadza na niej zmiany. Wszystkie te elementy są przesyłane na serwer obsługujący aplikację. Trafiają na listę zmian/działań (ang. queue) wykonanych na liście zakupów w postaci zdarzeń typu: udostępnienie listy, zmiana listy, zakup produktu (a dokładnie jego odklikanie) itd. W momencie ustawienia udostępnienia listy, zmiany na utworzonej liście są dostępne do pobrania/odczytania (ang. pull) przez drugą aplikację. W sytuacji, gdy takie udostępnienie nie nastąpi, zmiany są odnotowywane na serwerze i są dostępne tylko dla właściciela listy.

wspoldzielenie450px_3

Na diagramie jest przedstawiony ten model. W projektowaniu rozwiązań można znaleźć wzorzec publish-subscribe, który zakłada, że odbiorcy pobierają interesujące ich informacje z miejsca, gdzie zostały wystawione.

Pewnie można byłoby jeszcze zidentyfikować kilka innych wariantów, gdzie ta komunikacja jest bardziej dwustronna. Jednakże biorąc pod fakt, że aplikacja jest zainstalowana na urządzeniach mobilnych i nie w każdej sytuacji aplikacje będą miały dostęp do internetu, jakiś sposób przechowywania i kolejkowania zmian jest konieczny.  Dodatkowo użytkownicy wykonują często operacje zmiany i przeglądania zmian w różnym czasie lub tworzenie listy jest rozłożone w czasie. Patrząc od strony „odbiorcy” listy, także może zmodyfikować listę w czasie jej dostępności. Takie zmiany są „przesyłane zwrotnie” do właściciela listy.

Reklama

Zakupy wg elektronicznej listy

Gdy chodzę między półkami sklepowymi obserwuję w jaki sposób klienci danego sklepu wspomagają się w tym, aby nie zapomnieć o jakimś produkcie. Jedni korzystają z list zapisanych na papierze (na kartce, w notatniku), inni patrzą w ekran (komórki lub innego sprzętu), a inni jeszcze wyglądają jakby wszystko pamiętali (a może kupują to, co im się rzuci w oczy). W ramach swoich zakupów korzystałem z każdej z tych opcji, więc robiłem zakupy wg jakiejś listy (o czym już kiedyś pisałem).

Dzisiaj chciałbym się skupić na liście elektronicznej. Przez jakiś czas korzystałem z jednej z dostępnych aplikacji na komórkę. Aplikacje te mają pewnie wiele elementów wspólnych. Bazując na tej, z której korzystałem, można powiedzieć, że:

  • wspierają tworzenie listy (dodawanie, usuwanie, edytowanie, nadawanie kategorii automatyczne lub ręczne),
  • wspierają odtwarzanie listy (np. kopiowanie poprzedniej do nowej – całej lub wybranych produktów),
  • umożliwiają kontrolę postępu zakupów (oznaczanie zakupionych),
  • umożliwiają współdzielenie listy zakupów z innymi osobami,
  • pozwalają na dodawanie produktów w promocji z listy podłączonych gazetek lub list produktów promocyjnych,
  • pozwalają na sortowanie produktów,

Na poniższym diagramie jest zaprezentowany proces tworzenia takiej listy zakupów.

zakupy450px

Co ciekawe w aplikacji, z której korzystałem, była możliwość wykorzystania wyszukiwarki produktów – wpisując fragment nazwy podpowiadał produkty lub wskazywał te, które kiedyś zostały dodane. Bardzo to przyspieszało tworzenie listy. Ten element jest zaznaczony na diagramie za pomocą „*” oraz rozpisany w dodatkowej ramce.

Co ciekawe chęć dodania dwóch takich samych produktów wymagała jedynue podwójnego „kliknięcia” w wyszukany produkt, a usunięcie wymagało jednego ruchu palca. Mając powtarzalną listę zakupów lub produkty na różnych listach, można było je kopiować do nowo tworzonej listy a potem edytować oraz usuwać. Wpisanie jednostek czy dokładniejszych informacji, z czego rzadko korzystałem, wymagało wejścia w opcję edycji konkretnej pozycji na liście. Było to bardzo wygodne.

Produkty oznaczone jako kupione, „spadały” na dół ekranu i były wyszarzane. Lista „braków” się skracała i była widoczna cały czas od góry ekranu. W przypadku pomyłki lub zmiany zdania można było produkt „odznaczyć” i wracał „na górę”.

Polecam taką formę budowania listy zakupów i jej wykorzystania. W sieci można znaleźć wiele artykułów od tym jakie funkcjonalności powinna mieć dobra aplikacja na komórkę do wspierania zakupów, listy najlepszych aplikacji oraz ich wymagania.