File created trigger

Hi there,
would be nice to have a Trigger feature when a new file is added into a folder.

For Edge workflows, we do have the File Watch Trigger, which will trigger a workflow whenever the Edge Compute device sees file or directory changes on the configured path. Does this answer your question?

That is great to know, but I mostly need it for the cloud workflows. Basically I would like to trigger specific notebooks each time a new file appears in specific folders.
Would that be possible?

Having a discrete trigger that monitors application files is a great suggestion! I’ll file a ticket and send it over to our development team for evaluation. For the time being, however, there is a workaround.

I believe the best solution would be to build a workflow that uses a Timer Trigger in conjunction with the Losant API Node to query a directory of your application files. I’ve attached an example workflow file that demonstrates this:

application-file-watch-develop.flow (7.3 KB)

Here’s a breakdown of how it works:

  • Timer Trigger - Runs on a set interval (in this example, once per day)

  • Date/Time Node - Formats the time from the payload to UTC time

    • Source Path - time
    • Operation - Format
    • Result Format Template - YYYY-MM-DDTHH:mm:ss.SSS (to match the formatting for application files)
    • Output Timezone - UTC
    • Result Path - data.modTime
  • Storage: Get Value - Retrieves workflow storage value based on the last time that this workflow was ran (we’ll populate this later)

    • Key - lastScan
    • Default Value Type - String Template
    • Default Value - 0
  • Losant API Node - Returns a list of all files in a given application files directory

    • Resource and Action - Files: Get
    • directory - (the path to the directory you want to monitor, e.g. /directoryTwo)
    • Payload Path to Store Response - working.filesAll
  • Loop Node - Loops through the files in the specified directory and determines if there are any that have been updated since the last time this workflow was ran

    • Loop Source Path - working.filesAll.result.items
    • Current Item Path - working.current
    • Loop Mode - Run loop iterations serially

  • Within the loop…

    • Conditional Node
      • Expression - {{working.current.value.lastUpdated}} >= {{working.lastScan}}
    • Array Node
      • Source Array Path - working.newFiles
      • Choose an Operation - Push
      • Value Template - {{working.current.value}}
      • Destination Array Path - working.newFiles
  • Storage: Set Value - Sets the time the workflow storage value to the formatted time from the payload

    • Operation - Store Value from Payload Path
    • Key - lastScan
    • Value - data.modTime
  • Conditional Node - Evaluates the array created in the Loop node to determine if there are any new files since the last time this workflow was ran. If no, left-side will execute. If yes, right-side will execute.

    • Expression - {{working.newFiles}}

In this example, I have Debug Nodes branching from the Conditional Node, but the right-side of that branch could be a Workflow Trigger Node, a Notebook: Execute Node, or a further branch of events you’d like to have take place if there are new files.

Additionally, you’ll have a payload path containing an array of objects with any new file(s) available at working.newFiles.

Please let us know if you have any further questions!

1 Like

That is an amazing flow, thanks for the effort and explanation.

I have one question, since this potentially (in my case) will be scheduled every 1 minute.

Will that count toward my payload execution counts?

No problem - glad you found it helpful! Yes, all executions of a Timer Trigger in an application workflow count as a payload. See our doc on payloads here.