Virtuální systémy v CzechIdM

Na projektech u zákazníků se setkáváme se situací, kdy zákazník chce prostřednictvím CzechIdM evidovat účty uživatelů na systémech, které z nějakého důvodu nemohou být připojeny k CzechIdM na přímo (například daný systém neposkytuje žádné rozhraní k jeho napojení). Někdy jen není žádoucí přímé napojení na daný systém. Abychom těmto požadavkům zákazníků vyšli vstříc, máme v CzechIdM implementovaný model tzv. virtuálních systémů, jenž tyto požadavky řeší. V tomto článku se blíže podíváme, jak jsme virtuální systémy implementovali v CzechIdM.

Continue reading

Do CzechIdM umíme připojit eSpis

U našeho zákazníka jsme pomocí CzechIdM plně nahradili standardní grafické rozhraní pro správu eSpisu. Napojením eSpisu k CzechIdM umožňujeme našim zákazníkům  ruční správu jednotlivých entit v eSpisu, stejně tak jako plnou integraci se stávajícími systémy v organizaci. Napojení je realizováno tak, že CzechIdM v eSpisu spravuje:

  • organizační útvary,
  • funkční místa,
  • uživatelské účty a jejich vazby na další entity.

V tomto článku si ukážeme, jak jsme se poprali s grafickou formou rozhraní pro správu jednotlivých entit. Continue reading

Prezentace Scala vs. Java 8

V rámci interních školení u nás proběhla prezentace představující programovací jazyk Scala a porovnávající jej s jazykem Java ve verzi 8. Scala je programovací jazyk kompatibilní s Javou, který v sobě kombinuje objektově orientované a funkcionální programování. Tento jazyk, navržený v roce 2003 Martinem Oderskym, německým počítačovým vědcem působícím ve Švýcarsku, se vyznačuje několika zajímavými vlastnostmi jako jsou pattern matching, duck typing či anonymní funkce. Právě posledně jmenované Anonymní funkce přinesla i Java 8 v podobě lambda výrazů.

Continue reading

IDS – Intrusion Detection System

V rámci interního vzdělávání jsem měl prezentaci o tom, co je to IDS (Instrusion Detection System) a jak jsme jej nasazovali u zákazníka. V tomto článku vám popíši základní principy IDS a jak jej správně začlenit do síťové infrastruktury. Představím vám také některé aplikace, které jsem ve svém řešení IDS použil. Na závěr se budu zabývat tím, jakým způsobem IDS nastavit, jaká volit pravidla a co použít pro vizualizaci reportů.

Continue reading

CzechPAM: Schvalovací úkoly a úprava dat

Náš nový produkt CzechPAM pomáhá při správě privilegovaných účtů. Má mnoho skvělých vlastností. Jednou z nich je možnost, aby vytvořené úkoly, například přidání uživatele do nějaké skupiny, schvalovali určení uživatelé. Tato vlastnost CzechPAM přidává důležitou kostičku do promyšleného bezpečnostního mechanismu našeho produktu. O tom, jak jsme schvalovací úkoly přenesli do CzechPAM, se dozvíte dále v článku.

Continue reading

CzechIdM Roadmap 2015

Každý větší software musí mít nejakou vizi, cíl, kam chce směřovat. Bez vize je jeho vývoj pouze nabalující se sněhovou koulí. Vývoj běží na úrovni implementace vlastní setrvačností. V začátcích nám samovolný vývoj nevadí, ale v momentě, kdy aplikace dosáhne určitého rozsahu, je takový způsob práce dále neudržitelný.

S příchodem roku 2015 jsme tedy i my formalizovali naši vizi a vytvořili pro CzechIdM Roadmapu.
CzechIdM je ve vývoji již zhruba pět let, což je relativně dlouho. Většina vývoje je přizpůsobování produktu na míru konkrétnímu zákazníkovi. Dostatečně obecné (a užitečné) funkcionality jsou zároveň zařazovány do standardního produktu. Vývoj je tedy z větší části řízen poptávkou po konkrétních funkcionalitách, z části menší pak vývojem vlastních features „do šuplíku“.

Continue reading

Tisková zpráva: Podruhé jsme součástí IT projektu roku

Podruhé jsme součástí IT projektu roku

Bohemia Energy je jedním z vítězů soutěže IT projektu roku 2014, která je vyhlašována Českou asociací manažerů informačních technologií (CACIO). BCV solutions pro Bohemia Energy v tomto projektu zajišťuje Identity a Access Management s produkty CzechIdM a OpenAM.

Česká asociace manažerů informačních technologií (CACIO) vyhlásila dne 19. 2. 2015 výsledky soutěže IT projekt roku 2014. Tato soutěž se u nás pořádá již 12 let a zúčastnit se jí mohou projekty informačních a komunikačních technologií, které jsou uvedeny do praxe. Letošní ročník má tři vítěze. Jedním z nich je i největší alternativní poskytovatel elektrické energie, společnost Bohemia Energy, která zvítězila s řešením umožňujícím jejím zástupcům uzavírání nových smluv prostřednictvím tabletů. „Jsme velice rádi, že projekt, na kterém jsme se podíleli, byl oceněn takovou prestižní cenou,“  řekl Lukáš Cirkva, ředitel společnosti.

Na projektu jsme se podíleli s naším identity managerem CzechIdM, který již byl v organizaci implementován před pořízením tabletů. Pro začlenění tabletů a aplikací, které umožňují elektronické sepsání smlouvy, jsme správu uživatelských účtů přes CzechIdM rozšířili. Identity manager nyní kontroluje nejen to, aby měli přístupy pouze uživatelé, kteří je mají mít, ale kontroluje i jejich oprávnění — tedy kam uživatelé v aplikaci mohou a kam už nikoli. Tyto procesy — zakládání, mazání a kontroly přístupů — umožňuje identity manager CzechIdM u všech napojených aplikací. Nemůže tedy dojít k tomu, aby uživatelé, kteří již nejsou v zaměstnaneckém či jiném poměru, mohli nahlížet a měli přístupy do systémů Bohemia Energy. Pokud dojde k přeřazení zaměstnance na jinou pozici, přiřadí mu identity manager pouze ty přístupy, které má na nové pozici mít.

Poprvé jsme byli součástí výherce IT projektu v roce 2010, kdy jsme byli u zrodu první elektronické lékařské dokumentace na Všeobecné fakultní nemocnici, se kterou dlouhodobě spolupracujeme. Více informací o řešení na Všeobecné fakultní nemocnici naleznete zde.

Kontakt:

  • Veronika Melmuková
    BCV solutions s.r.o.
    7. května 1168/70
    149 00 Praha 4 – Chodov
    Tel.: +420 778 035 900
    Email: info@bcvsolutions.eu

Jarní osvěžení s Mockitem

Zima už je, zdá se, definitivně za námi, a tak, stejně jako budeme v následujících dnech a měsících postupně odkládat všechny ty těžké bundy a kabáty,  můžeme odhodit všechno to „heavyweight“ programování a ulehčit si psaní testů s testovacím frameworkem Mockito.

Jistě se již každý z vás někdy ocitl v situaci, kdy je postaven před úkol otestovat metodu, která například při svém běhu načítá data z databáze nebo z internetu. Problém s testováním takového kódu je ten, že pro správný průběh testu musíte mít v databázi připravena testovací data a přístup k těmto datům je obecně řádově pomalejší, než bychom potřebovali.

Uvažujme například následující blok kódu v jazyku Java:

public boolean validateUniqueEmail(String email,EntityManager em){
     TypedQuery<String> q = em.createQuery("SELECT u.email FROM User u", User.class);
     List<String> result = q.getResultList();
     return !result.contains(email);
}

Asi není třeba vysvětlovat, co tato metoda má dělat, avšak pokud byste chtěli testovat správné chování této metody, pak buď musíte připravit v databázi testovací data (pak ale stejně vyvstává otázka, kde vzít instanci EntityManagera), nebo vytvořit vlastní mock pomocí dědění od třídy EntityManager a ten poté vložit jako parametr metody.

Právě s tím Vám pomůže Mockito. V následujícím bloku kódu se nachází testovací metoda, která využívá právě mock EntityManagera, vytvořený Mockitem.

 

public void testValidateEniqueEmail(){
    List<String> testData = new ArrayList<>();
    testData.add("email@somewhere.org");
    testData.add("email@somewhereelse.com");

    // Vytvoreni mock objektu
    EntityManager mockEM = mock(EntityManager.class);
    TypedQuery mockQuery = mock(TypedQuery.class);

    // Definovani chovani mock objektu
    when(mockQuery.getResultList()).thenReturn(testData);
    when(mockEM.createQuery(anyString(),String.class)).thenReturn(mockQuery);

    Assert.assertTrue(validateUniqueEmail("email@unknown.edu",mockEM));
    Assert.assertFalse(validateUniqueEmail("email@somewhere.org",mockEM));
}

Jak je patrné z ukázky, vytváření mock objektů je s Mockitem velice snadné. V tomto příkladu jsme definovali testovací data a poté jsme určili chování mock objektů tak, aby při dotazu tato data byla vrácena jako výsledek. Za zmínku zde stojí použití anyString(), což je v terminologii Mockita takzvaný matcher a zastupuje jakoukoli instanci třídy String (samozřejmě lze definovat i vlastní matchery).

Závěr

V tomto článku jsme si ukázali naprosto základní použití frameworku Mockito. Toto je však pouze zlomek toho, co tento nástroj umí a pokud vás tento článek zaujal a chcete se dozvědět více, pak navštivte stránky http://mockito.org/  nebo mě neváhejte kontaktovat na emailové adrese info@bcvsolutions.eu.