Skip to content
This repository has been archived by the owner on May 25, 2023. It is now read-only.

Zadání

David Matějček edited this page Mar 25, 2014 · 5 revisions

Důvod

Současný systém konfigurace všech aplikací CIS na všech instancích na všech strojích je nevyhovující.

  • část konfigurace je pro všechny instance aplikací shodná
  • administrátor musí jednotlivé soubory editovat ručně a stejnou položku rozkopírovat
  • je málo odolný vůči chybám (překlepům).
  • v některých případech administrátor neví, který soubor je ten správný
  • konfiguraci není možné spravovat "transakčně korektně"

Cílový stav

  • Konfigurace bude uložená v databázi
  • Uživatel s patřičným oprávněním bude smět vypsat konfiguraci
  • Uživatel s patřičným oprávněním bude smět měnit konfiguraci
  • Uživatel bez oprávnění nebude ani vědět, že nějaká konfigurace existuje.
  • Změna konfigurace bude transakční a bude možné si uložit neaktivní nastavení.
  • Jednotlivým částem aplikací budou poskytovány jim příslušející části jako POJO.
  • Intuitivní ovládání
  • Jednotlivé aplikace si při spuštění budou schopny ověřit, zda mají k dispozici kompletní nastavení (logika nemusí být triviální).
  • Hodnoty položek konfigurace budou v databázi šifrované (není součástí semestrální práce).

Provedení

Technologie

JEE 7, JPA 2.1, JSF 2.2, Maven, GIT, Eclipse, REST, jQuery. Konkrétně: Glassfish 4, EclipseLink 2.5.1.

Funkce

Uspořádání aplikace

Vznikne evolučně na základě seznámení uživatele s první funkčně kompletní verzí aplikace. (poznámka: v praxi jakékoliv zadání dopadne přesně takto).

Zobrazení seznamu klíčů a editace

Po vybrání kategorie se vypíší záznamy z tabulky ConfigurationItemKey s možností přidat další. Klíče uživatel měnit také může, může je i přidávat, případně i mazat, pokud nejsou použité v ConfigurationItem. Pokud jsou použité v ConfigurationProfileItem, uživatel by měl být varován a musí se smazáním (kaskádově) výslovně souhlasit.

Zobrazení aktivní konfigurace

V podstatě výpis tabulky ConfigurationItem. Uživatel s patřičným oprávněním bude smět jednotlivé položky označit ke smazání, po stisku tlačítka bude požádán o potvrzení a po něm se akce provede. Bude možná označit i odznačit všechny položky najednou.

Zobrazení profilů

Bude možné vypsat seznam profilů, resp. ConfigurationProfile, a ze seznamu bude možné se dostat na detail profilu, kde bude jeho stručný popis a seznam jeho položek. Obrazovka bude aktivní, čili:

  1. Hodnoty bude možné měnit.
  2. Při přidání položky se první vybere kategorie a klíč, čímž bude daný typ a validace položky.
  3. Při mazání položky není nutné nic kontrolovat ani uživatele žádat o potvrzení
  4. Profil odsud bude možné tlačítkem smazat nebo aplikovat, obojí po potvrzení.

Poskytování konfigurace

  1. Aplikace bude poskytovat přístup ke konfiguraci po kategoriích přes REST službu, zabezpečenou HTTPS, loginem a heslem. (ověření triviálně z browseru).
  2. Některé aplikace budou načítat konfiguraci přímo z databáze, což už tuto aplikaci zajímat nebude.

Databázového schéma

ConfigurationItemCategory

Kategorie konfigurační položky. Množina klíčů nějakého zaměření, např. "Nastavení připojení k Základním registrům" Kategorie uživatel měnit nemůže, ty si spravuje aplikace sama, automaticky.

  • id; generovaný číselný primární klíč
  • name; český název kategorie (varchar)

ConfigurationItemKey

Identifikátor konfigurační položky.

  • id; generovaný číselný primární klíč
  • idCategory; cizí klíč, kategorie, do které položka spadá
  • itemType; typ hodnoty (varchar, enum)
  • key; unikátní klíč (varchar)
  • description; lidsky srozumitelný popis položky (varchar)

ConfigurationItem

Aktivní konfigurační položka. Aplikace požadující konfiguraci budou používat jen tuto tabulku, kde najdou, co potřebují.

  • id; generovaný číselný primární klíč
  • idKey; unikátní cizí klíč
  • itemValue; hodnota (varchar)
  • udate; čas poslední změny (timestamp)
  • uuser; id uživatele, který položku naposledy změnil

ConfigurationProfile

Konfigurační profil. Uživatel může aplikovat profil, čímž dojde k zapsání (a příp. přepsání existujících) položek v ConfigurationItem. Uživatel může kdykoliv profil uložit, aniž by přepsal aktivní konfiguraci. Uživatel může kdykoliv profil smazat, aniž by to mělo vliv na aktivní konfiguraci. Profily se mohou vzájemně překrývat.

  • id; generovaný číselný primární klíč
  • name; název profilu (varchar)
  • description; lidsky srozumitelný popis profilu (varchar)
  • udate; čas poslední změny (timestamp)
  • uuser; id uživatele, který profil naposledy změnil

ConfigurationProfileItem

Konfigurační položka profilu. Uživatel přidává, mění a maže položky profilu.

  • id; generovaný číselný primární klíč
  • idProfile; cizí klíč, profil
  • idKey; cizí klíč, kombinace idKey a idProfile je unikátní (int)
  • itemValue; hodnota (varchar)

CisUser

  • id; generovaný číselný primární klíč
  • login; uživatelské jméno (varchar)
  • birthDate; datum narození (date)
  • firstName; jméno (varchar)
  • lastName; příjmení (varchar)