system i news 2010/11

Transcript

system i news 2010/11
La business Intelligence con PHP
Ogni volta che si assiste ad una presentazione di nuovi prodotti per I Power l'argomento di discussione è
sicuramente legato all'innovazione e modernizzazione. In questo contesto le applicazioni proposte sono,
giustamente, collegate al mondo del Web o comunque della “rete”, e puntualmente compare la slide con i
grafici più o meno accattivanti.
La necessità di esporre le informazioni in un formato diverso da una “piatta” lista di colonne fitte di numeri, è
quasi d'obbligo, ciò è dovuto anche al fatto che siamo circondati da una serie di prodotti che mettono in
condizione di “vedere” le informazioni in modo sicuramente più gradevole: le news, l'andamento del mercato,
la situazione aggiornata contabile del cliente che dobbiamo visitare, una prenotazione on line...
Sul mercato oggi esistono numerosi prodotti che consentono di effettuare questa sorta di “trasformazione”
del dato, proporlo cioè in un formato più leggibile e interpretabile. Tali prodotti fanno parte della cosiddetta
“BI” ossia la Business Intelligence.
Con il termine “Business Intelligence” si identifica il processo di "trasformazione di dati e informazioni in
conoscenza”. Il software utilizzato ha l'obiettivo di permettere alle persone di prendere decisioni strategiche
fornendo informazioni precise, aggiornate e significative nel contesto di riferimento.
Ciò che vorrei suggerire qui è la possibilità di creare una propria applicazione di “BI” su piattaforma I Power
a costo “quasi” zero: con l'utilizzo del PHP.
Sostanzialmente l'idea è quella di poter produrre delle immagini grafiche, e quindi delle rappresentazioni dei
dati in modo diverso da colonne di numeri.
Una delle librerie utilizzabili dal PHP con buona resa in termini di
performance sulla piattaforma I Power è JpGraph: è possibile scaricarla
da qui http://jpgraph.net/download/ (figura.01) ; la libreria, per fini non
commerciali, è liberamente utilizzabile sotto licenza QPL 1.0 (Qt Free
License).
Al momento della stesura stiamo parlando della versione 3.0.7 per il PHP5, ossia la versione del PHP
installabile su I Power attraverso la distribuzione gratuita di ZendCore o ZendServer.
Una volta scompattato l'archivio jpgraph-3.0.7.tar.gz sull'IFS del I Power, la parte di cartelle che ci
interessa è quella denominata appunto jpgraph/ : il “core” del motore grafico.
La libreria funziona creando “on fly” una reale immagine da produrre sulla pagina web, il browser la
interpreterà come un tipo dato "Content-type: image/png". Se all'interno del grafico necessitiamo di produrre
del testo bisognerà trasformare anch'esso come parte integrante dell'immagine.
Ogni volta che utilizziamo del codice PHP prelevato da internet dobbiamo (noi utenti AS400) ricordarci che
non è stato pensato per I Power, ma solitamente per sistemi Unix/linux (il classico stack LAMP).
In questo caso una delle prime operazioni da effettuare è quello di verificare che tutti i “settaggi” del motore
grafico siano correttamente impostati: JpGraph prevede un file di configurazione (presente nella cartella
jpgraph) denominato jpg-config.inc.php.
All'interno del file va impostata la voce
define('TTF_DIR','/my_font_path/'); con il percorso
dove memorizzeremo i fonts per produrre le
immagini grafiche.
Non tutti i fonts si prestano ad essere trattati
dalle librerie grafiche, un consiglio è quello di
usare inizialmente uno standard “arial.ttf” e
posizionarlo nella directory di configurazione.
Possiamo “testare” la corretta “trasformazione”
del testo in immagine con il codice indicato di
seguito utilizzando delle funzioni PHP di basso
livello.(figura_02)
Il risultato sarà come indicato in
(figura_03)
Author: Davide Sinicato PHP ZCE per l'area IBMi
:
sistem_i_news_2010_11.doc
Pagina 1 di 3
La business Intelligence con PHP
Proviamo adesso a creare un primo grafico basato sui dati del
DataBase dell'I Power iniziando a creare lo script per la selezione
dei record dal db: in questo esempio incrociamo l'anagrafica clienti
con il saldo progressivo degli stessi (figura_04).
Questo script ha il solo scopo di recuperare le informazioni dal DB
e restituire, sotto forma di array(), i valori che interessano per la
creazione dei grafico.
Ora, con un nuovo script, inglobiamo il precedente e l'inclusione
delle librerie grafiche del pacchetto JpGraph.
Le operazioni successive sono relative all'impostazione delle dimensioni del grafico, “l'instance” della class
Graph(), il titolo, le label per gli assi X,Y, la tipologia di grafico (iniziamo con un semplice Linear), la
visualizzazione del grafico con la funzione Stroke(); (figura_05)
Il risultato che otteniamo sarà il seguente
(figura_06)
.
Volendo implementare questo primo esempio possiamo utilizzare ulteriori metodi e proprietà della classe
JpGraph; per prima cosa aggiungiamo, ad esempio, alla nostra istruzione Sql un raggruppamento per
provincia, in modo da avere il fatturato suddiviso, e memorizziamo gli elementi estratti in due array() distinte.
(figura_07).
Nello script di gestione del grafico aggiungiamo, prima della
visualizzazione del grafico stesso, la valorizzazione dell'asse X
con gli elementi delle provincie e coloriamo il riempimento degli
spazi (figura_08).
Anche in questo caso il risultato finale dovrebbe essere come mostrato di seguito
(figura_09)
.
La libreria JpGraph offre innumerevoli spunti per tipologie
di grafici da produrre su web, si tratta sostanzialmente di
selezionare la classe più opportuna per il risultato e l'effetto
che si vuole ottenere.
Oltre ai classici grafici lineari, a barre verticali o orizzontali,
a “torta” anche 3D, c'è la possibilità di ottenere dei
diagrammi di Gantt, rappresentazione usata principalmente
nelle attività di project management.
Author: Davide Sinicato PHP ZCE per l'area IBMi
sistem_i_news_2010_11.doc
Pagina 2 di 3
La business Intelligence con PHP
Implementiamo ora l'esempio con una nuova tipologia di grafico per ottenere una visualizzazione dei dati in
modo ancora più accattivante.
In questo caso oltre al solito require() dello script per il recupero
dei dati dal DB, aggiungiamo anche jpgraph_pie.php e
jpgraph_pie3d.php: gli script che serviranno per il “rendering”
del dato (figura_10).
L'instance, in questo caso, sarà relativa alla classe PieGraph() e
l'incapsulamento dei dati nella “torta” avverrà tramite l'instance
della classe PiePlot3D()
La funzione ExplodeSlice() può essere utilizzata per
separare/evidenziare nella “torta” l'elemento più consistente (nel
nostro caso il 6, la provincia di RM)
La funzione SetLegends() servirà per impostare la legenda degli
elementi estratti (nel nostro caso le provincie)
La funzione Stroke() effettuerà la visualizzazione del “pie”.
Il risultato ottenuto sarà il seguente.
(figura_11)
.
Come accennato in precedenza la libreria JpGraph offre una serie di spunti per produrre elaborati,
statistiche e “cruscotti aziendali” in formato assolutamente accattivante e con poco sforzo applicativo .
Anche in aziende dove la
presentazione e visualizzazione delle
informazioni è quasi “business
critical” il linguaggio PHP,
nell'ambiente I Power, si pone come
un valido strumento per la
realizzazione a basso costo di
applicazioni robuste e “smart”. (figura_12)
(figura_13)