Just came across this excellent 5 minutes YouTube demo: Data Modeling in Pimcore PIM/MDM (https://youtu.be/GKstcgOkH3o)
I really like the concept:
- You define a class (think it as an entity)
- Add a layout (panel, accordion, tabpanel etc)
- Within this layout, you add data component (think as database field). Here, you can specify the data type is text or number or options/dropdown, date, url, image etc). You also have the option to add data validation rules for each field.
- repeat step 3 to add all fields
- repeat 2 to add more layouts
- finalize and save the class (think it as publishing the external entity in integration studio)
- At the end, add an object (think it as creating a new page/web block) on top of the class just created above. The object is the UI representation of the data model. Now you have a web form to capture the data based on the data model you just defined.
In OutSystems, you can define your custom entity in the same way as database design. Then you spend a lot of time to design the page. While it is very powerful, it does require some skills. I would say it is aiming for at least "Power" users if not developers.
The PimCore is taking a metadata driven approach. It defines the entity, fields, layouts and even validation rules. Then a web page is compiled and created at the run time based on those metadata. I think it will never reach the UI flexibility as OutSystems, but it is extremely quick to get a CRUD page up and running. Also, it even further lowers the skills required to create a page.
Back to OS, I think define the metadata and generate the custom entity is achievable in OS. The metadata capture form is relatively static and can be pre-defined in the framework. Once the definition is submitted, it can have the background process to dynamically create sql tables. The challenge is the page creation step in OS. Right now, you have to use Service Studio to create & publish applications. If OutSystems can open up the API to programmatically create and publish application, it might be able to solve this problem. Or, if OutSystems can create an out-of-box capability of on the fly create a new page, it would be even better. I think in Microsoft Power Apps, you can create apps with two flavours: "Canvas App" and "Model Driven App"
Also, sth like: https://github.com/esnet/react-dynamic-forms, (example at: http://software.es.net/react-dynamic-forms/#/example/dynamic). Is there anyway to make this kind of dynamic forms available in OutSystems?
Another option, dynamic JSON based form (https://codeburst.io/reactjs-a-quick-tutorial-to-build-dynamic-json-based-form-a4768b3151c0).