Skip to main content

User Flow Exceptions

The Rule Framework includes special exceptions to control how a flow ends. These exceptions can be imported from the energyworx_public.domain package. Below, you can find a summary of their behavior regarding the generated data in the flow and some examples.

ExceptionRaised WhenSave DataCreate TasksTrigger FlowsFlow Metadata
FlowCancelExceptionUser wants to cancel the whole flowNoNoNoYes
FlowStopExceptionUser wants to stop the flow execution at that pointYesYesYesYes

FlowCancelException

Use this to completely stop a flow if something's wrong with the data. Everything the flow did is undone, and any triggered chained flows won't be executed.

This exception will normally be logged as an error in audit events. However, it has a parameter (show_exception_as_warning) that allows it to be logged in the audit events as a warning instead.

from energyworx_public.domain import FlowCancelException

def Rule(AbstractRule):
def apply(*args, **kwargs):
...
# It will log the error message in audits event as warning instead of an error.
raise FlowCancelException("My error message", show_exception_as_warning=True)
...

FlowStopException

Use this to stop the flow but keep the results it produced so far. All the data (timeseries, tags, flow properties) that was saved until this point will be persisted, and any chained flows triggered before this exception will be executed.

    ...
from energyworx_public.domain import FlowStopException
...

def Rule(AbstractRule):
def apply(*args, **kwargs):
...
# It will log the message in audit events as info. It will set the Flow Status to 'stopped'.
raise FlowStopException("Some explanation about why the flow was stopped")

This exception will be logged as info in the audit events.