I would like to create a SaaS solution for my clients. As each client has similar but unique needs, they need to be able to create some customer specific attributes to capture the required data. 

It would be something similar to Microsoft SharePoint list. The end user can choose to:

  1. add a field and give a field name
  2. pick the data type for the field (number, text, image, url etc)
  3. one done, the list will now have the new field available

From the OutSystems point of view, I understand the current limitation is that the generated page are bound to static entity/structure. However, is it possible to expose OutSystems platform API to programmatically rebuild the page? 


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? 


Alternatively, dynamic JSON based form (https://codeburst.io/reactjs-a-quick-tutorial-to-build-dynamic-json-based-form-a4768b3151c0). 



Anyway, I would like to hear any recommendation and advice of how to achieve this in OutSystems. Much appreciate for your help.

Hi,

It is achievable, to have dynamic forms in OutSystems, but by far not an easy exercise to implement.

As it is not easy, one can also not describe a solution here as a post. Some customers have a complete project team working on implementing this type of functionality.

But a very high level:

1. You need content management where you can define your screens inputs dynamically.

2. Your data model needs to be generic

3. You need to parse the screen definitions and generate a list of widgets of correct type.

A simple implementation can be found at: https://www.outsystems.com/forge/component-overview/1999/dynamic-forms

Regards,

Daniel

Hi Daniel,

Thanks for the quick reply. The component you mentioned is a starting point. I'll have a look at it.

I personally hope there is a ReactiveJS frontend + OS Rest API backend type of solution.

Hope there is more examples around this area.

Regards,

George Qiao

Just came across this excellent 5 minutes YouTube demo: Data Modeling in Pimcore PIM/MDM (https://youtu.be/GKstcgOkH3o)

I really like the concept:

  1. You define a class (think it as an entity)
  2. Add a layout (panel, accordion, tabpanel etc)
  3. 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.
  4. repeat step 3 to add all fields
  5. repeat 2 to add more layouts
  6. finalize and save the class (think it as publishing the external entity in integration studio)
  7. 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"

I posted it on ideas: https://www.outsystems.com/ideas/8601/dynamic-form-meta-data-driven-or-model-driven-page-generation


Please vote and support if anyone wants to have this feature. Great for building some SaaS software for your customers/clients.

Hi George,

There are several great players in the market regarding master data management. PimCore being one of them some others are Stibo Systems, Mangento, Sitecore, Drupa.

OutSystems is not that. OutSystems is an enterprise software development platform.

Now you can, of course, try to implement your own Master Data Management System in OutSystems, but to get the same extensibility and flexibility as those big players in MDM systems is not something you can quickly achieve.

There is one article from OutSystems regarding data master management that describes an architectural design: 

https://success.outsystems.com/Support/Enterprise_Customers/Maintenance_and_Operations/Designing_the_architecture_of_your_OutSystems_applications/OutSystems_master_data_management_(MDM)_solution

I once asked in the community if anybody implement this design, but nobody replied.

Regards,

Daniel

HiDaniel,

Thanks for the information.

Right now, I am looking into Form.io . It seems to offer Json driven dynamic forms. I'll test if I can use OutSystems together with Form.io

Regards,

George