What's New in Uniface 10.3.01
Uniface 10.3.01 provides significant enhancements to the Uniface IDE, application security, and the Uniface Repository.
Important: To run Uniface 10.3.01, you must obtain and install new Uniface licenses. To do so, contact your Uniface representative.
Changes were made in the Uniface Repository between Uniface 10.3 and 10.2, as well as between Uniface 10 and Uniface 9. If you are using Uniface 10.2 or Uniface 9, you must migrate your existing sources to the new Repository. See Repository-Related Changes and Migration to Uniface 10.
Caution: Do not run Uniface 10.3 against an earlier Repository, and do not use earlier meta model definitions in Uniface 10.3.
IDE Enhancements
The Uniface IDE features a number of changes to improve its usability and extend its functionality.
You can now integrate your own development-related functionality into the Uniface IDE by means of menu and worksheet plug-in components. For example, you may want to add refactoring utilities that rename objects and references in code, compile all components that use an entity after it has been modified, integrate with your version control system, create logs of changed objects for your build environment, and so on.
Plug-in components for menus and worksheets implement APIs that enable Uniface to activate them, and they allow these user-defined components to call selected IDE functions, such as refreshing one or more editors, or writing to the Messages tab.
- Worksheet plug-ins are user-defined, contained forms that appear as worksheets in main object editors. Worksheet APIs enable them to respond to events in the IDE (getting or losing focus, renaming or refreshing objects), or initiate IDE actions (refreshing editors, sending messages to the Messages tab). For more information, see IDE Worksheet Plug-Ins.
- Menu plug-ins are user-defined components that add items to the IDE's Main Menu ( ≡ ) and to the Actions menu of object editors. The Menu Plug-In API defines operations that specify the menu items and activate the related action, and callback operations that return data instructions to the IDE. The Menu Plug-In API replaces the Additional Menu functionality of Uniface 9. For more information, see IDE Menu Plug-Ins.
- The IDE API provides general functions for starting editors and navigating to specific development objects, which you can call from menu and worksheet plug-ins. For more information, see IDE API Operations .
The Form Layout editor has been integrated into the Form and Report editors and is no longer a separate floating window. For more information, see Define the Structure and Layout of Forms and Reports .
Libraries for global objects and language setups are now typed, bringing them into line with IncludeScript and Snippet libraries, and making it easier to group them for source control and deployment.
Note: Messages, help texts, and language setups are all considered different types of message and can be stored in the same message library, although they have different editors.
The editors for global objects, language setups, and modeled properties have been enhanced so that you can create or select the appropriate library when starting the editor. There is no need to change library properties before starting to edit one of these objects.
For more information, see Libraries of Runtime Objects and Create a Library for Modeled Properties or Global Objects .
After compiling components and application shells in the Uniface IDE, you can click ProcScript errors or warnings in the Compiler Output tab to navigate directly to the location that caused the message. The applicable editor is automatically opened.
For more information, see Compilation.
When using the U-Bar to navigate to subtype entities of a supertype entity or to inner entities in a component, you can specify only the target entity without the hierarchical path of supertype entities or outer entities.
For Subtype entities, you can enter ent:subtype.model to open the editor of the Supertype.
For component entities, you can enter cpt:component/ent:entity to open the component editor with the target entity selected. For example, to go to the inner entity ODERLINE.SALES, you can enter:
cpt:ORDER/ent:ORDERLINE.SALES
instead of
cpt:ORDER/ent:ORDERS.SALES/ent:ORDERLINE.SALES
.
For more information, see U-Bar Syntax.
It is now possible to close multiple editors in the current IDE window. Right-click an editor tab (or the Start Page tab) to display a menu with the editor options.
The Print Setup option has been added to the IDE Main Menu ( ≡ ) so it is again possible to define print job models. For more information, see Define a Print Job Model.
Security Enhancements
Uniface 10.3.01 introduces a new network connector to provide certificate-based authentication and encrypted communication for Uniface applications.
The TLS connector enables you to protect network connections between Uniface client applications, Uniface Routers, and Uniface Servers using pre-shared keys or certificates.
For more information, see Network Support, TLS Connector, and Digital Certificates.
Triggers and operations that are exposed to the web cannot be activated over the internet unless they contain an explicit declaration to enable this. In Uniface 9, this behavior could be optionally enforced. In Uniface 10, it is default behavior.
Any trigger or operation in a server page or service component that should be accessible from the web or via SOAP call-in, must be declared as public web or public soap respectively.
The $require_public_decl setting is no longer functional and will generate a warning or error message if it is used. For more information, see soap and web .
Asynchronous messaging using the 3GL API and the Message API Utility has also been enhanced to support the use of TLS and TCP IPv6. To achieve this, a new 3GL function, upostmes(), has been introduced to replace the upostmessage() function, which is now deprecated. Although similar to upostmessage(), the upostmes() function features the following enhancements:
- It supports the TLS connector as well as IPv6, not just TCP and IPv4.
- It works on all available platforms, not just Windows.
- It performs code page conversions on the specified parameters, which are expected to be in the same character set as $SYS_CHARSET. If you set $SYS_CHARSET to
UTF8
, you can send Unicode messages in any language, whereas upostmessage() only supported ASCII.
The Message API Utility has been updated to use the new upostmes() function for both the command line (umsgutil.exe) and the ActiveX control (unimsg.ocx).
For more information, see upostmes and Message API Utility.
Uniface installs a version of the Apache Tomcat Web Server as part of its out-of-the box test environment for web applications. In this release, the version of Tomcat has been upgraded to 8.5.30, which addresses some security issues.
As more recent versions of Tomcat become available, you may choose to update Tomcat. Uniface itself does not do this for patches, service packs, or minor point releases.
For more information, see Apache Tomcat and Configure a Web Server for Uniface Applications.
Note: You can configure any web server for web application development and deployment that supports Java Servlet API 2.3 - 3.1.
Note: You should never use the Uniface Tomcat installation for your deployed web applications.
Repository-Related Changes
In Uniface 10, the Repository has been significantly changed. Most changes were made in Uniface 10.1 but some further changes were required before the data dictionary could be published and Repository scripts generated. Uniface 10.3 completes the required changes.
Note: If you are currently using Uniface 10.2,10.1, 9.7, or 9.6, you must migrate your existing sources to the new Repository. If you used the Repository meta model to provide custom development functionality, you will need to import the new meta model and update your application.
Note: If you do not use the default Repository created during installation, you can use the Create Table facility to generate the SQL scripts required to create the Repository in a supported database.
For details, see Uniface 10: Repository Changes.
The new Repository definitions are provided in the umeta.xml file, located in the uniface\misc directory of your installation. These definitions enable you to build or update your own development-related tools. You can import umeta.xml as you would any other file of Uniface sources. It is no longer possible to use the command line switch /ins meta. For more information, see Meta Dictionary.
Uniface no longer delivers database-specific scripts for creating Repository tables. Instead you can generate your own scripts using the Create Table facility ( /gensql createtable). For example, to create scripts for the DICT tables in Microsoft SQL Server:
ide.exe /gensql /meta createtable *.dict mss
For more information, see Create Table Facility, Generate Scripts for Creating Repository Tables, and /genSql.
It is now possible to generate SQL scripts to create tables for modeled database entities, including Uniface Repository tables. This functionality is provided by a new Uniface IDE command line switch: /genSql. The command /genSql createtable provides the same functionality as the Create Table utility in Uniface 9. For more information, see /genSql.
The ability to generate modeled entities based on existing database definitions has been added to Uniface 10.3. In this release, it is possible to load definitions from existing MSS databases. For more information, see Load Definitions Facility .
Currency Updates
Uniface regularly updates support for and use of third-party software, platforms, and database. The most current versions are usually reflected in the Platform Availability Matrix.
Uniface makes use of International Components for Unicode (ICU) and Common Locale Data Repository (CLDR) for locale and language support. In this release, Uniface has upgraded the ICU and CLDR versions, which feature changes to the date, time, and currency formats to keep standards updated in agreement with the international community.
Some of these changes may have consequences for your application code. As one example, the French short date format that has been updated from dd/MM/yy
to dd/MM/y
.
Also, the number of locales and time zones has increased, so $nlslocalelist and $nlstimezonelist return more items.
For details on the ICU changes, consult the web pages Download ICU and CLDR Releases.
Uniface has updated its C++ compiler to Microsoft Visual Studio C++ (MSVC) 2015, which provides improved performance, stability, and security. As a consequence:
- Desktop applications built with Uniface will conform more with the Windows 10 native look and feel. This is most noticeable on scroll bars, title bars, widget borders, and dialog boxes.
- When using the activate ProcScript command with a form and without specifying the position, the default position is different. This is functionality controlled by Windows, not Uniface, so if exact positioning is required, you should specify it explicitly.
- If you have built your own 3GL applications using the Uniface API, you should recompile them with Microsoft Visual Studio C++ (MSVC) 2015. The MSVC 2015 redistributable is automatically installed with Uniface 10.3.01.
- Support for platforms and operating system versions that are not supported by MSVC 2015 has been dropped.
A new version of the MSS connector is available (MSS 5.2), which supports Microsoft SQL Server 2017. MSS 5.2 features the following changes:
- Technology such as contained databases and Always On availability groups are now supported. For more information, see Contained Databases and Always On Availability Groups
- The sql92npw connector option is deprecated as of MSS 5.2; It is ignored and always
on
. This may affect your application if you do not have this option set (on or off) in your assignment file, and use the sql ProcScript command explicitly concatenate fields using your own SQL.For more information, see sql92npw and What's New in MSS U5.2
The following platforms are no longer supported:
- Red Hat Linux Enterprise edition 5.5 - 5.8 (64-bit)
- Red Hat Linux Enterprise edition 6.* (64-bit)
- Sun SPARC Solaris 10 (64-bit)
- HP Alpha OpenVMS 8.3 (32- and 64-bit)
- HP Itanium OpenVMS 8.4 (64-bit)
- IBM RS/6000 / pSeries, AIX 6.1 (64-bit)
- Windows CE
- Windows XP
The following databases are no longer supported:
- DB2 v10 on IBM RS/6000 / pSeries, AIX
- Sybase SDK 16 on IBM RS/6000 / pSeries, AIX
The following database connectors are no longer supported:
- DB2 U4.0 on IBM RS/6000 / pSeries, AIX
- Sybase U5.2 on IBM RS/6000 / pSeries, AIX
The following new platforms are supported:
- IBM i 7.1 on iSeries
- IBM i 7.2 on iSeries
- IBM i 7.3 on iSeries
Documentation Enhancements
Uniface has changed the tooling used to generate the Uniface documentation, making it possible to modernize our documentation delivery. In this first release, we have migrated our existing documentation to the new tool, resulting in some improvements and changes in the Uniface Library:
- Navigation breadcrumbs at the top of each topic enable you to easily navigate the documentation hierarchy.
- Expanding text buttons that make it easier to see an overview of the contents of long topics such as What's New, and then expand the items you want to view.
- Related links button at the bottom of most pages. Clicking the button displays a list of related links if there is more than one, and takes you directly to another topic if there is only one related link.
Tool limitations mean that some features are no longer available, such as the sub-topic summaries and tooltips for links.
Note: File names and locations in the CHM file have changed. If you copy the new ulibrary.chm over a version produced for a previous release, any Favorites will no longer work.