What is a Child FLO?

A child FLO is a FLO that is called by another FLO, aka ‘parent FLO’. Child FLOs are especially helpful in more advanced FLOs and FLOs that use the List functions, executing a common set of tasks, or handling errors. Note that these child FLOs must be turned on before they are called by other FLOs, however, they do not count towards your Active FLO limit, as they are directly dependent on other FLOs. The child FLO can be thought of as a hierarchy system, where the parent FLO is above the child. Once the child FLO is called by the parent, it becomes active and runs, otherwise it remains inactive. Child FLOs are called by using the command functions Call FLO or Call FLO Async, or as required by the list iteration functions (e.g. For Each or Map), or by setting the error handling on a card to “Run another FLO.”

screen-shot-2016-11-25-at-4-03-43-pm

screen-shot-2016-11-25-at-3-40-53-pm

Child FLO and List Functions

Child FLOs are helpful for List Functions because it allows you to go through each item of a list. These child FLOs can have inputs that correspond to the type of item in the list, function perform a task on each item, and a return (found in the Control category).

Example:

Suppose you wanted to convert an object into a list of objects, where each key/value pair is converted to object that has “propertyname” and “propertyvalue” keys - this is a common pattern among cloud APIs.  Suppose the propertyname also needs to be prefixed with “custom:“.  You can do that with the following child FLO - it accepts key, value, and a constant prefix (which is the same across all iterations - the parent FLO should pass this in), and returns back an object with 2 keys:

screen-shot-2016-11-25-at-3-58-52-pm

That FLO, when used with object.map, will turn this object:

{ "this": "that", "up": "down", "left": "right" }

into this:

[
    {
        "propertyname": "custom:this",
        "propertyvalue": "that"
    },
    {
        "propertyname": "custom:up",
        "propertyvalue": "down"
    },
    {
        "propertyname": "custom:left",
        "propertyvalue": "right"
    }
]

Child FLO and Handling Errors

A way to tackle Error Handling is to run another FLO.

  • Run Another FLO: Stops the FLO with an error, but also kicks off a Child FLO of your choice. If the FLO you choose accepts inputs, you’ll be able to enter values into those inputs or drag/drop an output field from earlier in the FLO into any input. The FLO that is called will be able to get the error details using the “Error” output field on the Child FLO card.