środa, 4 lipca 2007

Formularze MXML - głębokie linkowanie

Projektując złożone formularze internetowe dla aplikacji internetowych często tworzymy coś na wzór kreatorów. W większości ludzie nie stykają się ze złożonymi formularzami do wypełnienia takimi jak formularze do zeznań podatkowych. Ale ci którzy wypełniają formularze i wnioski o pomoc finansową muszą wprowadzać setki danych.

Podczas wprowadzania takich danych łatwo popełnić jakieś błędy formalne i merytoryczne. A jak można ułatwić sobie życie? Trzeba wziąć pod uwagę skłonność użytkowników do korzystania z nawigacji typu "cofnij" i "w przód", a także do korzystania z zakładek i zapisywania adresów URL, żeby móc wrócić do miejsca gdzie przerwało sie wpisywanie danych.

Praktycznie formularze AJAX dobrze nadają się do tworzenia różnego rodzaju kreatorów. tworząc taki formularze trzeba za każdym razem zapisywać dane na serwerze i powoduje to wysyłanie setek zapytań do serwera. Wymaga to sporej pracy przy implementacji strony serwerowej. Często zdarza się tak że użytkownik w danej chwili nie jest w stanie wypełnić całego formularza. Może zdarzyć się że formularz wymaga częstych powrotów bądź wypełniania dodatkowych danych równocześnie. To nie jest zbyt wygodna sytuacja jeśli użytkownicy są przyzwyczajeni z pracą aplikacjami składającymi się z wielu formularzy.

W swojej obserwacji nad serwisami internetowymi zauważam opartymi na AJAX brakuje mi takich rzeczy: szybkiego zapisania "stanu" aplikacji lokalnie to znaczy tymczasowo w celu przerwania pracy i pójścia na kolację, a następnie otwarcia strony pod danym adresem w którym przerwałem pracę.

Aplikacje w których wykorzystuje się formularze MXML programiści mogą zaimplementować głębokie linkowanie. Co to oznacza? Głębokie linkowanie może przydać się w przypadku gdy chcemy pokazać pod danym adresem URL jakąś funkcjonalność aplikacji RIA. W praktyce taki adres formularza MXML do rejestracji w galerii może wyglądać tak: http://www.adres.com/app.html#/Galery/Register. Zapisanie danych może mieć adres http://www.adres.com/app.html#/Galery/Save. W frameworku Adobe Flex 3 będzie domyślnie wprowadzona obsługa głębokiego linkowania dla formularzy MXML.

W związku z obsługą głębokiego linkowania czyli generowania adresów URL, istotna jest obsługa przycisków 'wstecz' i 'powrót'. Otóż FlashPlayer jest w stanie współpracować z przeglądarką w obsłudze historii tym względzie o ile programiści zaimplementują w aplikacji RIA formularze MXML korzystające z klasy HistoryManager (do tego należą komponenty ViewStack, TabNavigator i Accordion).

Kolejną istotną cechą pracy z głębokimi linkami jest możliwość pracy w trybie offline. Użytkownik może pobrać aplikację RIA ze strony internetowej i pracować z poziomu offline to znaczy że użytkownik nagle został odcięty od internetu, może dalej pracować z aplikacją o ile aplikacja zostanie w cache przeglądarki. Wtedy aplikacja pozwala na zapisanie danych lokalnie i próżniejszą synchronizację z danymi po ponownym nawiązaniu z internetem. Flash Player pozwala na zapisanie danych lokalnie przy użyciu SharedObject. Natomiast Adobe Integrated Runtime ma większe możliwości w zakresie pracy w trybie offline i jak ma w sobie wbudowaną bazę danych co pozwala lepsze wykorzystanie trybu offline w formularzach MXML

2 komentarze:

Radek pisze...

Deep linking bylo juz we Flex 2 - troche trzeba pogrzebac, ale da sie. Flex 3 tylko rozwija ta idee.

http://www.klynch.com/archives/000076.html

Michał Małaj pisze...

Oczywiście, że powyższy link pokazuje jak przy pomocy skryptów JS i jak fscomand() w 2004 roku można było zaimplementować "deep linking" - tylko, że ten przykład nie współpracuje z historią przeglądarki internetowej. Wartość tego artykułu Kevina Lyncha ma wymiar "historyczny".