Uniface 9.7 and WEB development/conversion

Author: claudio.palladini@cortislentini.it (Claudio)

Hi Unifacers, I'm starting the approach to WEB conversion of the software sold by my company, which in fact represent the company's core business. I'm talking about an application that count about 2000 components, 17 years of development, structured internal guidelines for development, and a library for speeding up development that can be considered a framework. Considering my lack of experience with Uniface, before starting a project like this I would like to ask council to people who develop Uniface, which uses and understands and already had the opportunity to develop web software with Uniface. Previously I developed, for many years, enterprise web applications in the Java world so, when I talk about web applications, I think I understand enough to know what I'm talking about. So I would ask advice to more experienced people what are the best practices, technicals or not, to start a project of this type with Uniface. Things to consider before and during the development of a project of this size. Thanks allCool Claudio

10 Comments

  1. Hi Claudio,
     
    That's a big topic, but here is a brain dump!
    I'd typically prototype a new Proof Of Concept of a small core part of the system first, including iterative development of a new target architecture, and look for ways to semi-automate conversion where possible. You can probably save time with some consultancy from Uniface or someone with relevant experience (ideally DSP not USP - there is an additional learning curve).
     
    Some considerations: - Uniface/DSP/web knowledge (do you have a user interface designer and is any training required with Uniface web development?)
    - Keep the team small at first, and don't build/convert lots of code until you have a small working POC and/or templates for new development. - Access to existing application knowledge - Is existing application standard/consistent? Does it use templates?
    - Scalability requirements (can affect architecture design re: performance and state management) - State management   - With DSP's much data is stored in browser, but you need to be careful to control size (see performance below)
      - Component variables and Global variables will not retain values between requests (or you could pick up values from other sessions if you don't architect it correctly). - Authentication - will it change? - Security (too big a topic to go into now) - User interface
      - Change from Client/Server forms (e.g. multi-tab implementations, transactional control). Techniques for this will differ, but try and avoid splitting data from the same tables that go in one transaction over multiple forms (e.g. use one form with divs to hide sections).   - icons, etc. (libraries like font-awesome can help)   - External layouts. If you want the HTML to be stored outside Uniface, you need to modify some default code for DSP's.   - Error handling & messaging   - Modality (use CSS framework features)   - Navigation
      - I'd typically use an existing CSS framework like Bootstrap - There is no hitlist in Uniface web applications (we have a different paging mechanism for web, see the sample ) - Database access   - locking (you'll probably want to change from cautious to optimistic)   - long database transactions aren't supported (so save data elsewhere, e.g. browser (but beware of security if you do that), session state, etc. - Error handling (you'll probably want to do something different, and may be dealing with disconnected record sets so have to handle a batch of results) - Validation (field level checks may require JavaScript, but you need to replicate the checks on the server for security reasons) - Performance   - Only paint entities you need on the DSP to reduce traffic - use services for non-presentation logic if you can   - Understand scoping and use it to reduce network traffic (using Javascript and dynamic scoping makes it easier)   - Use DSP containers to reduce amount of data that needs to be posted back   - Use the Javascript API to perform logic on the browser where appropriate   - Minimise resources / check caching headers etc.
    - Project management. Is the code changing while you're migrating it?
    - Code conversion process (#defines can help) - Development environment (version control etc.)
     
    There is also some information in the help re: supported and unsupported commands and code change considerations.
     
    Regards,
    David Akerman
     

    Author: dakerman (david.akerman@compuware.com)
  2. One other comment: we have a sample DSP framework on our GitHub site, but i'd caution against using it "as is", as it was designed to show some concepts, but isn't a full architecture implementation, and might introduce issues as well as solving some others. Instead, i'd adopt useful parts of it (e.g. some state management and external HTML support) and remove others (e.g. I wouldn't use the HTML 5 navigation API and it's routing mechanism without consideration of your needs and security requirements).


    Author: dakerman (david.akerman@compuware.com)
  3. Ciao Claudio, se vuoi comunicare in italiano contattami su pier.colonna@uniface.com  - saluti, Pier


    Author: Pier Colonna (pier.colonna@uniface.com)
  4. Hi Dakerman, and thanks for your feedback. Broadly speaking I'm agree with your concept about guidlines for starting new projects and attentions about web development, considering I AM the small group of developer(s)Smile. I'm interested to know if anyone here has integrated Uniface with framework like Sencha ExtJS or any other JavaScript framework that help development of interfaces. From the few examples I've seen, the result obtained by Uniface requires further efforts to make decent, in graphic terms, the Web interface. My company want to understand whether to continue the development with Uniface is the most convenient way for the future, being well aware that the market offers more flexible and extensible tools depending on the needs of the case, so my question is also in this sense. Thanks again Unifacers! Claudio


    Author: Claudio (claudio.palladini@cortislentini.it)
  5. Pier Colonna said Ciao Claudio, se vuoi comunicare in italiano contattami su pier.colonna@uniface.com  - saluti, Pier  

    Ciao Pier, e grazie mille per la tua disponibilità! Claudio


    Author: Claudio (claudio.palladini@cortislentini.it)
  6. At one company I have used ExtJS on top of Uniface, so I can confirm it is possible. Was not so happy on how the interface between Uniface and ExtJS was in that project, but it seemed possible to integrate in a nicer way, so that would be nice challenge.


    Author: Theo Neeskens (tneeskens@itblockz.nl)
  7. Theo Neeskens said At one company I have used ExtJS on top of Uniface, so I can confirm it is possible. Was not so happy on how the interface between Uniface and ExtJS was in that project, but it seemed possible to integrate in a nicer way, so that would be nice challenge.  

    Hi Theo, we have successfully integrated a .NET web app with Uniface services, but even in our case the interface between the two technologies is something, in my opinion, of unspeakable... Confused Integration, as I intend it, it would be nice if it's something more than a separate front end that call Uniface's services for business logics using servlets configured on Tomcat. Why ExtJS example? Because I have used it for many years, but I don't exclude alternatives that offer same or better tools. But must be something that is a framework, not a jumble of libraries. Thanks Claudio


    Author: Claudio (claudio.palladini@cortislentini.it)
  8. Hi Claudio, In the project I was involved in ExtJS was used on top of Uniface DSP's, so not just calling Uniface Services. I am not saying I endorse or promote this for your situation, I do not know enough about alternatives to do that. Theo


    Author: Theo Neeskens (tneeskens@itblockz.nl)
  9. Theo Neeskens said Hi Claudio, In the project I was involved in ExtJS was used on top of Uniface DSP's, so not just calling Uniface Services. I am not saying I endorse or promote this for your situation, I do not know enough about alternatives to do that. Theo  

    Hi Theo, we're here to exchange experiences and opinions! So, you had user ExtJS to beautify web pages? Or also to integrate its functionality enhancements? Thanks again Claudio


    Author: Claudio (claudio.palladini@cortislentini.it)
  10. dakerman said
    Hi Claudio,
     
    That's a big topic, but here is a brain dump!   

    Hello David, here I am to comment some points, hoping to collect information and experience on the part of all, and create a starting point that can be of help to those who want (or should...) tackle a project of this type.

    dakerman said – Uniface/DSP/web knowledge (do you have a user interface designer and is any training required with Uniface web development?)

    We different figures in our company, but with the knowledge of only one of two technologies: those with experience with Uniface has no experience with the web and vice versa. This is a big problem, but we are working on sharing knowledges.

    dakerman said – Is existing application standard/consistent? Does it use templates?

    Yes. No, there is "only" the framework I've mentioned. The second answer open to a future improvement perspective...

    dakerman said – Scalability requirements (can affect architecture design re: performance and state management)

    This is very important, we must consider that the application in its largest installation serves approximately 30 users. In the future do not exclude we could serve a hosting service. About state management, what Uniface makes available to developers? Session Objects for management and tracking?

    dakerman said – State management – With DSP’s much data is stored in browser, but you need to be careful to control size (see performance below)

    This will be potentially a problem, what's exactly the point? JavaScript that support Uniface's logics and automatisms?

    dakerman said – Component variables and Global variables will not retain values between requests (or you could pick up values from other sessions if you don’t architect it correctly).

    This scares me, but I hope there is the opportunity to encapsulate the communication in a sort of session security box like Spring.

    dakerman said - Security (too big a topic to go into now)

    Yeah, big but also important, and really interesting in my POV.

    dakerman said – User interface – External layouts. If you want the HTML to be stored outside Uniface, you need to modify some default code for DSP’s.

    I think I must have at least one for fast UI customization, but why not integrate it? Pros and cons?

    dakerman said – Error handling & messaging

    It is part of our framework, and has been standardized throughout the application. In our framework we have defined BOCs (Business Object Components) to load, write, validate data and give back informations about errors or warnings. We hope to successfully migrate it on web platform.

    dakerman said – Modality (use CSS framework features)

    Not sure, but I think the proper use of CSS can help switching input methods.

    dakerman said – Navigation

    In the desktop application we have the classic tree menu on the left. Surely we will try to restructure the menu levels as much as possible, to adapt it to be accessed also by a touch screen. As for navigation within the pages, we are talking about an ERP, then from the physical keyboard input is important, such as using 100% of the available space on the page. I want to avoid the long scroll the pages by using annidiate tab, which could also help in the management of data visibility. In the design of forms we have been used a minimal interface specification, so we need to create a new standard that actually does not exist now, but it will be helpful to choose a good compromise between resolution and the amount of data to display.

    dakerman said – I’d typically use an existing CSS framework like Bootstrap

    Bootstrap it's exactly what's in my mind, I'm glad to hear others developers have done it successfully.

    dakerman said – There is no hitlist in Uniface web applications (we have a different paging mechanism for web, see the sample)

    I hope that Uniface has thought of something integrated into its visual components (Javascript or other for DB that support it), otherwise we go back in the "ASP century". 

    dakerman said – Error handling (you'll probably want to do something different, and may be dealing with disconnected record sets so have to handle a batch of results)

    See up, but if you underline this aspect the question arises, what are the best possible ways?

    dakerman said – Project management. Is the code changing while you’re migrating it?

    Good point. I wish that the changes were as little as possible...yes, I'm lazy... Laugh The only "change" I want, are about JavaScript code ADDITIONS to check data and post back management.

    dakerman said – Code conversion process (#defines can help)

    Good point. You mean the conversion of the code behind the forms into Javascript in the DSP? Do you refer to #define as constants? How can help?

    dakerman said – Development environment (version control etc.)

    Yes, for sure. But...why I need UD6 in order to work with files? Is the unique choice for working with VCS? Thanks again for your valuable comments, Claudio


    Author: Claudio (claudio.palladini@cortislentini.it)