Enterprise Architect – transformacja diagramu klas na DDL

Author: Marcin Dryka (drymek) | kwiecień 4th, 2009

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.)

  1. 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.
  2. 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ł.
  3. 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:
  4. 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.
  5. 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.
  6. Wybierając Setting > Transformation Templates otworzyłem edytor szablonów
  7. 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.

  8. 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:
  9. 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.
  10. 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: , , , , , , ,

Leave a Reply