HiveMQ Edge is an MQTT gateway that enables interoperability between OT devices and IT systems. It translates diverse protocols into MQTT for streamlined communication and helps organize data into a unified namespace, making managing and streaming data across your infrastructure easier.
This PR is one part of the "connectivity and payload" epic.
It implements the UX allowing users to select a model in a Behavior Policy node and the relevant event and state in the connected Transition node
The design of the feature required a few elements:
a specification of the Finite State Machine representing the various models of a behaviour policy
two different types of visualisation of the FSM, using mermaid and reactFlow, aiming at supporting user selection and transition selection
a custom selector for a single point of access to transitions/states of the selected FSM
Note that the UX is experimental, trying to render what is in effect three interdependent configuration properties (transition, fromState and toState) into a single flow. It doesn't cover all the use cases yet (in particular, the Any.* state is not offered)
Also worth noting is that the reactFlow visualisation of the FSM, which offers the best potential for user interaction, requires an external layout library (https://github.com/kieler/elkjs) that is almost doubling the size of the runtime bundle!
Event.onAny has been implemented but support for the Any.* for states will be addressed in a separate ticket
FSM visualisation has not been integrated into the flow, since none of them are ready for user interaction. Their future will be dealt with in another ticket
See https://hivemq.kanbanize.com/ctrl_board/57/cards/18960/details/
This PR is one part of the "connectivity and payload" epic.
It implements the UX allowing users to select a
model
in aBehavior Policy
node and the relevantevent
andstate
in the connectedTransition
nodeThe design of the feature required a few elements:
models
of a behaviour policymermaid
andreactFlow
, aiming at supporting user selection and transition selectionNote that the UX is experimental, trying to render what is in effect three interdependent configuration properties (
transition
,fromState
andtoState
) into a single flow. It doesn't cover all the use cases yet (in particular, theAny.*
state is not offered)Also worth noting is that the
reactFlow
visualisation of the FSM, which offers the best potential for user interaction, requires an external layout library (https://github.com/kieler/elkjs) that is almost doubling the size of the runtime bundle!Out-of-scope
Event.onAny
has been implemented but support for theAny.*
for states will be addressed in a separate ticketBefore
After