Você está na página 1de 67

Criando Solues Pentaho

Verso 1.1 Milestone 5 18 de Maio de 2006

Copyright 2006 Pentaho Corporation. Redistribuio permitida. Todas as marcas registradas so de propriedade de seus respectivos donos. Para as ltimas informaes, visite nosso web site www.pentaho.org

Sumrio
Introduo ................................................................................................................................................. 1 Workflow no Centro ................................................................................................................................. 1 Arquitetura Orientada a Servios (Servio-Oriented Arquitetura, SOA) ........................................... 2 Integrao de Processos ......................................................................................................................... 2 Regras, Regras, Regras ........................................................................................................................... 2 Fronteira entre Business intelligence e Processos de Negcio .......................................................... 2 Estudo de Caso ......................................................................................................................................... 2 Soluo 1: Entregue o que eles pedem ................................................................................................ 3 Soluo 2: Entregue o que eles precisam ............................................................................................. 3 Concluso................................................................................................................................................... 3 Audincia ................................................................................................................................................... 5 Introduo ao Mecanismo de Soluo ................................................................................................... 5 Sequncia de Ao ................................................................................................................................... 8 Um Exemplo Mais Complicado .............................................................................................................. 10 Recapitulando a Sequncia de Ao .................................................................................................... 11 URL ........................................................................................................................................................... 12
Chamada de Web Servio.................................................................................................................. 12

Chamada Java ......................................................................................................................................... 12 Viso Geral............................................................................................................................................... 16


Introduo............................................................................................................................................ 16 Convenes e Pressupostos Gerais ................................................... Error! Bookmark not defined.

Integrando Relatrios JFreeReport ......................................................... Error! Bookmark not defined.


Definies do JFreeReport.................................................................. Error! Bookmark not defined. Criando a Sequncia de Ao............................................................. Error! Bookmark not defined. Setup do Driver JDBC .......................................................................... Error! Bookmark not defined. Verificando a Integrao do JFreeReport no Pentaho.................... Error! Bookmark not defined. Definies de Relatrio Eclipse BIRT ................................................ Error! Bookmark not defined. Criando a Sequncia de Ao............................................................. Error! Bookmark not defined. Setup do JDBC...................................................................................... Error! Bookmark not defined. Verificando a Intagrao do BIRT Integration ao Pentaho............ Error! Bookmark not defined. Definies de Relatrio JasperReports.............................................. Error! Bookmark not defined. Criando a Sequncia de Ao............................................................. Error! Bookmark not defined. Setup do JDBC...................................................................................... Error! Bookmark not defined. Verificando a Integrao do JasperReports ao Pentaho ................ Error! Bookmark not defined. ChartComponent ................................................................................................................................. 30 CategoryDatasetComponent.............................................................................................................. 33

Integrando Relatrios BIRT...................................................................... Error! Bookmark not defined.

Integrando o JasperReports..................................................................... Error! Bookmark not defined.

Aes ........................................................................................................................................................ 35

Gatilhos (Triggers).................................................................................................................................. 39 Excees (Misfires)............................................................................................................................ 41


MDXLookupRule .................................................................................................................................. 44 SQLLookupRule ................................................................................................................................... 46

Tipos de Dados das Sequncias de Ao ............................................................................................ 52 Tipos de Recursos das Sequncias de Ao ....................................................................................... 54 Definies de Componentes.................................................................................................................. 55
HelloWorldComponent........................................................................................................................ 55 componente-name: HelloWorldComponent .................................................................................... 55 EmailComponent ................................................................................................................................. 56 componente-name: EmailComponent.............................................................................................. 56 JavascriptRule...................................................................................................................................... 57 componente-name: JavascriptRule .................................................................................................. 57 SQLLookupRule ................................................................................................................................... 58 componente-name:.SQLLookupRule................................................................................................ 58 PrintComponent................................................................................................................................... 59 componente-name: PrintComponent ............................................................................................... 59 JobSchedulerComponent ................................................................................................................... 60 SchedulerAdminComponent .............................................................................................................. 60 BIRTReportComponent ...................................................................................................................... 60 JasperReportsComponent ................................................................... Error! Bookmark not defined. ContentRepositoryCleaner ................................................................................................................. 60 componente-name: ContentRepositoryCleaner.............................................................................. 60 SubActionComponent ......................................................................................................................... 61 componente-name: ContentRepositoryCleaner.............................................................................. 61

Abordagem Orientada a Soluo


Introduo
Em nossa experincia ajudando clientes a criar sistemas analticos, encontramos situaes similares muitas vezes. O cenrio sempre diferente, mas a necessidade sempre a mesma: um relatrio entregue ou uma situao particular encontrada nos dados e algo especfico precisa acontecer uma deciso precisa ser tomada, causas devem ser descobertas ou processos iniciados. Nestes casos, a apresentao da informao, anlise e entrega (BI) parte de um processo maior. Este processo existe para resolver um problema de negcio. Esclarecendo: Em geral, a soluo para um problema de negcio um processo que inclui Business intelligence. Ento: o Business intelligence, por si s, no a soluo para o problema. Se o Business intelligence parte do processo, as ferramentas de Business intelligence so tambm parte do processo. A ferramenta de Business intelligence que no entende processo ser difcil de integrar na soluo. A Plataforma Pentaho BI a primeira plataforma de Business intelligence totalmente orientada a processos e a solues. Como podemos demonstrar esta afirmativa?

Workflow no Centro
A Plataforma Pentaho BI tem vrias opes para executar atividades. O mecanismo padro de execuo um seqenciador de fluxos enxuto. Este seqenciador permite ao desenvolvedor construir solues a partir de colees de fluxos, geralmente lineares e sucessivas, utilizando parmetros e alguns mecanismos de looping. Por exemplo: rodar a consulta para encontrar quais departamentos esto acima do oramento, rodar o relatrio para cada departamento, e enviar email de cada relatrio para o gerente do departamento. Quando o negcio requisitar interao do usurio, tarefas em paralelo, deadlines e tratamento de erros, existe suporte para utilizar um amplo mecanismo de workflow. O mecanismo de workflow utiliza a language XML Process Definio Language (XPDL) para executar os Fluxos no sistema. Um exemplo deste tipo de soluo seria um processo de contratao de Recursos humanos novos onde mltiplos departamentos tem de ser notificados sobre a contratao, , aes precisam ser coordenadas e a tarefa final verificar se toda a documentao est completa e aprovada. No caso em que a soluo precisa ser coordenada externamente, qualquer Fluxo definido no sistema disponvel como web services e retorna seus resultados como pacotes SOAP. Isto permite que aes possam ser coordenadas via tecnologia de orquestrao como BPEL workflow. Componentes tambm podem ser embutidos diretamente em uma aplicao Java. Isto pode ser importante se sua soluo precisa ser parte de uma aplicao existente. No importa qual opo de desenvolvimento voc escolha: A plataforma entende a natureza dos processos pois tudo nela definido como um processo. Os processos so definidos em linguagens padro externamente visveis, editveis e customizveis. No existe lgica de negcio escondida. A plataforma construda em processos e definies destes.

Pg 1

Arquitetura Orientada a Servios (SOA)


Isto rapidamente est se tornando sem sentido, pois toda aplicao que aceite chamadas via URLs est declarando que tem a SOA. Quando voc projeta o sistema com um mecanismo de workflow como condutor de toda atividade no sistema, toda operao de cada processo deve ser implementada como um componente separado e reutilizvel que pode ser direcionado a executar a atividade. Isto no somente SOA, mas uma Arquitetura Implementada em Servios (SIA). Toda atividade em todo processo pode ser web servio pois todas as atividades s podero executar como servios. Nao existe outro metodo de invocaao. A regra dos web : invocao. Servios so os blocos de construao de processos de negcio.

Integrao de Processos
Todo processo e atividade no Pentaho BI executa como servio. Se voc deseja chamar um processo ou atividade definida na plataforma de um processo externo executando em outro sistema, voc pode. fcil. Cada atividade no sistema entende como fazer parte de outro processo.

Regras, Regras, Regras


Os processos da plataforma so definidos externamente, mas e as regras que governam o workflow? A XPDL possui suporte para controle de roteamento complexo, e adicionamos suporte para mltipas engines para que a lgica possa ser facilmente integrada. Mltiplas engines so necessrias pois improvavel que a lgica de toda a deciso possa ser definida em apenas um mecanismo. Por exemplo, a regra de negcio que determina a anlise de credito de um cliente pode ser descrita de trs maneiras diferentes: Um simples script: se (customerNo < 3000 ) return Bob else return Mary Um algoritmo complexo baseado nas compras atuais, acordo por nvel de servio, histrico e pagamentos, localizao, etc Uma chamada a um banco de dados ou sistema ERP para buscar este valor Se a anlise de crdito de cada cliente for armazenada no sistema ERP, a manutenao da regra em diferentes sistemas ser redundante e custosa, oferecendo riscos e sem valor adicional. Regras de negcio flexveis so uma parte crtica de processos de negcio automatizados.

Fronteira entre Business Intelligence e Processos de Negcio


A divisao entre business intelligence e processos de negcio flexvel no Pentaho BI. Isto por que esta diviso deve estar a cargo de voc. Se voc tem uma plataforma que define claramente a fronteira entre ela e outro sistemas, voc provavelmente tem uma aplicao silo mais difcil de integrar. O mecanismo de execuo de processos na plataforma baseado totalmente em workflow A Plataforma inclui mltiplas engines de regras Na Plataforma atividades so facilmente integradas a outro processos O caminho inclui entrada de dados manual por usurios

Estudo de Caso
Problema: quando um empregado aparece para trabalhar em uma empresa de sade com uma licena expirada, acontece o seguinte Isto notado e um trabalhador mais caro de uma agencia deve substituir o empregado at sua licena ser renovada

Pg 2

Isto no notado, caso em que a segurana do paciente est em risco e tambm a empresa sujeita a multas etc. Objetivos de Negcio: aumentar a segurana do paciente, reduzir o risco de multas e os gastos com pessoal temporrio de agncias. Processo Corrente: Cada gerente mantm uma lista das datas de expirao de seu departamento. Soluo Proposta: Agendar a execuo de um relatrio de um banco de dados que lista, por departamento, licenas de cada empregado, e as datas de expirao.

Soluo 1: Entregue o que eles pedem


Crie um relatrio de 50 pginas e entregue para cada departamento uma vez por ms. Processo de Negcio resultante: O relatrio no auditado. Se ele no rodar, quanto tempo demora at algum notar? Gerentes de cada departamento devem ler o relatrio e filtrar a informao. Relatrios sao perdidos, gerentes tiram ferias e datas so confundidas. Quando gerentes encontram uma licena por expirar, deixam uma nota para o empregado. Notas so perdidas ou colocadas em lugares errados. Empregados tentam agendar tempo para preparao, aplicao e certificao. Conflitos de agenda ocorrem. Empregados falham na certificao sem tempo para maiores preparaes ou novo teste antes da expirao da licena. Esta soluo incompleta por que somente automatiza a entrega de informao, no ajuda o processo real. O objetivo de negcio fica como sub-produto do relatrio.

Soluo 2: Entregue o que eles precisam


Crie regras de negcio que determinem o lead time requerido para a preparao adequada para cada tipo de licena. Rode um relatrio auditado todo o dia ou semana para listar os empregados dentro deste lead time. Para cada empregado inicie um processo definido de renovao da licena: 1. 2. 3. 4. 5. 6. 7. 8. Entrega da informao eletronicamente para o gerente e o empregado requisitar confirmao eletrnica do recebimento de ambos direcionar o empregado para agendar seu tempo de preparao direcionar o gerente a aprovar a agenda requisitar ao empregado informar as datas dos testes Gerar avisos caso tempo insuficiente para re-test tenha restado requisitar ao gerente para validar a nova licena Entrega notificao no caso de falha ao gerente e agendar nova aplicao.

Oferece relatrios on-line em tempo real do processo de renovao Produza relatrios de auditoria mensais Esta soluo resolve o problema de negcio.

Concluso
Para entregar esta soluo voc precisa de ferramentas de relatrio e anlise que : Suportem regras de negcio Auditem a execuo de relatrios e entrega de informao Integrem com sistemas de workflow Voc tambm precisa de um mecanismo de workflow / processo de negcio que: Lide com escalonamentos baseados em tempo

Pg 3

Audits execuo of atividades within the processo Integre com ferramentas de relatrio e anlise Voc tambm precisa dispor de relatrios de performance em tempo real e histrico do processo. Esta a plataforma do Pentaho BI. A Plataforma Pentaho BI centrada em processos e orientada a soluo. O resto do documento descreve como as engines e componentes da Plataforma Pentaho BI podem ser usadas para criar solues para suas necessidades de Business intelligence.

Pg 4

Construindo Solues
A sesso prvia descreveu nossa abordagem orientada a soluo e seus benefcios. O resto deste documento apresenta a descrio tcnica do Mecanismo de Soluo e os documentos necessrios para construir solues na Plataforma Pentaho BI.

Audincia
Esta sesso direcionada a pessoas que tem interesse em construir solues e contedo e tambm para quem precisar de interface com as pores de desenvolvimento da Plataforma Pentaho BI. Antes de ler este documento, voc deve ler e entender o Artigo Tcnico Pentaho disponvel em SourceForge http://sourceforge.net/projects/pentaho. Este documento tem exemplos e referencias a arquivos distribudos na Plataforma Pentaho BI PreConfigured Install (PCI), instalaao pr-configurada. recomendado que a PCI seja baixada e instalada. Ela tambm est disponvel no SourceForge http://sourceforge.net/projects/pentaho.

Introduo ao Mecanismo de Soluo


O Mecanismo de Soluo um ponto focal point de atividade na Plataforma Pentaho BI. Est colocado entre o mundo externo clientes Web, servios, Monitor do Sistema etc. e a camada de componentes. Veja a figura 1 Diagrama da Arquitetura. Requisies para tarefas vem para o mecanismo de soluo e so roteadas para o componente apropriado ou componentes para execuo. Os seguintes termos sero usados na discusso sobre o Mecanismo de Soluo: Soluo - A Soluo consiste na coleao de documentos que coletivamente definem os processos e atividades do sistema. Estes documentos incluem Definies de Sequencia de ao, definies de processo workflow, definies de relatrio, imagens, regras, consultas, etc. Repositrio de Soluo o local onde as definies de soluo e os metadados correspondentes so armazenadas e mantidas. Requisies feitas a plataforma para que aes sejam executadas dependem da ao estar definida no Repositrio. Mecanismo de Soluo o mecanismo que recupera a definio de uma ao do Repositrio de Soluo e direciona sua execuo. Componente A camada de componente proporciona uma interface padro entre o Mecanismo de Soluo e a aplicao que executa a lgica de negcio. Um componente pode conter todo o cdigo para a execuo de uma tarefa ou ser apenas uma interface para outra aplicao ou sistema. Dados e instrioes para o componente so proporcionadas via uma Definio de Ao. Definio de Ao Uma definio XML especificando os parmetros e recursos necessrios para a execuo de uma tarefa em um componente especfico. A Definio de Ao define qual componente chamar, que dados passar e receber do componente e qualquer informao especifica requerida pelo componente. Uma Definio de Ao no um documento separado, mas parte da Definio da Sequencia de ao. Definio da Sequencia de ao um documento XML que define a interao entre uma ou mais Definies de Ao. Define a menor tarefa completa que o Mecanismo de Soluo pode rodar. Quando o Mecanismo de Soluo solicitado a executar passado um documento de Sequencia de ao para ele. A execuo de uma Sequencia de ao pode ser autnoma ou fazer parte de outra Sequencia de ao. Definies de Sequencia de ao so armazenadas no Repositrio de Soluo. Contexto de Runtime Sequencias de ao so transformadas de XML pelo Mecanismo de Soluo em objetos que sero interpretados pelo Contexto de Runtime. O Contexto de Runtime

Pg 5

mantm um contrato entre o Mecanismo de Soluo e a Sequencia de ao e obriga um contrato entre a Sequencia de ao e os componentes. O diagrama da arquitetura abaixo mostra como o Mecanismo de Soluo, o Repositrio de Soluo , e os componentes se encontram na arquitetura. As Solues, Definies de ao e Definies de Sequencia de ao so armazenadas no Repositrio de Soluo. O Mecanismo de Soluo cria o Contexto de Runtime toda vez que a requisio recebida. Figure 1 Diagrama da Arquitetura Pentaho

Pg 6

System Monitoring SNMP/JMX J2EE Server

Clients Web Browsers Web Service Client SOAP/WSDL HTTP

Inbox Alerter RSS Runtime/ Solution Repository

Single Sign On Services / UDDI Java Server Pages, Servlets, Portlets Navigation Components Solution Engine Auditing Components Others (see text) App Integration Business Rules Analytic Views

JMS

Audit Reports

Data Mining

Dashboards

Pivot Views

Scheduler

Reporting

Workflow

Audit Repository

Inbox

Workflow Engine Scheduler Reporting Engine

KPIs

OLAP Engine

Rules Engines

Data Mart Schedule Repository Data Sources Application Integration / ETL Data Mining Repository

Workflow Repository
Architecture: Server

Application Data
Legend Pentaho Technology Control Flow 3rd Party Open Source Technology Data Flow Customer/3rd Party Technology or Data

Pg 7

Solues em Detalhe
A soluo no um simples documento, mas uma coleo de documentos. um agrupamento lgico de Definies de Sequencia de ao e recursos necessrios. O agrupamento mantido pelo Repositrio de Soluo. Voc pode ver a estrutura do Repositrio de Soluo navegando no diretrio pentaho-solutions dentro da instalao PCI. O local padro : /preconfigured-install/pentaho-solutions. No diretrio pentaho-solutions, so 2 solues pr-definidas, test e samples. A Figure 2 mosta a Sequencia de ao HelloWorld.xaction dentro da soluo samples.

Figure 2 Repositrio de Soluo

Note que existem subdiretrios dentro da soluo test. Os documentos de Sequencia de ao e recursos podem estar localizados em qualquer local dentro do diretrio da soluo (neste caso- test) e em qualquer subpasta deste. Deste modo, podemos agrupar logicamente o contedo. Dentro da soluo test, as Sequencias de ao so agrupadas por tipo de componente; email, relatrio, workflow etc. Em um sistema real, o agrupamento pode ser por departamento, papel ou outra estrutura que faa sentido para a soluo. Para localizar uma Sequencia de ao no repositrio, use o endereo de trs partes: soluo id, path e nome da sequencia de ao. No caso Sequencia de ao HelloWorld o endereo : samples, gettingstarted, HelloWorld.xaction. As duas solues test and samples so disponvels com a PCI ou podem ser baixadas do from SourceForge. A soluo test serve para verificar se os diferentes componentes do sistema esto setados e funcionando corretamente. A soluo samples possui diversos exemplos, os quais oferecem um bom ponto de partida para aprendizado e construo de novas Sequencias de ao. As Sequencias de ao referidas neste documento so localizadas em samples, getting-started.

Sequncia de Ao
A Sequencia de ao um documento XML que define a menor tarefa completa que o Mecanismo de Soluo pode executar. executada por um mecanismo de fluxo de processo muito enxuto que define a ordem de execuo de um ou mais componentes da Plataforma Pentaho BI. Evitamos chamar isto de fluxo de processo por que faltam muitos dos recursos de um verdadeiro mecanismo deste tipo. Ele til para sequenciar tarefas pequenas, lineares e orientadas a sucesso, tal como relatrios e envio por mail. Possui

Pg 8

recursos de lao e chamada de outra Sequencia de ao e eventualmente tem capacidade de executar componentes com condioes. O documento de Sequencia de ao deve ter o sufixo .xaction. Esta uma listagem do Documento de Sequencia de ao HelloWorld.xaction. <action-sequence> <name>HelloWorld.xaction</name> <title>Hello World Action Sequence</title> <version>1</version> <logging-level>DEBUG</logging-level> <documentation> <author>Joe Pentaho</author> <description>The most basic Action Sequence Document</description> <help>Hello World demonstrates the most basic Action Sequence document. It uses the Hello World Component. </help> </documentation> <inputs/> <outputs/> <resources/> <actions> <action-definition> <action-type>Hello World Action</action-type> <action-inputs/> <action-outputs/> <action-resources/> <component-name>HelloWorldComponent</component-name> <component-definition> <quote>(2B || !2B) That is the question</quote> </component-definition> </action-definition> </actions> </action-sequence> Alguns Nodos XML so auto explicativos como author and descrio. Nesta sesso, abordaremos os mais importantes nodos, para uma completa explicao da Sequencia de ao veja o Apndice A. A Sequencia de ao em duas partes principais, o documento principal e os nodos de aes. O documento principal define a interface da Sequencia de ao com o mundo externo. Ele especifica as entradas e recursos que so requeridos pelos componentes referenciados pelo documento e define as sadas que iro estar disponveis quando todos os componentes forem executados. Este exemplo no possui entradas nem sadas nem utiliza recursos. Os nodos de aes contm as Definies de Ao para executar. Existe uma correspondncia um para um entre as Definies de Ao e componentes. O exemplo HelloWorld tem uma Definio de Ao, nomeada Hello World Action, sem inputs nem outputs. O componente que sera carregado e responder a requisio a Java class HelloWorldComponent. Quando o componente carregado, o XML dentro do component-definition passado e os parmetros de entrada ficam disponveis. O Componente HelloWorld no muito empolgante, basicamente faz uma sada Hello World e adiciona o que estiver no nodo quote ao console.

Pg 9

Um Exemplo Mais Complicado


Esta uma listagem do Documento de Sequencia de ao Example1.xaction. <action-sequence> <name>Example1.xaction</name> < - some header nodes deleted - > <inputs> <region type="string"> <default-value>Central</default-value> <sources> <request>REGION</request> <session>aRegion</session> </sources> </region> <from type="string"> <default-value>joepentaho@pentaho.org</default-value> </from> <subject type="string"> <default-value>Pentaho Example1</default-value> </subject> <message-plain type="string"> <default-value> This is an email from the Pentaho BI Platform - Example1 </default-value> </message-plain> </inputs> <outputs/> <resources/> <actions> <action-definition> <action-inputs> <region type="string"/> </action-inputs> <action-outputs> <rule-result type="string"/> </action-outputs> <component-name>JavascriptRule</component-name> <component-definition> <script><![CDATA[ function getManagersEmail( theRegion ) { if ( "Central".equals( theRegion ) ) { return( "joe.pentaho@pentaho.org" ); } return( "jdixon@pentaho.org" ); } getManagersEmail( region ); ]]> </script> </component-definition> </action-definition>

Pg 10

<action-definition> <action-inputs> <to type="string" mapping="rule-result"/> <from type="string"/> <subject type="string"/> <message-plain type="string"/> </action-inputs> <component-name>EmailComponent</component-name> <component-definition/> </action-definition> </actions> </action-sequence> Neste exemplo, a Sequencia de ao tem 4 inputs: region, from, subject e message-plain. Para region, o tipo foi definido como string; tem o padro Central e pode vir de uma ou duas fontes: requisio e sesso. Quando o RuntimeContext resolve a entrada region em runtime, primeiro ir olhar na requisio (provavelmente uma requisio http). Se no encontrar na requisio, ir olhar na sesso (provavelmente uma sesso http). Se no estiver disponvel na sesso, o valor padro ser usado. A ordem em que as fontes so especificadas no Documento XML ser a ordem utilizada na procura. O padro sempre usado como ltimo recurso. As outras entradas somente especificam um valor padro. Isto anlogo a codificar os parmetros como valores constantes. Como o output desta Sequencia de ao um email, no existem parmetros de sada. Existem duas nodos action-defininition para esta sequencia. O primeiro define uma regra JavaScript e requer o parmetro region; ir criar um novo parmetro chamado rule-result. Este novo parmetro ficar disponvel para outro nodo action-defininition na seqncia. Sem entrar a fundo na regra JavaScript, o valor de rule-result ir ser setado para o endereo de email apropriado ao valor da regio. Quando a primeira action-defininition completa, a segunda ir executar. Ela define uma interao com o componente Email. Este componente requer 4 entradas: to, from, subject e message-plain. Voc pode ter notado que as entradas (action-inputs): from, subject e message-plain so especificadas na sesso inputs do cabealho da Sequencia de ao. O RuntimeContext ir pegar os valores de l e disponibiliza-los para o Componente Email como entregou a region ao Componente JavaScript. A fonte da entrada to no est definida diretamente. definida indiretamente como o atributo mapping. Este atributo especifica ao RuntimeContext para utilizar o valor de rule-result que foi gerado pela regra JavaScript e usa como entrada no componente to.

Recapitulando a Sequncia de Ao
As entradas, sadas e recursos no header da Sequencia de ao definem um contrato entre a Sequencia de ao e o mundo externo. A seqncia requisita que as entradas e recursos sejam passados e ir retornar as sadas especificadas. A action-defininition define um contrato entre cada componente e a Sequencia de ao. As action-inputs e action-recursos definem parmetros que cada componente necessita para executar. As action-outputs definem quais parmetros estaro disponveis aps o componente completar a execuo. Sadas de um componente podem ser usadas como entrada a outro componente. O atributo mapping (mapeamento) das action-inputs permite que sadas de um componente tenham nomes diferentes como entradas em outro componente. Especificar as relaes entre entradas/sadas e os tipos de dados permite ao sistema validar uma Sequencia de ao sem precisar executar os componentes. Uma completa soluo pode ser validada e protegida de modificaes nos Documentos de Sequencia de ao e eliminados erros de ligao entre estes documentos.

Pg 11

Executando a Soluo
O Documento de Sequencia de ao define as tarefas a serem executadas, a ordem de execuo, a entrada de dados requerida e as sadas de dados disponveis. So armazenadas no Repositrio de Soluo e so localizadas especificando o id da soluo id, o caminho e o nome da sequencia de ao. Quando a Sequencia de ao executada, o Mecanismo de Soluo cria um Contexto de Runtime que proporciona o ambiente de execuo. O Contexto de Runtime contm os parmetros de entrada, coordena acesso a recursos, armazena novos dados e contedo gerado e mantm o estado da Sequencia de ao em execuo. As aes so completadas, suas sadas e contedo gerado so armazenadas no Contexto de Runtime. Quando a Sequencia de ao finaliza a execuo, a poro de dados do Contexto de Runtime mantida (persistida) no Repositrio de Runtime. Quando um novo Contexto de Runtime criado, ele ganha um identificador de instncia nico. Este id a chave que identifica o Contexto de Runtime quando este for persistido. O id de instncia tambm usado para auditoria e pode ser usado para rastrear qual o componente que o criou (componente pai). Certamente, existe um mecanismo de limpeza dos dados do repositrio de runtime. A Sequencia de ao no precisa receber um novo Contexto de Runtime cada vez que for executada. Pode receber o id de uma instncia prvia de modo que todos os dados e contedo dos Documento de Sequencia de ao executados anteriores fica disponvel. Aqui quando o contrato entre o Documento de Sequencia de ao se torna importante. Desde que uma sada de um Documento de Sequencia de ao anterior tenha sido especificada, estar disponvel como entrada a uma Sequencia de ao posterior. Esta habilidade de encadear Documentos de Sequencia de ao atravs do mesmo Contexto de Runtime se torna poderosa quando utilizada junto com o mecanismo de workflow. Existem vrias maneiras de executar a soluo; via URL, Java Code ou chamada de Web Servio.

URL
Os exemplos contidos na instalao pr-configurada so acionados via URL utilizando o servlet ViewAction (org.pentaho.ui.servlet.ViewAction) servlet. A URL seguinte ir acionar a Sequencia de ao HelloWorld:
http://localhost:8080/pentaho/ViewAction?&solution=samples&path=getting-started&action=HelloWorld.xaction

O resultado retornado depende do Documento de Sequencia de ao. Voc poder visualizar um relatrio, uma mensagem de texto ou somente Action Successful. Os seguintes parmetros podem ser passados em uma URL: solution, path, action a localizaao do Documento de Sequencia de ao a ser carregado. instance_id o instance Id de um prvio Contexto de Runtime debug setar true para que a informao de debug seja guardada no log de execuo log.

Chamada de Web Servio (Web Service)


No grupo de exemplos Settings and Services da instalao pr-configurada existe um Exemplo Web Servio. Ainda uma chamada URL call, desta vez ao servlet ServiceAction (org.pentaho.ui.servlet.HttpWebService). A URL seguinte ir acionar a Sequencia de ao HelloWorld:
http://localhost:8080/pentaho/ServiceAction?solution=samples&path=getting-started&action=HelloWorld.xaction

neste caso, o resultado retornado uma resposta XML SOAP. Os seguintes parmetros podem ser passados via URL: solution, path, action a localizaao do Documento de Sequencia de ao a ser carregado. instance_id o instance Id de um prvio Contexto de Runtime debug setar true para que a informao de debug seja guardada no log de execuo.

Pg 12

Chamada Java
A Sequencia de ao pode ser executada diretamente de uma aplicao Java. Para um exemplo de como fazer isto, abra o arquivo Java org.pentaho.test.RuntimeTest.java e olhe o teste JUnit para HelloWorld.

Parmetros
Existem trs tipos de parmetros que o Documento de Sequencia de ao entende; entradas, sadas e recursos. Entradas e sadas so variveis de tipo de dados especfico tal como string ou property-map (veja o Apndice B para tipos de dados vlidos). Recursos so similares a entradas exceto que especificam um tipo mime e caminho. Um valor padro no pode ser especificado para recursos. Tipicamente recursos representam grandes volumes de dados tal como definies de relatrio ou images (veja o Apndice B para tipos de recursos vlidos.) Parmetros podem vir de quatro origens; runtime, requisio, sesso, globais e padro. parmetros de Runtime so parmetros que so armazenados no Contexto de Runtime. Lembre, the Contexto de Runtime armazena as entradas e sadas de instncias anteriores e as torna disponvel para execues futuras da mesma id de instncia. Parmetros de Requisio so pares nome-valor especificados em uma URL. parmetros de Sesso so variveis armazenadas na sesso do usurio e podem conter valores nicos para cada usurio. parmetros Globais so similares aos parmetros de sesso exceto que tem os mesmos valores para todos os usurios. Valores Padro so especificados no Documento de Sequencia de ao e so usados como ltimo recurso. Parmetros Sesso e Global podem ser usados para proporcionar filtragem segura de dados dentro de uma Sequencia de ao. Um parmetro de sesso iniciado executando uma sequencia de ao quando o usurio loga no sistema. A Sequencia de ao chamada no login pode ser setada para realizar uma consulta usando o nome de login do usurio dentro de uma clusula where. O resultado armazenado na sesso de usurio e fica disponvel Sequencias de ao subsequentes. Parmetros Globais so iniciados quando o sistema inicia e so disponvel para todos os usurios. Veja o documento Assegurando Acesso a Dados com Filtros de Sesso e Globais para informao de como setar os filters e us-los. Aqui est um exemplo de entradas tipo sesso em um Documento de Sequencia de ao: <inputs> <region type="string"> <default-value>Central</default-value> <sources> <request>REGION</request> <runtime>aRegion</runtime> </sources> </region> </inputs> Este exemplo indica que o Documento de Sequencia de ao requer o parmetro region (sensvel ao Caps Lock.) Quando executada, o Contexto de Runtime primeiro ir verificar se o parmetro de nome REGION existe na requisio. Se a Sequencia de ao foi lanada via URL, e existe parmetro REGION=xxx especificado, ento este valor (xxx) ser substitudo pela entrada region. Se no encontrar o parmetro na requisio, ir procurar em seus dados de runtime por um parmetro de nome aRegion. Se no encontrar no seu Contexto de Runtime este Dado, o valor Central ser usado. O Contexto de Runtime sempre procura pelas fontes na ordem em que so especificadas e pega o padro por ltimo. Se nenhum padro for especificado, ento a Sequencia de ao ir retornar erro. Existem dois parmetros implcitos instance-id e solution-id que esto sempre disponvel e no precisam ser especificados como entradas ou sadas. Certamente voc pode imaginar o que eles so.

Pg 13

Componentes
O Documento de Sequencia de ao a definio, o Contexto de Runtime proporciona um ambiente de execuo e os Componentes so a lgica de negcio. Um Componente executa uma funo simples, um grupo de funes relacionadas ou uma ponte entre a Plataforma Pentaho BI e uma aplicao externa. O componente jFree Reports um exemplo de componente que faz interface da plataforma com o mecanismo de relatrio jFree Reports. Existem duas funes principais que um Componente chamado a executar validar e executar. Validar chamado para verificar se as so validas e todos os recursos requridos para executar esto disponveis. Executar realmente realiza a ao. O nodo action-defininition no Documento de Sequencia de ao define como o componente deve funcionar. o local para definir e mapear entradas, sadas e outro metadados ou ajustes que o componente ir requerer quando executado. O nome do componente que executa a Definio de Ao identificado usando o nodo component-name. O nome o nome de uma Java class que carregada dinamicamente durante o runtime. Quando se referir aos componentes embutidos no Pentaho, o nome completo do componente no deve ser usado, somente o nome da classe. Por exemplo, use EmailComponent ao invs de org.pentaho.plugin.email.EmailComponent. Entradas Os nodos action-inputs e action-resources definem os parmetros passados ao componente quando executar. Alguns componentes tem entradas que devem ser disponveis ou erro de runtime ir ocorrer. Algumas entradas podem ser especificadas mas so opcionais. Por exemplo, o Componente Email requer a to mas o cc opcional. Existem muitas maneiras de satisfazer uma entrada requerida. Pode ser passado como parmetro com mesmo nome para o componente. Pode ser mapeado para um nome diferente e passado ao componente. Pode ser colocado no cdigo como constante ou em alguns casos pode ser perguntado. Por padro o email componente tem a entrada assim: <action-inputs> <to type="string" /> . . . </action-inputs> Entrada Mapping O que acontece se o componente requer uma entrada nomeada x e voc deseja passar um parmetro nomeada y? Voc pode mapear qualquer entrada para um nome diferente usando o atributo mapping. Novamente, usando nosso Email Componente exemplo, digamos que exista uma regra JavaScript que realiza uma consulta e retorna o email de um usurio em um parmetro de sada nomeado EMAIL. Digamos que voc deseja usar o parmetro como parmetro to no Componente Email. O XML ir parecer com o seguinte: <action-inputs> <to type="string" mapping="EMAIL"/> . . . </action-inputs> Valores Constantes como Entradas Se o componente requer um parmetro de entrada e no encontrado em action- inputs, o componente ir automaticamente procurar no nodo XML como o mesmo nome, na sesso component-definition. Se encontrar, ir usar o valor dali. O XML parece o seguinte: <action-inputs> </action-inputs> <component-definition> <to>joe.pentaho@pentaho.org</to> </component-definition>

Pg 14

Parmetros Permutveis Todos os componentes tem a habilidade de utilizar o mecanismo embutido de template para permutar o texto usando parmetros de entrada. Isto significa que um valor constante pode ser modificado usando o valor de uma action-input. Vejamos um exemplo:

<action-inputs> <EMAIL type="string"/> . . . </action-inputs> <component-definition> <to>{EMAIL}@pentaho.org</to> </component-definition> The texto entre chaves {} ser substitudo por um parmetro de entrada de mesmo nome. Neste exemplo, se o valor da action-input EMAIL for joe.pentaho ento o valor do parmetro passado to ao componente email ser joe.pentaho@pentaho.org. Perguntando ao Usurio (Prompting) Alguns componentes iro perguntar por parmetros requeridos. A pergunta ser gerada em runtime se o mecanismo de chamada permitir. Por exemplo, o Componente Email requer um parmetro to. Se este parmetro for especificado como action-input mas tiver valor nulo, o Componente ir perguntar ao runtime se permitido perguntar ao usurio. Se a Sequencia de ao executada tiver sido acionada de um web browser, o runtime ir responder true e o Email Componente ir pedir ao runtime para perguntar ao usurio pelo to. Se a Sequencia de ao estiver rodadndo como web servio, o runtime retorna false e o Email Componente ir gerar um erro de parmetro e retornar. O action- outputs define quais parmetros sero salvos no Contexto de Runtime e tornados disponveis a outro Componente quando o primeiro componente termina a execuo. Como um action-input, o actionoutput pode ser mapeado para outro nome varivel usando o mapping. O nodo component-definition proporciona local especfico para opes ou parmetros de qualquer Componente. O restante deste documento descreve entradas, recursos e sadas requeridos por cada um dos componentes disponveis na Plataforma Pentaho BI. Veja o Apndice C para entrada, sada e definio especficas requeridas de cada Componente.

Existem Ferramentas para Ajudar?


Se parece complicado, existe uma maneira mais fcil - o Pentaho Design Studio. Ele contm um ambiente grfico para projetar Sequencias de ao. Solues podem ser montadas sem nenhum conhecimento do XML. Entradas podem ser arrastadas de um componente e largadas no seguinte. Este um bom momento para voc testar o Design Studio. Voc pode se referir aos captulos seguintes somente quando necessrio. Faca o Download da ltima verso e guia do usurio em http://sourceforge.net/project/showfiles.php?group_id=140317.

Pg 15

Integrando seus prprios relatrios


Viso Geral
Introduo
Bem, voc deve construir seus prprios relatrios usando JFreeReport, Eclipse BIRT ou JasperReports que usa um formato prprio de dados e agora voc se pergunta: Como eu vou integrar estes relatrios com a plataforma de BI do Pentaho? No se preocupe, vamos ensin-lo. O Pentaho possui familiaridade com essas ferramentas para relatrio, seja JFreeReport, JasperReports ou Eclipse BIRT e ele assume que voc tenha disponvel os seguintes recursos: Um relatrio aprovado e codificado em XML (.xml do JFreeReport, .rptdesign do Eclipse BIRT ou um .jrxml do JasperReports). Aprovado significa que voc j tenha testado o relatrio fora da plataforma do Pentaho BI e que funcionou corretamente. O driver JDBC com exteno .jar do banco de dados que voc est usando.

Nota: O JFreeReport desenvolvido e mantido pelo Pentaho e por isso o preferido e mais suportado software de engenharia de relatrios para a plataforma do Pentaho.

Suposies e Convenes gerais


Este guia assume que as seguintes condies esto satisfeitas: Que o Pentaho j esteja instalado, configurado e pronto para uso; Todas as barras (/) neste documento estaro inclinadas para a direita. Quem usa a plataforma Windows dever corrigi-las para a barra inclinada para a esquerda (\), salvo em casos especficos que sero comentados; O diretrio de instalao pr-configurado no Pentaho ser referenciado neste documento como {PCI}. Onde voc encontrar caminhos de diretrios especficos, considere-os como subdiretrios do diretrio de instalao como neste exemplo: {PCI}/jboss/server/default/deploy. Sendo assim, se voc instalou a configurao padro do Pentaho no drive C do Windows na pasta chamada pentaho-pci, ento no seu caso a expresso {PCI}/ seria C:\pentaho-pci\; Que o leitor leu e compreendeu a sesso anterior A Seqncia de Ao, Apndice A- Seqncia de Ao XML nos detalhes, Apndice B com respeito s seqncias de aes, formato e contedo;

Integrando Relatrios com JFreeReport


Para maiores informaes sobre como usar o JFreeReport na plataforma do Pentaho por favor leia o captulo Guia do Usurio para Relatrio com o Assistente.

Definindo Relatrios no JFreeReport


O JFreeReport utiliza o padro XML para definies de relatrios e estas definies so salvas em arquivos com a extenso .xml, porm esta extenso no obrigatria. O Pentaho JFreeReportComponent (org.pentaho.plugin.jfree.JFReeReportComponent) usa as definies do relatrio junto com seus dados para produzir um formato de sada compreensvel. Os formatos de sada gerados pelo JFreeReport so HTML, PDF, CSV, XLS e RTF.

Pg 16

O JFreeReport abstrai esses dados de uma Java TableModel (tabela modelo). H uma implementao de TableModel sob medida na plataforma Pentaho que fornece uma interface amigvel e uma eficiente performance operacional. Tendo em vista que o JFreeReport opera de acordo com predefinies e com uma TableModel, no h outro jeito de parametrizao no JFreeReport. Isto realizado no actionsequence (seqncia de aes) e na prpria query em SQL. Usando o Pentaho Report Design Wizard (assistente para criao de relatrios do Pentaho) voc poder criar definies de JFreeReport e tambm uma seqncia bsica de aes. Em um exemplo simples, crie um relatrio em uma template (moldura) vazia e introduza uma query SQL com o seu banco de dados.

A tela acima mostra uma query SQL parametrizada para usar com o Report Design Wizard (Assistente para criao de relatrios). A coluna REGION o que ns estamos usando como nosso parmetro ou condio. O nome do parmetro tambm REGION, mas essa igualdade no necessria. Na verso atual, o assistente no tem a habilidade de informar ao usurio sobre valores de parmetros, sendo assim o valor padro Eastern (oeste) foi sugerido. A especificao completa do parmetro na query {REGION=Eastern}. Quando o relatrio executado pelo Report Design Wizard o valor do parmetro REGION trocado com o valor padro especificado como Eatern (oeste). Quando o relatrio publicado para uso na plataforma Pentaho, o parmetro REGION instalado na action-sequence (seqncia de ao) e o usurio ser alertado para fornecer um valor. A action-sequence gerada pelo Report Design Wizard pode ser mais customizada pelo Pentaho Design Studio.

Criando a Seqncia de Ao (Action Sequence)


Uma vez que voc verificou que o relatrio est trabalhando sem problemas no Report Design Wizard, voc pode descansar seguro que ele estar apto para funcionar com a plataforma Pentaho. A razo disso que o Report Design Wizard executa o relatrio em uma verso autnoma da plataforma Pentaho. No h necessidade de criar uma action-sequence uma vez que ele tenha sido gerado automaticamente pelo Assistente. Entretanto, se voc tiver uma definio de relatrio criada a mo no JFreeReport ou em outra ferramenta, ns lhe mostraremos uma action-sequence que o ajudar a montar um relatrio bsico parametrizado. Veja:
<action-sequence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <name>JFreeReport-WizardReport.xaction</name> <version>1</version> <title>%title</title> <documentation> <author>Report Design Wizard</author> <description><![CDATA[%description]]></description> <icon>PentahoReporting.png</icon> <help>This action-sequence was generated by the Report Design Wizard. To edit this action-sequence use the Pentaho Design Studio.</help> <result-type>report</result-type> </documentation> <inputs> <output-type type="string"> <default-value>html</default-value> <sources> <request>type</request> </sources>

Pg 17

</output-type> <REGION type="string"> <default-value/> <sources> <request>REGION</request> </sources> </REGION> </inputs> <outputs> <report type="content"> <destinations> <response>content</response> </destinations> </report> </outputs> <resources> <report-definition> <solution-file> <location>JFreeReport-WizardReport.xml</location> <mime-type>text/xml</mime-type> </solution-file> </report-definition> </resources> <actions> <action-definition> <action-inputs> <output-type type="string"/> <REGION type="string"/> </action-inputs> <action-outputs> <report type="content"/> </action-outputs> <component-name>JFreeReportComponent</component-name> <action-type>report</action-type> <component-definition> <source>sql</source> <live>true</live> <jndi>SampleData</jndi> <query><![CDATA[select * from quadrant_actuals where REGION in ('{REGION}')]]></query> </component-definition> </action-definition> </actions> </action-sequence>

Instalao do JDBC Driver


Se voc est usando um driver de banco de dados, sem ser da Hypersonic, voc necessitar configurar o JBoss PCI para us-lo. V at a seo Jasper em Configuraes JDBC para mais detalhes.

Verificando a Integridade do JFreeReport na Plataforma Pentaho


Neste ponto o relatrio deve estar pronto para uso. Aponte o seu navegador Internet para o endereo do Pentaho (que normalmente seria http://localhost:8080). Navegue at o relatrio que voc criou no grupo Reporting Examples (menu Exemplos de Relatrio).

Pg 18

Quando voc entrar no relatrio, uma pgina padro gerada solicitando a voc que digite um valor para o parmetro REGION que a condio para pesquisa e gerao do relatrio.

Uma vez que voc tenha preenchido o valor, o relatrio ser gerado e dependendo do tipo de sada no action-sequence voc ver seu relatrio no formato desejado. O exemplo acima mostra um relatrio em HTML.

Integrando Relatrios BIRT


Definies de Relatrios no Eclipse BIRT
Um arquivo de relatrio no Eclipse BIRT (report.rptdesign) so simplesmente arquivos no formato XML com uma extenso esquisita. A extenso permitir que o Eclipse IDE reconhea o arquivo como um relatrio do BIRT. O componente do Pentaho BIRTReportComponent (org.pentaho.plugin.eclipsebirt.BIRTReportComponent) capaz de executar esses relatrios e produzir sadas nos formatos HTML, PDF, FO e FOP. Os parmetros do Eclipse BIRT so definidos nas definies do relatrio como Scalar Parameters (parmetros escalares). No BIRT um parmetro deve estar inserido no Data Set. Isso bom quando criamos um Data Set ou enquanto editamos um Data Set j existente. H uma seo chamada Parameters no editor do Data Set onde voc definir seus parmetros. Quando o parmetro definido o valor padro deve seguir a seguinte conveno: params[SOME_PARAMETER]. O SOME_PARAMETER deve coincidir com o nome de um parmetro de relatrio conforme tenha sido definido na seo Report Parameters do Data Explorer no BIRT.

Pg 19

No exemplo acima, com um parmetro de relatrio nomeado como REGION, o mesmo foi definido conforme mostramos a seguir.

Pg 20

Criando uma Seqncia de Ao (Action Sequence)


Aps verificar que o relatrio no BIRT est correto podemos com segurana utiliza-lo como uma soluo Pentaho. Copie o relatrio do BIRT para {PCI}/pentaho-solutions/samples/reporting. O que ns precisamos fazer agora criar um documento XML de seqncia de ao e grava-lo em {PCI}/pentahosolutions/samples/reporting. Este documento composto de diversas sees: documentao, entradas, sadas, recursos e definies de ao. Certifique-se que o nome do Documento de seqncia de ao deve combinar com a Tag XML <name> nele contida. Documentao: Esta sesso est reservada para voc incluir informaes do autor, descrio, um cone para representar a seqncia de ao, um link (URL) para uma pgina de ajuda e um Result-Type (tipo de resultado). Neste exemplo, ns especificamos relatrio como um ResultType.
<documentation> <author>Michael D'Amour</author> <description>BIRT Report with Parameters</description> <icon>reporting.png</icon> <help></help> <result-type>report</result-type> </documentation>

Entradas: H 2 entradas: Output-Type (tipo de sada) e REGION (Regio). Observe que a entrada REGION tem o mesmo nome do parmetro de relatrio do BIRT. Isto importante. O output-type ou tipo de sada no exemplo abaixo html. Outros tipos de sadas aceitveis so PDF, FO e FOP.
<inputs> <output-type type="string"> <default-value>html</default-value> <sources> <request>type</request> </sources> </output-type> <REGION type="string"> <default-value></default-value> <sources> <request>REGION</request> </sources> </REGION> </inputs>

Recursos: Nesta sesso ns definimos um report-definition (definio de relatrio) que aponta para o arquivo XML .rptdesign do BIRT.
<resources> <report-definition> <solution-file> <location>BIRT-report.rptdesign</location> <mime-type>text/xml</mime-type> </solution-file> </report-definition> </resources>

Aes: Neste exemplo ns temos somente uma action-definition (definio de ao). O component-name (nome do componente) identifica a classe Java que efetua a ao. Para o BIRT os relatrios usam o nome "BIRTReportComponent". H duas entradas nesta ao: a output-type (tipo de sada) e a REGION (regio). Estas entradas so definidas na seo de entradas do documento action-sequence (seqncia de aes).
<actions> <action-definition>

Pg 21

<action-inputs> <output-type type="string"/> <REGION type="string"/> </action-inputs> <action-outputs> </action-outputs> <component-name>BIRTReportComponent</component-name> <action-type>report</action-type> <component-definition> </component-definition> </action-definition> </actions>

Todo documento de seqncia de ao utilizado no exemplo mostrado abaixo:


<action-sequence> <name>report.xaction</name> <version>1</version> <title>Parameterized BIRT Report</title> <documentation> <author>Michael D'Amour</author> <description> BIRT Report with Parameters </description> <icon>reporting.png</icon> <help></help> <result-type>report</result-type> </documentation> <inputs> <output-type type="string"> <default-value>html</default-value> <sources> <request>type</request> </sources> </output-type> <REGION type="string"> <default-value></default-value> <sources> <request>REGION</request> </sources> </REGION> </inputs> <outputs> </outputs> <resources> <report-definition> <solution-file> <location>report.rptdesign</location> <mime-type>text/xml</mime-type> </solution-file> </report-definition> </resources> <actions> <action-definition> <action-inputs> <output-type type="string"/> <REGION type="string"/> </action-inputs> <action-outputs> </action-outputs> <component-name>BIRTReportComponent</component-name> <action-type>report</action-type> <component-definition> </component-definition> </action-definition> </actions> </action-sequence>

Pg 22

Instalando o Driver JDBC


O gerenciador de relatrios BIRT contm informaes de conexo JDBC que sero usadas pelo BIRT para gerar relatrios. J que estamos gerando os relatrios de dentro da estrutura do Pentaho, ns devemos pr o drive JDBC para o banco de dados que estamos usando na pasta {PCI}/jboss/server/default/lib.

Verificando a Integrao do BIRT com a Plataforma do Pentaho


Neste ponto o relatrio deve estar pronto para uso. Aponte o seu navegador web para o seu endereo de Host (ou PCI), que numa instalao de demonstrao seria http://localhost:8080, e navegue no relatrio que voc criou sob o grupo Reporting Examples.

Neste ponto voc alertado para escolher um dos parmetros ou opes de relatrio. Escolha a opo e clique em Submit.

Sucesso! Agora possvel ver o relatrio gerado em HTML.

Pg 23

Integrando Relatrios Jasper (JasperReports)


Definies para Relatrio no JasperReports
Arquivos com definies para criao de relatrios (report.jrxml) do JasperReports so tambm documentos XML com uma extenso no mnimo extica. No JasperReports os arquivos com a extenso .jrxml so considerados como cdigo fonte do seu relatrio. O componente de relatrio do Pentaho chamado JasperReportsComponent (org.pentaho.plugin.jasperreports.JasperReportsComponent) o encarregado de efetuar a compilao do relatrio no formato .jrxml e de tudo mais que for necessrio para que esteja utilizvel. O JasperReportsComponent do Pentaho permite a execuo destes relatrios e permite reproduzir os resultados nos formatos HTML ou PDF. Os parmetros do JasperReports ficam nas definies do prprio relatrio XML. Se voc est usando iReport para criar seus JasperReports, voc deve criar parmetros em seu Object Library (vide figura a seguir) que possa referenciar o parmetro da query do seu relatrio.

O relatrio acima est usando um parmetro nomeado como STATE. Para que o usurio seja instrudo a informar o valor do parmetro STATE na soluo Pentaho, voc deve selecionar a opo Is for prompting (solicitar digitao) ao criar o parmetro, como mostra a figura a seguir:

Pg 24

Criando uma Seqncia de Ao (Action Sequence)


Agora podemos introduzir no Pentaho o relatrio criado no JasperReport. Copie o arquivo de extenso jrxml para {PCI}/pentaho-solutions/samples/reporting. O que ns precisamos fazer agora criar um documento XML de seqncia de ao do Pentaho e salv-lo em {PCI}/pentahosolutions/samples/reporting. Este documento formado de vrias sees: Documentao, entradas, sadas, recursos e definies de aes. Observe que o nome do documento de seqncia de ao deve combinar a tag XML <name> com o seu prprio nome. A seguir estaremos detalhando cada seo. Documentao: Esta seo te conduzir a incluir informaes do autor, descrio, um cone que represente a seqncia de ao, um endereo web para uma pgina de ajuda e o tipo de resultado (result-type). Neste exemplo ns especificamos report (relatrio) como o tipo de resultado.

<documentation> <author>Angelo Rodriguez</author> <description>Example of how to add a new Jasper Report to a solution</description> <icon>reporting.png</icon> <help></help> <result-type>report</result-type> </documentation>

Entradas: H 2 entradas: Output-Type (tipo de sada) e STATE. Observe que a entrada STATE tem o mesmo nome do parmetro de relatrio que est sendo usado pelo JasperReport. Isso importante. O output-type no exemplo a seguir em html. Outro tipo de sada opcional o PDF.
<inputs> <output-type type="string"> <default-value>html</default-value> <sources> <request>type</request> </sources> </output-type> <STATE type="string"> <default-value></default-value> <sources> <request>STATE</request>

Pg 25

</sources> </STATE> </inputs>

Recursos: Nesta seo ns criamos uma report-definition (definio de relatrio) que aponta para o arquivo XML de extenso .jrxml do JasperReport:
<resources> <report-definition> <solution-file> <location>report.jrxml</location> <mime-type>text/xml</mime-type> </solution-file> </report-definition> </resources>

Aes: Neste exemplo temos somente uma definio de ao. o nome do componente que identifica a classe Java que efetua a ao. No JasperReports usa-se JasperReportsComponent. H 2 entradas nesta seo: O tipo de sada (output-type) e o STATE. Estas entradas esto definidas na seo de entradas do documento de seqncia de aes.
<actions> <action-definition> <action-inputs> <output-type type="string"/> <STATE type="string"/> </action-inputs> <action-outputs> </action-outputs> <component-name>JasperReportsComponent</component-name> <action-type>report</action-type> <component-definition> </component-definition> </action-definition> </actions>

Abaixo o original inteiro do documento de seqncia de ao usado neste exemplo:


<action-sequence> <name>report.xaction</name> <version>1</version> <title>Sample MySql Report</title> <documentation> <author>Angelo Rodriguez</author> <description>Example of how to add a new Jasper Report to a solution</description> <icon>reporting.png</icon> <help></help> <result-type>report</result-type> </documentation> <inputs> <output-type type="string"> <default-value>html</default-value> <sources> <request>type</request> </sources> </output-type> <STATE type="string"> <default-value></default-value> <sources> <request>STATE</request> </sources> </STATE> </inputs> <outputs> </outputs> <resources> <report-definition> <solution-file>

Pg 26

<location>report.jrxml</location> <mime-type>text/xml</mime-type> </solution-file> </report-definition> </resources> <actions> <action-definition> <action-inputs> <output-type type="string"/> <STATE type="string"/> </action-inputs> <action-outputs> </action-outputs> <component-name>JasperReportsComponent</component-name> <action-type>report</action-type> <component-definition> <jndiUrl>MySqlDS</jndiUrl> </component-definition> </action-definition> </actions> </action-sequence>

Instalao do Driver JDBC


J que estamos gerando os relatrios dentro do Pentaho framework, devemos ento utilizar o driver JDBC com o banco de dados desejado em {PCI}/jboss/server/default/lib. Ao contrrio das definies de relatrio do BIRT, arquivos .jrxml no contm as definies de conexo com o banco de dados para o relatrio. Esta informao necessita ser especificada na seqncia da ao. Como mostrado acima, a localizao do banco de dados pode ser definida dentro das definies de ao como segue:
<component-definition> <driver>com.mysql.jdbc.Driver</driver> <connection>jdbc:mysql://localhost:3306/sampledata</connection> <user-id>jim</user-id> <password>password</password> </component-definition>

Como alternativa, o banco de dados pode ser identificado usando um nome de JNDI como segue:
<component-definition> <jndi>MySqlDS</jndi> </component-definition>

Se voc pretende usar JNDI para identificar um relatrio de banco de dados, voc necessitar configurar o JBoss para mapear o nome do JNDI para o seu banco de dados como segue: Crie um arquivo no formato xxxx-ds.xml para o seu tipo de banco de dados em {PCI}/jboss/server/default/deploy. No exemplo a seguir criaremos um arquivo mysql-ds.xml com o seguinte contedo:
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>MySqlDS</jndi-name> <connection-url>jdbc:mysql://localhost:3306/sampledata</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>jim</user-name> <password>password</password> <exception-sorter-class-name> org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter </exception-sorter-class-name> <metadata> <type-mapping>mySQL</type-mapping>

Pg 27

</metadata> </local-tx-datasource> </datasources>

Adicione uma referncia do recurso para {PCI}/jboss/server/default/deploy/pentaho.war/WEBINF/web.xml.


<resource-ref> <description>MySql Connection</description> <res-ref-name>jdbc/MySqlDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>

Adicione uma referncia do recurso para {PCI}/jboss/server/default/deploy/pentaho.war/WEBINF/jboss-web.xml.


<resource-ref> <res-ref-name>jdbc/MySqlDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <jndi-name>java:/MySqlDS</jndi-name> </resource-ref>

Verificando a Integrao JasperReports com a Plataforma Pentaho


Reinicie o seu Pentaho Server executando {PCI}/stop_pentaho e depois {PCI}/start_pentaho. Neste ponto o relatrio deve estar conectado e pronto para uso. Aponte o seu navegador web para a sua pgina de incio (que deve ser http://localhost:8080). Navegue at o relatrio que voc criou dentro do grupo Lista de Exemplos (Reporting Examples).

Neste ponto voc informa o parmetro.

Pg 28

Finalmente alcanamos o nosso objetivo. Nesta figura podemos ver o resultado gerado em HTML.

Pg 29

Grficos
The Plataforma Pentaho BI currently employs JFreeChart as its charting mecanismo. The implementation of the mecanismo currently includes UI componentes for the following charts: Dial, Pie, Pie Grid, Bar Chart, Line, e Area. Cada chart componente pode create at least 1 tipo of chart. Several of the chart componentes pode create muitos chart types. Certain charts (where it makes sense) pode ser rendered as stacked e three dimensional. The plataforma charts render themselves as XML e then the XML is transformed to HTML via the use of an .xslt transformation.

ChartComponent
The ChartComponent is a UI componente that pode create a variety of charts including Bar, Line, Pie, Pie Grid, e Area. Where applicable there so several options that pode ser applied. The following sequencia de ao utiliza the sada from an SQLLookupRule as the entrada for a ChartComponent. <action-sequence> <nome>Chart.xaction</nome> <title>Padro Title</title> <version>1</version> <logging-level>DEBUG</logging-level> <documentation> <author>Brian C Hagan</author> <descrio>Padro Descrio</descrio> <icon>JFree-quadrant-oramento-hsql.png</icon> <help>Help</help> <result-tipo>regra</result-tipo> </documentation> <entradas> <chart-tipo tipo="string"> <padro-valor>.png</padro-valor> <sources> <requisio>tipo</requisio> </sources> </chart-tipo> </entradas> <aes> <action-defininition> <action-sadas> <result-set tipo="list" /> </action-sadas> <componente-nome>SQLLookupRule</componente-nome> <action-tipo>regra</action-tipo> <componente-definio> <source>sql</source> <live>true</live> <jndi>SampleData</jndi> <consulta> <![CDATA[select QUADRANT_ACTUALS.REGION, QUADRANT_ACTUALS.DEPARTAMENTO, QUADRANT_ACTUALS.POSITIONTITLE, QUADRANT_ACTUALS.ACTUAL, QUADRANT_ACTUALS.ORAMENTO from QUADRANT_ACTUALS order por QUADRANT_ACTUALS.REGION, QUADRANT_ACTUALS.DEPARTAMENTO]]> </consulta>

Pg 30

</componente-definio> </action-defininition> <action-defininition> <action-entradas> <sada-tipo tipo="string" mapping="chart-tipo" /> <result-sada tipo="arquivo" /> <chart-dados tipo="list" mapping="result-set" /> </action-entradas> <action-sadas> <chart-sada tipo="string" /> <base-url tipo="string" /> </action-sadas> <componente-nome>ChartComponent</componente-nome> <action-tipo>relatrio</action-tipo> <componente-definio> <por-row>false</por-row> <chart-attributes> <!-- this is the background for the whole image --> <chart-tipo>PieChart</chart-tipo> <title>Actual vs Oramento por Region</title> <title-position>TOP</title-position> <title-font> <font-family>Serif</font-family> <size>36</size> <is-bold>false</is-bold> <is-italic>false</is-italic> </title-font> <range-title>US Dollars</range-title> <chart-background tipo="color">#FFFFFF</chart-background> <plot-background tipo=color>#FF0000</plot-background> <orientation>Horizontal</orientation> <height>400</height> <width>800</width> <is-3D>true</is-3D> <is-stacked>false</is-stacked> <category-label-rotation>90</category-label-rotation> <border-visible>false</border-visible> <border-paint>#3399FF</border-paint> <include-legend>true</include-legend> </chart-attributes> </componente-definio> </action-defininition> </aes> </action-sequence>

<por-row/> Requerido nodo that describes how the chart dados is aggregated. Values so TRUE ou FALSE. <chart-attributes/> Requerido por the ChartComponent, this nodo contains all chart attributes nodos. This nodo is no usado por the CategoryDatasetComponent (described below). <chart/> The chart root nodo. This item is a mandatory singleton nodo. This nodo is no usado por the ChartComponent.

Pg 31

<chart-tipo/> Opcional singleton nodo that contains the chart tipo in the nodo texto. Quando usado with the CategoryDatasetComponent, se the chart-tipo is no set in the xml definio then it must ser set on the CategoryDataset Componente directly in code (servlet ou JSP). <title/> Opcional singleton nodo that contains the requested title in the nodo texto. Valid chart tipo strings so PieChart, PieGrid, BarChart, LineChart e Arcadaart <title-position/> Opcional nodo that describes the position of the chart title. Valid positions so TOP, BOTTOM, LEFT, e RIGHT. <title-font/> Opcional singleton nodo that describes the chart font. Font attributes so included as child nodos. Child nodos include, <font-family>, <size>, <is-bold>, e <is-italic>. <subtitle/> Opcional singleton nodo that contains the requested subtitle in the nodo texto. <range-title/> Opcional nodo that describes the chart range (usually the y-axis). <chart-background/> Opcional singleton nodo that describes the background tipo. Valid types include color e image. Se tipo=color, designate the color with 6 byte hexadecimal notation. Quando tipo=image, the valor is a filepath (relative to the soluo diretrio) of an image arquivo to use as the chart background image. Note: This image replaces the background of the chart itself e NO the plot area. So se voc set the image here voc will probably see seu image under the axis labels e scales e no in the plot area. <plot-background/> Opcional singleton nodo that descirbes the plot tipo. Valid types include color e image. Se tipo=color, designate the color with 6 byte hexadecimal notation. Quando tipo=image, the valor is a filepath (relative to the soluo diretrio) of an image arquivo to use as the plot background image.. Note: This image replaces the background of the plot area only. <orientation/> Opcional singleton whose texto valor pode ser either Horizontal, Vertical. Defaults to Vertical. <height/> Opcional singleton whose texto valor is an integer that represents the height of the chart. <width/> Opcional singleton whose texto valor is an integer that represents the width of the chart. <is-3D/> Opcional singleton whose texto valor pode ser either true ou false. Defaults to false. Se true the charting mecanismo does it best to render a 3-D view of the chart. <is-stacked/> Opcional singleton whose texto valor pode ser either true ou false. Defaults to false. Se true the charting mecanismo will create a stacked version of this chart tipo (se possible). <urlTemplate/> Opcional singleton whose texto valor is usado as a template to create a drill link mapear for the image. This is no usado with the ChartComponent. <paramName/> Opcional singleton whose test values is the parmetro nome of the innermost consulta varivel. Se this nome occurs in the urlTemplate, it will ser substitudo with the correct item. This is no usado with the ChartComponent. <paramName2/> Opcional singleton whose test values is the parmetro nome of the outermost consulta varivel. Se this nome occurs in the urlTemplate, it will ser substitudo with the correct item. This is no usado with the ChartComponent. <color-palette/> Singleton that contains a list of <color/> nodos that make up the series palette. <color/> Opcional multiple nodos that contain a 6 byte hexadecimal notation to ser usado as an entry in the series palette.

Pg 32

CategoryDatasetComponent
The CategoryDatasetComponent is a UI componente that pode create a variety of charts including Bar, Line, Pie, Pie Grid, e Area. Where applicable there so several options that pode ser applied. The creation of the chart is commonly performed por a JSP ou indirectly por creating the appropriate portlet object. See the ChartComponent for explanations of cada nodo. <chart> <chart-tipo>BarChart</chart-tipo> <title>Sample Chart</title> <subtitle>a simple sample</subtitle> <chart-background tipo="color">#FFFFFF</chart-background> <chart-background-image>test\charts\ChartBackground.jpg</chart-background-image> <plot-background-color>#FFFFFF</plot-background-color> <plot-background-image>test\charts\ChartBackground.jpg</plot-background-image> <orientation>Horizontal</orientation> <height>550</height> <width>650</width> <is-3D>true</is-3D> <is-stacked>true</is-stacked> <urlTemplate><![CDATA[/pentaho/Pivot?soluo=exemplos&path=anlise&action=query1.xaction &departamento=.[{DEPARTAMENTO}]&measures=.[{MEASURES}]]]></urlTemplate> <paramName>MEASURES</paramName> <paramName2>DEPARTAMENTO</paramName2> <color-palette> <color>#336699</color> <color>#99CCFF</color> <color>#999933</color> <color>#666699</color> <color>#CC9933</color> <color>#006666</color> <color>#3399FF</color> <color>#993300</color> <color>#CCCC99</color> <color>#666666</color> <color>#FFCC66</color> <color>#6699CC</color> <color>#663366</color> <color>#9999CC</color> <color>#CCCCCC</color> <color>#669999</color> <color>#CCCC66</color> <color>#CC6600</color> <color>#9999FF</color> <color>#0066CC</color> <color>#99CCCC</color> <color>#999999</color> <color>#FFCC00</color> <color>#009999</color> <color>#99CC33</color> <color>#FF9900</color> <color>#999966</color> <color>#66CCCC</color> <color>#339966</color> <color>#CCCC33</color> </color-palette> </chart>

Pg 33

Componente de Filtro Seguro (Secure Filter)


O componente secure filter possui duas funes relacionadas. Permite a voc customizar a pergunta (prompt) padro realizada pelo Contexto de Runtime e pode verificar para apenas selees vlidas serem retornadas. No exemplo abaixo, o Componente Secure Filter ir checar por um parmetro nomeado DEPARTAMENT, se no existe, ir gerar a pergunta e mostrar os valores de seleo com base na coluna Display do parmetro DEPARTAMENT_FILTER. Quando a seleao for realizada por o usurio, e DEPARTAMENT passado para a Sequencia de ao e componente Secure Filter, ir verificar se o valor retornado existe na coluna Dept . Se o valor de DEPARTAMENT for vlido, a execuo da Sequencia de ao continua at o prximo componente na sequence.

<action-definition> <component-name>SecureFilterComponent</component-name> <action-inputs> <DEPARTMENT type="string"/> <DEPARTMENT_FILTER type="result-set"/> </action-inputs> <action-outputs/> <component-definition> <selections> <DEPARTMENT style="select" prompt-if-one-value="true"> <filter value-col-name="Dept" display-col-name="Display"> DEPARTMENT_FILTER </filter> <title>Select the Department</title> </DEPARTMENT> </selections> <xsl>CustomReportParameters.xsl</xsl> <target>Report_Window</target> </component-definition> </action-definition>
O atributo style define o estilo do controle a ser apresentado ao usurio O atributo prompt-if-one-value pergunta sempre ao usurio, mesmo se houver apenas uma escolha O atributo title define o texto a ser mostrado ao usurio

Pg 34

Escalonador (Scheduler)
A Plataforma Pentaho BI utiliza atualmente o Quartz como escalonador. A implementao persistida via JDBC, tolerante e recupervel em caso de falhas. Excees escalonadas so resolvidas atravs de uma srie de regras pr-definidas. Acesso ao escalonador feito atravs de org.pentaho.plugin.quartz.JobSchedulerComponent implementando um documento soluo. Exemplos podem ser encontrados em test/scheduler/. Existem quatro diferentes aes disponveis ao escalonador. startJob, suspendJob, resumeJob, e deleteJob.

Aes
startJob cria uma tarefa (job) e o gatilho (trigger) e registra a job e o trigger para execuo pelo escalonador. No caso de uma Simple Trigger, a execuo ocorre quando a condio da trigger for encontrada e ocorre a um intervalo de repetio definido at que o nmero de ciclos tenha terminado. No caso de uma Cron Trigger o disparo da job ocorre de acordo com regras setadas na expresso cron string (veja abaixo). A job um documento soluo que deve ser executado. Isto permite o escalonamento de qualquer outra soluo existente, tal como impresso e email. No evento de uma falha tal como queda de luz, crash de sistema, etc., aps o escalonador reiniciar ir aplicar regras de exceo a qualquer trigger que tenha sido interrompida. Os valores de jobName, triggerType (e as entradas associadas trigger types), solution, path, e action precisam ser definidas no documento soluo. <action-sequence> <name>SchedulerTest_new_job.xaction</name> <version>1</version> <title>Schedules a task</title> <logging-level>debug</logging-level> <documentation> <author>William E. Seyler</author> <description>..</description> <help>This is just a test...</help> </documentation> <inputs> <jobAction type="string"> <default-value>startJob</default-value> </jobAction> <solution type="string"> <default-value>test</default-value> </solution> <path type="string"> <default-value>email</default-value> </path> <action type="string"> <default-value>text_only_email.xaction</default-value> </action> <jobName type="string"> <default-value>MyJob</default-value> </jobName> <triggerType type="string"> <default-value>simple</default-value> </triggerType> <triggerName type="string"> <default-value>MyTrigger</default-value> </triggerName> <repeatInterval type="string"> <default-value>10</default-value>

Pg 35

</repeatInterval> <repeatCount type="string"> <default-value>1</default-value> </repeatCount> <misfirePolicy type="string"> <default-value>INSTRUCTION_DELETE_TRIGGER</default-value> </misfirePolicy> </inputs> <outputs/> <resources/> <actions> <action-definition> <action-inputs> <jobAction type="string"/> <solution type="string"/> <path type="string"/> <action type="string"/> <jobName type="string"/> <triggerType type="string"/> <triggerName type="string"/> <repeatInterval type="string"/> <repeatCount type="string"/> <misfirePolicy type="string"/> </action-inputs> <component-name>JobSchedulerComponent</component-name> <action-type>schedule</action-type> <component-definition/> </action-definition> </actions> </action-sequence> Figure X.X -- Sequencia de ao Sample StartJob suspendJob Pausa uma tarefa que esteja rodando especificada. Uma vez em pausa, a nica maneira de iniciar novamente ser com resume job. Uma vez que a job for reiniciada, ser aplicada a regra de exceo se requerido. A nica entrada para esta aao jobName a ser suspendida. <action-sequence> <name>SchedulerTest_pause_job.xaction</name> <version>1</version> <title>Pauses a scheduled job</title> <logging-level>debug</logging-level> <documentation> <author>William E. Seyler</author> <description>..</description> <help>This is just a test...</help> </documentation> <inputs> <jobAction type="string"> <default-value>suspendJob</default-value> </jobAction> <jobName type="string"> <default-value>MyJob</default-value> </jobName> </inputs> <outputs/> <resources/>

Pg 36

<actions> <action-definition> <action-inputs> <jobAction type="string"/> <jobName type="string"/> </action-inputs> <component-name>JobSchedulerComponent</component-name> <action-type>schedule</action-type> <component-definition/> </action-definition> </actions> </action-sequence> Figure X.X Sequencia de ao Sample SuspendJob resumeJob Reinicia uma tarefa suspensa anteriormente. A nica entrada ser jobName a ser reiniciada. <action-sequence> <name>SchedulerTest_resume_job.xaction</name> <version>1</version> <title>Resumes a task</title> <logging-level>debug</logging-level> <documentation> <author>William E. Seyler</author> <description>..</description> <help>This is just a test...</help> </documentation> <inputs> <jobAction type="string"> <default-value>resumeJob</default-value> </jobAction> <jobName type="string"> <default-value>MyJob</default-value> </jobName> </inputs> <outputs/> <resources/> <actions> <action-definition> <action-inputs> <jobAction type="string"/> <jobName type="string"/> </action-inputs> <component-name>JobSchedulerComponent</component-name> <action-type>schedule</action-type> <component-definition/> </action-definition> </actions> </action-sequence> Figure X.X Sequencia de ao Sample resumeJob deleteJob exclui uma tarefa especificada imediatamente. Entretanto, se a tarefa est executando no momento em algum processo do escalonador ento ela ir continuar a executar sem que novas instancias desta tarefa sejam escalonadas. A nica entrada sera jobName. <action-sequence>

Pg 37

<name>SchedulerTest_delete_job.xaction</name> <version>1</version> <title>Deletes a Job</title> <logging-level>debug</logging-level> <documentation> <author>William E. Seyler</author> <description>..</description> <help>This is just a test...</help> </documentation> <inputs> <jobAction type="string"> <default-value>deleteJob</default-value> </jobAction> <jobName type="string"> <default-value>MyJob</default-value> </jobName> </inputs> <outputs/> <resources/> <actions> <action-definition> <action-inputs> <jobAction type="string"/> <jobName type="string"/> </action-inputs> <component-name>JobSchedulerComponent</component-name> <action-type>schedule</action-type> <component-definition/> </action-definition> </actions> </action-sequence> Figure X.X Sequencia de ao Sample deleteJob

Pg 38

Gatilhos (Triggers)
A Plataforma Pentaho BI suporta dois tipos diferentes de gatilhos (triggers). Trigger Simples selecionado no nodo triggerType como simple. Esta opo permite que uma tarefa seja escalonada em um intervalo regular especificado por um nmero dado de repetioes. As entradas a esta trigger so os valores inteiros repeatInterval (em segundos) e repeatCount. A trigger ir disparar imediatamente e continuar por um intervalo at o nmero de ciclos repeatCount. Veja exemplo abaixo. Trigger Cron selecionado no nodo triggerType como cron. Esta trigger utiliza definies cron task estilo unix. A trigger recebe um cronString que representa a definio exatamente como uma entrada em crontab. A seguir descrevemos o formato das expresses cron string. <action-sequence> <name>SchedulerTest_new_cron_job.xaction</name> <version>1</version> <title>Schedules a task</title> <logging-level>debug</logging-level> <documentation> <author>William E. Seyler</author> <description>..</description> <help>This is just a test...</help> </documentation> <inputs> <jobAction type="string"> <default-value>startJob</default-value> </jobAction> <solution type="string"> <default-value>test</default-value> </solution> <path type="string"> <default-value>email</default-value> </path> <action type="string"> <default-value>text_only_email.xaction</default-value> </action> <jobName type="string"> <default-value>MyJob</default-value> </jobName> <triggerType type="string"> <default-value>cron</default-value> </triggerType> <triggerName type="string"> <default-value>MyTrigger</default-value> </triggerName> <cronString type="string"> <default-value>0 40 16 * * ?</default-value> </cronString> <misfirePolicy type="string"> <default-value>MISFIRE_INSTRUCTION_SMART_POLICY</default-value> </misfirePolicy> </inputs> <outputs/> <resources/> <actions>

Pg 39

<action-definition> <action-inputs> <jobAction type="string"/> <solution type="string"/> <path type="string"/> <action type="string"/> <jobName type="string"/> <triggerType type="string"/> <triggerName type="string"/> <cronString type="string"/> <misfirePolicy type="string"/> </action-inputs> <component-name>JobSchedulerComponent</component-name> <action-type>schedule</action-type> <component-definition/> </action-definition> </actions> </action-sequence> Figure X.X Sequencia de ao Sample Cron Trigger // NOTA o seguinte do javadoc para org.quartz.cronTrigger A string "cronString" formada por 6 ou 7 campos separados por espaos em branco. Os campos (6 obrigatrios e 1 opcional) so os seguintes: Nome do Campo Segundos Minutos Horas Dia-do-ms Ms Dia-da-semana Ano (Opcional) Valores Permitidos 0-59 0-59 0-23 1-31 1-12 ou JAN-DEC 1-7 ou SUN-SAT vazio, 1970-2099 Caracteres Especiais Vlidos ,-*/ ,-*/ ,-*/ ,-*?/LWC ,-*/ ,-*?/LC# ,-*/

O caracter '*' usado para especificar todos os valores. Por exemplo, "*" no campo minutos significa todos os minutos. O caracter '?' permitido para os campos Dia-da-semana e Dia-do-ms. usado como caracter coringa simples, especialmente entre um ou dois campos. Os exemplos iro clarificar abaixo. O caracter '-' usado para especificar intervalos. Por exemplo "10-12" no campo hora significa as horas hours 10, 11 e 12". O caracter ',' usado para indicar valores adicionais. Por exemplo "MON,WED,FRI" no campo Dia-dasemana significa os dias segunda, quarta e sexta-feira. O caracter '/' usado para indicar incrementos. Por exemplo "0/15" no campo segundos significa "os segundos 0, 15, 30, e 45". E "5/15" equivale aos "segundos 5, 20, 35, e 50". Voc pode tambm especificar '/' aps '*' neste caso '*' equivale a '0' antes de '/'. O caracter 'L' permitido nos campos Dia-do-ms e Dia-da-semana. Este caracter o mesmo do que o "ltimo", mas tem significados diferentes em cada um destes campos. Por exemplo, o valor "L" em Dia-doms significa "o ltimo Dia-do-ms" dia 31 em janeiro, 28 em fevereiro (anos no bissestos), etc. Se usado no campo Dia-da-semana, simplesmente significa "7" ou "SAT". Mas se usado no campo Dia-dasemana aps outro valor, significa "o ltimo ensimo dia do ms " - Por exemplo "6L" equivale a "a ltima sexta-feira do ms ". Quando usar a opao 'L', importante no especificar listas, ou ranges de valores, seno ocorrero resultados confusos.

Pg 40

O caracter 'W' permitido para o campo Dia-do-ms e usado para indicar o dia de semana (dia til) mais prximo do dia dado (Monday-Friday). Como exemplo, se voc indicar "15W" como valor neste campo Diado-ms, o significado sera: "o mais prximo dia de semana do dcimo quinto dia do ms ". ento se o 15 for sbado, a trigger ir disparar na sexta feira dia 14. Se o 15 for domingo, a trigger ir disparar na segunda 16. Se 15 for tera, estao dispara na prpria tera. Entretanto, se voc indicar "1W" e o primeiro dia for sbado, entao a trigger ir disparar em segunda-feira 3, de modo a nao pular o limite do ms em questo. O caracter 'W' pode somente ser especificado quando Dia-do-ms for um dia simples, no um range ou lista de dias. Os caracters 'L' e 'W' podem tambm ser combinados em uma expressao Dia-do-ms de modo 'LW', o qual se traduz como o "ltimo dia de semana do ms ". O caracter '#' usado no campo Dia-da-semana para indicar o ensimo dia do ms. Por exemplo, o valor de "6#3" no campo Dia-da-semana significa a terceira sexta-feira do ms (day 6 = Friday e "#3" = a 3 do ms). Outro examplo: "2#1" = a primeira segunda feira do mes e "4#5" = a quinta quarta feira do mes. Note que se voc indicar "#5" e no existir 5 dia em algum mes, entao nada ir ocorrer. O caracter 'C' usado nos campos Dia-da-semana e Dia-do-ms significando "calendar". Significa que os valores so calculados dentro de um calendrio associado. Se nada for especificado, equivale a um calendrio com tudo includo. O valor de "5C" no campo Dia-do-ms significa "o primeiro dia includo pelo calendrio ou aps o 5". O valor de "1C" no campo Dia-da-semana significa "o primeiro dia includo pelo calendrio ou aps domingo ". Os caracteres legais e nomes de meses e dias no case sensitive. Aqui esto alguns examplos: Expresso "0 0 12 * * ?" "0 15 10 ? * *" "0 15 10 * * ?" "0 15 10 * * ? *" "0 15 10 * * ? 2005" "0 * 14 * * ?" "0 0/5 14 * * ?" "0 0/5 14,18 * * ?" "0 0-5 14 * * ?" "0 10,44 14 ? 3 WED" "0 15 10 ? * MON-FRI" "0 15 10 15 * ?" "0 15 10 L * ?" "0 15 10 ? * 6L" "0 15 10 ? * 6L 20022005" "0 15 10 ? * 6#3" Significado Dispare s 12pm (meio-dia) todo dia Dispare s 10:15am todo dia Dispare s 10:15am todo dia Dispare s 10:15am todo dia Dispare s 10:15am todo dia durante o ano 2005 Dispare todo minuto iniciando s 2pm e terminando s 2:59pm, todo dia Dispare todos os 5 minutos iniciando s 2pm e terminando s 2:55pm, todo dia Dispare todos 5 minutos iniciando s 2pm e terminando s 2:55pm, E dispare todos 5 minutos iniciando s 6pm e terminando s 6:55pm, todo dia Dispare toda minutos iniciando s 2pm e terminando s 2:05pm, todo dia Dispare s 2:10pm e s 2:44pm toda quarta do ms maro Dispare s 10:15am toda segunda, tera, quarta, quinta e sexta Dispare s 10:15am no 15dia de todo ms Dispare s 10:15am no ltimo dia de todo ms Dispare s 10:15am na ltima sexta-feira de todo ms Dispare s 10:15am em toda ltima sexta de todo ms durante os anos de 2002, 2003, 2004 e 2005 Dispare s 10:15am na Terceira tera de todo ms

Excees (Misfires)
Quando a trigger no consegue ser disparada por razes tais como o Escalonador tenha sido parado ou o sistema tenha cado, este evento referido como exceo. Excees so determinadas pela instruo de exceo de triggers. Existem tipos de excees disponveis para todas as triggers e algumas somente para simple ou cron. Todas as Triggers estas instruoes de exceo so aplicaveis para qualquer trigger.

Pg 41

MISFIRE_INSTRUCTION_SMART_POLICY: esta instruo de exceo o padro de todas as triggers criadas. Ela instrue a trigger a utilizar a poltica padro dependendo do tipo de trigger. Para uma simple trigger a regra a seguinte: Se o Repeat Count for 0 ento a instruo seguir o padro MISFIRE_INSTRUCTION_FIRE_NOW. Se o Repeat Count for REPEAT_INDEFINITELY, ento a instruo ser interpretada como MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT. CUIDADO: usar MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT com uma trigger que possui um tempo de finalizaao no nulo pode fazer com que a trigger nunca mais seja iniciada se o tempo de finalizao tiver ocorrido (passado) durante o perodo da exceo. Se o Repeat Count for 0, ento a instruo seguir o padro MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT. INSTRUCTION_RE_ EXECUTE _JOB: Instrui ao Escalonador que a Trigger requer que o JobDetail reexecute imediatamente. INSTRUCTION_SET_TRIGGER_COMPLETE: Instrui ao Escalonador que a Trigger deve ser colocada no estado COMPLETE. Essencialmente pula a exceo da trigger. INSTRUCTION_DELETE_TRIGGER: Instrui ao Escalonador que a Trigger deve ser excluda (deleted). INSTRUCTION_SET_TRIGGER_ERROR: Instrui ao Escalonador que a Trigger deve ser colocada em estado de erro. Simple Triggers estas instructions de exceo so aplicveis somente a triggers simple. MISFIRE_INSTRUCTION_FIRE_NOW: Instrui ao Escalonador que em situaao de exceo, a trigger deseja ser disparada agora. NOTA esta instruao deve tipicamente ser usada somente para triggers nao repetitivas. Se for usado em uma trigger com o repeat count > 0 entao sera equivalente a instruao MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT. MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT: Instrui ao Escalonador que em situao de exceo, a trigger deseja ser re-escalonada de modo que o repeat count permanea conforme est. NOTA: o uso desta instruo causa a trigger esquecer o start-time e o repeatcount que foi originariamente setado. NOTA: Esta instruao pode causar a Trigger atingir o estado 'COMPLETE' depois de disparada, se todos os tempos de disparo j tiverem passado. MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT: Instrui o Escalonador que em situao de exceo, a trigger deseja ser re-escalonada agora com o repeat count ajustado para o que deveria ser se no tivesse perdido nenhum disparo. NOTA: o uso desta instruo leva a trigger a esquecer o start-time e o repeat-count que foram originariamente setados (isto somente pode causar problemas se voc necessida determinar quais eram os valores posteriormente). NOTA: Esta instruao pode causar a Trigger atingir o estado 'COMPLETE' depois de disparada, se todos os tempos de disparo j tiverem passado. MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT: Instrui o Escalonador que em situao de exceo, a trigger deseja ser re-escalonada at o prximo intervalo depois de agora e com o repeat count ajustado ao que deveria ser se no tivesse sido perdido nenhum disparo. NOTA/AVISO: Esta instruao pode causar a Trigger atingir o estado 'COMPLETE' diretamente se todos os tempos de disparo j tiverem passado. MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT: Instrui o Escalonador que em situao de exceo, a trigger deseja ser re-escalonada at o prximo intervalo depois de agora e com o repeat count deixado sem mudana. NOTE: o uso desta instruo causa a trigger esquecer o repeat-count que foi originariamente setado. NOTA/AVISO: Esta instruao pode causar a Trigger atingir o estado 'COMPLETE' diretamente se todos os tempos de disparo j tiverem passado. CRON Triggers estas instructions de exceo so aplicveis somente a triggers cron

Pg 42

MISFIRE_INSTRUCTION_FIRE_ONCE_NOW: Instrui o Escalonador que em situao de exceo, a trigger deseja ser disparada agora. MISFIRE_INSTRUCTION_DO_NOTHING: Instrui o Escalonador que em situao de exceo, a trigger deseja que o seu next-fire-time seja ajustado paa o prximo intervalo aps o momento corrente (levando em conta qualquer parmetro <code>{@link Calendar}</code>, mas no deseja ser disparada agora).

Pg 43

Fontes de Dados
Os componentes de fontes de dados permitem acesso a uma grande variedade de tipos de fonte de dados. Cada tipo de implementao permite a consulta de um especfico fonte de dados usando um string de consulta na syntaxe natural da fontes de dados. Por exemplo dados SQL utilizam sintaxe SQL para consulta. Dados MDX utilizam sintaxe MDX e dados XML utilizam XQuery. Os componentes de fontes de dados incluem as seguintes implementaes: MDXLookupRule: para dados multidimensionais (a implementao atual para o mondrian) SQLLookupRule: para consultas a bases de dados SQL. XQueryLookupRule: para realizar selees XQuery em Documentos XML.

MDXLookupRule
O componente MDX lookup proporciona facilidade para consulta multidimensional a fontes de dados usando a estrutura de consulta MDX. Um exemplo de sequencia de ao MDXLookupRule segue abaixo: <action-sequence> <name>MDX_Datasource.xaction</name> <version>1</version> <title>%title</title> <logging-level>debug</logging-level> <documentation> <author>William Seyler</author> <description>%description</description> <help></help> <result-type>rule</result-type> <icon>MDX_Datasource.png</icon> </documentation> <outputs> <rule-result> <type>list</type> </rule-result> </outputs> <resources> <catalog> <url> <location>samples/reporting/SampleData.mondrian.xml</location> <mime-type>text/xml</mime-type> </url> </catalog> </resources> <actions> <action-definition> <action-outputs> <rule-result type="list"/> </action-outputs> <component-name>MDXLookupRule</component-name> <action-type>rule</action-type> <component-definition> <connection>] <![CDATA[jdbc:hsqldb:hsql://localhost:9001/sampledata]]> </connection> <location>mondrian</location> <user-id>sa</user-id> <password></password> <query>

Pg 44

<![CDATA[with member [Measures].[Variance Percent] as '([Measures].[Variance] / [Measures].[Budget])', format_string = IIf(((([Measures].[Variance] / [Measures].[Budget]) * 100.0) > 2.0), "|#.00%|style='green'", IIf(((([Measures].[Variance] / [Measures].[Budget]) * 100.0) < 0.0), "|#.00%|style='red'", "#.00%")) select Crossjoin({[Region].[All Regions].[Central], [Region].[All Regions].[Eastern], [Region].[All Regions].[Southern], [Region].[All Regions].[Western]}, {[Measures].[Actual], [Measures].[Budget]}) ON columns, Hierarchize(Union({[Department].[All Departments]}, [Department].[All Departments].Children)) ON rows from [Quadrant Analysis]]]> </query> </component-definition> </action-definition> </actions> </action-sequence> A consulta MDX requer as entradas: <connection> NO REQUERIDO esta uma string de conexo JDBC para a fonte de dados. Se voc precisa conectar-se a outra fonte de dados que o hypersonic voc deve proporcionar o JDBC drivers na string, veja <mdx-connection-string> abaixo para informao em como fazer isto. NOTA: um dos dois, este nodo ou o nodo <mdx-connection-string>, deve ser especificado obrigatoriamente. <query> REQUERIDO esta a consulta string MDX que define os dados desejados (dataset). Para mais informao sobre consulta MDX veja a documentaao do mondrian documentation ou visite: http://www.informit.com/articles/article.asp?p=29418&seqNum=3&rl=1 <catalog> NO REQUERIDO o caminho do catlogo ROLAP. Se o catalogo iniciar com HTTP ento o caminho avaliado como URL absoluta e o sistema tentar carreg-lo diretamente. Se o catalogo no iniciar com HTTP ento o caminho considerado a partir da raiz da soluo e a URL construda de acordo e passada a fonte de dados do mecanismo (mondrian). NOTA: um dos dois, este nodo ou o nodo <mdx-connection-string>, deve ser especificado. <location> NO REQUERIDO sempre mondrian para a implementao atual. NOTA: um dos dois, este nodo ou o nodo <mdx-connection-string>, deve ser especificado. <user-id> NO REQUERIDO o usurio ID do JDBC. Se usar outro banco que no o hypersonic ento voc pode precisar usar o <mdx-connection-string/> para ajustar o usurio ID e password. <password> NO REQUERIDO o password JDBC. Se usar outro banco que no o hypersonic ento voc pode precisar usar o <mdx-connection-string/> para ajustar o usurio ID e password. <mdx-connection-string> NO REQUERIDO - a mdx-connection-string pode ser usado no lugar de todas as propriedades de conexo acima e de fato ir sobrescrev-las. Este string uma lista de propriedades separadas por ponto-e-vrgula a qual passada ao mondrian para criao da conexo. Eis um exemplo de conexo baseada em mdx-connection-string: <mdx-connection-string> <![CDATA[ Provider=mondrian; Jdbc=jdbc:odbc:MondrianFoodMart; Catalog=/WEB-INF/FoodMart.xml ]]> </mdx-connection-string>

Pg 45

NOTA: Quando usar este formato, o nome de usurio nome e password pode ser passado como parte da string de conexo jdbc, dependendo do driver sendo usado. Nomes de Drivers podem tambm ser passados nesta string. Mais informao sobre este tipo de string consulte a documentao do mondrian. NOTA: Se <mdx-connection-string> no for definida, ento <connection> requerido.

SQLLookupRule
O componente SQLLookupRule usado para conectar com fontes de dados JDBC. Um documento exemplo usando SQLLookupRule est abaixo: <action-sequence> <name>SQL_Datasource.xaction</name> <version>1</version> <title>%title</title> <logging-level>debug</logging-level> <documentation> <author>James Dixon</author> <description>%description</description> <help></help> <result-type>rule</result-type> <icon>SQL_Datasource.png</icon> </documentation> <inputs> <dept type="string"> <default-value>Product Development</default-value> </dept> </inputs> <outputs> <rule-result> <type>list</type> </rule-result> </outputs> <resources/> <actions> <action-definition> <action-inputs> <dept type="string"/> </action-inputs> <action-outputs> <rule-result type="list"/> </action-outputs> <component-name>SQLLookupRule</component-name> <action-type>rule</action-type> <component-definition> <jndi>SampleData</jndi> <query> <![CDATA[select REGION, MANAGER_NAME, EMAIL from DEPARTMENT_MANAGERS]]> </query> </component-definition> </action-definition> </actions> </action-sequence>

Pg 46

<jndi> NO REQUERIDO este tag o nome de uma fonte de dados JNDI vlida. NOTA: Se voc no tem uma fonte de dados jndi, ento deve usar a tag <connection/> e uma string de conexo JDBC vlida. <connection/> NO REQUERIDO este tag uma string de conexo JDBC vlida. Quando usar este mtodo para se conectar a um banco de dados voc deve assegurar que um driver JDBC prprio jar est disponvel no classpath atual. NOTA: Voc deve proporcionar <connection> ou <jndi> <consulta> REQUERIDO este o string de consulta SQL que retorna os dados requeridos. <driver> NO REQUERIDO este o nome do driver que a connection string requer. No requerido para JNDI ou se voc usa o Banco de dados Hypersonic padro. <usurio-id> NO REQUERIDO - usurio ID do JDBC. Tambm pode ser passado como parte de <connection> string. <password> NO REQUERIDO - JDBC password. Tambm pode ser passado como parte de <connection> string. <live> NO REQUERIDO ajuste para true para no realizar caching do result set. Se no for especificado ou ajustado para false, etno os dados em cach sero retornados. NOTA: Quando usar dados em cache , mudanas feitas aps a consulta no aparecero no result set. A regra XQuery permite que consultas XQuery sejam feitas em Documentos XML. O componente ir tentar retornar um result set com os cabealhos apropriados. Se o Documento XML conter uma sesso de comentrio descrevendo os tipos de coluna, ento o result-set ser montado usando o tipo especificado. Por exemplo: <result-set> <!--java.lang.String, java.math.BigDecimal--> <row> <REGION>Central</REGION> <VARIANCE>24685</VARIANCE> </row> </result-set> Abaixo est um exemplo de XQueryLookupRule. <action-sequence> <name>XQ_Datasource.xaction</name> <version>1</version> <title>%title</title> <logging-level>debug</logging-level> <documentation> <author>William Seyler</author> <description>%description</description> <help></help> <result-type>rule</result-type> <icon>XML_Datasource.png</icon> </documentation> <outputs> <rule-result> <type>list</type> </rule-result>

Pg 47

</outputs> <resources> <document> <solution-file> <location>books.xml</location> <mime-type>text/xml</mime-type> </solution-file> </document> </resources> <actions> <action-definition> <action-outputs> <rule-result type="list"/> </action-outputs> <component-name>XQueryLookupRule</component-name> <action-type>rule</action-type> <component-definition> <query><![CDATA[/bookstore/book]]></query> </component-definition> </action-definition> </actions> </action-sequence> <consulta> REQUERIDO o nico tag suportado, o string de seleo XQuery. Se o documento definir, ento o string de consulta ser avaliado como caminho absoluto (absolute path). Caso contrrio, ento o caminho da soluo ser adicionado ao caminho totalmente qualificado do documento.

Pg 48

Apndice A Seqncia de Ao XML em Detalhes


Nodos XML marcados com REQUERIDO so necessrios somente se os nodos-pais esto sendo usados. Atributos mostrado em colchetes [ ] so opcionais. <action-sequence> REQUERIDO Nodo no nvel raiz do Documento de Seqncia de Ao <nome> REQUERIDO O nome da Seqncia de Ao. O nome deve ser o mesmo do nome do arquivo que contem a seqncia. <version> NO USADO A verso deste documento <title> NO REQUERIDO Nome amigvel do documento. Utilizado somente visualizao. <logging-level> NO REQUERIDO define o nvel de login para a inteira Seqncia de Ao. Valores vlidos so: TRACE, DEBUG, INFO, WARN, ERROR and FATAL. Caso nenhum nvel definido, ERROR ser utilizado. <documentation> NO REQUERIDO contem nodos descritivos usados para gerar o documento. <author> - NO REQUERIDO O autor da Seqncia de Ao <description> - NO REQUERIDO Breve (1-3 linhas) descrio da Seqncia de Ao. Esta descrio usada pelo componente de navegao para gerar sua visualizao. <help> - NO REQUERIDO Descrio detalhada da Seqncia de Ao, incluindo instrues para seu uso por um usurio final. <result-tipo> - NO REQUERIDO Tipo de resultados gerados por esta Seqncia de Ao. utilizada pelo componente de navegao para gera sua visualizao. Seqncia de Ao sem um <result-tipo> no sero mostradas pelo componente de navegao. Valores vlidos so: Report, Process, Rule, View and None. <icon> - NO REQUERIDO Imagem do cone de navegao utilizada para sua visualizao. O caminho da imagem relativo ao diretrio que o documento de Seqncia de Ao est. Por exemplo: Example1_image.png <inputs> - NO REQUERIDO Coleo de parmetros de entrada. <param-nome tipo=data-tipo > - NOT REQUERIDO param-nome o nome do parmetro que a Seqncia de Ao est esperando em tempo de execuo. O tipo de atributo especifica o tipo de dado do parmetro. Veja abaixo por tipos vlidos. <default-valor> - NO REQUERIDO Permite o parmetro de entrada especificar um valor padro, caso um valor no tenha sido especificado. Caso o nodo default-valor presente, mas sem um valor especificado, o valor ser sempre que possvel perguntado ao usurio. <sources> - NO REQUERIDO lista ordenada de parmetros de entrada, em termos de ordem de chamada, necessrios para definir um parmetro da Seqncia de Ao. Valores vlidos so: request, session and runtime. Nota: se o param-nome definido, mas o default-valor e sources no so especificados, um erro de validao ir ocorrer. <outputs> - NO REQUERIDO coleo de parmetros de sada.

Pg 49

<param-nome tipo=data-type > - NOT REQUERIDO param-nome o nome de um parmetro que a Seqncia de Ao est esperando ser definido, aps a execuo de todas as aes. O atributo tipo especifica o tipo de dado deste parmetro. Veja abaixo por valores vlidos. <logging-level> NO REQUERIDO Define o nvel de login durante a execuo de uma ao. Valores vlidos so: TRACE, DEBUG, INFO, WARN, ERROR e FATAL. Caso nenhum nvel seja informado, ERROR sera usado.

<resources> - NO REQUERIDO Coleo de recursos de parmetros. <resource-nome > - NO REQUERIDO resource-nome o nome do recurso que estar disponvel para a Definio de Ao em tempo de execuo. O atributo tipo especifica o tipo de dado deste parmetro. Veja abaixo por valores vlidos. <resource-tipo> - REQUERIDO O nome do tipo de recurso requerido. Valores vlidos so: solution-file, file and url. <location> - REQUERIDO O caminho para o recurso. Para um recurso-tipo igual a solution-file, a localizao de um pathname relativa ao nvel mais alto da soluo corrente. Se o tipo do recurso file, ento a localizao definida como o completo caminho. Para resource-tipo url, a localizao definida como um endereo de URL. <mime-type> - NO REQUERIDO D uma noo acerca do tipo mime do recurso. <actions [loop-on=parmetro-nome] > - REQUERIDO O nodo de aes contm nodos de definio de aes e opcionalmente mais nodos de aes. O atributo loop-on opcional. Quando ele usado, os nodos sem aes sero executados mltiplas vezes. necessrio especificar um parmetro que uma lista de tipos (lista de sting ou uma lista de mapas de propriedades) e o grupo de nodos que sero executados uma vez para cada elemento da lista. Um parmetro de entrada ser gerado com o mesmo nome do atributo loop on, mas ter o valor de um elemento na lista. Por exemplo, se um atributo loop on chamado departamento uma lista de strings com nomes de departamentos, ento o parmetro chamado departamento estar disponvel. A cada iterao, ao parmetro ser atribuda um nome de departamento. <actions [loop-on=parmetro-nome] > - NO REQUERIDO Como um simples nvel de looping no muito divertido, nodos de aes podem ser encaixados dentro de outros nodos, em quantos nveis desejados. <action-definition> - REQUERIDO (No mnimo 1) Define uma completa chamada para um componente para executar uma tarefa. <action-inputs> - NO REQUERIDO Coleo de parmetros de entrada de aes. <input-nome type=data-type mapping=param> - NOT REQUERIDO input-nome o nome do parmetro que estar dsiponvel para Definio de Ao em tempo de execuo. O atributo tipo especifica o tipo de dado do parmetro. Veja abaixo por vlidos tipos de dados.

Pg 50

O atributo mapping permite esta entrada ser mapeada para uma entrada de uma Seqncia de Ao ou uma sada de uma prvia definio de ao com um nome diferente. <action-outputs> - NO REQUERIDO Coleo de parmetros de sada de uma ao. <output-nome type=data-type > - NOT REQUERIDO outputnome o nome de um parmetro que o Componente definir aps a

sua execuo. O atributo tipo especiifica o tipo de dado deste parmetro. Veja abaixo por tipos vlidos.

<component-nome> - REQUERIDO O nome da classe java que executa a ao. <component-definition> - REQUERIDO O componente especfico XML. Veja a documentao deste componente especfico para informaes adicionais. Este nodo pode estar vazio, mas ele deve existir ou um erro de validao ocorrer.

Pg 51

Apndice B
Tipos de Dados das Sequncias de Ao
Os seguintes tipos de dados so correntemente suportados pela Plataforma Pentaho de BI. string O padro Java String. Exemplo: Este nodo XML define uma string com um valor default de Central. O RuntimeContext primeiro procurar por um par6ametro de entrada chamado REGION na requisio http. A seguir, esta classe solicita um objeto chamado aRegion. Caso nenhum destes valores exista, uma string com valor If neither Central criada. <region type="string"> <default-valor>Central</default-valor> <sources> <request>REGION</request> <session>aRegion</session> </sources> </region> long Um Java Long Object. Exemplo: Este nodo XML nodo define um objeto long com um valor default de 25. <amount type="long"> <default-valor>25</default-valor> </amount> string-list Uma lista de Java String Objects. Exemplo: Este nodo XML define uma lista de strings denominada to-address com 4 entradas. Itens na lista so armazenados em nodos <list-item>. <to-address type="string-list"> <default-valor type="string-list"> <list-item>joe.pentaho@pentaho.org</list-item> <list-item>admin@pentaho.org</list-item> <list-item>sales@pentaho.org</list-item> <list-item>noxidj@pentaho.org</list-item> </default-valor> </to-address > property-mapear Um mapa de propriedades de Java Strings. Exemplo: Este nodo XML define um mapa de propriedades com o nome veggie-data com 4 pares de valores. Itens na lista so armazenado em nodos <entry key=xxx> . Mapas de propriedades so usados para representar uma simples linha de dados a partir de uma consulta a uma base de dados. As chaves mapeiam nomes de colunas e os valores dos mapas para os dados nas colunas. <veggie-data type="property-mapear "> <default-valor type="property-mapear"> <property-mapear> <entry key="nome">carrot</entry> <entry key="color">orange</entry> <entry key="shape">cone</entry> <entry key="texture">bumpy</entry> </property-mapear> </default-valor></veggie-data>

Pg 52

property-mapear-list Uma lista de mapas de propriedades de Java Strings. Exemplo: Este nodo XML define um mapa de propriedades com o nome fruit-data com 3 conjuntos de mapas de propriedades. Itens na lista so armazenados em nodos <entry key=xxx>. Listas de mapas de propriedades so algumas vezes utilizadas para armazenar os resultados de uma consulta a uma base de dados. Cada mapa de propriedade na lista representa uma linha de dados com as chaves sendo mapeadas para nomes de colunas e os valores para clulas de dados. <fruit-data type="property-mapear-list"> <default-valor type="property-mapear-list"> <property-mapear> <entry key="nome">orange</entry> <entry key="color">orange</entry> <entry key="shape">sphere</entry> <entry key="texture">dimply</entry> </property-mapear> <property-mapear> <entry key="nome">grapefruit</entry> <entry key="color">Yellow</entry> <entry key="shape">sphere</entry> <entry key="texture">dimply</entry> </property-mapear> <property-mapear> <entry key="nome">cucumber</entry> <entry key="color">green</entry> <entry key="shape">ellipsoid</entry> <entry key="texture">smooth</entry> </property-mapear> </default-valor> </fruit-data> content Contedo uma vasta quantidade de dados que gerada dentro de um componente. Um exemplo de contedo um arquivo PDF gerado por um componente de relatrio. No possvel definir um valor default para contedos, pois ele pode ser de qualquer tipo e representado internamente como um byte stream. Exemplo: Este XML define um nodo contedo denominado attachment que esperado existir em um contedo de execuo chamado relatrio-output. Neste exemplo, o componente de relatrio gera um documento e o armazena como um relatrio-output. O componente de e-mail ir embutir este relatrio como um anexo em um e-mail. <attachment type="content"> <sources> <runtime>relatrio-output</runtime> </sources> </attachment>

Pg 53

Tipos de Recursos das Sequncias de Ao


Os seguintes tipos de recursos so correntemente suportados pela Plataforma pentaho de BI. solution-file Um arquivo no sistema de arquivos relativo a localizao do Documento de Seqncia de Ao. <solution-file> <location>MyRelatrio.rptdesign</location> <mime-type>texto/xml</mime-type> </solution-file> file Um caminho absoluto no sistema de arquivos. <file> <location>D:\samples\relatrioing\MyRelatrio.rptdesign</location> <mime-type>texto/xml</mime-type> </file> url Uma URL. <file> <location>http://www.myserver.com/logo.png</location> <mime-type>image/png</mime-type> </file>

Pg 54

Apndice C
Definies de Componentes
Os componentes na Plataforma Pentaho de BI podem ser vistos como blocos totalmente operacionais, com entradas, sadas e definies. Os parmetros que sero disponibilizados para um componente so definidos por um nodo action-inputs. Os componentes no tm acesso a quaisquer parmetros que no foram especificados nas action-inputs. As action-inputs podem ser originadas a partir de: parmetros definidos nas entradas dos documentos de Seqncia de Ao e quaisquer parmetros definidos em um actionoutputs de um componente prvio. As action-outputs definem quais parmetros estaro disponveis aps a execuo de um componente. Outros componentes que sero executados posteriormente podero usar estas sadas como entradas. Quando a Seqncia de Ao termina sua execuo, os dados sero temporariamente armazenados em um repositrio em tempo de execuo. Somente sero salvos os parmetros definidos nos nodos outputs de um documento Seqncia de Ao. Cada componente na Plataforma Pentaho de BI tem entradas nicas e especficas e as definies de componentes devem ser especificadas de acordo. Eles tambm possuem entradas e definies opcionais. Esta seo descreve suas interfaces.

HelloWorldComponent
HelloWorldComponent um componente extremamente simples. Ele simplesmente retorna o texto Hello World seguido por uma string entre aspas. component-nome: HelloWorldComponent action-entradas: Nenhuma action-outputs: Nenhuma component-definition: <quote>Uma mensagem para mostrar</quote> EXEMPLO <action-definition> <action-entradas/> <action-outputs/> <component-nome>HelloWorldComponent</component-nome> <component-definition> <quote>Greetings from the Pentaho BI Platform.</quote> </component-definition> </action-definition>

Pg 55

EmailComponent
EmailComponent utilizado para enviar e-mails baseados em texto ou HTML. Eles podem conter anexos. Se o tipo de dado do parmetro to um mapa de propriedades, ento o mapa contm os pares de valores (nomes) para os parmetros to, subject e from. O parmetro attach deve conter o nome do parmetro de tipo contedo que contem o anexo. attach-nome o nome do arquivo em anexo para o cliente do email. component-nome: EmailComponent action-entradas: REQUERIDO to string ou mapa de propriedades subject string message-plain or message-html string OPCIONAL from string Caso no especificado, o default do email_config.xml ser usado cc string bcc string attach string attach-nome string action-outputs: Nenhum component-definition: Nenhum EXEMPLO <action-definition> <action-entradas> <to type="string"/> <from type="string"/> <subject type="string"/> <message-plain type="string"/> </action-inputs> <component-nome>EmailComponent</component-nome> <component-definition/> </action-definition> Para um completo exemplo de Seqncia de Ao com HTML, texto e anexos, veja samples/bursting/sendemail.xaction da soluo test-solution

Pg 56

JavascriptRule
O componente JavascriptRule executar o Javascript definido no nodo script da definio do componente. Parmetros especificados como entradas estaro disponveis para o script. O JavascriptRule pode ter uma ou mais sadas. Se a regra requer somente uma nica sada, ento nica instruo de retorno do javascript ser atribudo aquela sada. Se existem mltiplos atributos, ento o cdigo em javascript deve retornar um vetor de sadas. A cada elemento do vetor ser designada uma sada da ao. O componente tambm pode definir elementos de uma biblioteca na definio de componentes. Cada arquivo de biblioteca especificado deve existir na soluo, e ser conectado ao script que especificado na definio do componente. Desta forma, possvel criar bibliotecas dos cdigos mais usados em javascript, e inclu-los em tempo de execuo. No exemplo abaixo, component-nome: JavascriptRule action-entradas: OPCIONAL

Qualquer parmetro especificado estar disponvel como uma varivel para o mecanismo de script.

action-outputs: REQUERIDO Devero existir uma ou mais sadas definidas. component-definition: script o javascript para executar library um ou mais arquivos com javascripts para incluir. outputx Mapeamento do vetor de sada ao output. EXEMPLO
<action-definition> <component-nome>JavascriptRule</component-nome> <action-outputs> <region type="string"/> <state type="string"/> </action-outputs> <action-type>rule</action-type> <component-definition> <script> <![CDATA[ function getResult() { var result = new Array(2); result[0] = "Western"; result[1] = "California"; retorna result; } getResult(); ]]> </script> <output1>region</output1> <output2>region</output2> </component-definition> </action-definition>

Pg 57

SQLLookupRule
O componente SQLLookupRule executar a consulta SQL definida no nodo consulta da definio do componente. Parmetros especificados como entradas podem ser usados para substituir texto na consulta. A string de substituio da forma {nome}, onde nome e o parmetro nome devero estar devidamente ajustados. NO exemplo, {dept} na consulta ser substituda pelo valor especificado pelo dept nas aesentradas. component-nome:.SQLLookupRule action-inputs: OPCIONAL

Qualquer parmetro especificado pode substituri um texto como {nome} na consulta, onde nome combina com o parmetro nome.

action-outputs: REQUERIDO rule-result lista de mapas de propriedade component-definition: jndi Se uma conexo a uma base de dados JNDI fornecida, ela ser usada prioritariamente para a connection, usurio-id, password, and driver connection Se uma conexo JNDI no fornecida, o parmetro especificado ser usado para criar uma conexo para a base de dados. user-id Se uma conexo JNDI no fornecida, o parmetro especificado ser usado para criar uma conexo para a base de dados. password Se uma conexo JNDI no fornecida, o parmetro especificado ser usado para criar uma conexo para a base de dados. driver - Se uma conexo JNDI no fornecida, o parmetro especificado ser usado para criar uma conexo para a base de dados. EXEMPLO <action-definition> <component-nome>SQLLookupRule</component-nome> <action-entradas> <dept type="string"/> </action-inputs> <action-outputs> <rule-result type="string"/> </action-outputs> <component-definition> <jndi>sampledata</jndi> <connection>jdbc:hsqldb:hsql://localhost/sampledata</connection> <usurio-id>pentaho_usurio</usurio-id> <password>password</password> <driver>org.hsqldb.jdbcDriver</driver> <query><![CDATA[ select distinct PositionTitle from quadrant_actuals where department='{dept}' order por PositionTitle]]> </query> </component-definition> </action-definition>

Pg 58

PrintComponent
PrintComponent utilizado para imprimir relatrios e contedos para o nome da impressora disponvel. O contedo pode ser especificado da seguinte forma: (1) Especificando o arquivo como um recurso printFile ou definindo o componente (2) Definindo uma ao prvia na Have a previous action in the sequence output content to the parmetro report-output. Atualmente, o org.pentaho.plugin.jfreerelatrio.JFreeComponent, org.pentaho.plugin.eclipsebirt.BIRTComponent, e org.pentaho.plugin.jasperrelatrios.JasperComponent tm a habilidade de gerar contedos e relatrios como relatrio-output. Caso nenhum contedo seja especificado para impresso, a Seqncia de Ao falhar. component-nome: PrintComponent action-inputs: OPCIONAL printFile string Caso no especificado, o parmetro report-output utilizado. printerName string Caso no especificado, a impressora padro sera usadas. copies nmero action-outputs: last-printer-selected string Caso no especificado nas action-outputs e action-inputs, o valor no component-definition: Nenhum EXEMPLO <action-definition> <action-inputs> <copies tipo="string"/> <orientation tipo="string"/> <printerName tipo="string"/> </action-inputs> <component-nome>PrintComponent</component-nome> <action-tipo>print</action-tipo> <component-definition/> </action-definition> Para um completo exemplo de Seqncia de Ao com anexos em HTML e texto, veja samples/bursting/send-email.xaction na test-solution.

definido.

Pg 59

JobEscalonadorComponent
Veja a Seo Escalonamento acima.

EscalonadorAdminComponent
Veja a Seo Escalonamento acima. .

BIRTRelatrioComponent
Por favor, veja Integrando Relatrios BIRT.

ContentRepositoryCleaner
ContentRepositoryCleaner utilizado para remover itens velhos do repositrio. necessrio somente uma entrada, um nmero que representa por quanto tempo um item permitido a residir no repositrio. Se o valor 90 usado, ento itens mais velhos que 90 dias sero removidos do repositrio. component-nome: ContentRepositoryCleaner action-entradas: REQUERIDO days_old O nmero de dias que um item deve residir no repositrio. action-outputs: delete_count O nmero de itens a serem excludos do repositrio. component-definition: Nenhum EXEMPLO <action-definition> <action-inputs> <days_old type="string" /> </action-inputs> <action-outputs> <delete_count type="string" /> </action-outputs> <component-nome>ContentRepositoryCleaner</component-nome> <action-tipo>rule</action-tipo> <component-definition></component-definition> </action-definition> Para um completo exemplo de Seqncia de Ao com anexos em HTML e texto, veja Advanced\Content\clean_repository.xaction no test-solution

Pg 60

SubActionComponent
O SubActionComponent usado dentro de uma Seqncia de Ao para permitir chamar outra Seqncia de Aos, de forma muito similar a uma rotina GoSub. SubActions so executadas sincronicamente. component-nome: ContentRepositoryCleaner action-inputs: REQUERIDO solution A soluo do .xaction a ser chamada. path O caminho da .xaction de uma soluo a ser chamada. action O nome da .xaction a ser chamada (deve incluir a extenso .xaction). OPCIONAL Quaisquer nomes de entrada da chamada .xaction que so desejadas serem enviadas chamada .xaction action-outputs: Sadas da chamada .xaction que necessitam ser consumidas por aes subseqentes ou necessitam ser passadas a outra Seqncia de Ao. component-definition: Nenhum EXEMPLO <?xml version="1.0" encoding="UTF-8"?> <action-sequence> <nome>SubActionTest.xaction</nome> <title>SubActionTest</title> <version>1</version> <logging-level>DEBUG</logging-level> <documentation> <author>Joe Pentaho</author> <description>Tests the Subaction Component</description> <help>Help!!! Help!!!</help> <result-type>rule</result-type> </documentation> <inputs> <solution type="string"> <default-valor>samples</default-valor> </solution> <path type="string"> <default-valor>getting-started</default-valor> </path> <action type="string"> <default-valor>HelloWorld.xaction</default-valor> </action> <quote type="string"> <default-valor> Hello World Call #1 &lt;br / &gt; </default-valor> <sources/> </quote> <quote2 type="string"> <sources/> <default-valor> Hello World Call #2 &lt;br / &gt; </default-valor> </quote2> </inputs>

Pg 61

<outputs/> <resources/> <actions> <action-definition> <component-nome>SubActionComponent</component-nome> <action-type>Call To HelloWorld 1</action-type> <action-inputs> <solution type="string"/> <path type="string"/> <action type="string"/> <quote type="string"/> </action-inputs> <action-outputs/> <component-definition/> <action-nome>SubAction Test</action-nome> <logging-level>DEBUG</logging-level> </action-definition> <action-definition> <component-nome>SubActionComponent</component-nome> <action-type>Call To HelloWorld 2</action-type> <action-inputs> <solution type="string"/> <path type="string"/> <action type="string"/> <quote type="string" mapping="quote2"/> </action-inputs> <component-definition/> </action-definition> </actions> </action-sequence> Uma pequena explanao de como este componente funciona. Primeiro, observe que a Seqncia de Ao define algumas entradas. Elas podem ser passadas ou deixadas como defaults. As primeiras trs colunas (soluo, caminho, e ao) definem a localizao do nome do arquivo .xaction que desejamos executar (no caso, HelloWorld.xaction). Como desejamos chamar esta ao duas vezes com diferentes quote parmetros, ns definimos dois quote parmetros (quote and quote2) junto com valores default. Este processo funciona pelos dois nodos de definies de ao. O primeiro manipula as action-inputs listadas a partir das definies da Seqncia de Ao. Ela ento chama o SubActionComponent passandoas como entradas (neste caso, solution=samples, path=getting-started, action=HelloWorld.xaction, and quote=Hello World Call #1 &lt;br / &gt;). As primeiras trs entradas so usadas para executar a HelloWorld.xaction. O ultimo parmetro (quote) passado para o seu componente destino atravs de seu processamento. A HelloWorld.xaction cria uma string usando o parmetro quote, e coloca seu resultado em um stream de sada. A segunda definio de ao essencialmente a mesma da primeira, com uma exceo. Suas action-inputs adicionalmente definem um The second action-definition is essentially the same as the first one with one exception. If you notice its action-entradas it also defines a quote entrada tipo. Se voc deixar esta linha igaula definio da primeira ao, voc simplesmente repetir as sadas da primeira action-definition. Neste caso, ns a mapeamos para a entrada quote2. Isto permite-nos usar diferentes strings para o mesmo parmetro de entrada. NOTA: os parmetros sendo passados para a .xaction de destino so colocados na requisio. Incidentemente, esta chamada para HelloWorld no funcionar com o exemplo fornecido como HelloWorld.xaction. Se voc deseja modificar a HelloWorld.xaction para localizar estes parmetros na solicitao, voc dever mudar as entradas do seqncia de ao segundo o seguinte procedimento:

Pg 62

<inputs> <quote type="string"> <sources> <request>quote</request> </sources> </quote> </inputs> E modificar os action-inputs na definio da ao para: <action-inputs> <quote type="string"/> </action-inputs> Quando este SubActionTest executado do Pentaho Navigator.js, duas chamadas para a HelloWorld.xaction sero feitas, cada uma com diferentes parmetros. Cada chamada para a HelloWorld.xaction resulta nas sadas serem colocadas em um stream de sada que fornecido pelo SubActionComponent e os resultados aparecem no janela do navegador.

Pg 63

Você também pode gostar