Data Structure

jimi flows are powered by json data passed between and manipulated by objects within the flow. json data is broken into 4 parent dictionaries:

flowData - Persistent for a given flow within an event

eventData - Persistent for a given event

conductData - Persistent for a given conduct across multiple triggers executed

persistentData - Persistent for a given executed flow no matter the event, conduct or trigger executed

jimi uses a function within the parent conduct class to define the data template ( "def dataTemplate(…)" )

{
    "flowData" : {
        "var" : { },
        "plugin" : { }
    },
    "eventData" : {
        "var" : { },
        "plugin" : { }
    },
    "conductData" : {
        "var" : { },
        "plugin" : { }
    },
    "persistentData" : {
        "var" : { },
        "plugin" : { },
        "system" : {
            "trigger" : None,
            "conduct" : None
        }
    }
}

With the exception of "system" within "persistentData" all other defined child dictionaries ( "var", "plugin" ) only support native types ( string, int, float, bool, list, dictionaries ) and cannot be used to store other objects or classes. If you require other types you must create an additional child item within one of the parent dictionaries. You should avoid modifying "system" data within "persistentData" as it is critical for jimi to execution a give flow.