Oracle BAM – Monitoramento instantâneo do negócio

Algumas tecnologias viram moda tão rapidamente que muitas empresas as adotam antes mesmo de o pessoal de negócios aprender o significado das siglas que as denominam. Este é sem dúvida o caso do BAM (Business Activity Monitoring) que muitas pessoas confundem com outras ferramentas como BI (Business Intelligence) e CEP (Complex Event Processing).

Mas o que é BAM e para que serve?

Business Activity MonitoringBAM é uma ferramenta de monitoramento da atividade do negócio através do acompanhamento em tempo real de indicadores. Isso possibilita a tomada de decisão de forma ágil a partir da análise desses indicadores assim como a execução de planos de contingência baseado em gatilhos previamente definidos, seja através do envio de alertas, execução de webservices, ou outras ações. Nesse artigo, vamos apresentar um visão geral do Oracle BAM.

 

Oracle BAM é um produto da suite Oracle Fusion Middleware que permite integração flexível com outros sistemas através de ODI (Oracle Data Integrator), webservices e conexões a diferentes bancos de dados, entre outras formas.

Uma grande vantagem do Oracle BAM é seu poder de manipulação de grandes volumes de dados, através do ADC (Active Data Cache), que podem ser capturados de diferentes bases de dados, de processos BPM e diversas outras fontes de informação.

Traduzindo todas estas informações e mudanças em elementos visuais, relatórios e alertas, o Oracle BAM tem sido utilizado por muitas empresas para monitorar desde ocorrências operacionais em ambientes de TI e infraestrutura (Service Desk, por exemplo), acompanhamento do volume de transações comerciais, alertas em desvios de processos de negócios, controle e execução de prazos de projetos complexos, entre muitos outros casos de sucesso.

A ferramenta foi idealizada para permitir a separação entre níveis de operação e acesso. Assim, suas funcionalidades principais são divididas basicamente em três visões:

BAM Architect é a interface onde o arquiteto de dados cria e gerencia os objetos de dados que contém as informações utilizadas nos gráficos e relatórios. Os objetos de dados são uma representação virtual das diversas origens de informações possíveis de forma consolidada. Também permite a utilização de cálculos de baixa e média complexidade sobre os dados, facilitando a apresentação e agrupamento das informações de interesse para o negócio.

 

BAM Active Studio é um ambiente de desenho onde os gráficos, os alertas, as conexões com webservices e o agendamento do envio de relatórios são realizados. A personalização da interface não é um ponto forte da ferramenta, mas o uso dos diversos templates e a combinação de diferentes estruturas existentes garantem, em conjunto, sua utilização em projetos de todos os tamanhos e para qualquer tipo de necessidade.

 

 

BAM Active Viewer é a ferramenta para a visualização dos relatórios e gráficos. É o painel de monitoramento propriamente dito, onde é realizado o controle de acesso por usuário, por relatório, por pasta de relatórios, etc.

 

 

Além da limitação de acesso a determinados relatórios por usuário, inclusive de forma integrada a servidores LDAP, o Oracle BAM permite ainda restringir a visualização de dados dos relatórios por usuário ou pelos grupos dos quais o mesmo faz parte. Assim, é possível permitir que um gerente acesse o mesmo relatório da direção da empresa, porém exibindo somente as informações da sua filial ou região.

Duas grandes funcionalidades que merecem destaque são o envio agendado de relatórios por email e o disparo de alertas, com diversas ações associadas (envio de relatórios e informações por email, invocação de serviços externos para objetivos específicos, execução de cenários ODI, etc), periodicamente ou atendendo à condições específicas previamente definidas (quando determinado índice atinge um nível mínimo, por exemplo).

Essa pró-atividade e resposta instantânea às mudanças sensíveis ao negócio são os instrumentos de gestão que conferem a agilidade e assertividade na tomada de decisões, bem como a execução de planos de contingências no momento apropriado.

Oracle BAM – Atualizando a definição de dataObjects

Em um artigo anterior (http://blog.iprocess.com.br/2012/04/exportacao-e-importacao-de-objetos-do-oracle-bam/) vimos como utilizar o comando icommand para  importar/exportar objetos do Oracle BAM, dentre eles um data object, que é a estrutura onde os dados exibidos no Oracle BAM são armazenados.

Neste tópico, veremos como atualizar a definição dos data objects do Oracle BAM de uma forma um pouco mais poderosa que utilizando o icommand, por meio dos webservices do Oracle BAM.

Problema:

Uma das limitações do icommand é que ele não permite “atualizar” um data object. Por exemplo, via icommand, não é possível incluir uma nova coluna. É preciso excluir o data object e criá-lo novamente, o que acarreta a perda de referências e também a perda de dados.

Solução:

Utilize o webservice DataObjectDefinition (http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/bam_webservices.htm) para enviar a nova estrutura do data object, sem perder os dados existentes.

O modo de funcionamento é simples: você envia a nova estrutura do data object no payload. As colunas que existirem com o mesmo nome serão atualizadas, as que não existirem serão criadas e as que existirem mas não estiverem na nova definição, serão excluídas.

Exemplo de payload:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bam="http://xmlns.oracle.com/bam" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header/>
   <soap:Body>
      <bam:Update>
         <bam:xmlPayload>
            <![CDATA[
            <DataObject Version="14" Name="Distribuicao" ID="_Distribuicao1" Path="/Logistica" External="0">
               <Layout>
                  <Column Name="Local" ID="_Local" Type="string" MaxSize="100" Nullable="1" Public="1" TipText="&quot;CQ&quot; / &quot;Buffer&quot; / &quot;Direto&quot;"/>
                  <Column Name="Quantidade" ID="_Quantidade" Type="integer" Nullable="1" Public="1"/>
                  <Column Name="Data_Expiracao" ID="_Data_Expiracao" Type="datetime" Nullable="1" Public="1" TipText="Data de expiração dos dados no BAM"/>
               </Layout>
            </DataObject>
            ]]>
         </bam:xmlPayload>
      </bam:Update>
   </soap:Body>
</soap:Envelope>

Note que o formato do payload é o mesmo que o utilizado no XML exportado ou importado via icommand, o que facilita o trabalho.

A atualização terá ocorrido com sucesso se o retorno do webservice for o elemento “UpdateResponse” vazio.

Exportação e importação de Objetos do Oracle BAM

A interface padrão do Oracle BAM permite criar e salvar objetos diretamente no servidor do Oracle BAM. Desta forma, não é necessário salvar os objetos em arquivo na máquina local.

Porém, em determinados momentos é necessário exportar os objetos criados no servidor atual para outro servidor (ex: para testar os dashboards criados no servidor de desenvolvimento no servidor de testes).

Neste post, aprenderemos como exportar e importar objetos criados no Oracle BAM. Todos os componentes do Oracle BAM, podem ser exportados para um arquivo XML através do comando ICOMMAND.

iCommand

O iCommand é um utilitário que permite importar e exportar os diversos componentes do Oracle BAM através do prompt do DOS.

Exemplo de comando para exportar:

 icommand type=export name=myComponent type=dataobject file=myFile.xml

Exemplo de comando para importar:

 icommand type=import file=myFile.xml

Procedimentos antes de executar os comandos de importação e exportação:

  1. Se necessário, setar o Java Home: export JAVA_HOME=/home/oracle/Middleware/home_soa11g/jdk160_11
  2. No servidor do BAM, entrar no diretorio /home/oracle/Middleware/home_soa11g/Oracle_SOA1/bam/bin e executar o comando de exportação ou importação
  3. Caso os reports a serem exportados tenham drill, os reports referenciados devem ser exportados separadamente, e importados sempre ANTES dos reports que os referenciam. Do contrário, irá ocorrer a mensagem “DrillAcross Destination Report not found.”

Mensagens de erro comuns:

  1. Se o iCommand retornar o erro “BAM-01261: Cannot connect to the Oracle BAM Server”, verificar no arquivo /home/oracle/Middleware/home_soa11g/Oracle_SOA1/bam/config/BAMICommandConfig.xml se o parâmetro “ADCServerPort” está setado com a porta no qual o BAM foi efetivamente instalado (o valor padrão é 9001). Caso seja diferente, ajustar para a porta correta e tentar novamente.

Exemplos diversos:

Exportação de reports:

Exportando a pasta “Meus Relatórios” (e todos os relatórios dentro dela):

./icommand -cmd export -name ”/private:weblogic/Report/Meus Relatórios/Coleções” -type folder -file teste.xml

Exportando a pasta “Relatórios compartilhados” (e todos os relatórios dentro dela):

./icommand -cmd export -name ”/public/Report/MainFolderInShared” -type folder -file C:\FolderExportTest2.xml

Exportando um relatório privado:

./icommand -cmd export -name ”/private:bamadmin/Report/MyReport” -type report -file C:\MyReport.xml

Exportando um relatório da pasta “Relatórios Compartilhados”:

./icommand -cmd export -name ”/public/Report/SharedReport” -type report -file C:\SharedReport.xml

Exportação de Data Objects:

Exportando um Data Object da pasta raiz:

./icommand -cmd export -name TestDataObject -file “C:\TestDataObject.xml”

Exportando um Data Object de dentro de uma pasta específica:

./icommand -cmd export -name ”/Samples/Call Center” -file “C:\CallCenter.xml”

Exportando uma pasta de Data Objects inteira:

./icommand -cmd export -name ”/public/DataObject/Colecoes/Desempenho por Marcas” -type folder -file objects.xml

Importação de objetos (reports, data objects, etc):

./icommand -cmd import -file /home/oracle/Middleware/home_soa11g/Oracle_SOA1/bam/bin/teste.xml

Para maiores informações, consulte:
http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/bam_app_icommand.htm