Rob,
Something that confused me:
> If they're not, and I try to run a comparison , there will be orphaned files and the comparison will fail.
Does this mean that processing is not one-to-one match but one-to-many one? I.e. that processing of one file results in the output of two or more files?
And still... I have a feeling that I am missing something essential in your explanation...
Even if processing of one source file results in more than one target file, but still assuming that:
-- you have the list of all initial source files that must be processed;
-- you know the rules according to which target processed files are named (i.e. you know that names of target files);
-- files processing is asynchronous but fast enough (i.e. source file is picked up by processing engine and appears in the taget folder within a reasonably short period of time, say, within less than 30 seconds);
then what are you not sure at in the suggested scenario:
-- push source files into the system;
-- wait until the target folder is not empty;
-- get the name of the first file from the target folder and check if it corresponds to the expected target file from the list of initial source files;
-- if more than one target file is produced for one source file then wait until all required files appear in the target folder;
-- verify target file(s) against expected master one(s);
-- remove the name of processed source file from the list of initial source files;
-- if the list of initial source files is not empty (and you are within expected timeout) then repeat above steps (starting from second) until the list of source files is empty. The empty list of initial source files will mean that all files have been processed.
Should this scenario fit your needs?
P.S. If you think that the above scenario cannot be used in your case, could you please, in addition to the description of why it cannot be used, describe your planned scenario in assumption that we found a way to implement asynchronous monitoring of some file system folder?