0
votes

In Informatica, I can start a workflow but cannot get it to recognize my instance name in the session log and Workflow Monitor.

The workflow starts but in the session log it displays this:

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]

Instance name is blank.

My command is:

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

I have edited the workflow and selected the checkbox Configure Current Execution. Inside Configure Concurrent Execution button, I have created three instances: INST1, INST2, INST3, but without any associated parameter files. All parameter files are blank.

I understand, I think, that in order to start a workflow with PMCMD I must pass in one of the configured instance names (i.e. INST1, INST2, INST3, etc.)

If I execute the PMCMD command from Putty a second time to see the second instance run, I receive a message that workflow is still running and I have to wait? Why? I have checked the Concurrent Workflow box in the workflow.

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

So, I think I'm close, but am missing something. The workflow runs with the parameter file I pass in PMCMD but the instance name seems to be ignored.

Further. Do, I have to pre-configure instance names in the Workflow manager? Is the PMCMD instance and parameter file parameters enough? It doesn't seem quite so dynamic if Instances have to be pre-defined in the workflows.

Thanks.

enter image description here

enter image description here

enter image description here

@MacieJG

Here's the screenshots from Putty when I run the command. You can see the instance name DALLAS is being passed through the PMCMD OK. No combination ever gets the Instance name. I did not include the pics of your suggested Test 1, but results were same.. still no instance.

enter image description here enter image description here

4
Try two tests: try running the DALLAS instance mentioned below (-rin DALLAS) with concurent execution set to "Allow concurrent run with same instance name" and then with "Allow concurrent run only with unique instance name" and DALLAS created on the list. Share the results. - Maciejg
On the putty screen I can see a message saying that wf_Temp with run instance name [DALLAS] and run id [22807] started successfully. So it works, doesn't it? - Maciejg
I do not see the Instance name DALLAS in the workflow monitor, nor the session log. But, yes, you 'do' see it in the putty window as the PMCMD command output. But, from a paste in my original question, it is not in the session log. Nor, can I run the putty cmd back to back after changing DALLAS to HOUSTON (for example). I get a message that the flow is running and I must wait. I have tried countless experiments to get this one feature to work in Informatica.... i 'do not' ever see an Instance name in the Monitor or log....even though docs say it over and over that that's how it works - Davidson
So we now the pmcmd syntax is proper and is being read correctly by the command..... why it doesn't get picked up by the actual workflow and include it in the LOG.....Mainly, I want to see the instance name in the Workflow Monitor... that's really what I'm after. - Davidson
I'll figure out why -nowait doesn't seem to work either later.... As a java Developer, I love the notion of threads and concurrent workflows. - Davidson

4 Answers

1
votes

You don't need to pre-configure instance names in workflow. Passing the instance name in pmcmd along with parameter filename is enough.

1
votes

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

1
votes

To be precise: when you configure Concurrent Execution, you can specify if you:

  • allow concurrent run with same instance name
  • allow concurrent run only with unique instance name

In addition to that you may, but don't have to, indicate which instance should use which parameter file, so it won't be need to mention it while executing. But that's a separate feature.

Now, if you've chosen the first one, you will be able to invoke the WF multiple times with the very same command. If you've chosen the second one and try this, you will get the 'WF is already running' error.

The trouble is that your example seems correct at first glance. As per the log message:

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

So you're allowing unique instances only. It seems that the instance name has not been used. First execution does not set the instance name, so similar second execution won't use it either and will get rejected as this is the same instance name (i.e. None).

You may try to change the setting to Allow concurrent run with same instance name, this shall allow the secon execution, but does not solve the main issue. For some reason the instance name does not get passed.

Please verify your command against the docs referenced below. Try to match the order perhaps. Please share some more info if it still fails.

Looking at the docs:

pmcmd StartWorkflow <<-service|-sv> service [<-domain|-d> domain] [<-timeout|-t> timeout]> <<-user|-u> username|<-uservar|-uv> userEnvVar> <<-password|-p> password|<-passwordvar|-pv> passwordEnvVar> [<<-usersecuritydomain|-usd> usersecuritydomain|<-usersecuritydomainvar|-usdv> userSecuritydomainEnvVar>] [<-folder|-f> folder] [<-startfrom> taskInstancePath] [<-recovery|-norecovery>] [<-paramfile> paramfile] [<-localparamfile|-lpf> localparamfile] [<-osprofile|-o> OSUser] [-wait|-nowait] [<-runinsname|-rin> runInsName] workflow

1
votes

Here's my complete test as requested in a comment above. I tried my best to put everything you may need here, but if I missed anything, just let me know. So here goes...

I've created a very simple workflow to run with instance name. It uses a timer to wait and a command tast to write the instance name to a file:

Workflow overview

The concurrent execution has been set up in the most simple way:

Workflow configuration

Now, I've prepared the followig batch to run the workflow (just user & password removed):

SET "PMCMD=C:\Informatica\9.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

It runs three instances, two of them with same name, just to test it. I run the batch the following way to capture the output:

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

Once I execute it, here what I see in workflow monitor:

Workflow Monitor

Just as expected, three instances executed and properly displayed. File output looks fine as well:

enter image description here

The output of pmcmd can be found here. Full definition of my test workflow is available here.

I really hope this will help you somehow. Feel free to let me know if you'd find anything missing here. Good luck!