Enhancements
|
||
---|---|---|
Platform
|
||
In the ThingWorx Foundation Installer, SSL/TLS is the default configuration path. For more information about the installer, see ThingWorx Foundation Installer.
|
||
Timers and Schedulers are new entity types. Previous to this release, Timers and Schedulers were added as Thing Templates.
|
||
Script Enhancements
• A setting for script timeouts has been added to the platform-settings.json configuration file for the platform. The setting is part of the Basic Settings group. See platform-settings.json Configuration Details for details. Note that the platform now terminates any script that runs longer than the timeout configured with this setting. (TW-56913)
• The Rhino JavaScript engine used in ThingWorx has been upgraded to v.1.7.11. As part of this change, a script author cannot modify built-in JavaScript prototype objects because they are global in nature. For example, Array.prototype or String.prototype. For details, see Rhino JavaScript Engine. (TW-58965)
|
||
ThingWorx as a Resource Provider can be configured to allow ThingWorx URI requests via OAuth2 protocol.
|
||
A new parameter was added to the GetProxyURL service. See Media Entity Service Methods for more information.
|
||
The Export Matching Model Tags option was added to the Export menu for collections of data and entities and for exporting single data. The option allows you to export data and entities that are tagged with all specified tags or just data and entities that contain at least one of the specified tags. See Importing and Exporting Data, Entities, and Extensions for more information.
|
||
• Several usability enhancements have been added to Composer:
◦ The Open Projects tab was added. Entities are grouped by the Project they belong to and by entity type. ◦ Tabs are created for each entity that you create or interact with. ◦ All grids in Composer are re-sizable, just drag the column or rows to the desired size. |
||
Three new services are available to ThingWorx Administrators only to query and close AlwaysOn sessions connected to the platform. Administrators can find information about the services in the WebSocket Communications Subsystem.
|
||
When exporting entities via Source Control, sensitive information such as password hashes or Application Key IDs associated with the entity are not exported. Importing the Source Control export back into the system will cause the loss of any sensitive information associated with the entity.
|
||
As part of security enhancements for the 8.5.0 release, ThingWorx uses version 1.7.11 of the Rhino JavaScript Engine.
|
||
Configuration tables are now always persistent. Non-persistent configuration changes are no longer supported.
• The persistent parameter is now ignored on the following API calls:
◦ SetConfigurationTable
◦ SetConfigurationTableRows
◦ SetMultiRowConfigurationTable
◦ DeleteConfigurationTable
◦ DeleteConfigurationTableRows
◦ DeleteAllConfigurationTableRows
|
||
Changes to property definitions (add, update, and delete) now take effect immediately. Prior to 8.5, if you added a property to an entity other than a Thing, such as a Thing Template, all Things related to that Thing Template had to be restarted. Things collected and stored all property definitions and their values. As of 8.5, property definitions are no longer stored at the Thing level; ThingWorx now follows the inheritance tree and retrieves the data from where it is stored. For more information, see Thing Properties.
|
||
You can use a proxy server to connect to the licensing server. See platform-settings.json Configuration Details and Encrypting Passwords for more information. To enable this functionality, the following settings must be added to your platform-setings.json file:
"LicensingConnectionSettings": {
"useProxy": true, "proxyHost": "<addproxyhost>", "proxyPort" : "<addproxyport>", "proxyScheme": "<http or https>", "proxyUser": "<User>", "proxyPassword": "<Password>" } }, |
||
Improved the performance of query services on Streams. To utilize these improvements, use filters when querying. Not using filters causes larger numbers of entries to be stored in memory for a longer, indeterminate period of time. The memory storage of the results are proportionate to the rate of Garbage Collection cycles by the JVM. The rate of Garbage Collection cycles is highly dependent/proportionate to how the Garbage Collector is configured for the runtime instance of the JVM.
|
||
The behavior of unsupported content types as defined in the platform-settings.json file has changed. If the content type is coming from a different server not a supported media entity type, then the content is downloaded as a file on the client machine instead of streamed with the media entity.
|
||
The Security Management Tool has been upgraded in 8.5 to work with PFX keystore files, and it now uses AES encryption for secrets.
|
||
Added the maxItems parameter to the FindDataTableEntries and DeleteDataTableEntries services to allow you to specify the number of rows to return or delete.
|
||
The following changes were made to the Extension SDK:
• For ThingProperty:
◦ The following methods were removed:
▪ hasBindings()
▪ getBinding()
▪ getBindingTargets()
▪ getExternalSubscriptions(String)
▪ getLocalSubscriptions(String)
◦ The getProperties() method is no longer thread-safe.
• For Alert:
◦ The following methods were moved from Alert to AlertRecord. An AlertRecord can be retrieved directly from an alert using com.thingworx.system.subsystems.alerts.data.Alert.getAlertRecord(Thing sourceThing).
▪ isActive( )
▪ isAcknowledged( )
▪ getAcknowledgedBy( )
▪ getTimeActive( )
▪ setTimeActive(DateTime value)
▪ getMessage( )
▪ getAcknowledgeTime( )
◦ The acknowledge(String ackBy) method was removed.
Instead of the above method, you can use acknowledge(StringackBy, Thing sourceThing). When a raised alert is acknowledged, the Thing that raised the alert is necessary to complete the acknowledgment request.
◦ The getThingReference() method was removed.
Alerts are no longer at the Thing level; instead, they are referenced at the Thing, Thing Template, or Thing Shape level. Instead of the above method, you can use com.thingworx.system.subsystems.alerts.data.Alert#public com.thingworx.entities.interfaces.IAlertProvider com.thingworx.system.subsystems.alerts.data.Alert.getEntityReference(). Since the entity is not guaranteed to be a Thing, the getThingReference() method was replaced by the getEntityReference() method. The getEntityReference() method returns an IAlertProvider, which is an entity type.
◦ The getPropertyReference() method was removed.
Instead of the above method, you can use com.thingworx.system.subsystems.alerts.data.Alert#public com.thingworx.metadata.PropertyDefinition com.thingworx.system.subsystems.alerts.data.Alert.getPropertyDefinition(). The getPropertyDefinition() method is now used because it does not return a value. This change was made for performance reasons.
• For AlertList, the following methods were removed since alerts now require the Thing that triggered the alert:
◦ isAcknowledged()
Instead of the above method, you can use isAcknowledged(Thing sourceThing).
◦ isActive()
Instead of the above method, you can use isActive(Thing sourceThing).
◦ getThingReference()
Instead of the above method, you can use Alert.getEntityReference().
◦ getThingPropertyReference()
Instead of the above method, you can use Alert.getPropertyDefinition().
◦ acknowledge(java.lang.String,java.lang.String)
Instead of the above method, you can use acknowledge(java.lang.String,java.lang.String,com.thingworx.things.Thing).
◦ acknowledgeAlert(java.lang.String,java.lang.String,java.lang.String)
Instead of the above method, you can use acknowledgeAlert(java.lang.String,java.lang.String,java.lang.String,com.thingworx.things.Thing).
◦ addOrUpdateAlert(com.thingworx.things.properties.ThingProperty,com.thingworx.system.subsystems.alerts.data.AlertDefinition)
Instead of the above method, you can use AlertManager.createOrUpdateAlert(IAlertProviderentity, Stringproperty, StringalertType,StringalertName,Stringdescription, Booleanenabled, Integerpriority, InfoTableattributes, Booleanpersistent)throwsException.
|
||
Mashup Builder
|
||
Released the following new Web Component widgets:
|
||
The categories of widgets in the Widgets panel in the platform are updated. For more information, see the Widget Category section in the Widgets topic.
|
||
This version provides migration of old widgets in a mashup to their replacing web component widgets and migration of old layouts to the new containers. For more information, see Migration of Widgets and Layouts.
|
||
The properties of some existing web component widgets are updated. For more information, see the individual topics of web component widgets that were released in the 8.4.0 version.
|
||
The Advanced Grid and Advanced Tree Grid widgets are now available in the platform as standard themable widgets. For more information, see Advanced Grids
|
||
The following changes have been made to mashup types in the New Mashup window:
• The Responsive (Advanced) mashup type has been renamed to Responsive.
• The Responsive mashup has been renamed to Responsive (Legacy).
• The Static mashup type has been renamed to Static (Legacy).
You can migrate your existing mashups. For more information about migrating mashups and widgets, see Migration of Widgets and Layouts.
|
||
The following functions have been added:
• Confirmation—Combines functionality from the Button and Logout widgets.
• Navigation—Replaces the Navigation widget.
• Status Message—Replaces the Status Message widget.
• Logout—Replaces the Logout widget.
• Events Router—Replaces the Events Router widget.
For more information about the available functions, see Functions.
|
||
Responsive Mashups
The following enhancements were made to the Layout panel:
• Added the Positioning option. You can specify Responsive or Static positioning for items within the container.
• Added the Container Size option. You can define the size of the container in the mashup. The container size can be set to responsive, fixed, or a range of minimum and maximum values.
• Added CSS Flexbox Grow Ratio and Shrink Ratio properties to the container settings.
For more information, see Responsive Mashups.
|
||
Style Themes
• The Beta designation for style themes has been removed.
• Added a mashup as a preview for the style theme settings on he Design tab of style theme entities. You can select your own mashup entities as a preview. For more information about the Styles tab, see Using the Styles Tab.
• Added the PTC Convergence Theme as a system entity. The style theme is applied to all new mashups by default. The Base Theme is now used to preview style theme settings on Styles tab of style theme entities.
• Added the ability override the style theme settings for individual items within your mashup using the Style Properties panel. Fore more information, see Using the Style Properties Panel.
• Added style theme support to containers within the mashup. For more information, see Styling a Container.
• The mashup StyleTheme property has been moved from the mashup properties to the Style Properties panel.
The (BETA) UseThemeForHybrids property was removed from the mashup properties. Hybrid functionality for the following widgets is no longer supported:
|
||
User Interface
• Updated the look and feel of the Mashup Builder workspace. Panels have been redesigned to be uniform in style, color, and size.
• Added, zoom in, zoom out, and pan commands to the design toolbar.
• Added the Properties panel, which replaces the Widget Properties panel.
Fore more information, see The Mashup Builder Workspace.
|
||
ThingWorx Flow
|
||
The following new actions have been added in ThingWorx Flow:
• SQL Connector
◦ Create Row
◦ Delete Rows
◦ Get Row by ID
◦ Get Rows
◦ Get Rows with Join
◦ List Tables
◦ Update Rows
For more information, see SQL Connector.
• Azure Connector
◦ Anomaly Detector
◦ Bing Search
◦ Custom Vision
◦ QnA Prediction
◦ Speaker Recognition
For more information, see Azure Connector.
|
||
Custom actions
• Ability to Inherit or Copy existing actions to create new custom action
• Localization support for custom actions
For more information, see Creating and Managing Custom Actions.
|
||
You can define and filter workflows by category, and display workflows as a list or grid on the ThingWorx Flow dashboard. For more information, see The ThingWorx Flow Dashboard.
|
||
You can create nested infotables using the Define Infotable action. For more information, see Define Infotable.
|
||
Solution Central
|
||
Introducing Solution Central, a brand-new cloud-based service to help you package, store, deploy, and manage your ThingWorx applications. It helps accelerate application deployment.
Solution Central enables you to:
• Package, publish, and upload your application with version information and metadata to your tenancy of Solution Central in the PTC cloud.
• Identify missing dependencies via automatic dependency management to ensure your application is packaged with everything required for it to run on the target environments.
• Garner enterprise-wide visibility of your ThingWorx applications deployed across the enterprise via a cloud portal showcasing your company’s available applications, their versions, and target environments to foster a holistic view of your entire IIoT footprint across all of your servers, sites, and use cases.
Refer to the Solution Central Help Center for details.
|
||
Projects have been modified with the following:
• Ability to specify dependency on an extension.
• Ability to publish to Solution Central.
|
||
The following additional default entities have been created as a result of Solution Central:
• SolutionCentralSubsystem
• File Repositories
◦ PackagedSolutions
◦ DownloadedSolutions
• User Groups
◦ SolutionCentralSiteAdministrators
◦ SolutionCentralDevelopers
• Data Shapes
◦ SolutionInfo
◦ SolutionDependency
◦ EntityDependency
◦ SolutionDelivery
|
Bug Fixes
|
|
---|---|
Platform
|
Related JIRA
|
Fixed potential security issues with ThingWorx Flow, Composer, and Mashup Builder, as well as additional issues proactively identified by vulnerability scanning software or PTC QA testing. Although security fixes are backported to supported versions of ThingWorx in maintenance releases, PTC strongly recommends upgrading to ThingWorx 8.5 as soon as possible to take advantage of security enhancements, such as the default configuration of SSL/TLS in the installer.
|
n/a
|
Fixed an issue with the ScriptLog search in which the results were including unrelated lines.
|
TW-62596
|
Fixed an issue with the Out of Range Alert Type in which the Adjustment Value was not affecting the range correctly.
|
TW-61885
|
Fixed an issue in which the configured order of fields in entities were not correct when inserting a snippet.
|
TW-61128
|
Fixed an issue in which services prohibited .. (dot dot) even if they were a valid part of the filename.
|
TW-61022
|
Fixed an issue with setting a URL value for an IMAGELINK property and a broken image icon being displayed.
|
TW-59280
|
Updated the high availability documentation to note Pgpool-II supporting information.
|
TW-58507
|
Fixed an issue that was causing a null error when executing the SearchThingsByTemplate service on the SearchFunctions resource, and new log statements were added.
|
TW-58505
|
Fixed an issue in which you could not export DataTables when multiple model tags were selected.
|
TW-56936
|
Fixed an issue that was causing failed migration from 7.2.1 due to the addition of the Metrics Reporting Configuration table in the Platform subsystem.
|
TW-55115
|
Fixed an issue in which the isConnected property on Remote Things equals false but the property values continue to be updated.
|
TW-54760
|
Fixed an issue in which slashes in organization names caused data issues in the organization.
|
TW-54382
|
Fixed an issue in which relative paths and colons in file paths caused file uploads to not work when using eMessage Connector with Axeda Agents.
|
TW-54190
|
Fixed an issue with snippet functions not returning correct values after changing the user language setting.
|
TW-44971
|
Fixed an issue where entities that contained certain characters were considered ghost entities when imported in an extension.
|
TW-46984
|
Mashup Builder
|
Related JIRA
|
• Fixed an issue with the Insert/Edit Links and Insert Iframe URL attributes when you use HTTP in the mashups that have any of the following widgets or any ThingWorx entity that has a documentation section.
◦ Blog
◦ Wiki
◦ HTMLTextArea
As a result of this fix, it is recommended to use HTTPS in the mashups.
|
TW-63601
|
Fixed an issue with an imported Mashup Thing Template type in which the binding between it and the Entity Picker widget property was lost during editing.
|
TW-64181
|
Fixed an error that was occurring when using a Thing View widget in a custom Mashup with PingFederate.
|
TW-63410
|
Fixed an alignment issue with the TextIfNoValue field in the Value Display widget when first opening the modal popup.
|
TW-62880
|
Fixed an issue in which the text was not wrapping in design time when Button or Navigation widgets were included in a Tab Responsive widget.
|
TW-60994
|
Added documentation about logging exceptions that are thrown by JavaScript expressions in a mashup.
|
TW-59710
|
Fixed an issue in which mashups were not de-allocating memory usage over time.
|
TW-59187
|
Fixed an issue in which the header border for the Grid Advanced widget was not being displayed.
|
TW-59016
|
Fixed an issue in which vertical lines were appearing around the search text box in the Grid Advanced widget.
|
TW-58802
|
Fixed an issue in which a mashup with a Grid Advanced widget in the master was not loading properly.
|
TW-58510
|
Fixed an issue in which custom CSS was not applied to the Tabs widget in certain browsers.
|
TW-57725
|
Fixed an issue in which an erroneous image appears after a gadget is moved.
|
TW-57213
|
Fixed an issue that was causing the accordion view to not display the third sub-menu.
|
TW-56861
|
Fixed an issue in which a double-click was required for the Navigation widget to work when the target window is set to Replace on an iOS device.
|
TW-56791
|
Fixed an issue in which a Label Chart widget with Stack Series on shows a bar even with a bound value of zero.
|
TW-56615
|
Fixed an issue with tooltips on the Label Chart widget appearing off screen.
|
TW-56497
|
Fixed an issue with the DateTime value in the Expression widget not showing correctly in the Date Time Picker widget.
|
TW-42993
|
Fixed an issue in which the Grid Advanced widget did not refresh when the last filter of the Data Filter widget was removed.
|
TW-17064
|
Fixed an issue in which a widget would move to where you scrolled in the mashup.
|
TW-22730
|
Fixed an issue in which the specified style themes for a master and its contained mashup were not applying correctly during run time.
|
TW-64690
|
Fixed an issue in which responsive widgets that are placed inside a Dynamic panel were not showing in some browsers.
|
TW-62207
|
Platform
|
|||
---|---|---|---|
Due to possible security vulnerabilities, a minimum version of Apache Tomcat 8.5.42 or 9.0.21 is required.
It is strongly recommended that you upgrade Apache Tomcat to these versions to mitigate known security issues with older versions of Apache Tomcat.
|
|||
• While the ThingWorx Connection Server 8.5.0 and ThingWorx Azure IoT Hub Connector 3.0.0 have been certified with ThingWorx Platform 8.5, the following products have not been certified for use with ThingWorx Platform 8.5:
◦ ThingWorx eMessage Connector
◦ ThingWorx Remote Access Client
◦ Axeda-ThingWorx Entity Explorer (ATEE)
◦ ThingWorx AWS IoT Connector
◦ ThingWorx Protocol Adapter Toolkit
|
|||
Mashup Builder
|
|||
• Bootstrap JavaScript libraries were removed from Mashup runtime. If you have an extension that requires Bootstrap, you must include a version of bootstrap.js and define a <FileResource> entity in the extension's metadata.xml file within the import zip folder.
|
|||
• If you have mashup parameter bindings from a child (contained) mashup to a parent mashup and a parameter from the child mashup doesn't have any incoming bindings, when the parent mashup is saved, the binding from the child mashup will be deleted. The workaround is to create any incoming binding in the child mashup to the parameter.
|
|||
• When loading extension widgets at runtime, the libraries used by the widgets trigger the following error:
Uncaught Error: Mismatched anonymous define() module: [object Object] https://requirejs.org/docs/errors.html#mismatch
at makeError (advanced-widgets-runtime-pre.js?_v=8.5.0:168) at intakeDefines (advanced-widgets-runtime-pre.js?_v=8.5.0:1254) at advanced-widgets-runtime-pre.js?_v=8.5.0:1452 This error is triggered because of the following script that loads dependency:
$('head').append('<script type="text/javascript" src="../Common/extensions/TimelineChartWidget-extension/ui/timelinechart/include/d3.v3.min.js"></script>');
To fix the error, you need to change the script as follows:
$('head').append('<script>' + 'window.defineBackup = window.define;' + 'window.define = undefined;' + '</script>' + '<script type="text/javascript" src="../Common/extensions/TimelineChartWidget-extension/ui/timelinechart/include/d3.v3.min.js"></script>' + '<script>' + 'window.define = window.defineBackup;' + '</script>'); Refer to this example: ![]() |
TW-65740
|