Setting widgets at runtime

Setting widgets at runtime

  

My organization is looking for ways to save development time and cost using outsystems.  In doing so we want to use as much of our backend services and databases as we  possibly can.   We currently have an enterprise application that displays configuration information about certain products.  Because new data elements are added all the time we had to come up with a way to add these new elements to the data store and have them displayed, created and saved without having to introduce code changes.

We achieved this by storing display and type information about the configuration points in a database.  The application can  find the label used to display the information, tooltip info, default value, acceptable values, the type of control that should be used to display the data point - text box, radio buttons, checkboxes, etc. and how that control should be displayed.  For example, should text boxes be displayed horizontally or vertically.

We don't want to throw all this away because it's been exteremely valuable.  I am by no means an outsystems expert so I have no idea how I could accomplish this using outsystems.  Any help or insight would be greatly appreciated.


Thanks in advance

Hi Jim,

Am I understanding that you are basically building a page dynamically? If so, I think you can forget about doing that with OutSystems. Its whole model is based on pages with known controls.

On the other hand, if you have only a limited set of dynamic controls, and you can construct a single template that holds them all, switching on and off controls as needed, that would probably be possible, but it would still mean using OS in a way it's not meant to be used.

Also, displaying stuff is one thing, but what about handling it? What about the input the user gives in those inputs, check boxes etc., how is it handled? Is there generic code?

I'm with Kilian here,


It can be done with outsystems, but you will throw away most of the biggest advantages of outsystems.

dare to change(tm).

What you have created is a highly unmaintainable piece of code, because you simply store metadata inside the database and ending up with weird queries etc. And I doubt you never change the code anyways. I have done it myself with Outsystems, extendable entities even and I still regret it because it wasn't my call to make.

It's a pitfall many programmers make, make your life harder and for what?

Dynamic forms that rarely change and if they change, chances are you have to do something in the code as well. anyway, that's a rant from me :)




J. wrote:

I'm with Kilian here,


It can be done with outsystems, but you will throw away most of the biggest advantages of outsystems.

dare to change(tm).

What you have created is a highly unmaintainable piece of code, because you simply store metadata inside the database and ending up with weird queries etc. And I doubt you never change the code anyways. I have done it myself with Outsystems, extendable entities even and I still regret it because it wasn't my call to make.

It's a pitfall many programmers make, make your life harder and for what?

Dynamic forms that rarely change and if they change, chances are you have to do something in the code as well. anyway, that's a rant from me :)



The dynamic forms DO change and the code is smart enough (and very easy to maintain by the way)  to adapt to those changes - because there are also actions in a clearly specified grammar that can be associated with each element.  Those actions are executed by an engine that uses a  little reflection and databases get updated and reports get run, and dashboards updated..  And it makes our lives very much easier.  

You know nothing about our application but presume to tell me the code is unmaintainable?  That it makes our lives harder when it simplifies both the development and operational teams jobs?   Gosh thanks. 


dare not to be stupid if you're going to be arrogant(tm)





As I said, it's a rant.

I am sorry if you took it the wrong way. I was not trying to be arrogant or insult you.

It was merely an experience of years of seeing those kinds of applications.


Still I am sure your application works as intended, but then the question is why you have/want/thinking  to use Outsystems?


I don't want to use OutSystems.  I was charged with finding out if OutSystems could be used in a project that would rely on the aforementioned data driven approach.  We need to build a couple of small apps that perform very specific tasks used in call center.  Clearly it cannot without some horrible mangling of its paradigm.


Our management has believed all the hype about Low Code and asked us to determine if it could be used for some of our applications.  We're finding out that it's really a great tool for building small internal facing applications - the  kind of apps some business person would go off and write using Excel because there were no IT resources  to help them.  Don't get me wrong, that's an extremely important niche -  one that is far better served by something like OutSystems than globs of Excel macros.


Solution

Hi Jim,

Though I appreciate where you're coming from, it would be a gross mischaracterization of the OutSystems Platform to say it should only be used for "building small internal facing applications". Our company has used OutSystems for over 8 years, and our entire CRM and billing systems are built with it, as are several applications used by our customers (not to mention the upcoming mobile apps with P10).

OutSystems is however not the holy grail for everything, and for your very specific use case it is obviously not suited. But remember that OutSystems can both be used to create enterprise-wide apps, and to plug in to legacy databases (including SAP) to create add-ons for existing applications. Whether there's a "hype" of low code, I won't comment on that, but OutSystems was there before the hype, and will very likely be there after.

Solution