>我需要通过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 服务,如下所示:
创建新的数据集成服务定位器- ,并使用该定位器获取数据集成接口。这用于执行所有 Informatica WS 调用。这是基于嵌入在 WSDL 中的服务位置。
- 登录到 Informatica 并获取连接的会话 ID
- 创建会话标头,保存会话 ID,并放置在数据集成接口中。
- 创建标识 Informatica 域名和服务名称的服务信息对象。
- 创建对象以保存工作流、文件夹、运行模式和服务信息对象
- 使用 startWorkflowEx 启动工作流以返回运行 ID
- 使用所有相同的工作流信息构建 WorkflowRequest 对象,以便等待完成
- 调用 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;