Release Notes 2024-08-14
Version Information
OpenEdge Release | Version Information |
---|---|
11.7.17, 12.2, 12.7, 12.8, 12.8.3 | Release 11.7 #81446@2024-08-14 |
Security Bulletin - log4j CVE-2021-44228
Further details: log4j CVE-2021-44228
OpenEdge 12.8 support!
We are pleased to announce that we are not aware of any issues using the SmartComponent Library on OpenEdge 12.8. We hereby declare OpenEdge 12.8 fully supported for the SmartComponent Library as of the release of January 15th 2024.
OpenEdge 12.7 support!
We are pleased to announce that we are not aware of any issues using the SmartComponent Library on OpenEdge 12.7. We hereby declare OpenEdge 12.7 fully supported for the SmartComponent Library as of the release of May 10th 2023.
OpenEdge 12.2 support!
We are pleased to announce that we are not aware of any issues using the SmartComponent Library on OpenEdge 12.2. We hereby declare OpenEdge 12.2 fully supported for the SmartComponent Library as of the release of April 09th 2020.
Introducing the SmartComponent Library developer forum
Got questions about using the SmartComponent Library? Wish to discuss feature requests with other users of the SmartComponent Library? To facilitate networking in the growing number of SmartComponent Library users and developers, we've added a developer forum on our new home-page. The developer forum can be found at: https://www.consultingwerk.com/support/forum
A login is required to participate in the forum. Don't be shy - create your account today!
Release Notes
Following the release of the OpenEdge 11.7 Release we have completed our testing of the SmartComponent Library on this release of Progress and are proud to announce formal support for the SmartComponent Library on OpenEdge 11.7 with the 2017-04-24 release of the SmartComponent Library. Generally we recommend customers on OpenEdge 11 to upgrade to OpenEdge 11.7 quickly. Starting the 2017-07-14 release we are supporting OpenEdge 11.7 Service Pack 1 (11.7.1).
Starting the 2015-10-09 release the Business Entity Designer will feature a start page with links to most recent release note articles on this site.
With SCL-751 we have adopted native Enums for OpenEdge 11.6. To activate this feature customers must add a definition to products.i. SCL-751 provides details for this.
With SCL-1113 we have modified the templates for SmartWindowForms and SmartTabFolderPages generated from the Business Entity Designer. We have removed the initialization of the viewer controls SmartTableIOState property (value was set to "NoDataSource" within the InitializeComponent method). Customers using their own set of templates should adopt the same fix to their templates.
New Versions of Proparse .NET Assemblies (30 December 2018)
We have updated proparse with further enhancements in this release (see https://github.com/consultingwerk/proparse/releases/tag/4.0.1.1177). Please download the .NET Assemblies ZIP file from our ESD and replace the proparse.net.dll in your environment with the latest one. The new assembly reference is:
|
As proparse is used by our Business Entity Generator, this new version of the proparse.net Assembly is also relevant for customers not doing GUI for .NET development and require support for parsing new ABL language constructs.
This version of proparse provides additional debug information when errors are thrown from proparse.net.dll.
New Version of the Consultingwerk.SmartComponents Assemly (09 January 2019)
To support the new SmartFilterControl and the "Filter" link between the SmartFilterControl/SmartDynamciFilterControl and a SmartBusinessEntityAdapter or SmartDatasetChildAdapter we have updated the Consultingwerk.SmartComponents.dll. The new Assembly reference is:
<assembly name="Consultingwerk.SmartComponents, Version=2.2.0.49856, Culture=neutral, PublicKeyToken=10603cb31df311b3"/>
Customers need to update this Assembly in order to compile the latest releases of the SmartComponent Library.
Hybrid Realm now using IAuthenticationService
We've updated the SmartHybridRealm class used for http authentication to leverage the IAuthenticationService. It is therefor required that for AppServers requiring http Authentication (e.g. REST or Web) the correct IAuthenticationService implementation is registered (using service.xml files).
Customers relying on the previous behavior should ensure that the Consultingwerk.SmartFramework.Authentication.AuthenticationService is regsitered as the IAuthenticationService. This implementation will auhtenticate users against the password stored in the SmartUser database table.
When users with no Login Company set should be able to login using the SmartHybridRealm, it's required to set the Login Company Tennant Domain (similar to the field in the Login Company Maintenance) in the .restapplicationsettings / .applicationsettings, e.g.:
"DefaultAuthenticationDomain": "consultingwerk" |
This is required as the Hydrid Realm Interface from Progress does not provide the domain name to the authentication method.
Web Handler overview
This is an overview of the web handlers supported by this release
defaultHandler=OpenEdge.Web.CompatibilityHandler handler1=Consultingwerk.OERA.JsdoGenericService.WebHandler.CatalogWebHandler: /Catalog/{EntityName} handler2=Consultingwerk.OERA.JsdoGenericService.WebHandler.CatalogsWebHandler: /Catalogs/{PackageName} handler3=Consultingwerk.OERA.JsdoGenericService.WebHandler.CountWebHandler: /Resource/{EntityName}/count handler4=Consultingwerk.OERA.JsdoGenericService.WebHandler.ResourceSubmitWebHandler: /Resource/{EntityName}/SubmitData handler5=Consultingwerk.OERA.JsdoGenericService.WebHandler.InvokeMethodWebHandler: /Resource/{EntityName}/{MethodName} handler6=Consultingwerk.OERA.JsdoGenericService.WebHandler.ResourceWebHandler: /Resource/{EntityName} handler7=Consultingwerk.OERA.JsdoGenericService.WebHandler.BusinessServicesWebHandler: /BusinessServices/{OutputFormat}/{PackageName} handler8=Consultingwerk.Web2.WebHandler.SmartMenuWebHandler: /SmartMenu/{MenuStructureId} handler9=Consultingwerk.Web2.WebHandler.SmartMenuStructureWebHandler: /SmartMenuStructure handler10=Consultingwerk.Web2.WebHandler.SmartRoutesWebHandler: /SmartRoutes handler11=Consultingwerk.Web2.Services.SmartViewsHandler.SmartGridWebHandler: /SmartViews/Grid/{EntityName}/{ViewName}/{DetailTemplate} handler12=Consultingwerk.Web2.Services.SmartViewsHandler.SmartGridWebHandler: /SmartViews/Grid/{EntityName}/{ViewName} handler13=Consultingwerk.Web2.Services.SmartViewsHandler.SmartGridWebHandler: /SmartViews/Grid/{CustomViewName} handler14=Consultingwerk.Web2.Services.SmartViewsHandler.SmartViewerWebHandler: /SmartViewer/Viewer/{EntityName}/{ViewName} handler15=Consultingwerk.Web2.Services.SmartViewsHandler.SmartViewerWebHandler: /SmartViewer/Viewer/{ObjectName} handler16=Consultingwerk.Web2.Services.SmartViewsHandler.SmartFormWebHandler: /SmartForm/{FormTemplate}/{EntityName}/{ViewName} handler17=Consultingwerk.Web2.Services.SmartViewsHandler.SmartFormWebHandler: /SmartForm/{FormTemplate}/{ObjectName} handler18=Consultingwerk.Web2.WebHandler.SmartMessageWebHandler: /SmartMessage/{MessageGroup}/{MessageNumber} handler19=Consultingwerk.Web2.WebHandler.GetImageWebHandler: /Image/{FileName} handler20=Consultingwerk.Web2.WebHandler.SmartValueListWebHandler: /ValueList/{ValueList} handler21=Consultingwerk.Web2.WebHandler.SmartAttachmentsWebHandler: /Attachments/{Table}/{KeyValues} handler22=Consultingwerk.Web2.WebHandler.SmartAttachmentWebHandler: /Attachment/{Guid} handler23=Consultingwerk.Web2.WebHandler.SessionContextWebHandler: /SessionContext handler24=Consultingwerk.Web2.WebHandler.ContextPropertiesWebHandler: /ContextProperties/{PropertyName} handler25=Consultingwerk.Web2.WebHandler.ContextPropertiesWebHandler: /ContextProperties handler26=Consultingwerk.Web2.WebHandler.SessionInfoWebHandler: /SessionInfo handler27=Consultingwerk.Web2.WebHandler.FileSearchWebHandler: /FileSearch/{FileName} handler28=Consultingwerk.Web2.WebHandler.ExecuteAblWebHandler: /ExecuteAbl handler29=Consultingwerk.Web2.WebHandler.SmartLanguagesWebHandler: /Languages handler30=Consultingwerk.OERA.RestResource.RestEntitiesWebHandler: /Entities handler31=Consultingwerk.OERA.Swagger.SwaggerWebHandler: /Swagger/{EntityName} handler32=Consultingwerk.OERA.Swagger.SwaggerRestEntitiesWebHandler: /SwaggerEntities/{OutputType} handler33=Consultingwerk.Web2.WebHandler.SmartTokenSecurityCheckWebHandler: /TokenSecurityCheck/{ObjectName} handler34=Consultingwerk.Web2.WebHandler.SmartTokenSecurityCheckWebHandler: /TokenSecurityCheck handler35=Consultingwerk.Web2.WebHandler.SmartEntityTableMappingHandler: /EntityTableMapping/{EntityName}/{TableName}/{UiTypeCodes} handler36=Consultingwerk.Web2.WebHandler.SmartTreeRootNodeWebHandler: /SmartViews/TreeRootNode/{rootnodeid} handler37=Consultingwerk.Web2.WebHandler.SmartTreeChildNodesWebHandler: /SmartViews/TreeChildNodes/{parentnodeid} handler38=Consultingwerk.Web2.WebHandler.SmartSecurityCheckWebHandler: /IsRestricted/{SecurityRealmCode}/{SecurityItemGuid} handler39=Consultingwerk.Web2.WebHandler.SmartFieldSecurityCheckWebHandler: /RestrictedFields/{TableName} handler40=Consultingwerk.Web2.WebHandler.GetImageNamesHandler: /ImageNames |
UTF-8 based deployments available
Starting August 14th 2016 we ship our source code also as UTF-8 encoded. The ZIP files ending with _utf8.zip contain the source code encoded with that code page. The source code in the remaining archives is still encoded in ISO8859-1. Also on Github there is a new branch containing the OpenEdge 11 based source code in UTF-8.
Related article (Progress K-Base): How to get Progress Developer Studio to save in UTF-8 encoding
New Feature Documentation
- Support for RESTful invocation of Business Task and Business Entity Methods
- Invalid Proparse code-page setting corrupts temp-table field labels during "Refresh from Include"
- Generic Factory Service
- Using Invokable Business Entity Methods with Dataset Model Classes
- Using the Business Entity method FetchDataByKeyTable
- PASOE management scripts
- Business Entity Designer Launcher
- Searching data using ROWID's within the SmartBusinessEntityAdapter
- Business Entity Count Method
- SmartFramework ERD Designer
- Changes to the SmartDB and SmartDB upgrade and migration utility
- How to implement dynamic initial values
- How do I control the amount of details provided for error messages caused by our web handler
- Using custom log entry types
- Strong-typed Query Support
- Swagger REST API Documentation for RESTful Services
- Swagger REST API Documention for JSDO Generic Service
- Scaffolding utility for common helper classes
- RESTful services
- JSON Configuration File Format
- Common Component Specification (CCS)
Download Link
http://esd.consultingwerkcloud.com/
https://github.com/consultingwerk/SmartComponentLibrary
Overview of included tickets
Bug
SCL-4553 Invalid message SRF 317 referenced in scheduler business entity
Description:
We have corrected the message group that was used to reference the error message SFR:317 in the SchedulerBusinessEntity.
SCL-4554 Fixed an issue that prevented the deletion of SmartSchedulerQueue records.
Description:
We have fixed the definition of some relations stored in the SmartDB that was preventing the deletion of SmartSchedulerQueue records.
SCL-4556 InvalidSecurityRealmException now displaying realm code
Description:
The InvalidSecurityRealmException raised when an invalid security realm is passed to various API methods, is now displaying the realm code as part of the error message.
SCL-4569 Java Exception in PASOE logs due to error handling in SmartWebHandler
Description:
We have resolved a series of potential Java exceptions found in the PASOE logfiles like this
500 (server error) response out of the blue o.a.c.core.StandardWrapperValve.invoke Servlet.service() for servlet [OEWebServlet] in context with path [] threw exception [com.progress.open4gl.Open4GLException [ ref:_00D307FS._500
The exception were raised SmartWebHandler derived web handler were using the error handling implemented in the SmartWebHandler and returning a http status code greater than 0.
SCL-4573 Typo in property name SearchBusinessEntititiesOnAppServer os the BusinessEntityDesignerSupport class
Description:
We have resolved the typo by adding the property with the correctly spelled name. The property name with the type is left for backwards compatibility acting as a facade to the new property.
Improvement
SCL-4515 SplitContainer now has a property that determines if Panel 1 or 2 are resizing with the form
Description:
We have added a FixedPanel property that controls if Panel1 or Panel2 to the SplitContainer component. This property can be maintained in the SmartFramework Repository.
SCL-4533 Implemented drag and drop to move object instances into a splitter etc.
Description:
The instances grid of the Object Master Designer now supports drag and drop to move instances into a MetaSplitter instance.
SCL-4541 Implemented server-side call-back to modify repository data
Description:
The property CustomizeRepositoryData of the MetaForm now allows to reference a callback method that can be used to modify repository data at runtime. The method is referenced in the form <business task name>:<method name> .
The method receives the handle of the ProDataset with the repository data so that it can modify the data before it’s passed to the rendering services.
SCL-4547 Implemented script to download PEM certificates for a web site/web service
Description:
We have implemented a script that simplifies the download an registration of SSL certificates required for accessing a (web) service from OpenEdge.
More details can be found here: https://consultingwerk.atlassian.net/wiki/spaces/SCL/pages/2334883843/SSL+Certificates+Downloader+Importer
SCL-4551 Auto-Login to Angular Web Application
Description:
When launching the Angular web application from within the SmartFramework GUI application, we now support to automatically set the login credentials based on login credentials saved for the GUI application.
SCL-4555 Added Angular rendering support for Combobox ValueListDisplayText
Description:
We have implemented rendering support for the ValueListDisplayText property of the Angular SmartLookup component.
SCL-4557 Server-side event handler now supports calling into a method on the client
Description:
Server-side event handler now support calling into a method on the client. This is achieved by assigning an instance of the Consultingwerk.CommonUi.MethodCallParameter class to the MethodCall property of the returned UIControl instance.
The method is invoked in a logic class of the viewer, the form or another object that have a client logic class instanace based on the “target” property. Target can be “self” for referencing the smart object that raised the event handler, “form” for the form’s logic class or the name of another instance in the form.
The server-side event handler can return a character value, a serializable object or a JSON object to the method by assigning this to the corresponting property of the MethodCallParameter instance.
SCL-4558 Improved ActiveOnPages setting for Data-Sources with nested tab-folder
Description:
We have improved the handling of the ActiveOnPages setting for Data-Sources. ActiveOnPages is now also supported for tab-pages on nested tab-folders.
SCL-4559 Support for ActiveOnPages for Data-Sources in Control Groups
Description:
We have implemented support for the ActiveOnPages setting of the MetaDataSource type in the repository also for data-sources contained in MetaControlGroups.
SCL-4560 Angular Rendering Support for ActiveOnPages
Description:
We have implemented support for rendering the ActiveOnPages setting to data-source instances in the JSON layout of an angular form.
SCL-4562 Reintroduced OnRenderProcessTerminatedEvent in CefSupport Assembly
Description:
We have reintroduced the OnRenderProcessTerminatedEvent in the CefSupport Assembly. During the migration to CefSharp 126 this event was accidentally removed - as the event signature have been extended in CefSharp.
SCL-4563 Added VerticalStretch attribute to MetaTreeView
Description:
We have added the VerticalStretch attribute to the rendering of MetaTreeView instances for Angular layouts.
SCL-4566 LoginForm no longer displays "Consultingwerk" as login company when no Login Company Provider is present
Description:
When no LoginCompanyProvider service is available, we’re now providing an empty list of login companies to the LoginForm. Previously the value list item from the Progress Developer Studio Visual Designer remained in the Form.
SCL-4567 Added strong typed versions of GetInstance to DynamicControlGroup
Description:
We have added strong typed versions of the GetInstance method to the DynamicControlGroup. Those simplify accessing data adapter, grid, viewer, tabfolder, … instances in the same was as it has been available for the DynamicForm before.
SCL-4571 IntegerType now has IsPositive and IsNegative methods like DecimalType
Description:
We have added IsPositive and IsNegative methods to the IntegerType.
SCL-4572 Improved error messages thrown by SmartBusinessEntityAdapter when DatasetControllerType is not valid
Description:
The error is now a Consultingwerk Exception and includes the class name of the DatasetController causing the Exception.
New Feature
SCL-4568 Introduced new template engine for repository objects
Description:
We have introduced a new template engine for repository based object masters (typically forms). Based on regular repository objects with the template flag set, developers can use the “new from template” wizard to create a new repository object. The wizard will allow to replace instances of objects that are marked as “Placeholder” (using a property) with another object of the same type.
Story
SCL-4561 Added Clipboard Copy button to SmartObjectMasterBrowseForm
Description:
We’ve added a button to copy the name of the selected repository master to the clipboard.
SCL-4564 RestEntitiesWebHandler's InitializeRequestArguments method now cater for serialized field names
Description:
We’re now mapping field names of JSON objects passed as ProDataset parameters based on the SERIALIZE-NAME.