flickr galerie | Twitter @Padáček | Facebook profil | Foursquare profil | LinkedIn profil

Zápisky.info


18.08. 2009

Jak rozchodit subreporty na JasperServeru

Každý report v napsaný v JasperReport / navržených v editoru iReport může obsahovat pouze jeden jediný zdrojový dotaz pro získání dat — definovaný v elementu <queryString>. V některých případech potřebujete získat data pomocí dvou či více dotazů. V takových případech si s jediným reportem nevystačíte — pro tento účel jsou k dispozici subreporty složící pro vložení jiných reportů do hlavní šablony. Jednoduše připojíte jiný JRXML soubor, předáte spojení, parametry, … Pokud reporty nahráváte na JasperServer, situace se trochu komplikuje o správné nastavení cesty k druhé šabloně.

Pokračování »

11.05. 2009

JasperServer Input Controls pro volbu více hodnot

Dříve či později při vývoji reportů nad JasperServer narazíte na požadavek, aby parametry a vstupní prvky dovolovaly zvolit více jak jednu hodnotu. Typicky je třeba prvek, kde se volí právě jeden prvek, jeden a nebo všechny, a nebo jeden až všechny. Samozřejmě, že vstupní prvky by měly mít hodnoty naplněné z databáze, což jsem popsal nedávno.

Dnes popíšu, jak vytvořit vstupní prvek s možností volby různého počtu hodnot. Základem je definice parametru. Stačí v iReport editoru, v panelu Struktura dokumentu (Document structure) kliknout pravým tlačítkem na Parametry (Parameters) a Add… > Parameter. Důležité je nastavit datový typ java.util.Collection.

V JasperServeru pak definujeme příslušný vstupní prvek, která musí umožňovat volbu více hodnot. Máme-li k dispozici hotový Dotaz (Query) v JasperServeru pro získání hodnot, v panelu JS-Plugin 3.0 zvolíme dialog Add > Input Control a vybereme typ Multi–Select Query a vyplníme ostatní parametry stejně jako u Single–Select Query. Vstupní prvek přiřadíme do reportu (Report Unit).

Poslední a nejdůležitější je použít parametr v reportu. Jelikož hodnot může být různý počet, v dotazu použijeme omezující podmínku WHERE table.attr IN(…). Klasické parametry s jednou hodnotou zapisujeme pomocí $P{ParameterName}. Pro parametry s více hodnotami existuje speciální zápis – $X{IN, table.attr, ParameterName}, který vygeneruje celou podmínku v dotazu. Místo IN můžete použít také NOTIN, pokud chcete vygenerovat klauzulin NOT IN(…).

Vstupní prvek se zobrazí jako selectbox s více zobrazenými hodnotami, kde můžete i více hodnot zvolit.

02.02. 2009

Lineární grafy v JasperReports / iReports

Moje práce na reportech a JasperServeru pro jejich správu pokračuje i nadále. Aktuálně jsem řešil problém, jak správně vytvořil lineární graf (Line Chart) v editoru iReports. Kde byl problém? Byly dokonce dva. První se týkal správného umístění elementu grafu v JRXML šabloně, druhý zadání zdrojových políček z dotazu. Druhý ze zdrojů uváděl, že do libovolné části šablony, která se neopakuje. Po spuštění reportu, kdy se mi vygeneroval graf na tolik stránek, kolik bylo řádků zdrojových dat, jsem pochopil, že to nepůjde do libovolného elementu. Tutoriál ke grafům v iReports dal správnou odpověď — graf umístěte do elementu <summary>. Řešení, jak nastavit zdrojová pole, jsem našel na Java Lobby. Máme-li dotaz:

SELECT
  workstatus.time AS DATE_TIME,
  workstatus.active_projects_count AS PROJECT_COUNT
FROM workstatus
WHERE workstatus.time BETWEEN $P{VALID_FROM} AND $P{VALID_TO}
ORDER BY workstatus.time ASC

Můžeme nastavit graf tímto způsobem:

  • Výraz pro sérii: název jedné linie v grafu, např. "Počet aktivních projektů"
  • Výraz pro kategorii: Osa X, $F{DATE_TIME}
  • Hodnota výrazu: Osa Y, $F{PROJECT_COUNT}

Graf se vykreslí v horizontální orientaci, kde na ose X budou data, na ose Y počty projektů a pod grafem v legendě název tohoto datového zdroje. Do grafu lze samozřejmě zadat více datových setů a mít více přímek.

Vložil Padacek v 18:42 | Vývoj softwaru, Java | Komentáře: 2 [03.02.09 16:14]

17.12. 2008

Dynamické Input Controls na JasperServeru

Pokud jste někdy řešili úkol tvorby reportů, určitě jste při hledání vhodné technologie neopomenuli prohlédnout nebo dokonce použili JasperReports. Tento framework poskytuje flexibilní šablonovací nástroj založený na vlasním XML formátu, který navíc můžete navrhnout v grafickém WYSIWYG editoru iReport od stejných tvůrců. Škála výstupních formátů je širová – hlavně PDF a XLS budou zajímavé. Pokud se chcete o nástroji dozvědět více, doporučuji krátké představení nástroje a integrace se Springu od Vlasty Vávrů nebo tutorial z ČVUT.

Minulý týden jsem řešil přípravu několika reportů nad Oracle databází. Výhodou bylo, že máme nainstalovaný JasperServer – ten slouží k hostování, správě, automatizovanému spouštění reportů a správě vygenerovaných reportů. Pro editor iReport je vytvořen předinstalovaný plug–in, kterým můžete server spravovat. Stačí přidat adresu a přihlašovací údaje, do widgetu se vám načte kompletní obsah, se kterým můžete manipulovat a vlatní šablony přímo v editoru upravovat. Co nepřidalo na jednoduchosti, byl požadavek na vstupní parametry. Např. volba jedné ze stavů faktury, či omezení časového intervalu. Protože mě to stálo minimálně den pátrání, popíšu, jak vytvořit na JasperServeru znovupoužitelné vstupní komponenty, jejichž výčet hodnot se načítá z databáze.

Základem je mít v šabloně reportu vytvořené vstupní parametry. Jméno vstupní komponenty se musí se jménem parametru shodovat! Máte–li šablonu hotovou, můžete připravit vstupní komponenty. Pro naplnění komponenty daty potřebujete Query (dotaz). Nabídku Add > Query najdete po pravém kliku na některou složku v JS plug–inu. Záložka General vyžaduje vyplnit Name (ID komponenty) a Label (libovolný popisek pro orientaci na JasperServeru). Záložka Query poskytuje volby pro vlastní získání dat. Je třeba zvolit dotazovací jazyk (např. SQL, EJBQL, HQL či XPath), najít již definované spojení na datový zdroj (databázi) a zadat vlastní dotaz.

Máte–li definovaný Dotaz, můžete vytvořit vlastní vstupní komponentu. Dialog najdete pod Add > Input Control. Ze zajímavých voleb uvedu Type, který je třeba nastavit na Single Select Query, dále najít na JasperServeru námi definovaný dotaz a pak, Value Column určuje jméno sloupce s hodnotou. Naopak Visible Query Columns sloupce, které budou v roletce zobrazeny.

Když vytvoříte všechny potřebné komponenty, otevřete si strukturu vašeho reportu (Report Unit) a všechny postupně připojte přes volbu Link an Existing Input Control (pravý klik na Input Controls). V této chvíli jsou již nabízený v komponentách správné hodnoty a report je pak se zvolenými hodnotami předanými přes parametry spuštěn a vygenerován.

16.12. 2008

JSON notace pro RDF

RDF, jako klíčová technologie sémantického Webu, umožňuje zápis informací a jejich výměnu. Data jsou zapisována jako trojice (předmět, predikát a objekt) a dohromady pak tvoří graf. Výhodou pak je, že existuje mnoho notací, jak graf zapsat. Nejznámější je určitě RDF/XML nebo třeba Notation 3. Mezi ty méně známé pak jistě patří RDF/JSON vytvářený skupinou Talis. Nabízí se srovnání se dvěma jmenovanými – „výřečností“ může konkurovat XML notaci, ba ji i předčit, ale někdy se může podpora v JSONu hodit. Krátká ukázka N3 a RDF/JSON pro porovnání:

<http://example.org/about>
  <http://purl.org/dc/elements/1.1/title>
  "About page" .
{
  "http://example.org/about": 
  {
    "http://purl.org/dc/elements/1.1/title":
    [
      {
        "type": "literal",
        "value": "About page"
      }
    ]
  }
}

I tuto notaci používá dříve zmiňovaný projekt OpenVocab pro management ontologií.

Vložil Padacek v 02:08 | Sémantický web | Přidej svůj komentář!

08.12. 2008

Projekt OpenVocab pro sémantický Web

Na informace o projektu OpenVocab jsem narazil nedávno a už představení jeho současných i plánovaných funkcí mne zaujalo. O co jde? Sémantický Web je založen zejména na strojově čitelných datech a jejich výměně. Ty musí být kódovaný použitím nějakého schématu (RDFS) či lépe ontologie (OWL). Existuje mnoho „standardů“ jako FOAF, DOAP, Dublin Core… V některých případech ale potřebujete vytvořit vlastní koncepty (třídy) či atributy. Pak máte na výběr buď vytvořit jejich popis v některé z notací RDF (obvykle RDF/XML), přemýšlet nad tvarem URIref jednotlivých konceptů a následně vše publikovat, a nebo je zde právě OpenVocab.

Ve zkratce se jedná o kolaborativní hosting a tvorbu pojmů z ontologií, kdy data lze tvořit, sdílet a upravovat v rámci otevřeného systému. Ten pak poskytuje unifikovaný tvar adres, koncepty jsou zpřístupněny jako Linked Data a také v rozličných formátech – RDF, XHTML, JSON, Turtle. Linked Data znamená, že každá URIref (URL adresa) označující termín vrací na požadavky hlavičku HTTP 303 See Other a přesměrování na jinou prezentační verzi s informacemi o tomto konceptu. A to podle preferencí agenta (obvykle RDF pro stroje a XHTML pro prohlížeče).

Technicky, data jsou uložena v RDF úložišti Talis Platform a jsou přístupná přes SPARQL. Zdrojové kódy a dokumentaci projektu najdete na Google Code. Projekt navazuje na původní vocab.org, který pouze poskytoval prostor a neměnnou doménu pro různé ontologie, ale posunuje celou ideu dál. Zajímalo by mne, jestli autor bude ontologie publikované na vocab.org migrovat do nového systému.

Vložil Padacek v 01:03 | Sémantický web | Komentář: 1 [08.12.08 10:47]

01.12. 2008

Nekompletní podpora SPARQL OPTIONAL v PHP frameworcích

Během práce na komunitní stránce Knowledge Engineering Group, která je kompletně implementována nad RDF úložištěm, jsem narazil na jeden problém s nekompatibilitou se standardem SPARQL. Používali jsme framework RDF API for PHP, což je téměř zažitý standard pro PHP aplikace pracující s RDF. Nyní popíšu náš případ užití. Měli jsme v úložišti několik instancí typu foaf:Group; některé měly jeden atribut foaf:name, jehož hodnotou bylo jméno v anglickém jazyce a jiné měly dva atributy foaf:name, jeden v angličtině a druhý v češtině. Jedním dotazem jsme chtěli zvolit obě jména a zobrazit je v XHTML editoru. SPARQL dotaz vypadal následovně:

Pokračování »

26.11. 2008

Sémantický Web - perspektivy, aplikace, technologie (překlad)

Máte–li zájem si přečíst pár zajímavých textů o sémantickém Webu v češtině, nabízím odkaz na tři články, které přeložil během posledních pár nocí Aristo. Originál vyšel v časopise IEEE Intelligent Systems (PDF, 705 kB). (Pozn. ještě tomu chybí korektury.)

Vložil Padacek v 16:56 | Sémantický web | Komentáře: 2 [26.11.08 19:44]

Užitečné nástroje pro Relax NG

(Doplněno!) V sobotu jsem zde doporučova Relax NG pro tvorbu XML schémat. Plnohodnotný vývoj schématu se ale neobejde bez validátor, který by ověřil validitu schéma a následně zvalidoval soubory proti tomuto schématu. Stejně tak může chybět nástroj pro konverzi, který pomůže vytvořit verze v jiných jazycích pro XML schéma. Abyste nemuseli bloudit a hledat, dám tipy na nástroje, které používám již od prvního seznámení s Relax NG …

Převod mezi jednotlivými formáty pro tvorbu XML schémat zvládá aplikace Trang. Jde o konzolovou aplikaci implementovanou v Javě. V instalaci je přibalený podrobný manuál se seznamem příkazů. Zvládá konverze mezi DTD, WXS a Relax NG v obou syntaxích (XML i kompaktní).

Validaci schémat a dokumentů proti těmto schématům umí aplikace Jing. Opět se jedná o konzolovou aplikaci implementovanou v Javě – obě dvě jsou od stejných tvůrců (tj. Thai Open Source Software Center Ltd). Jing podporuje Relax NG v obou syntaxích a experimentálně několik dalších technologií. Důležité parametry volání:

  • -c: schéma používá kompaktní syntaxi
  • -e enc: určení kódování pro načtení schématu

Volání pro spuštění:

java –jar jing.jar [-c –e …] <soubor schématu> [<XML dokument>]

XML dokument je volitelný. Pokud jej zadáte, bude se validovat proti určenému schématu. Pokud zadáte pouze cestu ke schématu, bude se validovat to.

Doplněno 26.11. 2008: Jiří Kosek avizoval návrat tvůrce nástrojů Jing a Trang do světa XML. Pro tento projekt to znamená další rozvoj. Od nynějška můžete projekt najít na Google Code.

Vložil Padacek v 14:54 | <XML /> | Komentáře: 2 [03.10.06 08:03]

18.11. 2008

Je libo demonstraci aplikací sémantického Webu?

Tento týden si Aristo a HoNem na katedrálním semináři připravili demonstraci některých již fungujících aplikací, které využívají technologie sémanticého Webu. Pro některé by to mohl snad být důkaz, že S.W. není jen hračkou pro vědce a teoretiky, ale dá se i prakticky někde uplatnit. Máte–li o téma zájem, určitě se stavte. Anotace přednášky:

Semantic Web Technologies Applied – Demonstrations and Discussion

Speakers: Jan Nemrava, KIZI, VŠE Praha and Jan Zemánek, KIZI VŠE Praha

We are going to showcase a couple of real world Semantic Web applications most of them presented during this year's Semantic Web Challenge [1] at ISWC in Karlsruhe [2]. Afterwards we will discuss in which areas the Semantic Web technologies brings us actual benefits over conventional technologies/approaches and which are those.

[1] http://challenge.semanticweb.org/
[2] http://iswc2008.semanticweb.org/

Vložil Padacek v 00:27 | Sémantický web | Přidej svůj komentář!

Navigace

Vyhledávání

 Vyhledávání 

Povolené operátory: AND, OR a NOT

Kategorie

Nejčtenější

Poslední komentáře

  • Jirka Hradil: Ten překlad je dobrá práce, jednoduché, srozumitelné :)....
  • honza: Diky autore, ani nevis jak moc jsi mi timhle clankem pomohl. Porad mi kod nefungoval, vymyslel jsem kdeco, ale reseni...
  • Milan: [2] Místo řádku: class SampleConfigKeyNotDefinedException extends Exception má zřejmě být řádek class SampleTemplatedNotFoundException extends Exception...
  • Josef Petrák: [1] Máš data v databázi, třeba Oracle, a chceš z nich udělat nějaký report a ten nabídnout v různých formátech...
  • havlikp: proč nepoužít excel? ;-)...

Odkazy

Statistiky návštěvnosti [TOPlist]
PageRank Checking Icon
Valid XHTML 1.0 Strict

Obsah © 2004 – 2006 Josef Petrák

Grafika © 2004 Dlouhý Webdesign

Redakční systém BLOG:CMS