konto usunięte

Temat: uporządkowanie projektu

Witam..

mam trochę głupią sprawę.
Mam dosyć duży już projekt we FLEX..powstawał na przestrzeni dłuższego czasu i na początku nie wiele wiedziałem na ten temat.. generalnie jest tam spory bałagan..powielenia kodu.. w projekcie jest np 20 aplikacji mxml, i każdy z nich kompiluje sie oddzielnie, tak ma byc.. bo pozniej sa wczytywane w innym swf w zaleznosci od wyboru z menu..w kazdym z nich jest np okienko do wyboru klienta , jak najlepiej zrobić to tak, żeby takie okienko bylo jedno.. zdefiniowane w innym pliku.. i z niego zeby kazda z tych aplikacji mxml korzystala..? Jednym słowem zależy mi na zrobieniu tego porządnie.. Jakie stosujecie metody do takich rzeczy ? Czy mógłbym z kimś o tym pogadać może na prv ?
Jarosław Szczepankiewicz

Jarosław Szczepankiewicz Lead Technical
Consultant

Temat: uporządkowanie projektu

może nie bezpośrednio odpowiedz na Twoje pytanie, ale do podobnych celów polecam książkę:

http://www.amazon.com/Working-Effectively-Legacy-Micha...

konto usunięte

Temat: uporządkowanie projektu

Hm. Rozumiem że aplikacje są w oddzielnych projektach ? bo o ile pamiętam można trzymać n aplikacji pod jednym projektem w flexie.
Jeśli chcesz współdzielić wygląd i zachowanie pewnego komponentu między aplikacjami możesz również stworzyć oddzielny projekt który by tworzył flex library (*.swc). Tylko trzeba napisać go tak aby operował na abstrakcyjnych obiektach zależnie od twoich potrzeb. Importujesz SWC i mozesz z swojego okienka korzystać w tych i w każdym przyszłym projekcie.
Jarosław Szczepankiewicz

Jarosław Szczepankiewicz Lead Technical
Consultant

Temat: uporządkowanie projektu

tutaj bardziej chodzi nie o compile time sharing ale runtime sharing o ile dobrze rozumiem. Czyli w grę wchodzą Flex modules. Osobiście po kilku podejściach z większą aplikacją daliśmy sobie spokój z modułami we flexie na rzecz monolitycznej aplikacji, aplikacja urosła do 1,5Mb ale konstrukcja wewnętrzna znacznie się uprościła pod tym względem. Jeżeli to aplikacja biznesowa i serwowana ograniczonej grupie klientów to korzyść z 1MB mniej do ściągnięcia jest znacznie mniejszy niż poziom skomplikowania kodu który za sobą pociąga korzystanie z modułów. W naszym projekcie zbyt dużo się pojawiło cross referencji. Flex modules można rozpatrzyć jeżeli uda się podzielić aplikacje na 100% wyizolowane moduły, a wszystkie współdzielone elementy są trzymane w głównym (startowym) swfie. Dodatkowo są pewne nieoptymalności związane z użyciem modułów we flexie 4 (kwestie zwiazane ze stylami u utrzymywaniem z tego co pamietam oddzielnych kolekcji w pamieci styli css aplikowanych klasom wizualnym).

konto usunięte

Temat: uporządkowanie projektu

To wszystko jest w jednym projekcie..
projekt skalda się z swf który się ładuje na starcie i jest to takie menu (na gorze pasek z menu) z obiektem swf loader po srodku. Po wybraniu odpowiedniej pozycji z menu ładują się w tym swfLoaderze wybrane swf'y..

każdy z tych swf ma cechy wspólne jak swój pasek menu, rożne opcje do wyboru właśnie..wywoływanie okienek z możliwością wybierania parametrów , export grida do csv..itd.. i tu zależnie od swf inne są gridy(ilosc kolumn), niektóre paramaetry enabled = false , lub jakieś dodatkowe.. można konfigurowac liste kolumn ich kolejnosc, zapisywac te profile..

każdy z tych modułów korzysta z AMF i wymiana danych z postgresem poprzez php i zendframework..

Jeśli chodzi o rozmiary to to działa całkiem ok bo każdy z tych swf co sie ładuje waży jakieś 140 KB.

Coś czuję, że to nie będzie takie proste..

konto usunięte

Temat: uporządkowanie projektu

No jejciu. Mi brzmi nadal na prosty case.
Piszesz klasę obiektu tego okna tylko udostępniasz parametryzację. dodajesz publiczne parametry które każda z twoich aplikacji ustawi sobie na true/false lub cokolwiek. A w środku komponentu logika musi obsłużyć wszystkie opcje.

Simple IMO.
Robiłem kiedyś coś takiego że aplikacja była dostępna dla dwóch typów użytkowników : klientów firmy i przez ludzi z call center. Ludzie z call center uruchamiali swoją aplikację, która ładowała kliencką jako moduł podając odpowiedni parametr na wejściu. Ten parametr był był obsłużony w aplikacji i dzięki temu można było dodatkowe opcje uruchamiać jako człowiek z call center.

konto usunięte

Temat: uporządkowanie projektu

Tzn to tak, ja przekuzje juz teraz tez rozne parametry do tych wywoływanych swf..
ale np. Jak zrobić okienko.. samo okienko np. wyboru parametrów.. ono bedzie korzystac z bazy postgresowej itd..wiec bedzie miala te remote objects itd.. jako co to ma byc? jako mxml component ? jako klase i wszystko pisac.. ? wolalbym to sobie "narysowac" powstawiac listy, ustawić wyglad, buttony itd.. i potem takiego czegos uzywac w tych innych aplikacjach..
Ja mam naleciałości z delphi.. :) wiec tak sobie to odnosze..
Robie sobię forme, ktora potem wykorzystuje w wielu miejscach.. a wszystko w jednym projekcie..

konto usunięte

Temat: uporządkowanie projektu

No i tak chyba powinieneś to zrobić ;]
"Narysuj" sobie komponent, który wizualnie chciałbyś wykorzystać w n miejscach. IMO ten obiekt nie powinien wiedzieć o bazie danych - powinien mieć jakaś kolekcję jako źródło swoich danych. Jeśli ma być re-używalne to powinien abstrahować od całego zewnętrznego świata.

To już rolą aplikacji będzie dostarczenie mu danych z takiego miejsca z jakiego potrzebuje.

konto usunięte

Temat: uporządkowanie projektu

przydalby mi sie jakis przykład..ale nie wiem jak to ując w google..
Ale to wyglada mi na sporo pracy jednak..

konto usunięte

Temat: uporządkowanie projektu

Poszperaj może coś takiego :
http://lmgtfy.com/?q=building+custom+UI+flex+4

? ;]

konto usunięte

Temat: uporządkowanie projektu

no pewnie coś takiego..

a mam jeszcze inne pytanie, czy jedynym sposobem na to by funkcja wykonywala się linijka po linijce jest operowanie na eventach ?

konto usunięte

Temat: uporządkowanie projektu

? Któraś funkcja nie odpala ci się linijka po linijce ? ;] Przeskakuje na losowe linijki ? ;]

konto usunięte

Temat: uporządkowanie projektu

No w przypadku obsługi remoteobject nie ma oczekiwania na odebranie danych tylko wykonuje się dalej to co jest w funkcji. np:

ROname.getData();
Alert.show('nie czekam na wykonanie funkcji result');

Alert wyświetli się zanim dane zostaną odebrane.

konto usunięte

Temat: uporządkowanie projektu

No ale to nie jest aż tak ważne.. w sumie. Bo sobie z tym radze.
Czeka mnie sporo pracy z tym "uporządkowaniem" :/

konto usunięte

Temat: uporządkowanie projektu

Ah ;] Chodzi ci o to że jest asynchronicznie ;] jak dla mnie to zaleta a nie problem.
są jeszcze lepsze kwiatki w niektórych miejscach ;] Np. jak używasz AsyncToken o ile pamietam.


var service:MyService = new MyService();
var token:ASyncToken = service.function();
token.addResponder(this);


to taki ciekawy przykład. Najpierw teoretycznie odpalasz funkcję a dopiero potem podajesz kto będzie odbiorcą tej funkcji. Jakbyś myślał ..hmm.. tradycyjnie/konserwatywnie/iteracyjnie [niepotrzebne skreślić] ... to wydawałoby się że najpierw wykona się ta funkcja - a tak nie jest. Tak naprawdę flex tylko zgłasza taką funkcję do odpalania, ale uruchamia zgodnie z priorytetami.

Priorytet 1 - UI
Priorytet 2 - ActionScript
Priorytet 3 - Strzały zewnętrzne

O ile dobrze pamiętam ;] Więcej głupotek tego typu w "Enterprise Development with Flex"
Jarosław Szczepankiewicz

Jarosław Szczepankiewicz Lead Technical
Consultant

Temat: uporządkowanie projektu

remote object jest asynchronous komunikacją tak jak wszystkie IO w actionscript / flex / flash.

Korzystasz z tego w zły sposób, hint: http://help.adobe.com/en_US/FlashPlatform/reference/ac...

konto usunięte

Temat: uporządkowanie projektu

Si si - kojarzę jak z tego korzystać a kod wkleiłem jako przykład żeby wytłumaczyć że w flexie nie wszystko wykonuje się tak jak intuicja by podpowiadała.

konto usunięte

Temat: uporządkowanie projektu

Powiedzcie mi czy używając mxml component i "rysując" ten swój komponent wstawiając inne componenty na niego , i uzywajac sekcji fx:Script i tam robiac obsluge przycisków itd itd.. osiągne to samo jakbym to wszystko pisal porpostu w Actionscript ?
Czy to jest jakas różnica? Czy są jakieś ograniczenia?
Moj komponent nie musi byc super uniwersalny.. ważne zeby uprościł znacząco mój projekt..

Jakim sposobem najelpiej wymieniać dane w ten sposob ? czy np. stworzenie metody publicznej wczytującej danej lub właściwosci jest dobrym rozwiązaniem ? (to tak samo dziala jak zrobie to w sekcji fx:Script i tak samo jak bede pisał w czystym as?)Wojtek Stępień edytował(a) ten post dnia 30.09.12 o godzinie 12:33

konto usunięte

Temat: uporządkowanie projektu

MXML to tylko deklaratywny sposób pisania klasy Actionscript ;) Klasa actionscript i komponent MXML to to samo ;) Także jak najbardziej powinieneś napisać to w MXML.

Co do wymiany danych to nie robiłbym metody publicznej tylko udostępniłbym publicznie zmienną która by przechowywała dane które chcesz wyświetlić.
Np. Jesli tworzyłbyś komponent służący za galerię zdjęc stworzyłbym komponent który ma publiczną zmienną images.

Dodatkowo poczytaj sobie o Skinach w Flex 4 i ItemRenderer

konto usunięte

Temat: uporządkowanie projektu

No to dobrze, bo gdzies w jakimś artykule spotkalem się z opinią ze za pomoca as mozna pisac rzeczy bardziej "sophisticated" :) i tak mnie to zastanowilo czyżby mxml mial jakies ograniczenia.. co troche wydawalo mi się dziwne.

Następna dyskusja:

Uporządkowanie projektu




Wyślij zaproszenie do