Centro de Data Warehouse Guia de Administração


Gravando seu programa para ser usado com o Centro de Data Warehouse

Você pode gravar programas em qualquer linguagem que suporte um dos seguintes tipos de programas: executável, programa batch, biblioteca de ligação dinâmica ou procedimento armazenado.

Se o programa definido pelo usuário for do tipo executável, programa batch, arquivo de comandos batch ou biblioteca de ligação dinâmica, ele deverá residir no local do agente. O agente do warehouse inicia o programa no horário programado. No Windows NT, o agente é executado como um processo do sistema por definição, o que significa que o programa não pode acessar recursos ou programas que requerem uma ID de usuário. Além disso, todas as variáveis de ambiente que o programa precisa acessar devem ser variáveis do sistema.

Se você gravar programas definidos pelo usuário usando o Object REXX para Windows, complete o seguinte procedimento para possibilitar que os programas sejam executados no Windows NT:

  1. Defina o serviço do servidor ou agente do warehouse como um processo do sistema que pode interagir com o desktop do Windows NT:
    1. Selecione o serviço do servidor ou agente da lista Service.
    2. Clique em Startup.
    3. Clique em System Account.
    4. Selecione a caixa de seleção Allow Service to Interact with Desktop.
  2. Inicialize o ambiente do Object REXX antes do servidor ou agente do warehouse iniciar o programa. Você pode inicializar o ambiente por meio da execução de qualquer programa do Object REXX a partir da linha de comandos.
  3. Se o programa do Object REXX emitir uma instrução DB2 CONNECT, verifique se ela contém a ID do usuário e a senha, como neste exemplo:
    DB2 CONNECT TO testdb USER db2admin USING db2pass
    

Se o programa definido pelo usuário tiver o tipo procedimento armazenado, o programa deverá residir no banco de dados do warehouse associado à etapa que executa o programa.

Transmitindo parâmetros

No tempo de execução, o Centro de Data Warehouse gera uma lista de parâmetros da linha de comandos que ele transmite como entrada ao programa definido pelo usuário. Sempre que possível, teste o programa a partir da linha de comandos antes de usá-lo em uma etapa.

Exemplo: Você grava um programa definido pelo usuário que verifica um arquivo em intervalos regulares em uma estação de trabalho Windows NT. Ele usa os seguintes parâmetros:

O programa obtém os parâmetros conforme mostra a Figura 15:

Figura 15. Lendo os parâmetros da linha de comandos

char *remoteFile    = argv[1];
int  interval = 5;	// verificar a cada 5 minutos
int  timeout = 60; // perído do tempo limite em minutos
 
if( (argc==3) || (argc==4) )  
{
        if( NumStrValidation( argv[2] ) ) // obter intervalo de polling
        {
                interval = atoi( argv[2] );
                if( interval == 0 )
                        interval = 5;  // usar um original
        }
        else
        {
                trace << "Invalid value for polling interval\n";
                flush(trace);
                return PARAMETER_ERROR;
        }
 
        if( argc==4 )		// obter o período do tempo limite
        {
                if( NumStrValidation( argv[3] ) )
                {
                        timeout= atoi( argv[3] );
                        if( timeout == 0 )
                                timeout = 480;  // usar um original
                }
                else
                {
                        trace << "Invalid value for timeout period\n";
                        flush(trace);
                        return PARAMETER_ERROR;
                }
        }
}

Apresentando informações de status

Depois que o programa for executado, ele deverá apresentar um código de retorno à etapa que usa o programa. O código de retorno deve ser um número inteiro positivo. Se o programa não apresentar o código, a etapa que usa o programa poderá falhar. O Centro de Data Warehouse exibe o código de retorno no campo Erro RC2 da janela Detalhes de Log quando o valor do Erro RC1 for 8410. Se o valor do Erro RC2 for 0, o programa terá sido executado com sucesso e sem erros.

O programa pode apresentar outras informações de status ao Centro de Data Warehouse:

O agente do warehouse transfere outras informações de status para o servidor do warehouse.

Transferindo as informações para as Centro de Data Warehouse

Para transferir outras informações de status para o agente do warehouse, o programa deve criar um arquivo, chamado arquivo de feedback, que contém informações de status adicionais. O nome de arquivo e o caminho do arquivo de feedback foi especificado na variável de ambiente VWP_LOG, que o agente do warehouse define antes de chamar o programa do warehouse. O programa deve ler o valor dessa variável, usando a chamada de sistema apropriada, para criar o arquivo de feedback. Depois de terminada a execução do programa definido pelo usuário, o agente do warehouse verifica se o arquivo de feedback existe. Se existir, o agente processará o arquivo. Caso contrário, o agente do warehouse não fará nada. Se o programa definido pelo usuário não puder criar o arquivo, ele deverá continuar a execução.

Formato do arquivo de feedback

O programa definido pelo usuário pode gravar outras informações de status no arquivo de feedback em qualquer ordem, mas deve usar o seguinte formato para identificar as informações. Coloque cada item apresentado entre a tag inicial <tag> e a tag final </tag> na seguinte lista. Todas as tags iniciais devem ser seguidas pela sua tag final; você não pode incluir duas tags iniciais em uma linha. Por exemplo, este formato de tag é válido:
<RC>...</RC>...<MSG>...</MSG>
E este formato de tag embutida não é válido:
<RC>...<MSG>...</RC>...</MSG>

Você pode especificar estas informações no arquivo de feedback:

Código de retorno
<RC>return code</RC>, em que return code é um número inteiro positivo.

Sinalizador de aviso do código de retorno
<WARNING>1</WARNING> define o sinalizador de aviso do código de retorno como ligado. Se esse sinalizador estiver ligado, o status de processamento da etapa na janela Trabalho em Andamento será Aviso.

mensagem do sistema Centro de Data Warehouse
<MSG>message text\n</MSG>

message text
O texto de uma ou mais mensagens

\n
O caractere de avanço de linha. Inclua esse caractere no final de cada mensagem se houver várias mensagens.

Comentário
<COMMENT>comment text</COMMENT>, em que comment text é o texto do comentário.

Número de linhas dos dados processados
<ROWS>number of rows</ROWS>, em que number of rows é um número inteiro positivo.

Número de bytes processados
<BYTES>number of bytes</BYTES>, em que number of bytes é um número inteiro positivo.

SQLSTATE
<SQLSTATE>sqlstate string</SQLSTATE>, em que sqlstate string é uma cadeia cujo comprimento é maior do que 0 e menor ou igual a 5 dígitos.

A Figura 16 mostra um exemplo do arquivo de feedback.

Figura 16. Exemplo do arquivo de feedback

<RC> 20</RC>
<ROWS>2345</ROWS>
<MSG>The parameter type is not correct</MSG>
<COMMENT> Please supply the correct parameter type (PASSWORD
     NOTREQUIRED, GETPASSWORD, ENTERPASSWORD)</COMMENT> 
<BYTES> 123456</BYTES>
<WARNING> 1</WARNING>
<SQLSTATE>12345</SQLSTATE>

Como o feedback determina o status da etapa

Os códigos de retorno e o status da etapa do programa definido pelo usuário que são exibidos no visualizador de log variam, dependendo dos seguintes valores definidos pelo programa:

A Tabela 17 lista as possíveis combinações desses valores e os resultados que eles produzem.

Tabela 17. Resultados e condições do arquivo de feedback
Condições Resultados
Status da etapa1 Valores de Erro RC1 e RC2
O código de retorno do prog. definido pelo usuário é 0 Não existe nenhum arquivo de feedback2 Bem-sucedida

RC1 = 0;

RC2 = 0

Existe um arquivo de feedback2 O valor do <RC> no arquivo de feedback é 03 <WARNING> não foi definido no arquivo de feedback Bem-sucedida

RC1 = 0;

RC2 = 0

O valor de <WARNING> no arquivo de feedback é 1 Aviso

RC1 = 0;

RC2 = 0

O valor de <RC> no arquivo de feedback é não-03 <WARNING> não foi definido no arquivo de feedback Com falhas

RC1 = 8410

(o prog. definido pelo usuário falhou);

RC2 = o valor de <RC> no arquivo de feedback

O valor de <WARNING> no arquivo de feedback é 1 Aviso

RC1 = 0;

RC2 = o valor de <RC> no arquivo de feedback

O código de retorno do prog. definido pelo usuário é não-zero Não existe nenhum arquivo de feedback2 Com falhas

RC1 = 8410 (o prog. definido pelo usuário falhou);

RC2 = o código apresentado pelo prog. definido pelo usuário

Existe um arquivo de feedback2 O valor do <RC> no arquivo de feedback é 03 <WARNING> não foi definido no arquivo de feedback Bem-sucedida

RC1 = 0;

RC2 = 0

O valor de <WARNING> no arquivo de feedback é 1 Aviso

RC1 = 0;

RC2 = 0

O valor do <RC> no arquivo de feedback é non-0 <WARNING> não foi definido no arquivo de feedback Com falhas

RC1 = 8410 (o prog. definido pelo usuário falhou);

RC2 = o código apresentado pelo prog. definido pelo usuário

O valor de <WARNING> no arquivo de feedback é 1 Aviso

RC1 = 0;

RC2 = o valor de <RC> no arquivo de feedback

Notas:

  1. O status de processamento da etapa, conforme mostra a janela Trabalho em Andamento.

  2. O Centro de Data Warehouse verifica a existência do arquivo de feedback, independentemente do código de retorno do programa definido pelo usuário ser 0 ou não-zero.

  3. O valor de <RC> no arquivo de feedback é sempre exibido como o valor do campo RC2 da janela Detalhes de Log.


[ Início da Página | Página Anterior | Próxima Página | Índice | Índice Remissivo ]