Jak jsem (ne)upgradoval jBPM3 na jBPM5

JBPM_logo

Na projektu Orinoco používáme procesní systém jBPM ve verzi 3. Pro další vývoj jsme potřebovali mít možnost vytvářet proces programově bez použití xml definice. Ve vyšších verzích jBPM je tato funkčnost dostupná pomocí tzv. „fluent API“. Rozhodl jsem se tedy pro upgrade jBPM na nejnovější verzi, která je aktuálně 5.4 (verze ke dni vydání článku). Obvykle při přechodu knihovny na vyšší verzi, dochází také ke změně rozhraní, byl jsem proto připravený, že budu muset současnou integraci knihovny trochu upravit či přepsat.

více »


Eclipse efektivně (5.)

Podle trefné kompetenční matice programátoři na úrovni nula (v asymptotické složitosti vyjádřeno 2n) používají svoje IDE jako textový editor. Mírně pokročilý (n2) již dokáží najít něco v menu. Pokročilý (n), znají většinu zkratek a profíci (log n) zvládnou do svého IDE napsat i plugin.

I když jsem si poslední dobou oblíbil především IDE IntelliJ IDEA, tak občas nezbývá než si plivnout do dlaní a vzít za vděk Eclipse, respektive STS (Spring Tool Suite). Chtěl bych vám představit další zkratky a nastavení, které takřka denně používám a které vás zařadí právě mezi pokročilé.
více »


Na mnoha projektech je třeba řešit databázový žurnál aplikace, který zaznamenává události v systému včetně dat, která při těchto událostech byla změněna či jen čtena. Zákazníci často požadují u událostí, které mění data, žurnálovat jak staré tak i nové hodnoty záznamu.

Implementace takového mechanismu přímo na DAO vrstvě by byla pracná a hlavně složitě konfigurovatelná. Řešení žurnálování na úrovni databázových procedur a triggerů by zase zrušilo nezávislost aplikace na konkrétním typu databáze. Hibernate pro žurnálování nabízí zajímavou funkčnost interceptor pro zachycení a zpracování různých událostí, jako například databázové CRUD operace.
více »


Na zákaznickém projektu bylo potřeba umožnit asynchronní spouštění různých handlerů, registrovaných jako Spring bean. Typicky jde o případ, kdy uživatel iniciuje vykonání nějaké činnosti, která může trvat desítky sekund nebo dokonce minut. Zároveň jsme potřebovali, aby řešení bylo persistentní, a tedy aby se naplánované úlohy neztrácely při pádu serveru.
Protože jsme již na projektu využívali Quartz Scheduler pro spouštění pravidelných úloh, použili jsme ho i pro účel tohoto asynchronního zpracování.
více »


Eclipse efektivně (4.)

K psaní seriálu Eclipse efektivně nás motivuje pozorování, že někteří (i zkušení) vývojáři nejsou dostatečně efektivní při práci s Eclipse IDE. Možná, že některé tipy, které našim stážistům vtloukáme do hlavy, se budou hodit i vám.

Tentokrát se zaměřím na to, jak získat přehledný výpis chyb. Dále nastavení generování metod equals a hashCode. Nechybí vám, že content assist nenabízí statické importy? Víte, že find dialog dokáže hledat zároveň jak píšete? Nakonec se naučíme kouzlit s řádky.

více »


Synchronizace scheduleru v clusteru

Na našem projektu Starthead jsme potřebovali implementovat automatické provádění úkolu určeného ke zpracovávání dat v databázi. Ve frameworku Spring, který je pro vývoj použit, je tato úloha jednoduše řešitelná například pomocí TaskScheduler.
Zajímavější situace nastává, pokud má aplikace bežet v clusterovém řešení. To znamená, že je potřeba řešit synchronizaci, aby nedocházelo k vícenásobnému spouštění jobů ve stejný čas. Snažili jsme se najít co nejjednodužší řešení, které by splňovalo danou podmínku a tím se v našem případě ukázalo využití Quartz scheduleru s patřičnou clusterovou konfigurací a synchronizováním pomocí ukládání do databáze. více »


IntelliJ Idea pro vývoj v Javě

Většina lidí si vývoj v Javě spojí s jedním ze dvou nejpoužívanějších IDE – Eclipse a Netbeans. Třetí, donedávna čistě komerční IDE je často neprávem přehlíženo. Před pár dny byla uvolněna nová verze IDE IntelliJ Idea s číslem 11. IntelliJ Idea (dále jen Idea),
je vyvíjena firmou Jet Brains, která se zaměřuje na vývoj špičkových vývojových nástrojů pro různé programovací jazyky, mimo jiné IDE pro Ruby, Python nebo Objective C. V článku se budu snažit shrnout věci, které jsem si oblíbil a chybí nebo jsou v horším provedení u konkurence (především Eclipse). více »


Získávání dat z HTML stránek

Na jednom projektu jsme potřebovali získávat informace z HTML stránek a využili jsme knihovnu jSoup. Její jednoduché použití si ukážeme na příkladu získání jednotlivých popisů volných pozic ze stránek Aspectworks.
více »