A key advantage of using Data Agnostic Services as an architectural approach is the ability to make small changes to the implementation that unlock significant emergent capability.
I was recently reminded of this in a 2-hour requirements workshop with Dylan (one of our lead developers) and Rob where we were discussing a trellispark new feature called Wizards.
The core idea is simple – we want to be able to execute a multi-step wizard on an existing record instance.
That is, any wizard, any set of steps, any set of data, any action, on any instance
During the workshop we extended the existing Server Owner data model to add a new form definition subtype for a Wizard. We re-purposed our existing form builder data modeling concepts so that Wizards could be seamlessly incorporated into any form (including a Wizard). We created an initial test example that would allow us to renumber tabs in an existing form definition (currently a manual process we plan to enhance).
We then dived into the C# form builder code within the core of the trellispark implementation to verify that we could simply reuse the existing REST API to define the structure of the wizard form with minor restrictions on a couple of field types.
The trellispark user experience .NET 6 Blazor WASM implementation means that we can also reuse nearly all of our existing layout and field components to implement the new Wizard capability.
Over the next couple of weeks, Dylan will build and test the new components that will be unique to Wizards and then integrate them into the next release of trellispark.
The whole process to create this new feature is a powerful example of how the Data Agnostic Service architecture coupled with the trellispark .NET 6 Blazor implementation allows us to rapidly deliver significant emergent capability to our customers.
We exposed a new application capability, reusing 95+% of our existing framework code base, to enable the creation and integration of any Wizard into a trellispark solution. All of the Wizard’s user experience, data storage, workflow control, security, etc. are configurable in data with no code required. This leaves only the few SQL statements needed to perform the action as custom code – another 95+% saving on the development of every Wizard!