Kam si Sparx Enterprise Architect ukládá data

Soubor s příponou .EAP zná, doufám, každý uživatel nástroje Sparx Enterprise Architect. Ovšem často vídám udivení, když řeknu, že to není nic jiného, než databáze formátu Microsoft Access. Každopádně to není jediný způsob, kam můžete vaše modely ukládat. Jaké jsou tedy všechny možnosti?

Obecně lze hovořit o souborových a serverových úložištích (repositories):

  • Souborové úložiště
    • EAP soubor
      • MS JET 3.5
        • JE již zastaralé, známe od MS Access 97
        • Neumí UNICODE (MS Access ’97 format .mdb)
        • Data se zamykají na úrovni stránky, což dělá problém při přístupu více uživatelů k datům
      • MS JET 4.0
        • Bylo (je) součástí MDAC (Microsoft Database Access Components)
        • Je pouze 32bitové
        • Je součástí Windows 2000 až Windows 7
        • Zamykání je na úrovni záznamu
      • Access 2007
        • „Office-specific“ verze MS Jet původně nazývaná Office Access Connectivity Engine (ACE), nyní Access Database Engine
    • FEAP (Firebird Backend Database, od EA 11)
      • Více robustní, ale umožňuje pouze jednouživatelský přístup
  • Serverové úložiště
    • Pouze pro licence Corporate a vyšší
    • Databázové
      • Podporované následující SQL servery: Oracle, MS SQL, MySQL, PostgreSQL, Sybase a MariaDB.
      • Nutno každé úložiště zvlášť nakonfigurovat
  • Cloudové úložiště
    • http(s) připojení na interní síti nebo „do světa“
    • Nejsou nutné databázové drivery na lokálním počítači
    • Podpora protokolů TLS/SSL

Výhody a nevýhody jednotlivých typů

EAP soubory

  • Pro použití na lokálním PC jednoho uživatele
    • Rychlé, efektivní, bez dalších nákladů a nutnosti být neustále připojen do sítě (s drobnou výjimkou sdíleného klíče)
    • Hůře se sdílí dílčí výsledek práce, lépe se předává zákazníkovi jako celek
  • Pro hodně malé týmy
    • Do cca 5 uživatelů, kteří si nelezou do zelí
    • Vhodné pro menší úložiště
    • Nutnost sdíleného místa na síti
  • Ve spolupráci s verzováním:
    • Na síti „master“, na lokále práce uživatele
    • Neustálý opruz s importem a exportem

Databázové

  • Většinou je automaticky zálohováno
  • Lepší řízení přístupových oprávnění (ačkoliv…)
  • Nutnost být neustále online
  • Problematické s docking stations (spojení padá a s tím i spuštěná instance EA)
  • Musí někdo spravovat (nejen server, ale i klientské stanice)
  • Pouze pro licence Corporate a vyšší

Cloud

  • To samé co předchozí kromě nutnosti spravovat databázové klienty na uživatelských stanicích

Přesun dat mezi různými repository

Jestliže chcete změnit typ úložiště, EA vám k tomu nabízí podporu. Na pásu karet (ribbonu) zvolte Configure a na ní možnost Transfer. Ve vyvolaném dialogu Project Transfer zadejte požadované hodnoty.

Pozor: v cílovém místě musí být připravené podkladové tabulky a veškerá data, které v nich jsou, budou smazána. V některých případech je nutné před přesunem ještě udělat nějaké úpravy.

Blíže doporučuji dokumentaci nebo poptejte některé mé školení či konzultaci.

Jak se ze Sparx EA připojit k JIRA?

Na základě několika dotazů, které jsem dostal na připravované rozšíření pro Sparx Enterprise Architect, které se napojí do nástroje JIRA (psal jsem o něm v souhrnu minulý týden), tu trochu rozepisuji, co bude umět. Předem upozorňuji, že jde o rozpracovanou verzi a pár věcí se může ještě změnit.

K JIRA se připojuje balík na základě Jql dotazu (tedy něčeho, co by měl uživatel JIRA dobře znát). Tento dotaz může být obecný nebo jít o konkrétní epiky a k němu navázané storky (issues obecně). To se zadavá pomocí jednoduchého dialogu s možností definovat Jql dotaz:

JuraJqlDefinition

Výsledek první možnosti je na obrázku v balíku Blok testy::Jql (dotaz zněl type = task or type = story). Epiky a jeho storky jsou pak v balíku Blok testy::Epics and issues.

JuraProjectBrowser

Obsah balíků lze samozřejmě obnovit. Pokud ve výsledku nějaké issues přibudou, jsou přidány i do balíku, pokud se v dotazu již neobjeví, jsou z EA přesunuty do speciálního balíku. Ostatní jsou případně aktualizovány. Je to z toho důvodu, že je možné mít k libovolnému issue různé vztahy, a já chci, aby zůstaly zachovány. Komponenty uvedené v issues mám totiž fyzicky i v EA a pomocí vztahů pak budu jednoduše podporovat dohledatelnost (tracebility).

JIRA Test - Jura

To, kam se připojit, je dáno jednoduchým dialogem:

JuraLogin

Každé issue lze zobrazit (obsah okna se ještě výrazně změní):

JuraIssueProperties

Je-li třeba, pak si můžete issue zobrazit i v prohlížeči přímo v okně EA. Více viz další obrázek:

JuraWholeViewBod 1: Balík, který obsahuje zvolené issues.

Bod 2: Definice dotazu do JIRA je uložena v tagových hodnotách.

Bod 3: Průběh načítání issues.

Bod 4: Zobrazení issue v prohlížeči na záložce v EA.

Dodělat už toho nezbývá moc, většinou už jen testuji. Pokud chcete zkusit předběžnou verzi, napište mi. Hotovo by mělo být do konce září.

Uložit

Uložit

Uložit

Vyhledávání diagramů v Aktivních diagramech

Našel jsem si v sobotu chvilku pro sebe a do Aktivních diagramů dodělal možnost vyhledávat diagram při vkládání nového diagramu. Záložka „Find a Diagram“ tedy konečně něco dělá:

VyhledavaniDiagramuZadat můžete přesný název nebo jeho část, rozlišovat nebo potlačit rozlišování velkých a malých písmen, a pokud i to je vám málo, jsou k dispozici regulární výrazy.

A to je vlastně vše. Drobnost, ale snad potěší.

Rozšíření si jako obvykle můžete stáhnout, případně si o něm přečíst jako o celku.

Vývoj Aktivních diagramů není pasivní

I přes vánoční svátky se mi podařilo občas spustit Visual Studio, a tak mohu představit další novinku v Aktivních diagramech, kterou uživatelé chtěli.

Nečastějším požadavkem byla potřeba znát, zda diagram v dokumentu je či není vložen pomocí rozšíření Active Diagrams. Nyní není nic jednoduššího, než si zobrazit panel s informacemi o diagramu:

ActiveDiagramsTaskPanePokud je obrázek (diagram) v dokumentu označen a je vložen pomocí Active Diagrams, uvidíte základní data nejen o diagramu jako takovém, ale zvíte i datum vložení do dokumentu a poslední aktualizaci.

Okno s těmito informacemi se vyvolává na již známém místě – na záložce s doplňky. Ty jsou rozšířeny kromě jiného o zaškrtávací pole, které zobrazí nebo schová požadované informace.

AddonRibbonVer1_6Další dvě nová tlačítka pak slouží k:

  1. Spuštění Sparx Enterprise Architecta s repository připřazenou k dokumentu.
  2. Spuštění výchozího prohlížeče se stránkou produktu.

Rozšíření si jako obvykle můžete stáhnout, případně si o něm přečíst jako o celku.

 

Aktivní diagramy vybírají diagram aktivněji

Tři týdne stačily k tomu, abych udělal novou verzi rozšíření Active Diagram. Dnes není sice novinek tolik, vlastně je jen jedna, ale o to zásadnější.

Pokud chcete vložit nový diagram, již nemusíte kopírovat GUID diagramu ze spuštěného Enterprise Architectu, ale Active Diagram zobrazí stromovou strukturu odpovídající Project Browseru.

Z připravované verze Active Diagrams

Nová verze Active Diagrams

V ní jsou pak vidět jednotlivé balíky (packages) a diagramy. Jakmile diagram vyberete, vloží se do dokumentu. Stará možnost zůstala zachována, najdete ji na třetí záložce daného dialogu (viz obrázek).

S tím souvisí i to, že bylo třeba aktualizovat i návodné video, takže pokud chcete vše vidět, pusťte si jej.

Rozšíření si jako obvykle můžete stáhnout, případně si o něm přečíst jako o celku.

Enterprise Architect 12.1 je zklamání

Sparx ke konci listopadu vydal novou verzi svého nástroje. Vyzkoušel jsem čtyři novinky, kterými se chlubí, a musím se přiznat, že pro mě jsou zklamáním. Proč?

Automatické obarvování prvků na diagramu

To, že můžete automaticky měnit barvu obrysů a výplní prvků na diagramu, jsem tu již psal. Tehdy to bylo možné pomocí stereotypů. Nyní však Sparx (konečně) přišel na to, že by tak mohl činit i na základě legendy diagramu. Dosud jste totiž legendu mohli jen zobrazit, ale dobarvovat jste museli ručně.

Definice legendy není nijak strašná, ostatně mrkněte na obrázek. Vyberte filtr, zadejte podmínku a barvy a vše funguje.

DefiniceLegendy

Legend lze na jednom diagramu mít víc a zapínat je dle potřeby. Pokud byste chtěli použít dvě legendy na tutéž vlastnost (např. výplň), pak se bere v potaz Z-pořadí legend.

Potud to je víceméně fajn. Problém však nastává, když chcete diagram přenést např. do dokumentu či mailu a přitom nechcete přenášet i legendu (typicky v případě, kdy máte třeba deset diagramů, nemá smysl mít zobrazenou legendu na každém z nich). To však bohužel nejde – tedy, lze potlačit výběr a tisk, ale do dokumentace či do souboru nemáte šanci s tím něco udělat.

Info View

EA dokáže zobrazit další pohled na element a to jako tzv. informační náhled (Info View). Na obrázku vidíte, jak to může vypadat.

InfoView

Co mně na tom vadí?

  • Musím to nastavit pro každý prvek zvlášť. Čekal bych, že to bude možné nastavit i pro celý diagram.
  • Proč to není zobrazované jako další oblast (compartment)? Rád bych viděl jak atributy, tak i další informace.
  • Nefunguje na to výše zmíněné obarvování dle legendy.

Virtualizované zakončení konektorů

Tohle budete znát např. z UML standardu, kde se na některých diagramech objevuje vícekrát tatáž třída. Virtualizace spočívá v tom, že ona třída je v modelu pouze jednou, avšak na diagramu je použita vícekrát. Od verze 12.1 to umí u EA.

Na příkladu níže existují v modelu dvě třídy: Osoba a Adresa. Osoba díky asociacím pak má jednak trvalou adresu a jednak fakturační adresu. Díky virtualizaci zobrazím Adresu pomocí dvou prvků na diagramu.

Virtualizace

Netuším, jak moc tato funkčnost bude využívána, osobně si myslím, že spíše čtenáře diagramů mate.

Současné řešení v EA má však mnohá úskalí:

  • Špatně na to fungují poziční operace.
  • Nefunguje synchronizace tagových hodnot.
  • Nefunguje na to dobře změna barev dle legendy.
  • Když chci smazat virtuální element, zruší to celou vazbu. Čekal bych alespoň dotaz, zda zrušit pouze virtuální zakončení.
  • Atributy apod. si zobrazím pouze na jednom prvku.

Nápověda

Do předchozí verze byla nápověda v CHM formátu a dalo se v ní pěkně vyhledávat a číst. Dnes? Humus. Při stisku F1 se otevře okno internetového prohlížeče a máte k dispozici nějakou stránku. Vyhledávání je čaroprostá hrůza. Na webu a potažmo i v EA (viz obrázek). Jako kluci sorry, ale tohle mě opravdu vytočilo.

HledaniVNapovede

Závěr

Podle mého jde o jakési vlastnosti dodané vývojáři. Uživatel, který by rád nástroj používal, má tak smůlu. Snad se to co nejrychleji změní.

První aktualizace aktivních diagramů

Po čtrnácti dnech přichází první aktualizace rozšíření Active Diagrams. Co přináší?

LinkWithEAPSince1.1

  • Nové: V dialogu pro zadání repository EA je v rozbalovacím seznamu možno vybrat až z deseti naposledy použitých repository, které jste za poslední dobu otevřeli v EA.
  • Nové: V dialogu pro zadání repository EA je tlačítko na procházení disků s možností vybrat souborovou repository (přípona .EAP).
  • Nové: Pokud uživatel již má v dokumentu nějaký diagram a snaží se změnit repository, je dotázán, zda to myslí vážně (typicky může přijít o možnost aktualizace již vložených diagramů).
  • Opraveno: Návodný text je u všech tlačítek na záložce s rozšířeními (stačí na ně najet myší).
  • Opraveno: Pokud uživatel vložil nějaký diagram a poté změnil repository, rozšíření se snažilo načítat diagramy z původního místa.

Jestliže jsou tyto změny přímo pro vás, můžete začít stahovat instalační soubor.

Chcete mít aktivní UML diagramy i ve Wordu?

Občas chvíli trvá, než se z myšlenky stane hmatatelný výsledek. Mně se po mnoha letech podařilo dát dohromady vcelku jednoduchou věc: diagramy, které kopíruji z Enterprise Architecta do wordového dokumentu, tak se na stisk jednoho tlačítka v daném dokumentu samy aktualizují.

WordAddinEn

Toto přání jsem měl několik let, ovšem teprve minulý a tento měsíc jsem jej dokázal realizovat do podoby rozšíření pro Microsoft Word nazvané Active Diagrams.

To, jak to uživatelsky funguje, můžete vidět na videu níže. A pokud vás to zaujalo, tak můžete rovnou přejít na stránku, které je tomuto produktu věnována a to včetně možnosti stažení.

Budu rád, pokud vás zaujme a přijdete s dalšími možnostmi na vylepšení.

Nerealizované požadavky

Na středeční snídani spojené s Enterprise Architectem jsme řešili mj. vyhledávání požadavků, které nejsou realizované, tedy takové, které nejsou cílem realizačního vztahu.

EA takovou možnost v základu nenabízí, ale není problém si ji poměrně jednoduše doplnit. Poslouží nám k tomu uživatelsky definované vyhledávání, základní znalost SQL a tabulky, které EA používá. Zde uvádím krok za krokem.

  1. Zvolte vyhledávání v modelu (Ctrl+F, menu Edit, položka Search in model).
  2. V prvním rozbalovacím seznamu vyberte My Searches.
  3. Z tlačítek více vpravo zvolte New Search.
  4. Vlastní vyhledáváníV nabídnutém okně zadejte název vašeho hledání (např. Nerealizované požadavky) a typ editoru vyberte SQL Editor.
  5. Nové vyhledáváníPo stisku tlačítka OK dostanete možnost zadat SQL dotaz, jednoduše tam vložte ten následující:
    select o.ea_guid AS CLASSGUID, Object_ID, Name, Alias, Stereotype, CreatedDate, ModifiedDate, Status
    from t_object o
    where object_type = "Requirement"
    and not exists (select 1
    from t_connector
    where end_object_id = o.object_id
    and connector_type = "Realisation")
  6. Dotaz uložte (ikona diskety) a hned můžete spusit (F5). Jestliže bude váš model vypadat např. takto (je to opravdu jen příklad, nic jiného za tím nehledejte): Požadavkyvýsledkem dotazu budou dva požadavky Requirement2 a Requirement4:Výsledek

A to je vlastně vše. Snad jen douškou upozorňuji na první sloupeček v SQL dotazu. Ve výsledné tabulce se sice nezobrazuje, ale způsobuje, že když v ní dvojitě kliknete na element, tak se automaticky zobrazí jeho vlastnosti.

Chyba Enterprise Architecta v objektovém modelu

Při programování rozšíření pro EA jsem narazil na další chybu. Funkce Repository.GetContextItemType() nevrací správnou hodnotu, pokud máte vybraný model v Project Browseru. Namísto hodnoty otModel dostanete otNone, což není úplně zdravé. Chybu jsem poslal do Sparxu, ale údajně o ní již dlouho vědí, ovšem do opravy se jim zřejmě nechce. Než se tak stane, můžete použít následující funkci, které problém řeší:

protected EA.ObjectType temporaryGetContextItemType(EA.Repository Repository) {
EA.ObjectType vOT = Repository.GetContextItemType();
if (vOT == EA.ObjectType.otNone)
//try it to retype to Package and check if it is a model...
//if anything gets wrong, forget it
try {
if (((EA.Package)(Repository.GetContextObject())).ParentID == 0)
return EA.ObjectType.otModel;
} catch { }
return vOT;
}

Funkce v případě, že GetContextItemType vrátí otNone, tak zkusí vybraný objekt přetypovat na balík a zjistit jeho ParentID. Pokud se to povede a hodnota je rovna nule, jde o model, jinak je to cokoliv jiného, chybné přetypování odchytím v sítu výjimek a navrátím původní hodnotu.

Pokud budete dále pracovat s balíkem, který je vlastně modelem, tak také dejte pozor na to, že jeho vlastnost Element je null (což se v dokumentaci nedozvíte). Není to od autorů hezké.

A drobnost na závěr: funkce očekává, že máte otevřený nějaký projekt. Že tomu tak opravdu je, byste si měli zajistit sami např. vhodným povolením či zakázáním jejího volání v EA_GetMenuState.