Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
maxLevel3

Version Information

OpenEdge Release

Version Information

11.3.3, 11.3.4, 11.4, 11.6.2, 11.6.3, 11.7, 11.7.1, 11.7.2, 11.7.3.007, 11.7.4, 12.0

Release 11.3 #51864@2019-05-14

OpenEdge 12.0 support!

We are please to announce that we are not aware of any issues using the SmartComponent Library on OpenEdge 12.0. We hereby declare OpenEdge 12.0 fully supported for the SmartComponent Library as of the release of May 1st 2019.

OpenEdge 11.7.4 support!

We are please to announce that we are not aware of any issues using the SmartComponent Library on OpenEdge 11.7.4. We hereby declare OpenEdge 11.7.4 fully supported for the SmartComponent Library as of the release of November 5th 2018.

...

A login is required to participate in the forum. Don't be shy - create your account today!

Image RemovedImage Added

Announcing the SmartFramework ERD Designer

...

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:

<assembly name="proparse.net, Version=4.0.1.1177, Culture=neutral, PublicKeyToken=cda1b098b1034b24"/>

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.

...

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. 

...

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

...

SCL-2609 Error when resetting 'Inherited' indicator in the Repository Object Maintenance

Description:

We've resolved an error that occurred when resetting the "Inherited" indicator of an objects or object instances property sheet.

SCL-2616 Fixed issue in Consultingwerk.Windows.Util.Forms.ViewObjectsForm, error "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."

Description:

We've resolve an issue in the ViewObjectsForm that could occur when GUI for .NET objects have been disposed already.

SCL-2620 Fixed minor issue in the export-repository-data.p

Description:

We've resolved a minor issue in the export-repository-data.p caused by a missing period in an ASSIGN statement which is part of an IF ... THEN ... statement.

Improvement

SCL-2611 Added two fields to the SmartUser table to support different password hashing algorithms

Description:

We have added two new fields to the SmartDB.SmartUser table to support custom AuthenticationService implementation that might support different password hashing algorithms and variable password salts.
We have currently no functionality of our own using those fields.

SCL-2612 RenderedBrowseControl OnBeforeSortChange now sets CURRENT-COLUMN to last recently sorted column

Description:

When the RenderedBrowseControl is used with multiple sorted columns, we're now setting the ABL Browse widget's CURRENT-COLUMN attribute to the last active sort column. This matches the behavior of the ABL browse widget.

SCL-2617 Implemented Decorator to improve error handling of OpenEdge HTTP Client

Description:

We have implemented the class Consultingwerk.Framework. HTTP .Smart[ HTTP Client| HTTP Client] as a decorator ([ HTTP s://en.wikipedia.org/wiki/Decorator| HTTP s://en.wikipedia.org/wiki/Decorator]_pattern) for the OpenEdge HTTP Client implementation. The class can be instantiated on top of an I[ HTTP Client| HTTP Client] instance created with the ClientBuilder:

Code Block
languageabl
        DEFINE VARIABLE oHttpClient  AS IHttpClient   NO-UNDO .
        DEFINE VARIABLE oRequest     AS IHttpRequest  NO-UNDO .
        DEFINE VARIABLE oResponse    AS IHttpResponse NO-UNDO .

        oHttpClient = NEW SmartHttpClient (ClientBuilder:Build():Client).

        oRequest = RequestBuilder:Get ("http://192.168.31.44:8080/pagenotthere":U):Request .

        DO ON ERROR UNDO, THROW:
            oResponse = oHttpClient:Execute (oRequest) .

            CATCH err AS HttpException:
                /* Handle any http error here */
            END CATCH.
        END.


The Smart[ HTTP Client| HTTP Client] executes HTTP requests by passing them through to the original HTTP Client instance. When the requests fails with an HTTP Error in the 400 or 500 range, out implementation will throw an Consultingwerk.Framework. HTTP . HTTP Exception or a derived type (e.g. HTTP 404Exception). This will simplify error handling of HTTP requests.

SCL-2618 Implemented ability to enable and disable writing errors returned by out web handler classes to the AppServer log file

Description:

We have implemented a new custom log entry type "SmartWebHandlerError" that needs to be enabled to log errors thrown to the web browser client also to the AppServer logfile.

New Feature

SCL-2592 Implemented Field-Mapping Support for BufferModel instances (e.g. when mapped to DB)

Description:

The Dataset Model generator plugin of the Business Entity Designer does now also generate code in the TableModelGenerated classes which supports mapping database field names to temp-table field/model names when the BufferModel is used with a database buffer.