无法将实例名称分配给 Informatica 中的并发工作流

Cannot assign instance name to concurrent workflow in Informatica

在 Informatica 中,我可以启动工作流,但无法让它在会话日志和工作流监视器中识别我的实例名称。

工作流开始,但在会话日志中显示如下:

Workflow wf_Tenter image description hereemp started with run id [22350], run instance name [], run type [Concurrent Run with Un[enter image description here][1]ique Instance Name]

实例名称为空。

我的命令是:

pmcmd startworkflow -sv <service> -d <domain> -u <user> -p <password> -f <folder> -rin INST1 -paramfile <full param file path name>  wf_Temp

我已经编辑了工作流程并选中了配置当前执行复选框。在 Configure Concurrent Execution 按钮中,我创建了三个实例:INST1、INST2、INST3,但没有任何关联的参数文件。所有参数文件都是空白的。

我认为,为了使用 PMCMD 启动工作流程,我必须传入配置的实例名称之一(即 INST1、INST2、INST3 等)

如果我第二次从 Putty 执行 PMCMD 命令以查看第二个实例 运行,我会收到一条消息,指出工作流仍在 运行ning 并且我必须等待?为什么?我已经检查了工作流中的并发工作流框。

ERROR: Workflow [wf_Temp]: Could not start execution of this workflow because the current run on this Integration Service has not completed yet.
Disconnecting from Integration Service

所以,我想我已经很接近了,但是我遗漏了一些东西。我在 PMCMD 中传递的参数文件的工作流 运行s 但实例名称似乎被忽略了。

更进一步。我必须在工作流管理器中预先配置实例名称吗? PMCMD实例和参数文件参数是否足够?如果必须在工作流中预先定义实例,它看起来就不是那么动态了。

谢谢。

@MacieJG

这是我 运行 命令时 Putty 的屏幕截图。您可以看到正在通过 PCMMD OK 传递实例名称 DALLAS。没有任何组合会获得实例名称。我没有包括你建议的测试 1 的照片,但结果是一样的..仍然没有实例。

您不需要在工作流中预先配置实例名称。在 pmcmd 中传递实例名称以及参数文件名就足够了。

试试这个:pmcmd startworkflow -sv (service) -d (domain) -u (user) -p (password) -f (folder) -paramfile (full param file path name) -rin INST1 wf_Temp

准确地说:配置并发执行时,您可以指定是否:

  • 允许具有相同实例名称的并发运行
  • 允许并发 运行 仅具有唯一实例名称

除此之外,您可以(但不是必须)指示哪个实例应使用哪个参数文件,因此在执行时无需提及。但这是一个单独的功能。

现在,如果您选择了第一个,您将能够使用同一个命令多次调用 WF。如果您选择了第二个并尝试此操作,您将收到 'WF is already running' 错误。

问题是你的例子乍一看似乎是正确的。根据日志消息:

Workflow wf_Temp started with run id [22350], run instance name [], run type [Concurrent Run with Unique Instance Name]

所以您只允许唯一实例。似乎没有使用实例名称。第一次执行不会设置实例名称,因此类似的第二次执行也不会使用它,并且会被拒绝,因为这是相同的实例名称(即 None)。

您可以尝试将设置更改为Allow concurrent run with same instance name,这将允许第二次执行,但不能解决主要问题。由于某种原因,实例名称未通过。

请根据下面引用的文档验证您的命令。也许尝试匹配订单。如果仍然失败,请分享更多信息。

查看文档:

pmcmd 启动工作流 <<-service|-sv> 服务 [<-domain|-d> 域] [<-timeout|-t> 超时]> <<-user|-u> 用户名|<-uservar|-uv> userEnvVar> <<-password|-p> password|<-passwordvar|-pv> passwordEnvVar> [<<-usersecuritydomain|-usd> usersecuritydomain|<-usersecuritydomainvar|-usdv> userSecuritydomainEnvVar>] [<-文件夹|-f> 文件夹] [<-startfrom> taskInstancePath] [<-恢复|-norecovery>] [<-paramfile> 参数文件] [<-localparamfile|-lpf> localparamfile] [<-osprofile|-o> 操作系统用户] [-等待|-现在] [<-运行insname|-rin> 运行InsName] 工作流程

这是我在上面评论中要求的完整测试。我尽力把你可能需要的一切都放在这里,但如果我遗漏了什么,请告诉我。所以这里...

我已经创建了一个非常简单的工作流程 运行 实例名称。它使用定时器等待和命令 tast 将实例名称写入文件:

并发执行已经用最简单的方式设置好了:

现在,我已经为 运行 工作流准备了以下批处理(只是删除了用户和密码):

SET "PMCMD=C:\Informatica.5.1\clients\PowerCenterClient\CommandLineUtilities\PC\server\bin\pmcmd"
%PMCMD% startworkflow -sv Dev_IS -d Domain_vic-vpc -u ####### -p ####### -f Dev01 -rin GLASGOW wf_Instance_Test
%PMCMD% startworkflow -sv Dev_IS -d Domain_vic-vpc -u ####### -p ####### -f Dev01 -rin FRANKFURT wf_Instance_Test
%PMCMD% startworkflow -sv Dev_IS -d Domain_vic-vpc -u ####### -p ####### -f Dev01 -rin GLASGOW wf_Instance_Test

它运行三个实例,其中两个同名,只是为了测试它。我运行批处理通过以下方式捕获输出:

pmStartTestWF.bat > c:\MG\pmStartTestWF.log

执行后,我在工作流监视器中看到的是:

正如预期的那样,三个实例执行并正确显示。文件输出看起来也不错:

可以找到pmcmd的输出here. Full definition of my test workflow is available here.

我真的希望这能以某种方式帮助你。如果您发现这里缺少任何东西,请随时告诉我。祝你好运!