
The Fuuz engineering team has been hard at work on some fantastic new features - we’re excited to see what Fuuz users build with them. Let us know what you think!
First up, the November release includes a major new feature available in the Fuuz Device Gateway: Edge Flows! This new data flow type is designed to be deployed onto a Device Gateway instance, unlocking a set of SCADA capabilities that can be designed and deployed using the same Data Flow Designer in the Fuuz platform used for system, iPaaS, web, and other flows. Once deployed on the edge, these flows can accept network requests from devices, make requests out to devices on a schedule or in response to events, make requests to Fuuz to query configuration or store data for long-term analysis, and more!
The first step to using Edge flows is to install the Device Gateway and configure a device - for more information on how to install and configure the gateway, check out the documentation on the Fuuz Device Gateway.
Once you have a gateway and one or more devices connected, the process of designing and deploying an Edge flow starts at the Data Flow Designer. When creating a new flow, select the Gateway environment and the Edge flow type - this tells Fuuz that the flow is designed to deploy onto the Device Gateway.
Now you can design your data flow using the same familiar tools you’re used to. You can test your flow right in the flow designer, testing device requests to read or write data.
Once the flow is designed and deployed for the first time, the final step to run the flow on the edge is to deploy it to a Device Gateway installation. Navigate to the Device Gateway table, select the gateway you want to deploy the flow to, and switch to the “Device Gateway Data Flows” tab.
Once there, you simply need to click the “plus” and select your data flow. The Device Gateway will detect the change and deploy the flow on the edge. As you deploy new versions of the data flow, the gateway will automatically detect those deployments and update the running flow.
If you’re planning on using a Server device in your flow, you may also need to set up the device to execute the specific flow - for more information, reference the documentation on Device Gateway Devices.
This new feature set will enable powerful, high-performance Edge monitoring and control solutions that are managed and deployed right in the Fuuz platform, taking the capabilities of Fuuz to the next level!
This month’s Fuuz platform release includes a new tool to assist application builders - a visual data flow version comparison! If you’ve ever found yourself wondering what changed in a specific version of a data flow, this feature is for you.
When you have a data flow open, you’ll now find a new Compare Flow Versions option in the Edit menu. When selected, you’ll be prompted to select from any of the past versions of the data flow to compare against.
This feature should be a significant help to users working on large Fuuz applications or on teams - we’re already using it internally. Our team has a set of further enhancements lined up, including a diff view inside the properties panel to make it easier to see exactly which configuration options changed for nodes that were updated, and we’re already thinking about how we might implement a similar comparison feature for the screen designer!
The 2023.11.0 release includes an exciting enhancement to the screen designer which should streamline and simplify some common layout tasks.
Prior to this release, the Container element has operated using a “flex” layout system, where items naturally flow in lines, left to right and top to bottom. This layout works well for creating responsive layouts that can resize based on screen size, but creating some common layout patterns in this system can take quite a lot of time and effort. One such layout is a grid of items - say, 5 x 3, with items filling each of those individual “cells”. That use case is the focus of this new feature - a grid layout!
The Container element has a new Layout section where all the layout configuration is performed. The Flex layout is the default, but when the Layout dropdown is changed to Grid, new inputs appear for Columns, Rows, Grid Gap, and more. By specifying the number of columns and rows, users can easily create fixed-size layouts of tiled elements.
Any screen element can be placed inside a grid and will automatically fill the next available cell; elements can be rearranged within a grid simply by dragging and dropping.
What if you want an element to span more than one row or column? Never fear - there’s a new Grid Cell element for just that purpose! Just drop the Grid Cell into a container set for a Grid layout and configure the number of rows and columns to span, then drop other elements inside that cell.
We’re excited to see what our users make with grids, and we’re always looking for feedback - if there’s anything you’d like to see supported in grid layouts, let us know!
Finally, this month’s release includes two new field types available in the Schema Designer - Date and Time. These types join our existing DateTime type in providing support for a wide range of date and time storage use cases. All three data types support the full set of search predicates, and support sorting data based on values. Let’s look at the different uses for each of these data types to help explain the differences and why you might use one over the other:
Data Type | What it is | What it’s used for | What you should know | Example | |
|---|---|---|---|---|---|
DateTime | A date and time, stored to the millisecond precision. | Identifying a precise point in time, e.g. for historical reporting. | DateTimes are always stored and returned in UTC. If Daylight Savings Time is a concern, either store a time zone or use the Date or Time types. |
|
|
Date | A date with no associated time. | Scheduling or historical reporting where data should be relative to a time zone. | When parsed to a DateTime object, Date fields will set the time to midnight UTC. |
|
|
Time | A time with no associated date. | Scheduling where data should be relative to a time zone. | To parse a time as a DateTime object, use the |
|
|
Added License field to Enterprise form to track license limits and usage
Added support for enterprises to create tenants without authorization, within the defined license limits
Added configuration for internal identity providers to enforce multi-factor authentication for all users
Added option to the My Profile screen for users to configure their own multi-factor authentication setting
Fixed a bug causing rule evaluation to fail incorrectly on policies using transform rules
Enabled a check to ensure API keys are associated with active users during verification
Updated the policy builder to no longer show empty module groups as “checked” in the resources tree
Added authentication event logs for token verification failures such as invalid signature or expiration
Updated system policies to standardize between existing and new tenants
Added a Time data type for schema fields for storing a time without an associated date
Updated base Node.js version to v20
Added support for running data flows in Device Gateways via server drivers or device subscriptions
Added permission to update hasUpdates field to the Device Gateway Application policy
Fixed a bug causing some authentication events from the subscription service to log without a request IP address
Fixed scenarios in which Websocket connections would be incorrectly closed when the socket emits an error event
Corrected a few small display bugs in the Notification Channel screens
Added “Compare Versions” mode to Edit menu in the Flow Designer
Added a Predicate Filter flow node for the $predicateFilter binding
Updated the Get Calendar node to support selecting a list of calendars to retrieve
Added response field to Response node console log
Updated the $executeSavedQuery to throw a helpful error when the requested query doesn’t exist
Added validation for schedule frequencies
Added support for seconds in cron-based schedule frequencies
Added new Grid layout options for Container elements
Updated the Resources field on the Calendar element to be dynamically transformable
Corrected an issue with the “Screen Widget” toggle button in the file menu bar
Fixed several issues related to editing legacy (JSON-based) screens in the screen designer
Added a “Suppress Menu” option to the Table Column element to disable the column menu
Updated table and form generation to optionally replace an existing screen route if desired
Updated form generation to consistently pluralize data model names in routes
Added a “Use Basic Title Format” option to Calendar elements to shorten the dates displayed at the top of the calendar
Added new visual builder input for JSON schemas
Corrected a visual bug that could occur when clearing date inputs
Added a snackbar warning when data in tables does not have an ID field
Copied startAt and endAt fields from calendar event data to the base calendar event model
Added new Reserved and Allocated calendar event types to support scheduling use cases
Fixed a bug causing the Calendar Events nested table on the Calendars form to display incorrect events
Corrected a bug causing the parent field on calendar resources to behave inconsistently