Pesquisar este blog

segunda-feira, 12 de dezembro de 2011

Multi-Version Coexistence Cognos 10

Você sabia que é possível configurar 2 ambientes Cognos a partir da versão 10.1?

Com isso você pode criar um projeto de migração transparente ao usuário.

A versão 10.1 se torna a padrão mas ao clicar em links pré-configurados, o usuário é levado a versão anterior sem que perceba.

Cognos 10 Multi-Version Coexistence suporta as versões Cognos 8.3.x, 8.4.x e 8.4.1.
A versão 8.4.1 suporta nativamente, as demais versões precisam do último FP disponível.

Como fazer:

No seu portal versão 10

1 - Iniciar->IBM Cognos Administration
2 - Clique na aba Configuration.
3 - Clique na em Set Properties.
4 - Clique na outra aba Configuration.
5 - Clique em Environment->Advanced Settings .
6 - Adicione as respectivas linhas.


Variable​
Value​
MVC_remoteWebContent​http://<hostname>.ibm.com/<c8alias>​
MVC_remoteGateway​http:​/​​/​<hostname>.ibm.com​/​<c8alias>​/​cgi​-​bin​/​cognos.cgi​​
MVC_domain​ibm.com


No seu portal versão 10

1 - Iniciar->IBM Cognos Administration
2 - Clique na aba Configuration.
3 - Clique na em Set Properties.
4 - Clique na outra aba Configuration.
5 - Clique em Environment->Advanced Settings .
6 - Adicione as respectivas linhas.

 
Variable​
Value​
MVC_gateway​http:​/​​/​<hostname>.ibm.com​/​<c10alias>​/​cgi​-​bin​/​cognos.cgi​​
MVC_domain​ibm.com​

*IMPORTANTE, AMBOS OS SERVIÇOS DEVEM ESTAR CONFIGURADOS NO MESMO DOMÍNIO E ESTE DEVE ESTAR INCLUÍDO NA POLÍTICA DE SEGURANÇA DE FIREWALL DO COGNOS, do contrário um erro javascript poderá aparecer ou será informado um erro do CAF.

*Obs, não consegui fazer funcionar na versão 10.1.1 x64 com 8.4.1 x32.

Aqui o How-to da IBM.
http://www-01.ibm.com/support/docview.wss?uid=swg21459041

Aqui tem um exemplo de como fica.
http://www.youtube.com/watch?v=kD7J5fZY-n8

terça-feira, 6 de dezembro de 2011

Dica da semana - Cálculo Incorreto

É isso aí, voltei, depois de umas férias e uma ripa no trabalho.

A dica do dia fica pra uma propriedade muito útil embora pouco conhecida dos Data Itens, o famoso Solve Order.

As vezes precisamos fazer uma série de cálculos e apresentá-los numa lista ou crosstab, mas por mais que tentamos a porcaria do valor sempre vem errado.

Me lembrei disso ontem enquanto via um relatório que aparentemente continha todas as agregações definidas corretamente, mas os rollups estavam todos errados.

Esse tipo de problema aparece geralmente em crosstabs, pois podemos colocar qualquer coisa em qualquer lugar.

Procedimento muito simples, veririque se as agregações estão corretas, depois basta definir nos Data Itens valores em sequência na mesma ordem dos cálculos.

Obs.: Por padrão Aggregate Functions utilizam Solve Order 1, e dados de Query utilizam 0 ou nada.

Dúvidas? Complicado? Quer adicionar algo? E-mail-me!

Próximo post malditos Determinants!!!!

sexta-feira, 7 de outubro de 2011

Javascript Expand and Colapse - Agrupar e Desagrupar - Part 2

Eu sei, demorei pacas pra por esse post, vida corrida!!

Como disse antes esse é um exemplo de agrupamento possível, pode-se fazer muitos níveis, aqui vamos fazer apenas 1.

1 - Construa uma query com essa cara.


Só dois níveis nesse exemplo.







2 - Construa uma página com essa cara.

Repare que existem 5 HTML Itens, disponha-os exatamente da mesma forma.
Agora vamos ao conteúdo deles:

HTML 1: <script type="text/javascript"> A função do post anterior</script>

HTML 2: <span id="tbl1">

HTML 3:
<img src="../images/PropertyGroup_plus.gif" onclick="ExpandCollapse(this);" style="cursor:hand; vertical-align:middle; margin-right:2px"/>

HTML 4: </span>

HTML 5: <script type="text/javascript">StartHidden('tbl1');</script>

3 - E por fim acerte o padding(espaçamento) no Nível 1 em 20 px.

Com isso está pronto, rode e veja o que acontece!

Caso queira inserir mais níveis, faça o padding incremental, mas sempre deixe o último nível(nesse caso o 2) sem padding.
Nível 3 normal
Nível 2 20px
Nível 1 40px


Essa função só server para grupos superiores, ou seja totais na parte de cima do relatório, para totais na parte inferior é necessário adequar a função, se precisar de ajuda me manda um e-mail.

Boa noite a todos.

terça-feira, 20 de setembro de 2011

Javascript Expand and Colapse - Agrupar e Desagrupar - Part 1

Esse post já está preparado tem um tempo, mas não ficou muito bom.

Outra funcionalidade muito solicitada é o famoso "Agrupar" do Excel, que facilita a visão diminuindo a poluição no relatório, pois ele agrupa varias linhas, e expande quando solicitado.

É como a estrutura de diretório do Windows, clique no "+"(mais) e a árvore abre.

Pois bem, existe um modo de se fazer isso no Cognos graças ao Mr. Javascript, abençoado seja o inventor.

A utilização é muito simples, e a lógica aplicada também, então vamos a explicação técnica.

No HTML o elemento TABLE possui os elementos TR, que são as linhas da tabela - table row.
Esses elementos TR por sua vez possuem um atributo chamado STYLE, o qual possui uma propriedade chamada DISPLAY.

table.tr.style.display, ok?

Essa propriedade define se um elemento estará visível ou não na tela, apesar de ter sido carregado.
Então DISPLAY = 'NONE' significa que o elemento estará oculto e DISPLAY = 'BLOCK'... visível.

A função consiste basicamente em ler todas as linhas da tabela e atribuir a propriedade não visível ou visivel, isso dependerá de uma variável do preenchimento definido na variavél INDENT_SIZE.

A função percorre todas as linhas abaixo da linha clicada verificando se existe uma imagem dentro da primeira célula, se tiver significa que é hora de para. Uma vez verificada a célula, a linha é trocada de status, se visível então invisível e a imagem muda de IMG_UP/DOWN para IMG_DOWN/UP.

Logo abaixo você vai encontrar os itens necessários para poder criar um relatório com Expand/Collapse.
No próximo post vou fazer uma demonostração de utilização.

------>>>> Código da função

Cognos 10.1.1 - Released - Lançado

Post rapidinho pra começar o dia.

Então, eis que a IBM lança mais uma versão do Cognos, bom... muitos vão falar que não é uma versão, só um patch ou algo assim.
Gostaria que isso fosse verdade, antigamente eu diria que 10 era a versão, 1 a release e o outro 1 era  patch, mas esse lançamento tem coisas diferentes e não existe a possibilidade de atualização de uma versão existente, fora que eles já tinham lançado o FP1.

É necessário fazer uma nova instalação!!

Resumindo Cognos 10.1.0 + FP1 ≠ Cognos 10.1.1

A única coisa que me chamou a atenção, até agora, foi o lançamento do report service finalmente em 64-bits, porém ao que parece ele foi feito para ser utilizado junto ao DQM(Dynamic Query Mode) um treco que aprimora query e caches em alguns tipos de fontes de dados como TM1, Essbase e agora em DMR.

Então não se deve esperar que a velocidade ou capacidade dos relatórios diminua e aumente, respectivamente, só nos casos citados.

Fora isso, uma bela lista de correção de erros, e mesmo assim eu já achei um, incrível!

Agora é ir usando pra ver o mais da pra fazer.

Abs

segunda-feira, 12 de setembro de 2011

Active Report - Relatório Ativo - Básico

Como prometido, vamos a uma breve porém explicativa... hum.... explicação.

Adendo: Esse post faz uma explicação para a versão 10.1.0 do Cognos, para a versão 10.1.1 as coisas mudam um pouco.

Fundamentos first:
O que você precisa saber antes de começar relatórios em AR?
1 - Controles
2 - Containers
3 - Variáveis

Então vamos vê-los, um de cada vez, começando pelo primeiro. (Não sou retardado apenas bobo).

1 - Controles
Podemos dizer que os controle são a alma de um AR, eles são responsáveis por todo e qualquer dinamísmo, interatividade e muitas vezes lentidão nesse tipo de relatório.

Controles podem ser: prompts ou objetos de dados como listas, crosstabs ou guias. A grande sacada dos controles é que eles são os objetos que fazem as ações, ou seja, eles definem as variáveis, de alguma forma.

2 - Containers
Bom, qualquer objeto que consiga conter dados é naturalmente um container como decks, listas, crosstabs e até mesmo prompts

Containers são objetos que possuem dados capazes de serem filtrados, de alguma forma seja lá qual for.

Reparou que muitos objetos podem ser tanto controles quanto containers? Depende apenas do ponto de vista e da relação entre eles.

3 - Variáveis
Elas variam... hehe, e graças a essa variação as coisas acontecem!!!
Variáveis são definadas fora dos objetos, mas elas são as conexões entre os objetos.
É atravez de uma variável que um controle define o que vai aparecer em um container! Entendeu?

Não? Então vamos a um exemplo, veja que esse é um exemplo não muito básico, mas foi a primeira coisa em que pensei.

Vamos fazer com quer as colunas de uma lista sejam exibidas de acordo com o botão selecionado.
Selecione o botão "Exibir Coluna A" e voila, exibimos a coluna A.

Pretty simple ha?

Então arraste para a tela dois objetos: "Barra de botões" e uma "Lista".
Crie os campos na query da lista e arraste-os para a lista como ao lado <-.
Clique 2x em cada botão defina os nomes como ao lado também, delete o último.

Fez o que foi escrito? Ficou igual a imagem acima? Ótimo.
Então o que fizemos foi incluir um elemento Controle "Barra de botões" e um Container "Lista".

 Repare que ao lado dos objetos aparece um ícone com 2 bolinhas e 2 setinhas. Clique em qualquer um deles e uma janela como essa ao lado deve aparecer. Se não aparecer, você clicou no lugar errado, cancele e tente novamente.

Clique no link "Gerenciar as variáveis do relatório ativo..."

 Agora clique no ícone "Novo" e digite no nome da variável "Selecionar Coluna".

Pronto, criamos uma variável que vai servir de link entre os objetos Controle e Container.

Tudo certo de novo? Então clique em OK e na tela Comportamento interativo selecione o controle "Barra de botões".

 Observe a área "Definir valores de variáveis", é o primeiro quadro. Clique em "Editar".

Deve aparecer uma tela com as variáveis existentes, no campo valor selecione Rótulo.
Rótulo é o nome do objeto da "Barra de botões" que contém os botões (esse nome pode ser alterado), então quando clicar nos botões o "Rótulo" será igual ao nome do botão clicado.

E estamos dizendo que a variável "Selecionar Coluna" vai receber o valor de "Rótulo".

Clique em OK.

Se você, mais uma vez, fez tudo certo a tela ficará como essa, com uma bolinha verde ao lado da "Barra de botões".

Com isso definimos a parte do controle, agora vamos definir o que acontece quando o controle é alterado.

Selecione a coluna A da lista, procura nas propriedades a opção visibilidade da coluna, clique em editar.
Clique em visível com base na condição e depois em editar.



 Abaixo de valor, digite "Exibir Coluna A", o mesmo texto existente na "Barra de botões" e repare que a variável "Selecionar Coluna" está selecionada.
Pode imaginar o que isso significa né? Bom!
Se você seguiu a risca o passo a passo você deve ter chegado a seguinte imagem.

Faça os últimos passos para a outra coluna e rode o relatório para testar sua façanha!

Essa é uma explicação simples de como criar um Active Report.
Todo o processo deve durar 5 minutos.

Qualquer dúvida, comente!!


quarta-feira, 7 de setembro de 2011

Cognos 10 Active Reports

Bom, já faz um tempo que não escrevo, esses últimos dias foram complicados.

Vamos falar finalmente sobre Active Reports ou Relatórios Ativos!! Eeee!! Viva, finalmente a IBM melhorou uma ferramenta!!.

Bem, é isso que parece, mas não pense que isso resolve todos os problemas do mundo, pelo menos é um começo.

Então, uma das possibilidades do Active Report é ser Offline, ou seja, você pode criar relatórios que são salvos e contém dados embutidos.
Com isso, uma das reclamações dos usuários acaba, e eles podem fazer apresentações ou consultas sem depender de estar na rede corporativa.

Outra coisa bem legal é a interatividade, é possível configurar várias conexões entre os objetos e praticamente tudo pode gerar uma reação.
Então você pode clicar numa linha de uma lista e o gráfico ao lado reflete as informações da linha selecionada.

No próximo post explicarei como criar um Active Report básico, aguarde!

quinta-feira, 18 de agosto de 2011

Dica da semana

Quem já viu o erro "CRX-API-0005"e conseguiu arrumar, sabe que isso é uma pegadinha da Cognos.

Descrição do erro:
Erro próximo à ou na posição '0'. A variável denominada '[Query].[Campo]' não é válida.
ou
An error on or around the position '0'. The variable named '[Query].[Field]' is invalid.

Isso sugere que o erro está em alguma variável condicional, porém esse mesmo erro pode aparecer em função de uma "Report Expression".

Como funciona:
O motor do ReportStudio tenta otimizar as queries removendo os Query Itens não utilizados no layout, variáveis condicionais e Report Expressions NÃO são considerados itens de layout por não possuirem containers(List, Crosstab, Repeater), ou seja, você pode colocar qualquer coisa neles, de qualquer query.

Então aparece o erro porque o campo não está no layout.

Como resolver:
Se você está com problema numa Lista então selecione-a e abra a propriedade "Propriedades"(genial esse nome), selecione o campo com problema.



No caso de um Crosstab ou Gráfico você deve selecionar o nó(ex.: crosstab node) que deve ter escopo com o campo, pode ser necessário ajusta em mais de um. Com o nó selecionado o procedimento é o mesmo da lista.


Explicação Cognos 8 e possivelmente Cognos 10 aqui.

segunda-feira, 15 de agosto de 2011

Javascript Parte 3 - Declarando javascripts

Muitas coisas são feitas via javascripts, mas já me acostumei a ver uns erros comuns, cometidos por mero desconhecimento.

Um deles é o simples fato de não declarar os parametros corretos na TAG <script>.

Esse simples fato pode fazer tudo ir por agua abaixo.

O jeito que identifiquei ser ideal é o abaixo, funciona para as versões 6, 7, 8, 9 do IE e ainda para as versões 3, 4 e 5 do Firefox.
<script type="text/javascript" language="javascript"></script>
Em browsers mais antigos a propriedade language era aceita sem problemas, mas nos mais novos se consolidou a propriedade type, então não deixe de declará-la.

Abs

quinta-feira, 4 de agosto de 2011

Dica da semana

Uma dica muito útil para processos de carga.

Você sabe a diferença entre UNION e UNION ALL?

A diferença é bem simples, UNION agrupa dois sources fazendo DISTINCT do resultset, enquanto UNION ALL  apenas junta os resultsets de cada source.

Em outras palavras, UNION ALL é mais performático por economizar o overhead da agregação.

Claro que cada um serve para uma coisa diferente, mas se você sabe o cenário em que trabalha, agora pode escolher se vai utilizar um ou outro.

Abs,

Data Manager 10.1 - Erro no Pivot

Vamos ao primeiro post sobre Data Manager.

Demorou mas por fim apareceu um erro na versão 10.1 do Data Manager, ele aparece com esse síntoma:

  DM-HDL-0104 The handle is valid, but not of the correct type.

Acontece ao editar um Datastream que possúi pivots mapeados, sem explicação aparente.
A explicação é simples, BUG!
Como resolver? Instalando o FP 1.

Agora vamos esperar pra ver se não aparece outro.

terça-feira, 2 de agosto de 2011

Javascript Parte 2 - Executar relatório

Muitas vezes precisamos executar o relatório com uma opção pré definida, mas sem exibir a página de prompt ao usuário.

Uma solução possível é exibir a página de prompt por uma fração de segundos, só para pegar as informaçõs dos prompts e executar o relatório.

Por eexemplo, você quer que o relatório seja executado com o último ano e mes carregado, mas também quer que seja possivel escolher outros períodos.

Então você configura seu prompt pra para trazer de modo decresce os periodos, remove os ifens e a linha de título e manda rodar o relatório, assim a primeira opção da lista será passada como parametro.

Então para executar o relatório via javascript o comando muda de acordo com a versão, veja abaixo os comandos para cada uma:
8.1 e 8.2 - setTimeout('promptActionFinish()',100);
8.3, 8.4 e 10.1 - setTimeout('promptAction(\'submit\')',100);  OU setTimeout('promptAction(\'finish\')',100);
Explanação: o comando setTimeout(arg 1, arg 2) server para chamar a função arg 1 de acordo com o tempo arg 2 em milisegundos.

Lembrando que esse comando deve estar sempre dentro de um HTML Item no rodapé da página, e dentro da TAG <script>

sábado, 30 de julho de 2011

Javascript Parte 1 - Obtendo Parametros

A partir de hoje, durante as próximas semanas, colocarei post relacionados ao trabalho com javascripts

Para começar a brincadeira vai o primeiro código:

var fW = typeof getFormWarpRequest == "function" ? getFormWarpRequest() : document.forms["formWarpRequest"];

Esse script retorna o formulário utilizado pelo Cognos, é possível obter praticamente qualquer informação por ele. Serve tanto para a versão 8 quanto a 10.

Abs

terça-feira, 26 de julho de 2011

Dica da Semana

Esses dias peguei um erro meio estranho no Cognos 10, rodei um relatório e apareceu uma mensagem de erro de javascript.

O pior é que era um javascript do Cognos que deu erro, um tal GUtil.js.

bom, procurando na internet achei esse link da IBM aqui, ele explica a solução para o problema com o bubble chart.

Eu tive esse problema com drills em listas mas a resolução é a mesma.

Então no Internet Explorer, vá em Ferramentas, opções e avançadas. Na parte de segurança procure por Habilitar suporte para XMLHTTP nativo e pronto.


Espero que ajude.

quarta-feira, 20 de julho de 2011

Dica da semana

Essa dica vai para quem está acostumado a utilizar a versão 8 mas por alguma conspiração do universo precisa usar a versão 10.

Como muitos, ou todos, devem saber, a versão 10 possui um novo motor gráfico e obviamente mudou tudo.

Dica 1
Você ainda pode utilizar o motor antigo, se quiser por retro-compatibilidade. Relatórios vindos de upgrades não migram o motor gráfico, é necessário marretar o trem.
Então se você precisa, ou não, utlizar o motor novo, dentro do Report Studio vá em Ferramentas, Opções e Avançado.
Check a opção Usar criação de gráficos anterior para...hum... usar a versão 8.
Uncheck a opção Usar criação de gráficos anterior para...vejamos... usar a versão 10.

Dica 2
Na versão 8, quando você queria associar uma série ao eixo secundário, você simplesmente escolhia o eixo nas propriedades daquela série, certo?
Na versão 10... advinha, mudou... você precsia selecionar o gráfico. Existe uma propriedade no gráfico chamada Combinações, nela você pode especificar o que (linhas, barras ou áreas), como (empilhado, empilhado 100% ou cluster) e onde (eixo primário, eixo secundário, etc).

Depois de definido o que, como e onde, você pode continuar normalmente a construção de seu gráfico.

Espero que ajude.

Abs.

terça-feira, 19 de julho de 2011

Configurações avançadas - Burst to file system

Como configurar o Cognos para gerar relatórios em arquivos.

Relatórios em busrt(distribuição) são uma opção interessante quando se precisa criar sub-relatórios seguindo um padrão, o Cognos possibilita a geração de busrt de 3(três) formas:
1 - Geração e envio por e-mail.
2 - Geração e salvar no portal.
3 - Geração e salvar em sistema de arquivos.

Todas opções são interessantes, depende do cenário.

Nesse caso:
Archive Location File System Root, esse é o nome bicho. Essa opção está disponível no Cognos Configuration do App Tier, pode-se configurar um endereço local ou UNC com file:// na frente.
Ex.:
file:///C:/Cognos/files - Local
file://\\server1\files - UNC
file://../files - relativo a instalação do Cognos

No Cognos Configuration faça duas coias, primeiro em Action -> Edit Global Configuratios -> Aba General, coloque o caminho em "Archive Location File System Root".
Depois em Content Manager habilite a opção "Save report outputs to a file system".

Uma vez definido o diretório, é possivel acessar IBM Cognos Administration, Configurações e configurar as entradas de diretórios relativo ao definido acima.

Acesse o icone "Definir Locais de Sistema de Arquivos" e defina um nome(será exibido nas opções do busrt) novo local para a geração de arquivos e defina a segurança de quem pode gerar arquivos nessa entrada.

Tudo configurado? Faça o teste:
Rode um relatório com opções, clique em salvar, opções avançadas, e salvar no sistema de arquivos.

Obs.: Essa opção não precisa ser usada necessariamente com busrt.

sexta-feira, 15 de julho de 2011

Javascript Freeze Panes - Congelar Paineis

Quem nunca ouviu aquela frase "Mas no excel dá!"?

Então, no Cognos Também dá.

Segue abaixo a função, encontrei essa função para isso, mas não funcionava direito, mexi um pouco nela e ficou assim.

Modo de usar:
  1. Crie um html itém com a função abaixo dentro da tag <script language="javascript" type="text/javascript"> FUNÇÃO </script>.
  2. Crie um html itém como o conteúdo <span id="t1"> imediatamente antes da lista ou crosstab.
  3. Crie um html itém como o conteúdo </span> imediatamente depois da lista ou crosstab.
  4. No final do relatório crie um html itém com o conteúdo <script language="javascript" type="text/javascript"> ScrollableTable( 't1', 600,800, 1, 2)</script>
Utilize as variáveis freezeRow e freezeCol  para definir onde será congelado.

Bom proveito!

------>>>> Código da função

quarta-feira, 13 de julho de 2011

Configurações avançadas - Roteamento de execução

Como configurar regras de roteamento de pacotes e usuários, para dispatcher específicos.

As vezes, quando o ambiente é muito grande ou existem servidores específicos para certas áreas, regras de roteamento se tornam muito, muito, úteis.

Vou dar dois cenários onde fica visível a utilização de roteamentos.

1º Cenário:
Ambiente: 2 Dispatchers (server01 e server02), 1 Gateway (server01) e um Content Manager(server01).
Obs.: Server01 e Server02 configurados em load balance.

É muito comum empresas que possuem Cognos também possuirem alguma espécie de cubo plugado ao Cognos, nesse caso também é normal que existe um compartilhamento de rede que permitar que ambos os dispatchers acessem o mesmo cubo.
Mais comum ainda é o cubo estar em um dos dispatchers e ser acessado por um compartilhamento pelo outro dispatcher.

O que acontece nesse caso?
O Server01 tem um compartilhamento file://server01/cubos que é o caminho no datasource do cubo(Cognos Connection), ou seja ambos servidores acessam o cubo pela rede.

Por experiência posso dizer que quando o dispatcher no server01 acessa o cubo cria-se uma conexão local, sem tráfego de rede, mas quando o dispatcher no server02 acessa o cubo, bom... ai o drama começa.
Lentidão e travamento são problemas que podem acontecer em função desse tráfego de rede, ainda mais se o cubo for grande.

Para solucionar esse caso existem duas possibilidades a meu ver:
1 - Duplicar os cubos em ambos servidores e criar um apontamento local para o datasource, como C:\cubos.
2 - Criar uma regra de roteamento para pacotes de cubo serem processados somente pelo server01.

A primeira opção não tem nada a ver com esse post então não vem ao caso, logo vamos a segunda.
Antes de dizer como criar uma regra de roteamento, existem algumas informações muito úteis que podem causar confusão senão explicadas.

Regras de roteamento podem ser beseadas em 3 itens, pacote(packages), funções(roles) e grupos(groups), e são direciodadas para um GRUPO de SERVIDORES.
  • Para configurar um grupo de servidores acesse as propriedades de um Dispatcher em Administração do Portal -> Configuração.
Em ajuste(tunning) existe um campo texto onde você pode digitar o nome do grupo.
Load balance só acontece em servidores dentro do mesmo grupo, portanto cuidado com essas configurações.
  • Para configurar pacotes, funções ou grupos, acesse as propriedades do objeto, e na parte inferior da tela defina um conjuto de roteamento.
Você pode definir um novo ou utilizar um já existente.

Voltando a vaca fria...
Agora que esses pontos estão claro, né? Vamos criar um regra de roteamento, depois de criar o conjunto de regras e o grupo de servidores, na tela de configuração em Administração do Portal existem um icone Especificar Regras de Roteamento, é o quarto da direita para a esquerda.

Muito simples, escolha o cojunto, grupo de servidores e voila... feito.

Voltando para o cenário:
Server01 no Grupo de Servidores Cubos
Server02 no Grupo de Servidores Relatórios
Todos pacotes de cubos definidos nos conjunto de roteamento CUBOS

Regras criadas:
SequenciaConjunto de Reteamento PacoteConjunto de Reteamento GrupoConjunto de Reteamento FunçãoGrupo de Servidores
1CUBOSQualquerQualquerCubos
2QualquerQualquerQualquerRelatórios

Repare que foi criada uma segunda regra para o resto dos pacotes.
Mas... se você foi atento e leu o post todo, viu que isso promove a perda de load balance, pois cada servidores estará num grupo diferente.
Para resolver isso, sugiro a instalação de um novo dispatcher no server01, só o dispatcher hein!!

Dessa forma o ambiente ficaria assim:
Ambiente: 3 Dispatchers (server01:9300, server01:10300 e server02), 1 Gateway (server01) e um Content Manager(server01).
Obs.: Server01:9300 e Server02 configurados em load balance e Server01:10300 para cubos.
Assim se resolve o load balance e o problema de acesso de cubos pela rede.

No 2º cenário o caso é que temos um servidor para cada area.

Nesse caso configuramos os grupos de usuários ou funções para cada área e colocamos as pessoas dentro dele, depois criamos uma regra para cada conjunto.

Ambiente:3 Dispatchers (server01-FATURAMENTO, server02-FINANCAS e server03-ESTOQUE), 1 Gateway (server01) e um Content Manager(server01).

Então teremos:
Server01-FATURAMENTO no Grupo de Servidores Faturamento
Server02-FINANCAS no Grupo de Servidores Finanças
Server03-ESTOQUE no Grupo de Servidores Estoque
E os usuários definidos nas funções (roles) Faturamento, Finanças e Estoque, e as funções com seus conjuntos de reteamento também definidos.

Regras criadas:
SequenciaConjunto de Reteamento PacoteConjunto de Reteamento GrupoConjunto de Reteamento FunçãoGrupo de Servidores
1QualquerQualquerFaturamentoFaturamento
2QualquerQualquerFinançasFinancas
3QualquerQualquerEstoqueEstoque

Como sempre, dúvidas? Comente, email-me.
Já escrevi mais do que o planejado, fui.

terça-feira, 12 de julho de 2011

Customizing - Custom Chart Palette

Alterando a paleta de cores pré-definda dos gráficos.

As vezes, quase nunca, uma empresa decide que os relatórios e o portal do Cognos devem coincidir com identidade da empresa e para tal, é necessário alterar o esquema de cores de tudo (relatório, gráficos, crosstabs, etc).
Eis que para facilitar nossa vida, existe um arquivo chamado ChartPalettes.xml que contém as informações das paletas para versão 8 e um reportPresents.xml complementar para versão 10.

Quem já viu a versão 10 provavelmente agradeceu muito a IBM, pois os gráficos melhoraram muito todavia o XML mudou um pouco...ficou mais difícil mas ainda dá.

Na versão 8 o arquivo ChartPalettes.xml fica localizado em webcontent/pat/res, alterou, está pronto.
Na versão 10 existem tres arquivos, procure os arquivos ChartPalettes.xml e reportPresents.xml no caminho acima, o outro em webcontent\flex.

Importante, alguns arquivos as cores estão definidas em hexadecimal (#FF0000 = vermelho), em outros estão em decimal (255,0,0 = vermelho).

Fora isso, ainda deve-se alterar os arquivos reportstudio_xx.xml, eles contêm as traduções dos IDs, faça um trabalho bem feito e crie IDs  e imagens com o padrão e não reutilize nada.

Importante faça o BACKUP dos arquivos.

Veja o PDF oficial para versão 8 aqui.
Logo menos outras informações de customizing...

Abs.

sexta-feira, 8 de julho de 2011

Dica da semana

Relatório lento? DMR, Relacional ou OLAP?

- DMR
Coisa feia.. mas funciona basicamente como um cubo, tanto que MDX funciona.
Se seu relatório é em DMR e está lento, procure verificar o tamanho das tabelas envolvidas, esse modo foi desenvolvido para tratar de tabelas pequenas, agregadas, em tabelas muito grandes considere a abordagem normal.

- Relacional
Ai o bixo pega, pois podem ser muitos fatores, creio que os mais comuns são falta de índices e utilização de funções de aplicação logo de cara.
Sempre que for fazer um relatório, leve para a query somente o que for estar visível ou necessário para agregações, tenha certeza de que os relacionamentos estão bem feitos e analise a query para conferir.
Faça uma consulta paralela ao banco e compare os tempos do relatório e do banco, não pode ser muito diferente.
Funções como total( ... for) dificilmente são aplicadas no banco, e são geralmente tratadas na aplicação(servidor cognos), se forem utilizadas na primeira query farão um belo estrago, trazendo muito mais informação do que o necessário para só depois agregar, nesse caso, faça subqueries e só utilize essas funções depois que o nível de agregação do banco já foi feito.

- OLAP(Cubos)
Isso serve para todos os cubos MSAS, PowerCube, etc
Não faça detail filters, pois funciona como funções de aplicação, que antes de filtrar trazem todos os dados do cubo, e isso pesa pacas!!
Utilize slicers(filtros de contexto) e a função filter, que são muito mais performáticas.

Dúvidas? E-mail me!

Tudo tem um início.

Eis o primeiro post do blog, sem nada para ninguem ver...

Logo estarei postando coisas, é.. coisas sobre esse tal de Cognos que hoje é IBM.

Versões 8.2, 8.4.1 e 10, que são as que estão na moda.

E uns pitacos de banco...

Aguardem.