Miscellaneous Notes and Bug Fixes for USoft 11.0.BETA
Bug fixes
The identification number in front of each item title is a Jira Issue ID. Jira is the information system that USoft uses internally. If you use these numbers in your communications with USoft, the support desk will know what you are referring to.
An identification number(s) at the end of an item title (if any) is a Jira Support ID. This is the number that was used in communication about the support call that gave rise to the note or the bug fix.
AUTHORIZER
USD-5110
CacheRefreshPeriod has been removed. USoft now refreshes the user cache dynamically when the timestamp of the user changes. This timestamp changes when any of the user-related data changes. The user data will be removed from the cache when the user data has not been consulted during 5 minutes.
As a result of this change, the internal RDMI method RulesEngine.RefreshAuthorization()
has been removed.
USD-5122
For Application Users, the Validation Agent and Account Type attributes have been merged into a single attribute (Validation Agent).
USD-5128
A separation between RDBMS user (responsible for database access) and front-end user has been implemented for all applications. This applies to USoft applications (usd, creapp, runbatch, sqlscript, usclock...) as well as to user applications and batches built in USoft.
The -u/-pw parameters specify the RDBMS credentials, the -fu/-fpw parameters specify the front-end credentials. The -u/-pw parameters must always be present to give database access.
For the application user, the following possible situations can occur (ordered by relevance):
When -fu/-fpw is provided, the application user will be the user provided by the command-line parameters.
When -fu/-fpw is not provided and the RDBMS user is also registered in the Authorizer as (Validation Agent) 'RDBMS' user, the application user will be identical to the RDBMS user.
When -fu/-fpw is not provided, the application will check if the Windows user is available as a SSO (Single Sign-On) user. If so, it will set this SSO user as the active application user.
When all fails, the login dialog is shown. The login dialog can be used to log on interactively as a USoft front-end user.
The Binder 'Project Properties' dialog has extra input fields that allow you to specify front-end users.
USD-5281
For Application Users, for the Validation Agent attribute, the 'Disabled' option and the password manager 'Funnel' option are no longer supported. To disable a user, set Active = No for the user.
USD-5288
It is not possible anymore to extract the password with RulesEngine.GetResource('*password')
except when this request is made on the basis of background rights.
USD-5291
Passwords inside USoft Binder and USoft are now encrypted. Also, the command line generated in USoft Binder to open a Binder item now contains a non-readable password. This makes it impossible for a user to extract the password.
USD-5313
For Application Users, for the Validation Agent attribute, 'USoft Encrypted' option has been removed. Existing users are updated to Validation Agent 'USoft'.
The command line argument '-pwcrypt' has been removed. The action uscrypt()
has also been removed.
BINDER
USD-5417
In USoft Binder, you can determine how the Windows OS groups icons for open USoft Binder items in the taskbar. Choose File, Application Grouping:
By Type: Opened Binder items of the same type are grouped together. For example, all opened USoft Authorizer items are grouped together.
By Project: Opened Binder items of the same project are grouped together. For example, a USoft Authorizer item and a USoft Definer item opened for the same project are grouped together, but a concurrently opened USoft Authorizer item for a different project is grouped separately.
None: All items opened from USoft Binder are shown separately. No grouping is applied.
All: All items opened from USoft Binder, regardless of project or type, are grouped together.
DATABASE CONNECTIVITY
USD-5098
Concatenating a fixed Unicode string and a column from the repository on Oracle 19c could result in an unreadable result. This has been fixed.
USD-5904 (US-1269)
When running against SqlServer, USoft would add a column ‘timestamp’ to each table.
This column is not used anymore and has now been removed.
DEFINER
USD-5257
Authorization on DDL (CREATE, ALTER and DROP statements) has been added. For more information, go to docs.usoft.com and search 'DDL rights'.
USD-4734 (US-773)
Until now, it was possible to define a component in USoft Definer with the same name as an internal component. This could lead to unpredictable behavior and errors at the time when the component was called.
This is now prevented. It is no longer possible to have a user-defined component with the same name as an internal component.
USD-5210
Object Shopping:
- If you export a Business Rule that has an Implementation of type Component Method, the entire RDMI Component is exported.
- If you export a Business Rule that has an Implementation of type Table Right or Column Right or Job Right or Component Right, the entire Role is exported.
- If you export a Business Rule that has an Implementation of type Column, the entire Table is exported.
- If you export a Business Rule that has an Implementation referring to an ESI object (ie., an Implementation of type Menu Page, Menu Line, Page, Window or Dialog, Control (C/S), or Control (browser) ) then this Implementation is NOT exported.
- If you export a Business Rules that has an Implementation of type Job Task or Job SQL, no inclusion is made. To have the Job included, you must add an implementation of type Job.
USD-5215
You can now create a domain based on a template domain shipped by USoft. Template domains include popular types of domain such as STRING, NUMBER, BOOLEAN.
After you create a domain based on a template domain, you can customise it in any way you want. Definer will automatically reset the template domain if you stray too far into another template domain.
For detailed information, go to docs.usoft.com and search 'template domain'.
USD-5448
Until USoft 10, if you produced a foreign key with a domain that was different from the domain of the matching primary key column, an error was raised, and you needed to produce the correct domain manually.
Now, the foreign key domain is automatically matched to the primary key domain, on condition that the foreign key column is not also used as a foreign key by a different relationship.
Until USoft 10, if you produced a subtype primary key with a domain that was different from the domain of the supertype primary key, USoft Definer corrected the subtype domain automatically but an interactive warning message was raised.
Now, this warning message no longer appears.
USD-5514
Dotnet RDMI components are now compiled with .NET6, but .NET6 core does not include Windows-specific DLLs since it is a platform-independent framework. An error is raised if you attempt to check a Dotnet RDMI component and you include Windows-specific DLLs in Assembly References.
To prevent this, you can now set the new "Allow Windows App DLLs" flag. This allows you to maintain backwards compatibility with Window-specific RDMI components. Be aware that you cannot deploy these on non-Windows platforms such as Linux.
USD-5736
In USoft Definer, it is now possible to store initial data as part of the definition of a table.
In the 'Database Tables window, on the Table Details tab, there is a new Initial Data field. In this field you can specify any data contents that, at some point for some reason, you want to initialize the table with. A method <tablename>.GetInitialData()
is available to retrieve the initial data in the application.
For more information, go to docs.usoft.com and search 'getinitialdata'.
USD-5740
If you import a file exported from USoft Studio Production or Acceptance, if the import is successful, then in USoft Definer, the URL attribute of the Vocabulary is set to the origin URL for the Studio vocabulary. The "Imported from Studio" flag is set to Yes in this situation.
USD-5752
You now have the option to automatically install referenced nugets in the dotnet components. When the Check Repository tool is run, you can select to auto-install referenced nugets.
USD-5777
In USoft 10, in the Import from USoft Studio tool, it was possible to playback the transformation that USoft Definer applied as a filter to the incoming Studio data prior to importing that data. It was also possible to customise this filter. The transformation was named xsl\util\ImportFromUSoftStudio.xsl.
In USoft 11 it is no longer possible to playback and customise this filter.
In USoft 10 roles for authorisation on USoft Definer, in the (3) "..._NO_STUDIO" roles, there was a differentiation between status flags considered to be part of Studio (eg., Defined, Defined By) and status flags considered to be part of Definer (eg., Built, Built By).
In the USoft 11 "...NO_STUDIO" roles, there is no such differentiation. The intended use is that if a team uses the Studio-Platform bridge, all the flags are set in Studio and not in Definer. They are carried over the bridge and must be considered read-only in Definer.
USD-5820
- The restriction that you cannot delete a Business Rule that has one or more implementations has been lifted. The delete is now cascading. If you delete a Business Rule, any implementations are automatically deleted. The reason for this change is redesign of the intended interaction between the USoft Definer and USoft Studio tools.
- In the new situation, the Read report of the "Import from USoft Studio" no longer reports on impending deletes of implemented rules as an error situation, but as a warning situation (same as impending updates of implemented rules).
USD-5888
To try out the bridge from USoft Studio 4.1 to USoft Definer Beta, you must perform 2 additional manual actions described at the top of this article:
Importing from USoft Studio into USoft Definer 11
These manual actions will no longer be necessary when you import from USoft Studio 4.2.
The Studio version number is displayed at the bottom of all Studio browser pages.
DOCUMENTATION
USD-5518
Tables that are described in USoft Definer, but that are in fact an RDBMS view or an RDBMS synonym, are ignored by Create Table (Definer, Binder) and by TDF export/import (Benchmark).
These are referred to as "external tables".
USD-5807
Modules as plug-ins are no longer supported from USoft 10.1 onwards. The ALLOW_PLUGINS Rules Engine parameter is no longer supported from USoft 10.1 onwards.
USD-5909
For each Blend function, documentation now specifies the namespace declaration for the function.
You need this information if you call the Blend function from USCSXSL but outside a Blend context (eg., uscsxsl.apply()
as opposed to uscsxsl.blend()
).
RULES ENGINE
USD-3496 (US-216, US-779)
The USoft Developer platform now supports version control.
For details, see the New Functionality section at the top of this document.
USD-4943
XML.Export and XML.MultiExportTables have a new parameter named 'LobAsCDATA' with possible values 'yes' and 'no'. The default is 'no'.
If these methods are called with 'LobAsCDATA' set to 'yes', all LOB columns will be exported as child elements instead of attributes and their value will be enclosed by a '![CDATA[]]' section. This has the advantage that special characters (such as '&') remain readable because they do not need to be replaced by entity references (such as '&') as an escape mechanism.
LOB columns are columns with the CLOB, NCLOB or BLOB datatype.
XML.Import can handle the LOB values in both the traditional and the CDATA format.
USD-4951
Export and import routines to and from XML and JSON are now able to handle binary data (BLOB data type), using the base64 encoding.
USD-4981
As of version 11, USoft uses net6 both for Windows and Linux, replacing net4.8 on Windows.
USD-5555
The USMeta.Columns()
internal component method call now returns an additional attribute called KEY_NUMBER.
KEY_NUMBER contains the value set for the column as the Key attribute.
If Key = No, then KEY_NUMBER="N".
If Key = 1, then KEY_NUMBER = "1",
If Key = 2, then KEY_NUMBER = "2", and so on.
UBLEND
USD-5715
When searching for nugets, you can now extend your search to include prereleases.
To do this, in the Find Nugets tool, in the search condition in the 'By Filter' field, preprend the 'pre!' prefix.
WEB APPLICATION
USD-5433
In USoft 11, the getSelection, getExpression, getValue, and getSearchValue placeholders are no longer supported.
In USoft 11, the getWhereClause placeholder is deprecated, but still functional on data sources on the current main page.
USD-5919
The old web API based on function objects has been rewritten to a new one based on module files and class objects. All Javascript code revised to comply to ECMAScript 6 standard; all CSS rewritten to comply to (implemented) CSS4 standards. HTML has been modernized.
Several (old) libraries have been phased out and/or replaced by new ones.
- JQuery phased out; currently events based on JQuery (if added via application.xml) may be defunct and not properly working.
- Handlebars template factories replace by Vue3 standards.
- Support for JQuery UI, and older Bootstrap (version 3 and 4) has been dropped.
- Event handling no longer relies on JQuery; it uses the native Event objects and extends the current JavaScript DOM objects with JQuery-esque event functionality (i.e. the
.on()
,.off()
and.trigger()
methods). Other useful functions from JQuery like.find()
,.is()
,.data()
and more have followed suit.
NB: some kinds of events that are very JQuery may therefore no longer work as expected.
- The new UI is module/class based spread over multiple files, with each control having its own class file. This should make overriding them for changes much easier and cheaper.
- Web Benchmark has been completely modularized and is no longer semi-embedded on each control as well as the event framework; it uses a 'super' delegate to react on controls that must be recorded. It can also be enabled/disabled at any point without disrupting application functionality.
- All
usoft.db.*.js
files have been dropped and replaced by ausoft.module.*.js
module file which name represents its purpose; every module file only exports the objects and functions that are relevant for other modules, and/or global scope. Only the functions and methods that are relevant for global scope are bound to global scope, so that it is no longer polluted with (internally used) function and object names.
This also means that when upgrading, you need to replace the old USoft 10.1 file set with the USoft 11 ones in your application.html file, if your project has that file in your Alt publication folder. Obviously, any usoft.db.*.js
file present in said Alt publication folder must be removed as well.
All public classes start with the prefix "Udb", e.g. UdbDataSource for a class object that represents a data source. Any existing classes or objects of 10.1 that started with "udb" are renamed to match this scheme (e.g. udbPromise -> UdbPromise).
$.udb
is still the main interface, defined in usoft.module.interface.js, with these changes:
- All methods that do not return a primitive value now always return a UdbPromise.
- The option 'promise' for every function that contained it, has been removed for the reason above.
Here is a list of the affected functions:
$.udb.acceptLookupValue()
$.udb.cancelWindow()
$.udb.checkData()
$.udb.closePage()
$.udb.commit()
$.udb.executeSQLStatement()
$.udb.getMenu()
$.udb.login()
$.udb.logout()
$.udb.navigateTo()
$.udb.navigateToRelated()
$.udb.navigateToLookup()
$.udb.ping()
$.udb.rollback()
$.udb.dialog()
$.udb.input()
$.udb.upload()
$.udb.wait()
Likewise, the function options 'success' and 'error' have been become obsolete as well; any existing calls result in a warning.
$.udb.groupRequests()
has been removed.
Changes for $.udb(<dsRef>)
function:
- Instead of returning an array of data source aliases, the function
$.udb(<dsRef>)
now returns an array of data source objects that can be directly accessed. $.udbMeta()
is merged into$.udb()
; using the old$.udbMeta()
function results in a warning.- All methods that do not return a primitive value now always return a UdbPromise.
- The option 'promise' for every function that contained it, has been removed for the reason above.
Here is a list of the affected functions:
$.udb(<dsRef>).clear()
$.udb(<dsRef>).clearQuery()
$.udb(<dsRef>).each() =>
promise option dropped.$.udb(<dsRef>).executeQuery()
$.udb(<dsRef>).getDataSet()
$.udb(<dsRef>).gotoDataSet()
$.udb(<dsRef>).refresh()
$.udb(<dsRef>).rowCreate()
Likewise, the function options 'success' and 'error' have been become obsolete as well; any existing calls result in a warning.
Here are other changes to functions and its options:
$.udb(<dsRef>).busy() =>
new function, shows the 'busy' state of the data source.$.udb(<dsRef>).hasLookup() =>
renamed to.hasLookups()
$.udb(<dsRef>).parents() =>
now returns aMap()
$.udb(<dsRef>).children() =>
now returns aMap()
$.udb(<dsRef>).setBusy() =>
new function, changes the 'busy' state of the data source to true or false.$.udb(<dsRef>).containsGetValue() =>
obsolete now, will be dropped in beta 2$.udb(<dsRef>).context() =>
new function that returns the context of the first data source in the array.
For $.udb(<dsRef>).rowSet(<rowSetRef>)
function:
- Instead of returning an array of objects with rowset information, the
.rowSet(<rowSetRef>)
function now returns an array of rowset class objects that can be directly accessed. - All methods that do not return a primitive value now always return a UdbPromise
- The option 'promise' for every function that contained it, has been removed for the reason above.
Here is a list of the affected functions:
.rowSet(<rowSetRef>).clear()
.rowSet(<rowSetRef>).each()
.rowSet(<rowSetRef>).executeQuery()
.rowSet(<rowSetRef>).gotoDataSet()
.rowSet(<rowSetRef>).sort()
Here are other changes to functions and its options:
.data() =>
dropped..context() =>
new function that returns the context of the first rowset in the array.
For $.udb(<dsRef>).rowSet(<rowSetRef>).rows(<rows>)
function:
- Instead of returning an array of objects with row references, the
.rows(<rows>)
function now returns an array of row class objects that can be directly accessed. - All methods that do not return a primitive value now always return a UdbPromise.
- The option 'promise' for every function that contained it, has been removed for the reason above.
Here is a list of the affected functions:
.rows(<rows>).each()
.rows(<rows>).refresh()
.rows(<rows>).rowDelete()
.rows(<rows>).rowRemove()
.rows(<rows>).select()
Here are other changes to functions and its options:
.rows(<rows>).data() =>
dropped, there will be an alternative added in beta 2 that returns the values of the first record in the array..rows(<rows>).context() =>
new function that returns the context of the first record in the array..rows(<rows>).filter() =>
obviously also return an array of row class objects now instead of references..rows(<rows>).joinedVal() =>
dropped because the obsolete TableDataSource property 'Joined Table' is also dropped..rows(<rows>).keysXML() =>
defunct in 10.1, therefore now removed.
For $.udb(<dsRef>).rowSet(<rowSetRef>).rows(<rows>).cols(<colRef>)
function:
- Instead of returning an array of objects with column alias references, the
.cols(<colRef>)
on.rows(<rows>)
and.searchCols(<colRef>)
on$.udb(<dsRef>)
functions now returns an array of column class objects that can be directly accessed. - The function
.colsMeta(<colRef>)
is merged into.cols(<colRef>)
; using the old.colsMeta(<colRef>)
function is not possible anymore. - All methods that do not return a primitive value now always return a UdbPromise
- The option 'promise' for every function that contained it, has been removed for the reason above.
Here is a list of the affected functions:
.cols(<colRef>).each()
.cols(<colRef>).sortOrder()
Here are other changes to functions and its options:
.cols(<colRef>).context() =>
new function that returns the context of the first column in the array..cols(<colRef>).rawVal() =>
new function that handles setting and returning non-formatted values; mostly intended for internal usage.
Other functions:
- Methods that return a UdbPromise now:
$.udb.wait()
$.udb.opacity()
$.udb.dialog()
$.udb.input()
$.udb.upload()
Moved and renamed functions:
$.udb.data.format
functionality are now available on $.udb.ioFormat instead.
A new object UdbApplication is available, which is a class that contains numerous static functions; some of which are also accessible via $.udb instead:
UdbApplication.context()
UdbApplication.showLogin()
UdbApplication.login()
UdbApplication.logout()
UdbApplication.setTimeout()
Many 10.1 $.udb.ui
functions are defunct because of the new UI and not present anymore in USoft 11:
$.udb.ui.registerControl()
$.udb.ui.modifyControl()
$.udb.ui.resize()
$.udb.ui.transform()
WINDOWS DESIGNER
USD-5162
A new browser control has been added that is able to extract data from the underlying RulesEngine. USoft leverages this control in new features for Formulations and EAR Diagrams.
Documentation for developers who want to leverage this control themselves is forthcoming.
USD-5520
When a Logical View was incorrect, opening the Logical View in Windows Designer or Web Designer gave errors of this type: No valid entity found for … .
This has been fixed.