TIBCO - BusinessWorks - Динамическое получение пути к процессу
-
22-09-2019 - |
Вопрос
Я разрабатываю процесс, который будет считывать и отправлять изображение по электронной почте.Это изображение является папкой внутри этого процесса.
Проблема в том, что:как мне получить путь, по которому выполняется процесс?
Что-то вроде 'Server.MapPath'
это возвращает путь к изображению в файловой системе.
Заранее благодарю.
Решение
Если ваши изображения существуют в папке вашего BW-проекта, вы можете использовать действие "Извлечь ресурс", чтобы получить доступ к содержимому.
Вам просто нужно установить resourcePath с относительным путем в вашем проекте, и он будет выводить данные base64.
Другие советы
SOAP RetrieveResources мог бы быть хорошим решением, но выдает NullPointerException для меня на BW 5.4.Возможно, это ошибка в этой версии.
Проблема, связанная с получением "корневого пути", заключается в том, что развернутый проект BW не сохраняет свою исходную структуру папок / файлов - программа развертывания не будет "разбирать" файл EAR.Поэтому вы не найдете изображение в виде отдельного файла на сервере BW.
Существует простой способ динамической загрузки XML-файлов, используя следующую инструкцию XPath:
tib:render-xml(document('tibcr://path/to/file.xml'))
но это, очевидно, приведет к сбою в работе с двоичными файлами.Моим лучшим предположением для хранения двоичных данных внутри проекта BW было бы сохранить их как строковую константу в формате Base64 или Hex.
На случай, если кто-то столкнется с этим вопросом (как я сделал сегодня), вот способ получить абсолютный путь к файлу в приложении.Следующий код может быть использован в операции "Java Code", например, будучи relativePath и AbsolutePath входными и выходными параметрами соответственно:
absolutePath = com.tibco.pe.core.Engine.getRepoAgent().getAbsoluteURIFromProjectRelativeURI(relativePath);