ostrstream ss;
char* s;
...
ss << "The calculated future value is: " << FV->GetDouble() << ends;
s = ss.str();
(*m_pfnMessageCallback)(E_MSG_TYPE_LOG, 0, s);
(*m_pfnMessageCallback)(E_MSG_TYPE_ERR, 0, s);
delete [] s;
Quando o Serviço de Integração cria um objeto do tipo Tx<MODNAME>, ele transfere ao seu construtor um ponteiro para uma função de retorno de chamada, que pode ser usada para escrever mensagens de erro ou depuração no log da sessão. (O código para construtor de Tx<MODNAME> está no arquivo Tx<MODNAME>.cpp.) Este ponteiro é armazenado no membro Tx<MODNAME> variável m_pfnMessageCallback. O tipo deste ponteiro é definido em um typedef no arquivo $PMExtProcDir/include/infemmsg.h:
typedef void (*PFN_MESSAGE_CALLBACK)(
enum E_MSG_TYPE eMsgType,
unsigned long Code,
char* Message
);
Também definida nesse arquivo está a enumeração E_MSG_TYPE:
enum E_MSG_TYPE {
E_MSG_TYPE_LOG = 0,
E_MSG_TYPE_WARNING,
E_MSG_TYPE_ERR
};
Se você especificar o eMsgType da função de retorno de chamada como E_MSG_TYPE_LOG, tal função escreverá uma mensagem
log
no log da sessão. Se você especificar E_MSG_TYPE_ERR, a função de retorno de chamada escreve uma mensagem de
erro
no log da sessão. Se você especificar E_MSG_TYPE_WARNING, a função de retorno de chamada gravará uma mensagem
aviso
no log da sessão. Use estas mensagens para permitir uma capacidade de depuração simples nos procedimentos externos Informatica.
Para depurar procedimentos externos COM, você pode usar as instalações de saída disponíveis dentro de uma classe do Visual Basic ou C++. Por exemplo, no Visual Basic use um MsgBox para imprimir o resultado de um cálculo para cada linha. Obviamente, você deseja fazer isto somente em amostras pequenas de dados durante a depuração, e não deixe de remover o MsgBox antes de fazer uma execução de produção.
Antes de tentar usar qualquer instalação de saída dentro de uma classe Visual Basic ou C++, adicione o seguinte valor ao registro:
Adicione a seguinte entrada ao registro do Windows:
\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\PowerMart\Parameters\MiscInfo\RunInDebugMode=Yes
Esta opção inicia o Serviço de Integração como um aplicativo regular, não um serviço. Você pode depurar o Serviço de Integração sem alterar os privilégios de depuração deste serviço enquanto ele está executando.
Inicie o Serviço de Integração a partir da linha de comando, usando o comando PMSERVER.EXE.
O Serviço de Integração está agora executando no modo de depuração.
Quando terminar a depuração, certifique-se de remover esta entrada do registro ou configurar o RunInDebugMode como Não. Do contrário, quando você tentar iniciar o PowerCenter como um serviço, ele não iniciará.
Interrompa o Serviço de Integração e altere a entrada de registro que você adicionou anteriormente à seguinte configuração:
\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\PowerMart\Parameters\MiscInfo\RunInDebugMode=No
Reinicie o Serviço de Integração como um serviço do Windows.