вызовите Informatica PC wf из Java и прочитайте ответ для возобновления Java-программы - PullRequest
0 голосов
/ 03 июня 2019

Мне нужно вызывать мой Informatica PC wf через Java, и как только WF будет завершен или завершится с ошибкой, дайте ответ java-программе, чтобы продолжить процесс.

Я пробовал командную строку, но Java не читает ответ. Ищете подробное предложение по Java, а также по окончанию informatica

не имеет значения, если задание informatica не выполнено или успешно выполнено, необходимо вернуть ответ Java

Ответы [ 2 ]

2 голосов
/ 03 июня 2019

Обратите внимание, что есть много способов сделать это - возможно, самый простой - это заставить Java коснуться файла где-то, за чем отслеживает ваш рабочий процесс, а затем заставить рабочий процесс поместить результат в базу данных или файл, который может увидеть Java.

Однако более формальным подходом является использование веб-служб.

Узнайте, может ли ваш администратор Informatica включить Концентратор веб-служб , а затем ознакомьтесь с ним в документации PowerCenter.Я предоставил здесь наилучшую информацию из документа, который написал несколько лет назад.

Возможно, есть лучшие способы сделать это, но Informatica не сильно изменилась за эти годы, и WSH был способомвернитесь на несколько лет назад, если вы хотите запустить рабочий процесс удаленно из Java или любого другого языка и следить за его ходом.

Как только администратор включит WSH, вы сможете перейти к консоли (вероятно, в / wsh), котораяпоказывает различные действия, которые могут быть выполнены, и различные объекты.

Вот краткий пример запуска рабочего процесса с использованием веб-служб из консоли WSH:

  • Открыть Концентратор веб-служб и перейдите к Пакетный веб-сервис и Интеграция Веб-сервис
  • Нажмите кнопку Try-It (WSDL для интеграциивеб-сервис также доступен здесь)
  • Выберите операцию login слева
  • Заполните Домен , Репозиторий , Имя пользователя и Пароль и нажмите Отправить
  • Получите идентификатор сеанса в ответе SOAP
  • Выберите startWorkflow слева
  • Укажите значение SessionId , полученное из логина
  • Укажите Имя папки , WorkflowName , RequestMode , DomainName , ServiceName
  • Нажмите Отправить

На данный момент вы должны получить успешный ответ.Веб-служба не ожидает завершения рабочего процесса.

Как только вы можете использовать веб-службы для управления рабочими процессами, вы можете использовать среду веб-службы Java, такую ​​как Axis, для генерации клиентских классов веб-службы для общей пакетной обработки.,Этот подход хорошо описан в документации Informatica

К сожалению, это довольно трудоемкий процесс, но он работает.Веб-службы могут быть вызваны из Java следующим образом:

  1. Создайте новый локатор службы интеграции данных и используйте его для получения интерфейса интеграции данных.Это используется для выполнения всех вызовов Informatica WS.Это основано на расположении службы, встроенном в WSDL.
  2. Войдите в Informatica и получите идентификатор сеанса для соединения
  3. Создайте заголовок сеанса, содержащий идентификатор сеанса, и поместите вИнтерфейс интеграции данных.
  4. Создание объекта Service Info, который идентифицирует доменное имя и имя службы Informatica.
  5. Создание объекта для хранения рабочего процесса, папки, режима выполнения и объекта Service Info
  6. Запуск рабочего процесса с использованием startWorkflowEx для возврата идентификатора выполнения
  7. Создание объекта WorkflowRequest со всей той же информацией рабочего процесса для ожидания завершения
  8. Вызов waitTillWorkflowComplete для блокировки дорабочий процесс Informatica завершается

Доступны другие функции, поэтому вы должны иметь возможность проверять коды возврата и тому подобное.

0 голосов
/ 05 июня 2019

Вы должны попробовать что-то вроде этого.

        String cmd="C:\\Informatica\\9.6.1\\clients\\PowerCenterClient\\CommandLineUtilities\\PC\\server\\bin\\pmcmd.exe";
        final Process cmdProcess;

        cmdProcess = Runtime.getRuntime().exec(new String[]{cmd,""});
        OutputStream out = cmdProcess.getOutputStream();
        out.write("connect  -sv IS_NAME -d DOMAIN_NAME -u USER -p PWD".getBytes());
        out.close;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...