ABL MVC achitecture for Webspeed/Kendo Web Applications

Posted by ytaalba on 21-Feb-2018 15:31

Hi everyone,

Let me clarify my request, right now developing web applications in WebSpeed using Kendo involves coding back-end business logic in ABL Progress and JavaScript client-side to build a rich web application using the kendo web components.

Is there any framework or a library for web development using ABL Code only (MVC model) producing a web application with kendo UI Components.

Thanks.

All Replies

Posted by egarcia on 21-Feb-2018 17:02

Hello,

Is your expectation to use ABL code only for both the client and the server-side logic or are you asking on a framework that works with ABL to generate web apps?

I think that you would be interested on Kendo UI Builder:

www.progress.com/.../kendo-ui-builder

With Kendo UI Builder, you can create web applications using built-in templates or custom views.

The UI definition is represented as metadata. The applications then are generated using a combination of web technologies HTML, CSS, Kendo UI, AngularJS, Bootstrap, and JavaScript.

Custom client side logic is written in JavaScript using extension points.

You can use OpenEdge backend services (Progress Data Services) or REST-based service in general.

You should be able to re-use your business logic from your WebSpeed from a Progress Data Services with PASOE.

Here is a link to the demo series on Kendo UI Builder on YouTube:

www.youtube.com/watch

In particular you can take a look at video #2 to see Kendo UI Builder in action.

The following forums might also be useful:

- community.progress.com/.../255

- community.progress.com/.../17

I hope this helps.

Posted by Rick Terrell on 21-Feb-2018 17:56

Progress Services (Consulting) has a Modernization framework that uses Kendo UI and ABL on the backend. The transport is JSON objects using REST calls. 


This is not a product from Progress, but a services product. Contact Progress Services or your sales rep for further details. 

Rick Terrell 
Principle Consultant, Professional Services 
Progress

Sent from my iPhone

Posted by ytaalba on 22-Feb-2018 12:46

Thank you E Garcia, 

I already know Kendo Builder, but it's not exactly what I'm looking for, let me post a mockup which maybe gives a better understanding.

Posted by Shelley Chase on 23-Feb-2018 10:47

Have you looked at the Blank View in Kendo UI Builder 2.1? I believe it can be used to build your screen above by using multiple data sources and custom event handlers.

You can watch a recorded webinar at www.progress.com/.../replay

Thanks

-Shelley

Posted by smat-consulting on 23-Feb-2018 15:26

There are two approaches for frameworks, I find:

a) build every screen manually yourself

b) have standard screens built for you, and customize 2 or 3 most important ones manually

I am tired of spending weeks and weeks of building standard screens manually, so I prefer option b). There is, to my knowledge, no framework for ABL/WebSpeed out there that uses the b) approach, aside of the one I use.

It requires your DB to follow certain best-practice standards. At first, you spend time declaring the relationships of the tables. But once that is done, you get the whole application basically for free. The first pronto-type, that is.

With that up and running, you can now go and customize the definition of the lists, filters, viewers, and edit-screens according to your preferences, and then regenerate the application.

You cand o that s much and often s you want. If you have changes to the data-model? New fields, tables and/or relationships? No problem. Add them using the dictionary, define the relationships, and regenerate. You won't loose your customizations, but get the adjusted/extended application.

With this in place, you can spend your valuable time on implementing the business-logic around workflow processes or triggered by various changes to the data, or whatever...

The only time you need to do JS or HTM is if you need special behavior or custom screens. Much of the HTML of such screens, in my experience, can be copied and pasted and enhanced/adjusted from default screens. The JS for the interaction with the backend is usually the same as the standard screens, so not much JS is needed - except adding the hooks, maybe.

If you don't need a non-standard screen, there's no JS necessary at all.

Let me know if this is kind-of what you're looking for and if you need more information, or ideas...

Posted by egarcia on 24-Feb-2018 05:58

Your diagram helps to explain the scenario.

The thin-client architecture that you are referring to is possible.

However, I am not aware of any implementation like that. (A long while back, I considered something similar with TCL/TK to provide a GUI for OpenEdge on Linux.)

The limitation on this approach is that if you have a lot of interactivity on the UI there would be a lot of network traffic because the need to go back to the server to process the app logic or you would need to limit the interactivity.

You would also need to have a generic model to set/get properties on UI components.

Calling methods on UI components would be limited as well because you would either need to provide a way to go back to the client to run the method or push the method execution from the server.

For example consider the case of two grids, Order and OrderLine tables where on the row select of the Order table, you would want to calculate the total of the order and show it on a field on the UI and change the color of the field based on whether the available credit allows the order. This means that on the return of the remote onRowSelect, you would need to call the method to set the value and another to set the color, this needs to be expressed somehow in the response from the remote call

A variation of this would be the case where the client UI allows adding records/updating records before saving them to the server. Now you would need a way to pass the data of the child grid to the backend (more network traffic).

If you want to model the approach, you could use the JavaScript XMLHttpRequest object to go back to the server or if you are using the JSDO, you can use the invoke() operation:

- community.progress.com/.../2938.calling-invoke-operations-with-the-jsdo

I hope this helps.

Posted by ytaalba on 24-Feb-2018 14:21

Thank you Garcia, very instructive, I thought there is an ABL API for Kendo components at server side like in ASP.NET, I know the server side approach would generate network traffic, to be considered in the implementation, my idea is to develop exclusively using ABL Object Oriented, focus more on business logic, build an immutable data bound views and then it is a matter of refreshing data using an MVC pattern.

Posted by ytaalba on 24-Feb-2018 14:33

I like the kendo builder approach, I have attended a workshop, my question is, what are the potential for large complex  applications?

This thread is closed