Page 1 of 1

Transfer File Set among projects

Posted: Thu Oct 24, 2013 8:31 pm
by smandadi
Is there a way to pass in FileSet Variable across projects.
Just like passing the normal Variables as Strings.
This sample is throwing an error on the Second project, which is treating the passed in variable as a String.

Code: Select all
<project name="Print" mainModule="Main" version="2.0">
	<module name="Main">
		<createFileList fileListVariable="files" version="1.0">
			<fileset dir="D:\Program Files\Linoma Software\GoAnywhere\userdata\projects\" recursive="true" />
		</createFileList>

		<callProject project="/playground/Print FileList" runInSameJob="true" version="1.0">
			<variable name="fileList" value="${files}" />
		</callProject>
	</module>
</project>
Code: Select all
<project name="Print FileList" mainModule="Main" version="2.0">
	<module name="Main">
		<forEachLoop itemsVariable="${fileList}" currentItemVariable="currFile">

			<print version="1.0">
				<![CDATA[${currFile:name}]]>
			</print>
		</forEachLoop>
	</module>
</project>

Re: Transfer File Set among projects

Posted: Fri Oct 25, 2013 8:52 am
by Support_Rick
To make this happen, you will need to change your callProject to something like the following:
Code: Select all
		<callProject project="/Projects/Print FileList" runInSameJob="true" inheritUserVariables="true" returnUserVariables="true" mode="interactive" version="1.0" />
That way, the child project inherits the FileList Variable-${files} and it will allow you to perform a ForEach across the ${files} variable list.

Assigning the FileList to a New Variable changes the type of the FileList to a String Var in the Child Project, thus giving you the error you received.

Re: Transfer File Set among projects

Posted: Fri Oct 25, 2013 1:20 pm
by smandadi
Thank you Rick, I was able to get the inherit variables, The only problem with that was the naming conventions that needed to be followed across a number of projects.

My Reason for separating the second project into stand alone is to be able to reuse across a number of primary projects.

The same functionality is obtained using Monitors, which does pass on the File list as a parameters (Not sure, how it does it), Hence I was exploring for a similar functionality.

Re: Transfer File Set among projects

Posted: Fri Oct 25, 2013 1:46 pm
by Support_Rick
What I normally do when I'm creating a "utility" Project (as you are doing in this case) is to prefix the vars needed within the Utility to something specific to that Utility. An abbreviation or something. Then, I know what I'm getting when I get there as well as remove the possibility of cross contamination with other projects.

Inside the Utility ForEach loop, use a FileList var like:

1. ${pfl_FileList}
2. ${prt.FileList}

Then, create the same FileList var inside your calling Project (or Monitor) using that same syntax.

*NOTE*
I always add a Parameter (Variable) to my "Utility" Project matching any value I pass into that Utility for testing and/or definition of what the variable is and where it comes from.

Something Like:
Code: Select all
<project name="My Utility" mainModule="Main" version="2.0" logevel="silent" threadSafe="true">

	<variable name="myU.JobDIR"     value="I" description="(I)nbound (O)utbound " />
	<variable name="myU.JobMODE"    value="Q" description="(Q)A (D)ev (P)rod (S)taging" />
	<variable name="myU.JobGROUPID" value=" " description="GroupID to process" />
Even if you're calling the project with a Monitor, Scheduled Job or Trigger (GAS).

From the Monitor | Action Tab, you add variables that give you what you need to pass to the Project. In this instance, you would create the FileList from the Monitor, and make the FileList Variable Name as "pfl.FileList" or whatever you are looping through within your Utility. That way the FileList becomes available to you from any location.

Re: Transfer File Set among projects

Posted: Fri Oct 25, 2013 2:20 pm
by smandadi
Thank you Rick. To close this discussion. Is there a way to clone or copy from one filelist to another.

Re: Transfer File Set among projects

Posted: Fri Oct 25, 2013 2:37 pm
by Support_Rick
Not at this time... just the inherit vars option.