TIBCO - BusinessWorks - Faça o caminho do processo dinamicamente
-
22-09-2019 - |
Pergunta
Estou desenvolvendo um processo que lerá e enviará uma imagem em um e-mail. Esta imagem é uma pasta dentro desse processo.
O problema é: como faço para obter o caminho em que o processo está em execução?
Algo como um 'Server.MapPath'
Isso retorna o caminho da imagem no sistema de arquivos.
Desde já, obrigado.
Solução
Se suas imagens existirem em uma pasta no seu projeto BW, você poderá usar a atividade de 'Recuperação de Recursos' para obter o conteúdo.
Você só precisa definir o recurso com o caminho relativo em seu projeto e ele produzirá os dados base64.
Outras dicas
O Soap RetrieVerSources pode ser uma boa solução, mas lança uma NullPointerException para mim no BW 5.4. Talvez seja um bug nesta versão.
O problema em relação à obtenção de um 'caminho raiz' é que um projeto BW implantado não mantém sua estrutura de pasta/arquivo original - o implantador não 'explodirá' o arquivo EAR. Portanto, você não encontrará a imagem como um arquivo separado na caixa do servidor BW.
Existe uma maneira simples de carregar dinamicamente os arquivos XML, usando a seguinte instrução xPath:
tib:render-xml(document('tibcr://path/to/file.xml'))
Mas obviamente falhará nos arquivos binários. Meu melhor palpite para armazenar dados binários dentro de um projeto BW seria armazená -los como uma constante de string no formato Base64 ou Hex.
Caso alguém se deparar com essa pergunta (como eu fiz hoje), aqui está uma maneira de obter o caminho absoluto de um arquivo dentro do aplicativo. O código a seguir pode ser usado em uma atividade "Java Code", por exemplo, sendo relativamente caminho e absoluta os parâmetros de entrada e saída, respectivamente:
absolutePath = com.tibco.pe.core.Engine.getRepoAgent().getAbsoluteURIFromProjectRelativeURI(relativePath);