Incoming: Agile Platform 5.1 updates!

Incoming: Agile Platform 5.1 updates!

  
Hi all.

It’s been a long time coming, but it’s almost here! The much-anticipated release of the OutSystems Agile Platform 5.1 is just a couple of weeks away.

Service Studio 5.1

After the fantastic reception 5.1 received at our Next Step event, where we performed live-demos of the new wizards, SEO optimizations and many of the new things that we have in store for you, it’s now time to bring it all home. To get you ready for all that’s coming, since you have already seen most of the big things that are coming up, the team decided to bring you regular small updates on all the small improvements that you have also been clamoring for in the past months, and that we hope will make your development experience the best possible.

Stay tuned to the Agile Network community forums and this thread for more information on 5.1.

Cheers,

Paulo Tavares
Hi,
 
Our first post is about a set of small enhancements that were done to manipulate widgets in Service Studio, and most of them came from your feedback. Here are the details:
  • ‘Prompt’ Property on Inputs - Set a grayed out text to appear in Input elements to hint what should be typed there. Once the end-user starts writing this text disappears and is replaced by what it is being typed.
  • Labels and Titles Defined by Expressions - The Button’ ‘Label’ property, Link and Web Screen’ ‘Title’ property were extended from static text to be defined by Expressions, allowing them to be dynamic at runtime.
  • Navigating with Buttons - When designing Button elements they can be set to ignore the inputted elements and navigate to another Web Screen. This is possible now because, like Link elements, Buttons were extended to allow setting their ‘Method’ property to ‘Navigate’.
  • Horizontal Merging of Cells in Edit & Show Records - Improve your Show and Edit Records elements with the new capability of merging cells horizontally.
  • Public Images - Image elements can now be exposed and used by other (Consumer) eSpaces.
  • When the Id of a database image is null, the static image is shown.
  • A new Mandatory property in now available in Combo Boxes.
  • The name of record widgets is auto set (<Entity>Table for TableRecords, <Entity>Edit for EditRecord, <Entity>Show for ShowRecord).

Enjoy and stay tuned for more.
 
Regards,

awesome news. can't wait to use 5.1 (in beta or normal :) )
Thank you Joost for your enthusiastic feedback!  You will definitely enjoy 5.1…

Let me share with you some more cool and very useful productivity improvements that will be in 5.1, today concerning to Service Studio Tree, where you have all application layers (Processes, UI, Business Logic, database model, etc.)
  • Multiple Selection in the eSpace Tree – You can now select multiple elements of the same type in the eSpace tree, which can be very useful for instance when you are doing application refactoring and want to copy & paste several things at the same time.
  • Drag & Drop in the eSpace Tree – 5.1 will allow you to drag & drop elements inside the tree, for instance to move web screen between flows, copy attributes and variables between different elements, convert between screen actions and actions, or convert between entities and structures.
         
  • Entity Indices in ESpace tree – The developer can know notice all the auto indices that are automatically createdby the Platfrom without needing to open the entity editor.
  • Error/Warnings decoration in trees– TrueChange validation has also been extended to Trees, and the best example is the query conditions that are now red underlined in the query tree whenever a error arises.
 
More to come tomorrow, stay tunned.
 
Cheers.
Wow; that's what I call a nice improvement.
Keep 'em coming guys! :)
Great features!

Hello again,

Let me present you some more cool features of 5.1, today concerning to database model manipulation:
  • Create Entities for Database Pictures - 5.1 will allow you to automatically create entities for database images and associate them on a one-to-one relationship with a master entity.
        
  • Creating Entities from an Excel File  - It will also be possible to automatically create entities based on the attributes found in the Excel file, with multiple spreadsheets.
  • Refresh Query Element - To improve the late load pattern introduced in 4.2 release, 5.1 will bring a new pattern to re-execute existing queries using the Refresh Query element and avoid having repeated queries. In the flow, you can then use the Refresh Query element output as it is done with a “normal” Query element.
        
  • AutoComplete in Advanced SQL Queries – Advanced queries now have autocomplete syntax allowing you to write them faster and safer. There is also the new Test Max Records on Advanced SQL Queries.
        
  • Empty Database Image Default Image - When working with database images, the image set at design time is displayed at runtime in case none is fetched from the database. If it is required that no image is to be displayed when there’s none in the database, it has to be designed in the application.
  • Preview Records at Design Time - For a better WYSIWYG at design time, Web Screens containing Expression elements bound to entities attributes in: Show Records, Edit Records, Table Records, or List Records, will display the entity’s record values that are set in the Example Record of the Entity Editor.
        
  • Entity Indexes are now displayed in eSpace tree, avoiding to open the entity window.
  • Entity Behavior - The default Update Behavior has been changed to Changed Attributes for new entities.
  • Joins - When AutoJoins are created, a button next to them appears until you change something else so they can be easily deleted.
Hope you enjoy.
 
Manuel Dias
This looks fantastic, I can't wait!

J.Ja
Today I'll approach a new 5.1 functionality that has been designed to deliver pretty, clean and relevant URLs that really help you with Search Engine Optimization.

This is really important when you have an online business (a shop for example) and want to make you sure get nice URLs with only the relevant keywords in them and that looks clean and slick like:

http://myshop.outsystems.net/shop/buy/Cameras/Nikon+Coolpix+L20+10MP

and not the default ugly looking URLs that ASP .NET provides you with:

http://myshop.outsystems.net/eCommerce/Product_Show_by_Name.aspx?ProductName=Nikon+Coolpix+L20+10MP&ProductCategory=Cameras

All you have to do is setup the relevant rules for your applications in ServiceCenter...



...and they will get automatically applied without even needing to republish your app. This means that
  • You can now access your application using the new pretty URLs
  • The Agile Platform will generate all links in the new pretty format, which means users will never see the ugly version
And don't worry with change because, if you ever change the parameters of a page with associated rules in a way that might break it, TrueChange will kick in and warn you that you need to update your rules.

On top of this, this feature will also allow you
  • Create an alias to the name of your app, allowing you to replace it by a nicer version (e.g, I replaced eCommerce by shop in the example above)
  • Specify a path that, if written right after the hostname, will change your application's locale (e.g., http://myshop.outsystems.net/uk can set the locale to en-GB)
  • Define an application to be accessible at the root of your URL (you'll only need to write http://myshop.outsystems.net/ instead of http://myshop.outsystems.net/shop/)
Enjoy and stay tunned for more,

Pedro Oliveira

This is just the thing we needed!

Now or default webpage is URLname/espacename (we do got a redirect on the url name but still the espace name appears).

Can't wait for this version!

The SEO Friendly URLs are definitely a cool feature!
This almost eliminates my wish for the ability to change the name of an eSpace... :-)
Hi All,
 
Getting closer to the official launch and so many cool and useful things to share with you ! Today I’m going to talk about one very important capability and very big capability we introduced in 5.1 to support very large installations – The Multiple Database Catalogs and Schemas.
 
The main use cases are driven by the need of full data isolation up to database level. This can happen to enable stricter control on access to sensitive data, or to allow for more granular storage management and database maintenance. The Multiple Database Catalogs and Schemas feature allows you to meet these requirements by binding your eSpaces to specific database catalogs or schemas. The Platform automatically manages runtime users, permissions when accessing data and also generates the necessary scripts if you need to move data between databases. Pretty powerfull!
 
Let me show how you can configure database catalogs/schemas in Service Center, that is done after the DBA creates the database catalog/schema and set permissions for the Platform user to have access to all catalogs/schemas, as it is used by the Platform for managing the database structure and publishing the applications.


 
Then your applications can access to an entity that is designed in the eSpace,  exposed by another eSpace in the same catalog/schema, or exposed by another eSpace using a different catalogs/schemas, the runtime user is the one set in Service Center for the catalog/schema of the accessing eSpace. The Agile Platform manages all the access control  for you, and automatically grants and revokes all the necessary permissions for the runtime user when the applications are published.
 

In Service Studio, when publishing a new eSpace for the first time you are now asked to set the catalog/schema where to publish the eSpace. Then, the eSpace is published in the Platform Server, its database objects created into the specified catalog/schema, and permissions set for the runtime user. After an eSpace first publish the catalog/schema will no longer be asked again in the following publish actions;
 
The other very important use case is moving eSpaces to a different Database Catalog. This process involves executing several steps, most of automated by the platform, and they will be detailed in a specific technical note we are preparing for you.
 
Finally, In terms of Transaction Management, whenever an application uses a public API of another application, it also accesses the catalog/schema belonging to that application. In this case, transactions are single phase committed, i.e., catalogs/schemas have their data committed independently from one another's.
 
Stay tuned.
 
Manuel Dias
Hi Manuel,

If I look at the Refresh Query Element this strongly resembles a prepared query statement.
If this is the case this will probably also have some increased performance in reoccurring query situations.

It would be very nice if you could 'detect' a reoccurring query (i.e. one that is executed each time in a foreach)
and make sure it is prepared before the foreach is looping.
This saves a few steps for the SQL server to handle the query:
- Syntax check
- Query path determination

Besides that it saves the SQL server some memory for the prepared query is
actually referred to instead of instantiated every time it is executed.

Above structure will mainly speed-up and simplify queries that are the base of a report containing a lot of data.
Hi Eric,

"It would be very nice if you could 'detect' a reoccurring query (i.e. one that is executed each time in a foreach) and make sure it is prepared before the foreach is looping. This saves a few steps for the SQL server to handle the query:
- Syntax check
- Query path determination"


At the moment we trust in the SQL Server & Oracle query plan cache to acheive the same goal.

In the future we are considering using stored procedures to reduce the runtime database workload for most queries, but we still have to ensure the runtime performance gain is worth the compilation delay with such mechanism.

Anyway, if you have strong performance requirements and think the platform should help you more, I would love to hear from you.

Cheers,
Lúcio
Hi Lucio,

At the moment we trust in the SQL Server & Oracle query plan cache to acheive the same goal.
This plan might cache the result and in some situations (part of) the query plan, but the query will not be referenced and will always need to go through the steps mentioned above (cached or not; that will consume more overhead than the actual query execution will cost).

By preparing the statement, the database skips these steps, assuming only the parameters
willchange, which will dramatically increase handling speed per query execution.
I have had situations in which this makes a set of say 100.000 queries execute in less then 10%
of the time before I prepared the statement.

In general, if you have a query in a foreach that steps to the next record, you should consider using either a database join or more advanced query instead.
E.g.:

This isn't always something that can be done; because sometimes a function needs to return a values which is needed as input parameter for the inner query.

In the future we are considering using stored procedures to reduce the runtime database workload for most queries, but we still have to ensure the runtime performance gain is worth the compilation delay with such mechanism.

I think in theory that the platform could prepare EVERY simple query in an E-space.
I also think that if you could share the prepared reference over platform servers, all high load systems would get a dramatic performance increase.
One thing that you'd need to overcome is possible concurrency issues (allowing dirty read for the query would eliminate most of those).

Think of situations like webshops where you use one 'action' that consumes a prepared query to retrieve product information from a database.
Especially in cases where the amount of products (i.e. Datawarehouse systems like i.e. E-bay has) couldn't fit in the database cache and the
amount of requests is very high, a prepared statement would be ideal and very performant.

Anyway, if you have strong performance requirements and think the platform should help you more, I would love to hear from you.

I currently would only have the need for this for some reporting situations I know the database would find very hard to handle.
But in the example I mentioned above I can imagine a prepared statement would 'give the database some air to breathe' and
making the platform overall more responsive.

I also think that, thanks to the usage of Simple Querys and the design environment, it could be pretty easy to detect a bulk reoccurring query situation
(in large a comparible structure  to the one I've sketched above ; give or take some assigns / if's and actions wherever you like) and with that making it
transparant for the platform to execute a prepared statement instead of a normal query.
The developer wouldn't really care HOW the query is executed; als long as it is quick and the result is correct.

I also think a lot of DBA's (Database Administrators) would be happy to see solutions like this.

Note that moving those queries to a stored procedure would have a comparible effect.
Hi All,
 
Today I will talk about runtime performance of your web applications and how 5.1 can help you improve it out-of-the-box!
 
If in your applicationsoften there are elements that return the same result over and over again, if you want to avoid useless executions and have immediate response times, then 5.1 will allow the caching of results with the new Server Side Caching capability. Before describing this feature let  me share the top uses cases that led us in this decision:
  • Increase runtime performance of your applications when they relies on external systems where data doesn’t change often or takes too long to respond or simply cannot keep up with all the incoming requests.
  • Support a much larger load when it is getting hit by millions of users and some parts of the UI, business logic or database queries are pretty much the same for every one of your users.
For boths cases, Server Side Caching will allow you to cache Queries, User Actions, and Web Reference Methods elements, as it’s already available for Web Screens and Web Blocks. By analyzing Service Center logs you can identify which portions of your app have optimization potential.  Then all you need to do to is set up the ‘Cache in minutes’ property of the appropriate element and make sure the elements you choose do have results which are stable over time (for the same parameters) and that the number of minutes is representative of the frequency of change for that data.

   
 
Stay tunned for more.
 
Manuel Dias
Hi All,
 
Today I’m very happy to announce another new capability we are launching in 5.1, which most of you have been requesting for many times and have even achieved number 1 in the Wisdom of Crowds. Yes, I’m talking about Automatic documentation, or if you want name it correctly OutDoc!
 
Looking at the uses cases, OutDoc will allow you to have always updated documentation that is useful when you need to revise your application’s architecture before extending it with new elements, onboard a new team member or simply provide your customer with complete system level documentation by the end of the project.
 
OutDoc can be freely downloaded from the Agile Network and takes advantage of a new XML based API to generate your documentation. This includes high level data model, eSpace and solution references and process diagrams to provide you with an architectural view of your installation.  In addition you now get a detailed low level report about every process, screen, user defined logic, and database entity.

 
 
You can use this new API yourself to extend and customize OutDoc for your documentation needs.

 
 
Hope you enjoy!
 
Manuel Dias
Hello Manuel,

Thank you for the good news, it looks very promising.

Can you tell me if this feature is already implemented in the public beta version, or if we need to wait for the official release.

Best regards,

Nuno
Besides the improvements in the platform itself, Enterprise Manager also had a few improvements:

Installation
  • The EnterpriseManager is now automatically installed by the Community Edition.
  • For those that don't use the Community Edition and install Enterprise Manager manually, the solutions is now a little bit smaller as two components are no longer required and were removed (RichWidgetsExtension and WidgetLibrary40)
Privileges
  • New applications created in 5.1 with the New button are automatically configured to bootstrap their Permission Areas as EnterpriseManager privileges, so there's no need to go to Enterprise Manager to import the application manually any more.

RichWidgets

  • The jQueryUI version used is now 1.8.2
  • New Upload pattern supported by the Popup_Upload public screen and the associated Popup_Upload_GetFile action and UploadedFile structure
  • Added the Date_PrettyFormat action to complement the existing DateTime_PrettyFormat action
  • Popup_Editor now supports buttons with the Method set to Navigate in addition to links
  • Popup_Editor now respectes the Confirmation Message if set in the associated link or button
  • Input_AutoComplete now caches repeated searches of the same request in the browser
  • Input_AutoComplete_GetIdentifier has a new optional PreviousIdentifier input parameter that is returned when the autocomplete isn't used, to allow to to use this widget in optional fields
  • List_BulkSelect now has an optional Enabled input parameter so you can diable it
  • The widgets that require specific styles to work, like the autocomplete, the bulk select, the popups, etc., now include those styles in StyleSheet of the block itself instead of in the eSpace's StyleSheet, so now all widgets works without the need to add the @import url('/RichWidgets/web.css') to the consumer eSpaces
  • All images used in the Style Guide are now included as public, so they are shared between all eSpaces instead of being replicated in each one.
  • The preview of the blocks was improved
  • Most descriptions were revised to explain better how to use the patterns

HTTPRequestHandler
  • GetPageName gives the real name of the screen even when SEO rules are been applied
  • Added the GetRawURL action
  • Added the RunJavaScript action
  • Added the GetValueFromInputId action

A a side note, HTTPRequestHandler's SetPageTitle and RichWidget's Input_SetPrompt and Cell_MergeRight are no longer needed in 5.1, because they are now supported natively by the platform, but they continue there for backwards-compatibility reasons.

Best Regards,
Gustavo Guerra
Is .NET 4 support coming in 5.1 as well? That's the only thing it's missing now!

J.Ja
"Privileges
  • New applications created in 5.1 with the New button are automatically configured to bootstrap their Permission Areas as EnterpriseManager privileges, so there's no need to go to Enterprise Manager to import the application manually any more."
Can you also delete them? if a permission area is removed from an eSpace is it also removed from the EnterpriseManager?
No, you'll have to delete the privilege manually in that case
Hi All,
 
My last post before 5.1 official launch goes to the most powerful capability in 5.1 in terms of productivity, the IntelliWarpTM technology. This new technology will allow you and your teams to build full-fledged web apps to ‘warp’ speed following a context-aware, pattern-based, intelligent approach.
 
As you know when designing an application, there are always standard and repeated design steps. In Service Studio 5.1, most of these common multistep operations were identified and packaged into the IntelliWarpTM technology. Now you only have to drag and drop IntelliWarpTM capable elements and let Service Studio do most of the work. You can then perform a few tweaks and you’ll achieve your goal.
 
Better than describing it is seeing it in action, in this live demo (or by clicking here to see it full size):
 

The video content presented here requires a more recent version of the Adobe Flash Player. If you are you using a browser with JavaScript disabled please enable it now. Otherwise, please update your version of the free Flash Player by downloading here.

 
As you can see, IntelliWarpTM will enable low cost custom application development for departments or small organizations,  as well as give you the ability to quickly create departmental applications to centralize and secure dispersed data commonly housed in standard office spreadsheets reducing development time to days.

One last note to mention that the first tutorial of 5.1 has been replaced with a new one, which teaches on how to us the new IntelliWarpTM technology. 
 
Have fun with 5.1!

Manuel Dias
@Manuel 
 
"IntelliWarp is like magic!" :)
 
I think it's important that you include a bucket in the download because I can't stop drewling here.

Besides that I hope the input will be moved to a magic wand, since using a mouse and keyboard
is becoming 'old-fashioned' when using an IDE like this.
Dear All,

I'm very proud to announce the general availability of the new Agile Platform 5.1. This new release was designed to address several key use case scenarios including:
  • Enable low cost custom application development for departments or small organizations;
  • Ability to quickly create departmental applications to centralize and secure dispersed data commonly housed in excel spreadsheets;
  • Swifter delivery of information-centric enterprise-class applications, reducing development time to days.
To reach this Productivity level, a new innovative IntelliWarp technology that speeds up the delivery of web apps to ‘warp’ speed has been introduced. In a matter of hours, application development teams can build a complete working web application without writing any code. You can see a live demo of it here.
 
As far as concerns to Application Scalability, version 5.1 has several scalability enhancements to support large enterprise web applications, including:
  • Support for multiple database catalogs or schemas, advanced database security options and data isolation schemes providing advanced control of critical data sources;
  • Enhanced server-side caching of business logic, database queries and web services providing advanced tuning options to support heavy load web applications; and
  • Built-in support for search engine optimization (SEO) using smart URLs and other techniques for driving natural web traffic and increasing page rank.
Our third goal on this new release was to reduce and simplify Learning Curve.  A new set of embedded tutorials are now available to speed adoption across enterprise development teams. Tutorials use automated prompting technology to help new developers learn to use the Agile Platform in a day or less, by walking the developer through the delivery of a full enterprise application. To assist project teams using either agile or other methods, version 5.1 now supports the automatic generation of design documentation through new Agile Platform APIs. The free OutDoc component is available to all users of the Agile Platform and can be downloaded here.
 
These major features are complemented by a large number of small, but important productivity improvements aligned with the valuable feedback you gave us. You can check out all posts in this thread  or read the What’s new in the Agile Platform 5.1 datasheet, which describes in more detail all enhancements and new features in 5.1.
 
Finally, let me thank you all for your feedback, and extend a special thank you to all teams that worked in the Beta Program for their precious early feedback which was fundamental to achieve a top quality release.
 
Have fun with 5.1!

Manuel Dias


Whoehoe!

Let's check it out!

A dream come true... :)
Great!

Will download & start testing this evening!

Expect some bug reports soon! (I hope you've left some just to keep the testing community busy)  ;)