Skip to content
hindessm edited this page Sep 26, 2014 · 8 revisions

A subflow is a set of connected nodes that can be easily referenced and reused within a larger flow.

A subflow is represented as a single node in the workspace which can be opened up in a tab to see the underlying flow.

A subflow can be used in one of two modes: (this is tbd. Might just stick with singleton for v1)

  1. Singleton : only one copy of the flow exists.
  2. Instance : each reference to the subflow is its own copy.

Creating a subflow

  1. User selects some existing nodes.
  2. Selects 'convert to subflow' option.
  3. Nodes are removed from workspace and replaced by a subflow node.
  4. Subflow node given a default name and added to palette

Questions:

  • how to automatically identify the input/output ports to map to
  • what restrictions should be applied?
    • a single, continuous flow of nodes - aside from comment nodes
    • only one 'left most' node
  • what about subflows with no left most node? Would there be any way to override properties of a contained node? For example, consider a subflow containing an mqtt sub and deserialiser pair where modifying the topic of the mqtt subscriber would be useful.

Editing a subflow

  1. Double click subflow node.
  2. Opens in closeable tab containing the flow.
  3. Tab toolbar includes options to name.

Questions:

  • how to rename the flow? Via subflow sidebar tab?
  • how to pick singleton/instance mode?

Delete subflow

  1. Open a subflow sidebar tab that lists all subflows with usage count (cf config node tab - perhaps combine them...?)
  2. ...

Definition

A subflow node has the following properties:

  • type : subflow
  • id
  • name
  • in - the id of the internal node that provides the flow's input port.
  • out - an array identifying the internal nodes and their output ports that are mapped to the flows outputs. Elements are objects of the form: {id:ID, port:PORT}.

A node that is part of a subflow has their z property set to the id of the subflow.

An instance of a subflow has the following properties:

  • type : subflow:ID
  • id
  • singleton : true/false
  • name - if singleton, inherits from parent subflow

Clone this wiki locally