File Channel / process flow single thread if possible

 1 Replies
 0 Subscribed to this topic
 52 Subscribed to this forum
Sort:
Author
Messages
Todd Mitchell
Veteran Member
Posts: 87
Veteran Member
    I created a process flow and then a file channel.  The file channel acts as a file watcher for me and kicks off my process flow when it "sees" a file in a specified directory.  However, if more than 1 file is identified, it kicks off multiple instances of my process flow.  A majority of the time this is not a problem, however that small percentage of the time it causes issues.  The issue is:  I have a "work" file that gets read and sometimes gets written to.  When more than 1 work unit runs at a time, there is the possibility that both work units can write to the file at the same time. 

    More specifically, this work file is a file that contains the current AR cash batch number that I want to add payments to.  If for some reason, this batch has been released then another batch needs to be created.   I ran into a situation yesterday in which 2 work units ran simultaneously and created 2 new batches (when I really only wanted 1).  In addition my work file contained a record that was the concatenation of both batch numbers.  Should have only been 235456 but was 234456235457.

    So.... is it possible to have my process flow being single threaded or is there some other solution that would be better?
    John Henley
    Posts: 3353
      Still struggling to come up with an elegant solution to this, but as far as I know there is no way to force the file channel to single-thread. What I have done is somewhat convoluted but so far has worked OK. Using a combination of fileaccess nodes, I append a date/time stamp to the incoming file, then move the incoming files through various staging directories, e.g. toprocess, inprocess, etc. and use some javascript waits/sleeps (using random-generated number for wait time) to randomize the processing a bit. Also check the target folder to make sure it doesn't a file in it prior to moving the new file into it. If it does, wait again x times for n random seconds before trying again. When/if all else fails, branches to an email to alert IT operations that intervention is required, creates a user action where IT can select from "reprocess"/"reject" actions, and puts the file into a manual-resolution folder.
      Thanks for using the LawsonGuru.com forums!
      John