Unofficial Content
  • This documentation is valid for:

Several functionalities make it possible to code less and declare more, as well as to reuse the generated code. In addition, higher usability, integration and automation make development simpler, more effective and productive.
In this version declaring is enhanced by data providers and formulas, code reuse is powerful through data selectors and business components, and the use of patterns lets you automate more than ever. In addition, some specific GeneXus Language improvements enclose an environment that provides more and more opportunities for extreme productivity.

Declaring

Data Providers

Want to fill structures or Collections in a declarative way? Want to not just fill them but also provide that structured data in multiple outputs, say web services, xml and any other data exchange protocol?
A Data Provider is a new GeneXus Object aimed at providing data collections (for example, a list of customers) or a data structure (for example, customer data) in an easy and high-level, declarative way. It replaces a bunch of procedures, those whose output is a hierarchical one (SDT as well as BC). Data Providers go a step further in 'declaring' instead of 'programming'. The big advantage: the underlying implementation can be changed, and the Data Provider will remain valid. 

See more...

Formulas

In GeneXus X, formulas are meant to be simple, easy to use and with great expressiveness, as well as powerful and efficient tools. Formulas are considered an important way to share knowledge and reuse code throughout the KB.

Now you can use formulas wherever you need them, for instance, within the For Each command Order Clause and Conditions, combined with a Data Selector or even you can define it directly within an object code (local definition).

See more ...

Initial Value Property

In GeneXus X, any expression can be set in the Initial Value property

See some samples...

Code reuse

Data Selectors

How many times did you provide a list of products, and forgot to condition the output only to those that are available? How many times did you ask for a customer list and got one including records that were deleted logically? Data Selectors avoid that, help you get the results you want, and reuse conditions in any query.
A Data Selector is a type of GeneXus object, which has been created to allow reusing navigations.
It has two main purposes:

  • avoid code duplication
  • provide a better way to separate the interface code from the business logic code.

See more...

Business component

Some improvements, such as full text search or BC as data provider output, were included in this version.

See more ...

Automation

Patterns

In GeneXus X, Patterns are fully integrated into the GeneXus IDE. The current version has built-in Work With and Category patterns, and most of this interesting work was done to create a better infrastructure to make patterns work smoothly inside GeneXus.

The main difference between the implementation of this feature in GeneXus 9.0 and in X is that the former was based on creating export files and consolidating them. GeneXus X is based on the built infrastructure to create defaults for each object part. Basically, this means that now you don't need to apply the pattern and import the result. When you change a property in the pattern definition, objects will automatically react to the change without the need to recreate them.

In GeneXus 9.0, when you create a transaction, it has a default form. If you change the form, the default is no longer applied but you can return to the default form at any time. When the default form is not actually stored in the object, it's calculated each time the object is opened in the IDE or by the specifier. In GeneXus X, this behavior has been extended. Every part of every object can have a default value. We can have default Web Panel forms, Web Panel events, etc. Defaults are based on a template written with the same template engine as in GeneXus 9.0 patterns (.dkt template files). The default for each part can be different for each specific object. You can have a Web Panel with one template set as default for the form, and another with a different one.

The GeneXus X Work With Patterns implementation creates a set of empty objects with specific default templates set in each object. It creates a "WW<Transaction>" Web Panel with a default template that reads the transaction structure and creates a grid. This means that every time you add an attribute to the transaction, it will also be added to the Web Panel without the need to apply the pattern again.

If you have been using the 'Work With' Pattern in the previous version, you might want to convert your application with Patterns to GeneXus X version.

See more....

Reorganization

In GeneXus X, the reorganization process has important, new characteristics that make it a more efficient process, which is transparent for the user.
Within these characteristics we can mention the following:

  • Partitioning: The reorganization code is generated in independent modules that can be executed in parallel (Multithread).
  • More efficient SQL: Temporary tables are avoided, thus making the generated SQL code more efficient while preserving security schemes defined on the tables.
  • Statement Script: In addition to the Impact Report Analysis (IRA), GeneXus keeps the user informed on all the SQL statements to be executed.
  • Record Count: You can know the number of records in each table to be reorganized in order to estimate the execution time.
  • User Scripts: User-defined scripts can be executed before and after the reorganization.
  • Restart after a fail: If a failure occurs in the middle of a reorganization process, in the next execution the process will be restarted from where the failure occurred.
  • Previous Verifications: Checks out the DBMS catalog to prevent possible failures (e.g.: avoid the creation of an already created table, etc.).

See more ...

GeneXus Language Improvements

New Data Types and Constants

  • It is now possible to define a variable as a collection. See more...
  • Boolean DataType. Tip: If you have a 'Boolean' Domain (imported from previews versions), rename it in order to not get confused between the Domain and the Data type. See more...
  • Expression DataType: used to evaluate an expression at runtime. See more...
  • Regular Expressions: A regular expression (regex) is a string used to describe or match a string collection, according to certain syntax rules. The use of Regular Expressions to search and manipulate strings is becoming very popular in text editors, utilities, and programming languages. Given its declarative nature, regular expressions are fully supported in GeneXus. See more...
  • Date Constants: The use of date and datetime constants is a simpler way to initialize variables/attributes or to use these constants instead of using character-conversion-functions like CTOD or TTOC as in previous versions where needed. See more...
  • Window Data Type: to open in another browser window.See more...

Domains

Domains can now be defined as collections of their Data Types. The boolean property 'Collection' is added. See more...

Structured Data Types (SDTs)

There are some changes about the kind of SDTs that can now be defined, and the way to do it. Some definitions are no longer supported (some collections, that in a conversion from 9.0 are defined as Collection Domains), as well as some are now added (as the possibility of define Recursive SDTs).  For more information see the Compatibility section ...
Besides there are implemented a new set of properties in order to improve the Xml representation of an structured data type, For more information Xml Information Properties

See more ...

Commands

  • For in Command: the &variable with the array, matrix or collection, is now a particular case of the general one: You can specify any expression of an array, matrix or collection type to be running through. See more...

Blocking Data Updates

When throughput is an issue and you need to update, insert or delete a large number of records, reducing the number of roundtrips to the DBMS may be the answer.

See more ...


Last update: February 2024 | © GeneXus. All rights reserved. GeneXus Powered by Globant