从 Java 调用 Informatica PC wf 并读取响应以恢复 Java 程序



>我需要通过Java调用我的Informatica PC wf,一旦WF完成或失败,就向java程序发出响应以继续其进程。

我尝试了命令行,但java没有读取响应。寻找有关Java以及informatica端的详细建议

不管informatica 作业是失败还是成功,它都需要将响应返回给 Java

请注意,有很多方法可以做到这一点 - 也许最简单的方法是让 Java 触摸工作流正在监视的文件,然后让工作流将结果放入 Java 可以看到的数据库或文件中。

但是,更正式的方法是使用 Web 服务。

查看您的 Informatica 管理员是否可以启用Web 服务中心,然后在 PowerCenter 文档中阅读它。我从几年前写的一份文件中提供了最好的信息。

可能有更好的方法可以做到这一点,但 Informatica 多年来并没有太大变化,如果您想从 Java 或任何其他语言远程启动工作流并监控其进度,那么 WSH 是几年前的必经之路。

管理员启用 WSH 后,您可以导航到控制台(可能在/wsh 处),该控制台显示可以执行的各种操作和各种对象。

下面是从 WSH 控制台使用 Web 服务运行工作流的快速方法:

  • 打开 Web服务中心并导航到批处理 Web服务和集成 Web 服务
  • 单击"试用">按钮(集成 Web 服务的 WSDL 也可在此处找到)
  • 选择左侧的登录操作
  • 填写存储库用户名和密码然后单击发送
  • 在 SOAP 响应中获取会话 ID
  • 选择左侧的启动工作流操作
  • 提供从登录中获取的会话 ID
  • 提供文件夹名称、工作流名称、请求模式域名服务名称
  • 点击发送

此时,您应该会收到成功的响应。 Web 服务不会等到工作流完成。

一旦您可以使用 Web 服务来控制工作流,您就可以使用 Java Web 服务框架(如安讯士)为通用批处理生成 Web 服务客户端类。 此方法在 Informatica 文档中有很好的介绍

不幸的是,这是一个有点繁琐的过程,但它有效。可以从 Java 调用 Web 服务,如下所示:

创建新的数据集成服务定位器
  1. ,并使用该定位器获取数据集成接口。这用于执行所有 Informatica WS 调用。这是基于嵌入在 WSDL 中的服务位置。
  2. 登录到 Informatica 并获取连接的会话 ID
  3. 创建会话标头,保存会话 ID,并放置在数据集成接口中。
  4. 创建标识 Informatica 域名和服务名称的服务信息对象。
  5. 创建对象以保存工作流、文件夹、运行模式和服务信息对象
  6. 使用 startWorkflowEx 启动工作流以返回运行 ID
  7. 使用所有相同的工作流信息构建 WorkflowRequest 对象,以便等待完成
  8. 调用 waitTillWorkflowComplete 以阻止,直到 Informatica 工作流完成

其他功能可用,因此您应该能够检查返回代码等。

你应该尝试这样的事情。

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;

最新更新