In this post we gather all the release notes of the different 3.9 CTP & RC releases to have them in one place.
Important upgrade notices
- Applications that are integrated with the Architect 3.9 must also be generated with the Generator 3.9 and deployed with the 3.9 Framework.
- Opening a component with the Architect 3.9 will perform a one way conversion of the model. As a result, after saving, you can no longer edit or integrate that component with the 3.8 or lower without losing data. Therefore, components that are used in applications that are not yet ready to be upgraded to the 3.9, should not be edited with the 3.9. So be considerate of other users of your component and make sure they are ready to make the switch to the 3.9.
- When editing or integrating a model with the Architect 3.9, model errors that went unnoticed in the 3.8 may now be detected. This is expected. In most cases, these errors can be corrected using the Architect 3.8, which is what we advise you to do. In this community post it is explained how the errors can be fixed in the 3.8 (Chapter 5)
- The QA scanner is still being adapted to use the Architect version with which the component revision was saved. For now the QA Scanner will continue using the Architect 3.8. This means that if you are using 3.9 specific functionality which is seen as an error in the 3.8, the QA scanner cannot set your component revision to Beta yet.
- When your application contains Novulo Instructies, make sure it is least at revision 438 before integrating with the Architect 3.9.
- When upgrading the Novulo Instructions component the stored test configuration will be converted to the new structure. When conversion issues are encountered, you will be provided with a back-up file containing the original test configuration.
Where to get the new versions:
Architect: select stable in the Architect starter or use 3.9 in deployment for your order
Generator: use generator_3_9 in deployment
Framework: deploy your application after generating with the 3.9 generator and use the embedded Framework
Novulo Instructions (M4813): select revision 438 (or higher) in the composer
Headless Test Runner 1.6.1.0: download here
Release notes
Business and test processes
With the release of Architect 3.9 the component documentation and business & test processes which were introduced in 3.7 with the use of plugins, have been fully integrated into the Architect.
This integration provides developers to add, create, update & maintain documentation and tests within components to increase quality.
Extensive documentation about the business & test processes can be found here: community post
To view the documentation and run the tests in your generated application, your application needs to contain the Novulo Instructions component (M4813) with revision 438 (or higher). The tests themselves need to be run with the Headless Test Runner.
The term descriptive process is the collective name of the business processes, business (sub)activities, test processes and test sets.
-
When dropping a new business process or business (sub)activity in a descriptive process the properties panel is opened automatically. The title editor is automatically selected as well so you can type in the title directly.
-
The right mouse button context menu for normal and descriptive processes also has been extended:
- When business activities are used in test processes, but also when using process components in other process components, it is now possible to automatically generate new parameters in the process and set these as parameters as values in the called activities or process components.
For a business task the following two options will be available:
- Set âtest valueâ with new parameter: if the task enters a value in a field, this value can automatically be added as a parameter to the business activity
- Set âsearch valueâ with new parameter: when for the task also a search value can be set (for example when clicking on a grid row or when setting a value in a search link), this option will add the search value as a parameter to the business activity.
- With the component properties option you can now directly open the properties of the called business process or process component.
- The properties of a descriptive process or normal process can now also be opened directly via the context menu.
- When business activities are used in test processes, but also when using process components in other process components, it is now possible to automatically generate new parameters in the process and set these as parameters as values in the called activities or process components.
-
When creating your business activity you have the page editor on the right side. It is now not possible anymore to create accidental changes on the page there.
-
The known issue in CTP3 âCreate a test process for a consumed superclassâ has been resolved and it is now possible to create business and test process for consumed superclasses, such as N_Contact.
-
It is not possible anymore to paste actions from normal processes to descriptive processes and vice versa.
-
The properties dialog of a process component or descriptive process now also contains the tab with the parameters, this could first only be accessed via the properties of the trigger / starting point of a process.
-
When you have a descriptive process opened the type is also shown in the panel title name:
Page & process documentation
You can now add documentation to each page, form, grid, field and button.
It is also possible to add documentation to the new business tasks.
For pages and business activities there is also the possibility to add an introduction and afterword.
The easiest way to enter this is by using the translations & documentation editor discussed below.
This documentation, introduction and afterword are displayed in the application when it contains the component M4813 â Novulo Instructies.
Translations & documentation editor
The Translations & documentation editor can be seen in the previous Architect screenshot.
With this editor it is possible to easily add and edit translations and documentation of your model, using an interface similar to Excel. To open it, right click on any element of your model and choose âTranslateâ (alternatively, in the ribbon, choose View â Show panel â Translations & documentation).
The editor has the following features:
- When you select an element (for example in the explorer-tree), the translations & documentation editor automatically updates to show only the translations for that element.
- When you select a row in the editor, the corresponding element is automatically selected in the appropriate panel.
- It has a button to toggle whether all translations & documentation for the subtree are shown, or whether to stop at subpages.
- It has a button to toggle whether all rows are shown, or only (partially) untranslated rows.
- It has buttons to toggle whether translations for UI elements are shown and a button to toggle whether translations for documentation elements are shown.
- It can be easily navigated using the keyboard (including tab and enter)
- A single value can be copied to other rows and columns, by using the small black square at the bottom right of a selected cell.
Other Architect features
PI46225 - Consume features at produce concepts in Architect
It is now possible that produced concepts in your component can have consume features.
This change allows you to produce concepts in the logical component, instead of having to use âdummyâ components.
To change the consume back to a produce, use the âConvert to produceâ option in the context menu of the virtual page.
The consumed concept will then be converted to a produced concept. The virtual page itself will be made the details page of the produced concept and it will be linked under the first grid of that record type in the component.
PI48372 - Add notification + quickfix for unused consumed concepts
When your component has unused consumed concepts now a notification is shown, with a quickfix to remove the concept.
PI48358 - Process component list search also takes produced proces concept name into account
A search in the process component list now also checks the produced process concept name:
PI42643 - Show onchange process in context menu
You can now also access the onchange processes in the right mouse menu for fields:
PI46656 - Right mouse menu in My Recent Projects
On the start page of the Architect in the My Recent Projects panel a right mouse menu is now available with which you can open a component in edit or in view mode.
PI41677 - Expression editor: Being able to see multiple languages of a message in read only mode (e.g. in compare mode)
It is now possible to see the message box of a message expression when you are in read only mode, for example when you are comparing.
PI45277 - Start integration based on integration string from GUI
In an integrated system it is now possible to edit the integration string in the Components manager.
This integration string is checked against the minimal component revision status when you press Update.
PI45696 - Highlight problem in problems tab when a FClass is selected
When you click an element in the Architect and it has one or more entries in the problems tab, the problems tab will scroll to those entries and highlight them.
PI39646 - Specific icon for cached functions in NovuloTree
Cached functions now have a dark blue icon:
PI40344 - Quick add/set predefined subsystems and modules
In the right mouse context menu in the explorer tree functionality has been added to easily add the subsystems as defined in KB630:
This sets the correct name, sequence number & domain.
Subsystems which donât conform to the KB630 have the option to convert them:
The module Application maintenance has the option to easily add the modules as defined in KB630:
Modules of Application maintenance which do not conform to KB630 also have a convert option.
When a settings module is added, a page with the same name is added as well including a tabbed panel.
When a subsystem or module is added, it will check if the other subsystems or modules are placed according to the sequence number. If not you get the question if you want to continue, because the functionality will sort them.
The problem visitor checks if the virtual pages are placed in a Virtual module. If not, a quick fix is offered which can be one of the following options (depending on the configuration of your component):
- Convert the current module to a Virtual and move to the Application maintenance subsystem if necessary.
- Move the virtual pages to an existing Virtual module
- Add a new Virtual module to the Application maintenance subsystem
PI41621 - Open call hierarchy from context menus
It is possible to open the call hierarchy from the right mouse context menu for elements on a page, for entries in the explorer tree or the background of the page editor, process editor or expression editor.
PI42789 - Warn about old presentation layer support
The Architect now checks the following situations:
- if your model does not support the stable presentation layer of the stable framework
- if your model has support enabled for old presentation layers
- if the default presentation layer of your model is an old presentation layer.
In those cases an info message is reported by the problem visitor, including a quickfix to change these settings to the recommended values.
Also, the plugin and icon pack dialogs now clearly indicate if and why a plugin or icon pack is not selectable (e.g. because they support a different presentation layer compared to the supported presentation layers of your model or if they support a different platform version compared to the architect version you are running).
PI42853 - Add checkbox helper dialog
When you add a new checkbox to a form you will now get the following dialog:
With this dialog it is now possible to configure the complete checkbox directly, instead of going through several dialogs.
The label is the text which is shown behind the checkbox in the user interface, the field name is the name of the field itself (e.g. in the column manager or context panels) and the override field name is the name of the field in the database.
When entering the label a proposed field name and override field name are filled in automatically, but these can be changed if desired.
Normally for rows with only a checkbox no caption is shown for the form row, but you can change this with the checkbox âShow the caption of the form rowâ.
PI43852 - OpenModelByIdDialog: shortcut for opening model in view mode
With the key combination CTRL + SHIFT + O it was already possible to open the âOpen model by idâ dialog. In this dialog the Edit mode button is the default button.
If you now press the key combination CTRL + SHIFT + V you also open the âOpen model by idâ dialog, but with the View mode button as default button â saving you to press a couple of TAB presses.
The same applies to CTRL + SHIFT + ALT + V, which opens the âOpen model by idâ dialog with a compare option and the View mode as default button.
PI45494 - In an icons dialogue have the possibility to set an icon pack if none is selected for the model
It is now possible to add an icon pack in the icons dialogue:
PI45677 - Add a sanity dialog before saving a component if the opened revision is not the latest revision
When opening and saving an older revision of a component you will get a warning if you are sure you want to save based on this older revision.
PI45762 - Plugin functions - New icon (function icon + plugin icon)
A plugin function now has its own icon:
PI46006 - Search bar in Context (of process)
The content panel for processes now has a search bar:
PI46032 - Remove support for multiple instantiations of the same concept
You cannot consume and/or produce the same concept multiple times in a component anymore. This was left open for a theoretical reason which was not used in practice.
Loaded concepts are made visual in the concept manager:
This also is done for loaded features, enumerations and process concepts.
When adding new features which references not-loaded concepts you will get the question if you want to consume those concepts as well.
PI46283 - Info message and quickfix for invisible plug-in configuration
For invisible and not-enabled plug-in configuration items an info message is now reported, including a quick fix to remove them.
It is recommended to clean up since these values, because while they arenât used by the plugin, it is possible that they cause problems elsewhere.
Additionally, when setting the properties of a plugin, the not-enabled plug-in configuration items will now be removed automatically.
PI48376 - Pasting in the expression editor should paste the last FExpression from the ClipboardPanel
When you execute paste in the Expression panel or Process panel the last relevant data object is copied from the clipboard. It used to be that the last object was copied and if it was not of the correct type it was discarded.
PI48382 - Save button in Ribbon task bar: save as component when there are concepts
The save button in the Ribbon now always executes a âSave as componentâ when there are concepts in the model. It used to be that when creating a new model it would default to âSaveâ, preventing it from being available for model weaving.
The generate or build button is now also disabled when you consume (process) concepts, since it is not possible to deploy a working application.
PI48880 - Page buttons get property never merge during integration
For page buttons on virtual pages it is possible to set that they will not be merged during integration.
PI48895 - Re-enable boolean cached functions
It is now possible to cache boolean functions.
PI49497 - Description width should be at least 10
Sometimes when setting the properties of a form the following confusing warning appeared: âDescription width should be at least 10â. This is now only shown in situations where this is actually relevant.
PI49672 - Add navigation parameter to columnclick processes
In a column click process you now have access to the way the user wants to start the process with the new navigation parameter:
We recommend to use this parameter for any load page action in your process.
When the user clicks in the column and doesnât do anything special, the navigation parameter will have the âNoneâ value, which lets the framework decided the appropriate navigation (normally either Push or Dialog, depending on the complexity of resulting page and the settings of the user).
But when the user presses certain keyboard modifiers, he can change the value of the navigation parameter (e.g. CTRL + click for TabInBackground, CTRL + SHIFT + click for Tab (in foreground), SHIFT + click for Push, ALT + click for Dialog, etc.).
PI53811 - Add Category name & Category ID to the problems tab
The problems tab now has two new columns: Category name & Category ID:
The category name is the main category the message (error, warning, info or style) belongs to. The following categories are defined:
- UI
- Database
- Expressions
- Processes
- Plugins
- Reference Architecture
- Documentation & Testing
- Translations + Style
- Misc
The category ID is the id number of the specific message; in SRs it is recommended to include this number.
PI53841 - Display created/modified by & created/modified at in Work item dialog
The work item dialog now contains information about when and by who it was created and modified last.
PI39752 - Remember explorer-tree and problems tab settings
Display options for the explorer tree and the problems tab are now being saved and applied when opening a new Architect session (if you enable this option).
- You can change the currently used settings here.
- Remove your currently saved settings (if you have any).
- Set here what you want to see when starting a new Architect session
- If enabled, every filtering option set or unset is saved automatically to your saved settings. This menu entry is only visible if number 3 is set to âSaved settingsâ.
The problems tab has the same menu and the settings of the problems tab and the explorer tree are independent of each other.
PI42500 - Show invalid fields in add/edit/update record action dialog
The properties dialog of the add and edit record actions have a âChange settingsâ tab, and the update record action has a similar âChangevalues settingsâ tab.
When you select a type (or record) there, it will show the fields of that type, so that the user can set a value.
It used to be that when you switch the record type the values remain set for the entered fields, but those values were no longer shown in this dialog.
Switching a type happens when for an add record, you switch the record type (1) and for an edit record this happens when you change the record (2) and that record is of a different type.
When a type switch occurs, the fields set which are not available in the new record type are still shown in the dialog with a stripe through.
Now you can cut and paste the values to existing fields if desired, or remove them. It is also still possible to remove these values with the quick fix of the reported problem in the problems tab.
PI50041 - When opening an integrated model - ask if in view mode or in update components mode
When you open an integrated model in Edit or âUpdate componentsâ mode, you will get the following question:
We have added this question in order to reduce the amount of locked model conflicts in deployment when an integration order is given.
PI45493 - Compare error - icon for complex attribute without implementation
A complex attribute without an implementation now has the exclamation icon everywhere in the Architect
PI45679 - SummaryProperties panel for plugin - Also show information available in the plugin manager
The summary panel in the properties dialog shows extra information for plugins (version, author,
identifier).
PI45680 - Editor - add FPlugin indicator
For fields a plugin indicator has been added.
PI45765 - AdvancedPanel: show createdOn & modifiedOn also as human readable date
The createdOn & modifiedOn in the AdvancedPanel are shown as human readable date.
PI45767 - NovuloTree - Delete confirmation dialog for page - Escape should cancel. Add confirmation dialogs for delete for other elements if necessary
Deleting an element in the NovuloTree now shows for every item a confirmation dialog first. Pressing escape when the confirmation dialog is shown, will cancel the delete action.
PI45946 - A return action with error does not have a red square
A return action or a trigger with an error now show a red square
PI46489 - Refresh Model settings panel after save (if panel is visible)
The Model settings panel is automatically updated after the component is saved.
PI46493 - Add notification + quickfix for unused consumed process concepts
PI47349 - Warn about missing currency expressions for multi-currency models
In the properties of the model you now can set if the model is a multi-currency model. When this
property is checked, a warning is given for each element that supports a currency expression (text field, toolbar text field or function) but does not have a currency expression.
The properties of the model can be reached via the model tree and with the right mouse button
menu open the properties of the model node (the first / root node of the tree).
Mac related issues
We have also improved the working of the Architect on the Mac. This resulted in the following improvements:
-
PI49573 - Lay-out issues on Mac
-
PI49788 - [MAC] - Opening expression editor from action properties opens it behind action properties
-
PI49789 - [MAC] - Button âView modeâ of OpenModelDialog is too small for the text
-
PI50111 - [MAC] node placeholder text (font) is different on mac from windows, also impossible to use âctrl-Wâ
-
PI50448 - [MAC] architect dropdowns cannot be controlled by keyboard arrow up / down like windows
-
PI50449 - [MAC] missing icons & visual issues
-
PI52018 - Make âcommand-Qâ, âXâ & â-â work as expected on Macs
-
PI54812 - Support for specially handling different operating systems
-
PI54920 - Theme switching causes crashes on Mac
Other changes & bug fixes
- PI49551 - Remove 50 characters limit for plugin identifier of âold-styleâ plugins
- PI51222 - Replace code signing certificate
- PI52768 - Exception in problem visitor when âtypeâ contains a dollar sign
- PI52427 - LoadPage on consumed concrete superclass not replaced correctly during integration
- PI53046 - Generator error details dialog never shows Generator URL
- PI52662 - When loading a model with the DatOutputter generateId cannot generate an id when maxId > Integer.MAX_VALUE
- PI49758 - Architect: Convert to Checkbox stelt Required field in
- PI50558 - Exception in dialoogje bij op-CTP-zetten-bij-opslaan
- PI52022 - Update produced FAttribute when mapped field is deleted
- PI50179 - Exceptions when a WFComponentProxy refers to a non-existing process
- PI49398 - Consumed processes referenced in plugins should be replaced during integration
- PI45352 - Default processes for page buttons on virtual pages should be empty
- PI47615 - Extreme slowness with [string:getnull(),mixed:getnull()]
- PI52568 - It is possible to delete a revision by closing the dialog, through X.
- PI53410 - Integration: Do not merge a FFormCanvas from a child class with a FFormCanvas from a superclass
- PI53829 - Explorer panel & icons: if not enough room, move icons to next line
- PI53839 - When copying an element in the Architect, clear the override field name
- PI53884 - Compare when model node and children donât have any changes
- PI53978 - list<tuple<string,mixed>> appears twice in TypeDropDowns
- PI53983 - Prevent conflicts between names of dummy fields and built-in fields
- PI54045 - Replace FPageButtons of virtual pages after integration
- PI54631 - Do not show " (certified)" for pluginversions that are not certified
- PI54747 - In ImportTranslationsTask when importing to the FTool.getInputLanguage() also update the internal name
- PI55136 - Checking if context of an expression matches is sometimes incorrect when an ContextObjectExpression is used
- PI55423 - Sometimes unable to select cell value column of RecordListPanel
- PI55443 - Store datatype of expression for enter value business task
Framework
Licensing system
The 3.9 framework introduces a new license system for the framework, which replaces the old system. It enables validation in cloud-based infrastructure and provides a framework for future enhancements, such as more elaborate validation of application and its content, and usage limits tailored to the customer.
Upgrading an application from a 3.8 to 3.9 framework requires that the 3.9 generator is used to generate the application. If so, it will automatically enable the new license system and disable the old one. License keys are reused, so no change is needed. Please be aware that the new license system must connect to a new license server. Make sure that your network settings allow for outbound traffic.
A licensing portal has been implemented to allow you to check the status of the licenses for your application. This portal can only be accessed by administrators (see PI42653 later in this document), localhost, and IP addresses listed in the web.config setting âlicenseportal.AuhorizedIPsâ. To load it, open the âAboutâ dialog of your application.
Technical remark: The application requires access to the license server to retrieve license information. The license server is located at https://api.novulo.com, IP address 20.76.236.58. Make sure that network settings for the server allow outgoing connections to that IP address on port 443.
Based on feedback on the CTP release, some minor improvements have been made to the licensing system.
- PI53499 - Introduction of model number source
- PI54376 - Gracefully handle database issues in licensing code
Performance
Some improvements have been made to improve the performance of creating new records. The first two PIs listed below shouldnât have any functional changes but will make inserting records faster, especially noticeable when you insert many records.
The third is only intended for specific scenarios when there is a need to squeeze out every bit of performance for processes where records are added in large batches and allows you to optimize these situations with a web.config key. You can do this by adding something like
<add key="datahandler.MssqlIdProvider.Blocks.lowercasetypename" value="enabled=true;size=1000"/>
to your web.config. Contact us if you want to know more.
- PI54291 - In Db.Insert(), donât call GetLastInsertId() when id is already known
- PI54292 - Execute IDENTITY_INSERT changes and INSERT itself (and GetLastInsertId()) in a single sql command
- PI54293 - Support pre-allocating ids in blocks for MssqlIdProvider
Stability
An exceptional case was found where it was possible that certain expressions could cause the web server of an application to crash. Measures have been taken to make the threshold at which this occurs even higher and to add a security check to detect and prevent these situations. This shouldnât affect your application: the limit is so high that we expect that it will never be reached during normal operations, but just in case, if you see an âExpression height overflowâ message, please contact us.
- PI48440 - Certain expressions crash web server with stack overflow
PI38366 - Change Novulo tab order using drag and drop
Tabs in a Novulo application can now be reordered using drag and drop.
PI38363 - Context menu on tabs to close multiple other tabs
It is now possible to close multiple tabs from the context-menu of a tab. For convenience, several other options have also been added: copying the title of a tab, copying a link to the tab (see the description of the product issue below), opening a new tab in a specific position, moving the tab to a different position and closing the tab.
PI38424 - Copy deep links to records to the clipboard
You can now copy a link to a page from the context menu of the tab (as shown in the image above for the previous PI), of the navigation bar and of the page itself. This link looks something like https://www.yourdomain.com/default.aspx?page=pages:load(12345,displaytypes:load(âViewâ),[]), which may sound a bit cryptic, but you can use it yourself or share it with others to later navigate directly to the same page.
PI48591 - Visual indication of row just viewed in grids
After returning to a grid from a details page, the grid row corresponding to the just viewed details page is focused (indicated by a dotted line around the row), serving as a visual cue to help you to find back the place where you just came from. It also allows you to continue navigating the grid relative to the just viewed row with the arrow keys on the keyboard.
â level up â
PI48584 - Allow user to influence used navigation for column clicks
In most situations the user can override how a page is opened by pressing certain keys when clicking on a link: âaltâ for dialogs, âshiftâ for full-page, âctrlâ for tab in background, and âctrl + shiftâ for tab in foreground. Now this also works for âcolumn clicksâ (cells in grids with blue text).
PI42914 - When a record that was expected to be locked isnât locked any more, give a user-friendly message + allow user to continue
Situations when a record is expected to be locked, but that lock is missing, are now handled better:
- A warning is shown on top of the page when the page is loaded, when the user tries to change a value, and when the user tries to commit the record.
- Changing a value or committing a record now explicitly checks that the record is locked, and a clear error message is shown if it isnât.
- The âcancelâ button no longer gives an error when a lock is missing.
Note for developers: Calling an UnlockRecordAction with a record that is not âlockedâ no longer gives an error. In practice, this should not change anything, but theoretically a process could have been implemented so that it relies on this behavior. Also, during development, when you have a bug, this might return in a different error being shown, or an error being shown at a different time.
PI38375 - Consistent error handling with grid query errors (timeouts)
Errors during the loading of grid (most commonly timeouts) are now handled better. For any such error, it is now always possible to undo any change to the default settings (including the search query and the current filter), hopefully preventing the error from happening. During this process, the user is in full control of which settings are undone, so he can target the culprit (e.g. clearing the search when that causes the problem, but not lose any other settings along the way).
Additionally, some other related improvements have been made. E.g. the phrasing of the error messages is improved, the error messages are better updated when the grid settings are changed, and the layout of the error messages is improved.
PI48589 - Gracefully handle user clicking on a file link for which the file is missing on the file system
When trying to download a file that no longer exists, the user now gets a regular error message, and he can continue to navigate in the application normally. (previously, the user would be stuck and would have to reload the application)
PI42809 - Consistent behavior for selecting field content on focus
When navigating to a numeric field using the tab-key, the entire contents of the field is now initially selected (just as is done for text fields).
â tab â
PI48598 - Show NULL-value description of dropdown fields in columns of a grid
Grids now show the same text for an enumeration with the value NULL as is shown on the details page (which can be configured in the Architect). Additionally, it is now possible to search in this column for these rows by using (a part of) this text.
PI38385 - Do not interpret âemptyâ and ânullâ as operators in space separated search expression
When a search query in a grid contained the word âemptyâ or ânullâ, it was interpreted as âonly show the rows for which this column is empty/nullâ, even when the search query contained other words as well. Now it is only interpreted this way if âemptyâ or ânullâ is the only word in the search term.
PI38384 - Allow increasing the number of visible rows in full size grids to 100 on high resolution screens
On high resolution screens (or on regular screens with a very low zoom level) it is now possible to change the page size of a grid to 100 rows.
PI51625 - In rights profiles, allow navigation from grid to details page
When you select a grid on a rights profile page, it is now possible to navigate directly to the corresponding details page. This is especially useful for grids where the details page is in a very different place in the tree than the grid (as is common for grids in domain-specific subsystems with details pages in the application maintenance subsystem).
Additionally, it is now also possible to navigate from the details page to the data source and back.
PI38433 â Functions that shown the number of users with a given rights profile
Two functions have been added that show the number of users with a given rights profile: one that counts all users, and one that counts only the active users.
PI40358 - When committing right settings to database fails, revert cache to original value
When a change you make to a rights setting on the rights profiles page fails to save to the database for whatever reason (e.g. because you are working in a âshadow applicationâ where rights changes are disallowed), the change is now reverted both in the interface and in the cache.
PI51572 - On rights profiles, show nice names for page_ok buttons and for tile processes
On the rights profiles page an untranslated name was sometimes shown for ok-button processes. This has been fixed. Also processes for tiles were shown, but changing the corresponding settings has no effect (tiles have a separate entry where you can manage their rights). These processes arenât shown anymore.
PI42252 - Sorting does not work when a column is added to a grid twice
When the same column was added twice to a grid, sorting on that column didnât work anymore. This has been fixed.
PI50037 - Donât register empty translations for field names that have no translation
When a field isnât translated in a certain language, an empty translation was registered, resulting in a line with only white space in the columns manager of a grid. The empty translation is no longer registered, and therefore the translation of the default language (usually English) is now shown in that situation.
PI48597 - Show null-value for enumerations for which user has no rights
When a user did not have rights to see an enumeration field, grids would display the first option of that enumeration for all rows. This is no longer the case.
PI48588 - Toolbar menu looks weird when user does not have rights for logout button
When a user did not have rights for the logout button, the layout looked weird (another button then looked like the logout button). This has been fixed.
PI48167 - Not all combinations of showmessage in combination with loadpage work correctly
In some cases when a message was outputted at the same time as when a page was loaded, the message would not be visible to the user (for example in an on-page-loading process of a page that was loaded from the start screen). This has been fixed.
PI46585 - In the datahandler, when combining results from multiple queries, values sometimes appear in the âwrongâ place
Sub results were sometimes combined incorrectly for expressions containing nested subqueries in the output (rarely used in practice). This has been fixed.
PI19521 - Log process errors and exception
When during the evaluation of a process either an exception is thrown or an action returns success = false, an event is fired containing a detailed description of the situation. Soon a plugin will be developed that writes these events to the application log.
This will allow developers to more easily investigate problems (they have an easy way to obtain a lot of information when they encounter a problem during development and they are much less dependent on the information given to them from end users for problems in production) and for application managers to keep an eye on the number and the type of problems that occur for a production application.
PI38437 - Automatic context in expression debugger
Opening the expression debugger now automatically sets the value of the âcontextâ field to the expressions corresponding to the context of the page that you were viewing when you opened the expression debugger.
Additionally, you can now directly open an expression from the page analytics in the expression debugger.
PI48596 - Make Metro Tile Counters run in read uncommitted
Expressions for tiles can now be evaluated in read uncommitted mode by adding the following line to the appsettings in the web.config:
PI19668 - Generate integrated mode compatible web.config
The web.config generated by the generator is now integrated mode compatible. Deployment will soon be adjusted accordingly.
PI47925 - Generate ASP.NET 4 compatible web.config
It is now possible to generate an ASP.NET 4 compatible web.config. Deployment will soon be adjusted to be able to make full use of this feature.
PI51062 - Retrieve unique license for demo/trial applications
Demo applications now get their own license, which is automatically set by the generator.
Note: The preferred way to set the license serial, is with the âserialâ appsetting in web.config, which is also the way the generator sets it. When the appsetting does not exist, the âserial.frameworkâ appsetting is used as fallback.
PI48671 - Assembly bindings / binding redirects in web.config from data.xml
This change allows plugin developers to specify that a different version of an assembly should be used than the default version included with the framework. See documentation on âAssemblyRedirectâ in Explanation of the data.xml for details on how to use this.
PI38365 â Keyboard shortcut for switching Novulo tabs
This change adds keyboard support for managing Novulo tabs. More specifically: âalt + leftâ selects the previous tab, âalt + rightâ the next tab and âalt + wâ closes the current tab.
PI48281 - Footer of grid may show incorrect currency symbol when using currency expressions
Footers for a money column with now show the correct currency symbol (when there are multiple currencies, the universal currency symbol is used).
PI23219 - Search in tree of a rights profile
This change makes it possible to search in the tree on a rights profile page. Matching nodes are highlighted, and the user can easily navigate to the next or the previous matching node.
PI38431 â Ability to set a rights profile to inactive
This change makes it possible to set a rights profile to inactive. Setting a rights profile to inactive will prevent selecting that rights profile on a user page.
PI42653 - Ability to mark a rights profile as administrator profile
As an extra layer of security, this change ensures that only users with an administration profile can make changes to rightsprofiles, rightssettings and rightsrecords tables. Only the âdefault admin profileâ (with id 2) automatically becomes an administration profile. If in your application other users also make changes to some of these tables (e.g. because rights settings are imported with a webservice user with a special webservice rights profile), you need to either change the rights profile or to manually make that profile an admin profile as well.
PI38432 â Make âOnly for missing rights nodesâ checkbox on rights profile checked initially
The checkbox âOnly for missing rights nodesâ on a rights profile page is now checked by default (this helps preventing accidentally overwriting existing values).
PI48586 â Fixed position for copy-buttons at a rights profile page
The positions of the âsetâ and âcopyâ buttons on a rights profile page now stays in the same position when selecting a different node in the tree (makes it easier to click on one of the buttons immediately after selecting a node from the rights)
PI38438 â Add close button to page analysis indicator
The page analytics now has a cross that closes it. Also, several small UI improvements have been made: it is renamed (it used to be called page performance analytics), it stays in view when scrolling the page, it stays in view when opening advanced search for a full-size grid, and the font size of expressions in the page analytics dialog has been slightly increased.
PI50010 - Improve assemblies section of About Dialog
This change improves the assemblies section in the about dialog; assemblies are shown in sorted order, resources are shown together with the corresponding assemblies, so called âconnectorsâ are moved to the âPluginsâ section (where they belong), and the columns of different sections are aligned.
PI32443 - Exceptions when using boolean cached functions
This change prevents errors when using boolean cached functions. Therefore, after a corresponding Architect change is release as well (PI48895 which will be released soon), it is possible to create and use boolean cached functions without any problems.
Minor framework changes and bug fixes:
- PI50038 - Extra fields are not shown for searchlinks
- PI48719 â Error when returning to a page with a nested grid
- PI48992 - Headers not updated correctly when changing order of columns in a nested grid with quicksearch open
- PI43492 - Non-optimized query for mostspecifictypename() in page state type handlers in cascading delete
- PI38426 - Novulo tabs show black layout glitch when using browser zooming
- PI38424 - Copy deeplinks to records to the clipboard: icons updated
- PI53268 - Upload field: Rename âSelect filesâ to âSelect fileâ
- PI53276 - Translate âcannot get previous/next recordâ
- PI52578 - Improve process logging for basic special cases
- PI53390 - Use a separate method to build configuration options for kendo widgets inside formelements
- PI54123 - Exception when a delete dataprocess removes the delete-record-transaction
- PI52461 - After returning from detailspage, sometimes there is a large block of whitespace above the grid
- PI54777 - Allow deleting rightsprofiles that use conditional rights
- PI54926 - Result type of SQL for StandardProduct is float
- PI55046 - Several UX issues when adding a new filter to a grid without opening filter menu
- PI54931 - Improve hyphenation for tiles
Generator
- PI52985 - P4 (name TBD) as own FClass
- PI53095 - Use âoverriddenDocumentationSrcIdâ
- PI53128 - Support âNavigateToPageâ action
- PI52949 - Standardize names of descriptive components
- PI43884 - Generate documentation.xml for documentation in model - process part: bugfix
- PI53576 - For page buttons âtitleâ node is missing in documentation.xml
- PI53500 - Introduction of model number source
- PI53942 - InvalidOperationException when nondescriptive-processcomponent is produced by a descriptive-processconcept
- PI53960 - Include alternativegrids in documentation.xml for shared panels
- PI54306 - In pagedocumentation, donât use pagebutton for SourceInfo, but use underlying process instead
- PI54428 - In documentation.xml donât use $searchColumn for title
- PI54453 - Documentation.xml: canât determine when button doesnât use selection
- PI54900 - Re-new license for generator hosted applications
- PI54999 - Set IP restrictions in new license request from Generator
- PI55444 - Write correct parameter datatype for EnterValueBusinessTask value-parameter