Enterprise Architect firmy Sparx Systems, to potężne narzędzie do projektowania aplikacji. Możemy w nim wykonać projekt od początku do końca. Zaczynając od wymagań klienta, możemy przejść przez wygenerowanie odpowiedniej bazy danych, kończąc na eksportowaniu dokumentacji, która po wydrukowaniu może trafić w ręce klienta.
Jednak tak ogromne narzędzie ma jedną sporą wadę – trzeba mu poświęcić mu trochę czasu zanim stanie się ono użyteczne. W pierwszej kolejności po narysowaniu poprawnego diagramu klas chciałem wygenerować diagram DDL. Co z tego wszystkiego wynikło opisuję poniżej.
Opis zawiera uniwersalny sposób generacji DDL, jednak znacząco jest ukierunkowany na zgodność z symfony (zgodność nazw atrybutów, klas modelu itp.)
- Utworzyłem nowy projekt:
Klikając kolejno: File > New project wpisując nazwę pod którą będę trzymać plik projektu (wszystkie informacje zawarte są w pojedynczym pliku) kontynuowałem przyciskiem Zapisz. - Moim oczom ukazało się okno w którym mogę wybrać rodzaj diagramu który automatycznie chciałbym dołączyć do projektu. Zaznaczam jedynie Class, bo o eksporcie tego diagramy jest ten artykuł.
- Po zatwierdzeniu modelu w przeglądarce projektu (Project Browser) ukazał się pakiet (package) o nazwie Class Model, a w nim przykładowy model klas. Usunąłem z niego zarówno folder Systems jak i Frameworks oraz zawartość diagramu. Teraz mogę przystąpić do właściwego projektowania diagramu klas. Metodą przeciągnij i upuść z okna narzędzi (Tools) przeciągnąłem interesujące nas elementy diagramu. Ja w przykładzie wykorzystałem taki diagram:
- Teraz pora na transformacje na DDL. W przeglądarce projektu klikając na pakiet prawym klawiszem myszy mam dostępną opcję transformacji aktualnego pakietu (Transform Current Package). Zaznaczając wszystkie dostępne elementy oraz transformację DDL (określając docelowe miejsce położenia) korzystam z przycisku “Do Transform”. Po kilu sekundach został utworzony pakiet DDL wraz z jego diagramem.
- W zasadzie w tym momencie mogłbym wygenerować z diagramu plik SQL gotowy do użycia w bazie danych, gdyby nie jedna niezgodność. Zauważmy, że utworzone klucze główne oraz obce są w formacie {nazwa}ID (kategoriaID, artykulID). Symfony posiada inną konwencję ({nazwa}_id). Aby poprawnie skonfigurować nazewnictwo skorzystałem z edycji szablonów transformacji.
- Wybierając Setting > Transformation Templates otworzyłem edytor szablonów
- Aby skonfigurować poprawnie nazwy identifikatorów tabel oraz nazwy kluczy obcych należy wyedytowałem dwa szablony: Class oraz Connector. Odnajdując linię:
name=%qt%%CONVERT_NAME(className, "Pascal Case","Camel Case")%ID%qt%
zmieniłem ją na następującą:
name=%qt%%CONVERT_NAME(className, "Pascal Case","Underscored")%_id%qt%
Zostaje do wprowadzenia w szablonie Connector dziesięć analogicznych zmian.
- Po wykonaniu wszystkich zmian, ponownie przegenerowałem diagram DDL (jak w punkcie 4). W wyniku czego otrzymałem diagram zgodny z konwencjami symfony (wcześniej należy usunąć poprzedni diagram DDL w celu wygenerowania nowych, poprawnych nazw kluczy obcych:
- Nareszcie to czego oczekiwałem od samego początku! Pozostaje skorzystać z Project > Database Engineering > Generate Package DDL, w którym zaznaczając Generate Primary/Foreign Key Constrains oraz określając plik wynikowy File Generation > Single File generuje za pomocą Generate plik sql. W tym momencie mam gotowy skrypt SQL do wczytania do bazy danych.
- Co jednak jeśli nie chcielibyśmy tych wszystkich kroków wykonywać na każdej stacji klienckiej z Enterprise Architectem lub po prostu podzielić się ze znajomym wykonaną pracą? Nic prostrzego. Korzystając z Tools > Export Reference Data możemy zaznaczyć interesujący nas DDL_Transform_Template i wyeksportować go do pliku xml. Taki plik możemy wczytać w dowolnym momencie do każdej stacji klienckiej korzystając z Tools > Import Reference Data
Tags: architect, ddl, diagram, ea, enterprise, klas, projektowanie, uml





0
komentarzy