Versions Compared

Key

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

...

SCL-4257 SmartViewerControl now only checks for Handle in DisableFields after OnLoad

Description:

We’ve improved the checks if a viewer has already been fully loaded in the DisableFields method. In some cases error messages have been raised from the DisableFields method. We’re now checking if OnLoad has already been executed before querying the Handle property of the SmartViewerControl.

Improvement

SCL-4067 ABL Legacy Browse Migration now detects primary table for Business Entity based on order of tables in Browse widget

Description:

The ABL Legacy Browse migration Form now detects the primary table of a browse query based on the order of the tables in the database query. Previously the user has been prompted to select a table from the list of query tables as the primary database table.

SCL-4161 Ability to define and set NEW SHARED variables from ServiceInterface calls implemented

Description:

The Consultingwerk.OERA.ServiceInterface calls to retrieve and save data (FetchData and SaveChanges), to invoke tasks and methods (InvokeMethod, InvokeTask and InvokeTask2), and to retrieve metadata (FetchDataset) are OOABL methods that call other OOABL methods on a Business Service.

Since the ABL does not allow defining, setting or otherwise working with shared variables in classes, applications that need to set shared variable values can now define a ServiceInterfaceSupportsSharedVariables preprocessor in Consultingwerk/products.i to use an intermediary procedure for these operations. Using a .P allows developers to set shared variables prior to calls being made on the Business Service. These procedures use include files that must be created to define and set shared variable values. The include location is provided by the ProSIcustomIncludeDirectory preprocessor that must be defined in products.i.

||*Service Interface Operation*||*Procedure Name*||*Custom Include Name*||
|FetchDataset|Consultingwerk/OERA/si-fetchdataset.p|si-fetchdataset-custom.i|
|FetchData|Consultingwerk/OERA/si-fetchdata.p|si-fetchdata-custom.i|
|SaveChanges|Consultingwerk/OERA/si-savechanges.p|si-savechanges-custom.i|
|InvokeMethod|Consultingwerk/OERA/si-invokemethod.p|si-invokemethod-custom.i|
|InvokeTask|Consultingwerk/OERA/si-invoketask.p|si-invoketask-custom.i|
|InvokeTask2|Consultingwerk/OERA/si-invoketask.p|si-invoketask-custom.i|

SCL-4228 Allowing to create field security items from repository designer

Description:

Developers can now use the Repository Object Master Designer to create security fields. When selecting a field in the Viewer Designer, the tool “Create Field Security Item” can be used to create a security field definition for the selected field.

SCL-4244 New requestParameterSchemaType and responseSchemaType arguments for RestMethod annotations

Description:

To prevent the OOABL class names of parameters and return values used in invokable methods from appearing in Swagger documentation, the new requestParameterSchemaType and responseSchemaType annotation arguments have been implemented as part of the Swagger generation. These attributes allow developers to provide an alternative value to be used in the Swagger schemas.

For more detail, see https://consultingwerk.atlassian.net/wiki/spaces/SCL/pages/8094254/Support+for+RESTful+invocation+of+Business+Task+and+Business+Entity+Methods

SCL-4247 SmartDB upgrade and migration utility now displays framework version

Description:

The SmartDB upgrade and migration utility now displays the SmartComponent Library version when executed.

SCL-4259 DatasetModel/TableModel CanFind Method now supports UseInterfaceEnum:ServiceManager

Description:

The DatasetModel/TableModel method CanFind now supports the UseInterface value of UseInterfaceEnum:ServiceManager.

SCL-4260 Ensuring begin-request.i is included in all SmartWebHandlers before calling ServiceInterface:Activate()

Description:

We have not added be begin-request.i Include file to all of our Webhandler implementations. This ensures proper monitoring of all requests using the Telemetry Toolkit.

SCL-4261 Error message when connecting DB from AppServerStartupManager now includes database name

Description:

The error message raised when the AppServerStartupManager fails to connect to a Database now includes the database name.

SCL-4265 JsonSerializable:AddSerializableProperties (Class) now detect IJsonSerializable properties

Description:

The JsonSerializable:AddSerializableProperties (Progress.Lang.Class) or JsonSerializable:AddSerializableProperties () now detect serializable properties based on the IJsonSerializable Interface and no longer relying on the actual JsonSerializable class. This allows to detect properties defined as Interface types when the Interfaces inherit from the IJsonSerializable Interface.

SCL-4266 Implemented TabOrderChanged event in TabOrderManager

Description:

We have added the TabOderChanged event to the TabOderManager / TabOrderMessageFilter. THe event is raised whenever the TabOrderManager manipulates the tab order in a Form or ABL window.

SCL-4268 Fix typo in method name RefreshAfterRejectTransaction of SmartBusinessEntityAdapter and SmartTempTableAdapter

Description:

We have resolved a typo in the name of the method RefreshAfterRejectTransaction of the SmartBusinessEntityAdapter and SmartTempTableAdapter classes. The method was previously called RefreshAfterRejectTranscation. The old method is kept for backwards compatibility but is considered deprecated.

SCL-4269 Fixed typo in property name DesignerHostLoading or SmartComponent

Description:

We have fixed a typo in the name of the property DesignerHostLoading or SmartComponent. The property previously was called DesingerHostLoading.

SCL-4270 Swagger documentation now properly documents properties defined as Enum types

Description:

The Swagger documentation now properly documents Enum properties or parameter and return object types.

SCL-4271 RestServerSessionActivator now supports customization of retrieval of the SESSION-ID

Description:

The RestServerSessionActivator now supports the customization of how the SESSION-ID property is retrieved from the client-principal. In situations where the client-principal is issued based on an OAuth2/JWT Token developers can override the method GetSessionId() in a derived type to return the SESSION-ID value based on claim in the JWT token.

SCL-4272 Implemented WebClientPackageHelper support for Batchmode Progress

Description:

The WebClientPackageHelper now supports to be executed in Batch-Mode. This allows to use the tool in a PCT/ANT/Jenkins based deployment script.

SCL-4273 ProparseTreeViewForm:OpenNewEditor now supports LONGCHAR

Description:

The OpenNewEditor method now supports LONGCHAR values with the contents of the editor to be opened. The INSERT-STING method of the underlying ABL EDITOR widget only support CHARACTER values. For longer texts, we’re now writing the LONGCHAR to a temporary file and use INSERT-FILE instead.

SCL-4274 New GetLogicalPluginSetting() method in BusinessEntityDesignerSettings

Description:

A new GetLogicalPluginSetting() method was added to the Consultingwerk.BusinessEntityDesigner.BusinessEntityDesignerSettings class, due to a typo in the GetLogilalPluginSetting() method name. The misspelled method is deprecated and should be replaced with the correctly-spelled method.

SCL-4275 Added WriteError (Stop) methods to LoggingStream

Description:

We have added a variant of the WriteError method based on a Progress.Lang.Stop instance to the LoggingStream implementations.

SCL-4276 Improved conversion of multi-table browsers to Business Entity

Description:

We have improved the result when converting browsers based on a query with multiple (database) tables. The improvements are in the area of converting calculated fields.

SCL-4280 Allow to return HTTP headers using the RestMethodResponse class

Description:

The RestMethodResponse type now supports returning an array of HTTP Header values from a RESTful method.

SCL-4282 Fixed representation of ABL-Class EXTENT properties in Swagger

Description:

We have resolved issues with representing ABL-Class EXTENT properties in Swagger. Previously those properties have been documented as a single object value, not an array.

SCL-4283 RESTful method invocation: Support populating parameter object mixed from query string and JSON payload

Description:

So far the parameter object to a RESTful method invoke is either populated from the query string or the request payload.

We now support a mix, to support e.g. a POST to an URL with query string parameters as well as JSON payload.

The JSON payload has preference over properties from the query string.

SCL-4284 New propertyFrom attribute in a RestMethod annotation indicates how proeprty values should be provided

Description:

A new propertyFrom attribute is available in the RestMethod annotation that provides the Swagger documentation with an indication of how parameter class property values should be provided by a client. This attribute contains a comma-delimited list of values indicating how property values for a parameter class should be provided. Each entry has the format <property-name>: query . A value of _query_ indicates that a query string is used. A value of _hidden_ indicates that a value for that property is not expected to be sent by a client.

See https://consultingwerk.atlassian.net/wiki/spaces/SCL/pages/8094254/Support+for+RESTful+invocation+of+Business+Task+and+Business+Entity+Methods for more details.

SCL-4285 Implemented support for rendering of check-boxes with Labels on the Left of the checkbox

Description:

We have implemented support for rendering checkboxes with labels on the left or on the right of the Checkbox Control now.

Previously the NoLabels attribute of a MetaDataField instance controlled if the checkbox was rendering a label on the left hand side of the actual UltraToggleBox control in addition to the text that’s rendered as part of the UltraToggleBox control. Now the NoLabels Attribute of the MetaDataField has the following impact on the representation of the text in the Label attribute of the MetaDataField.

NoLabels = TRUE: The checkbox is rendered with the Label text rendered by the UltraToggleBox (right of the checkbox)

NoLabels = FALSE: We render an additional UltraLabel control on the left hand side of the checkbox and the Label text is not visualized by the UltraToggleBox

In addition, when NoLabels is set to FALSE the LabelOffset property allows to align the label with the label of other controls in a Viewer. The LabelOffset property for LOGICAL fields behaves the same as the LabelOffset property for other fields on a Viewer.

SCL-4286 Service Manager GUI now integrated into SmartFramework GUI application

Description:

We’re providing a menu function called “Monitor Business Services”. This menu function launches the screen that so far has only been available from the Business Entity Tester. This screen allows to monitor and to shut down a single or all running Business Services.

SCL-4287 Implemented support for mapping Enum members to custom strings

Description:

We have implemented the ability to map custom string values to Enum members using an Annotation in the Enum:

No Format
@EnumMapping (MemberName="PartiallyShipped", mappedCharacter="Partially Shipped") .
ENUM Demo.OrderStatusEnum :
    DEFINE ENUM Ordered Shipped PartiallyShipped .
END ENUM. 



This mapping is currently supported in the TableModel when using the Enum as a custom field type. The mapping allows to use an Enum to map database character values with values not supported as an enum member name, e.g. space characters etc..

To use this feature it’s required to extend the generation of the .annotation files to Enums. The mapping is implemented by the

Consultingwerk.Framework.IEnumMemberDataMappingService

service type.

SCL-4288 Added support for comparing an object master in repository with a .smartrepo file to the object master designer

Description:

We’ve added a new menu item to the File menu in the Object Master Designer. This tool allows to compare the currently opened object master to a .smartrepo file on disk.

SCL-4289 SwaggerRestEntitiesWebHandler now caches swagger.json

Description:

The SwaggerRestEntitiesWebHandler now caches swagger.json to improve the performance when opening the Swagger documentation of a service backend.

SCL-4291 Telemetry Toolkit now supports logging of pending requests

Description:

The Telemetry Toolkit now supports logging of pending requests. When the pendingRequestsOutputDirectory property is set in the telemetry.conf folder a single JSON file with the details gathered at the beginning of a request is created when a request starts. This file is deleted when the request finishes. The files in this folder allow to inspect (long) running AppServer calls or calls that have crashed severely.

New Feature

SCL-3903 New file upload endpoint at /web/UploadFiles

Description:

A new webhandler Consultingwerk.Web2.WebHandler.FileUploadWebHandler is available to handle file uploads.

Request format



The files must be uploaded using a PUT or POST request as standard {{multipart/form-data}} , with at least one part. This part contains the file being uploaded; the file name must be priovided using a {{Content-Disposition}} header with a {{fileName}} or {{fileName*}} parameter (per [https://developer.mozilla.org/en-US/docs/Web/ HTTP/Headers/Content-Disposition |https://developer.mozilla.org/en-US/docs/Web/ HTTP/Headers/Content-Disposition ]). There may be multiple files uploaded in a single request. Each should have their own part. Filenames are not unique, although this should be avoided.

An additional, optional, part contains context for the upload. This part should have a {{Content-Disposition}} header with a {{name=context}} parameter value. The data in the part must be JSON; the structure and content of this context data is left to the application.

Processing uploads



The uploaded file(s) and context are made available to applications via a static event named {{Consultingwerk.Web2.WebHandler.FileUploadWebHandler:FileUpload}} . The event args object for this event contains the uploaded file(s) and context. The files are provided in binary format, as instances of Ccs.Common.Support.IMemptrHolder. The file contents are available via that object’s {{Value}} property. The wrapped {{MEMPTR}} values are expected to be cleaned up by the wrappers (typically OpenEdge.Core.ByteBucket or OpenEdge.Core.Memptr).

SCL-4251 New Business Entity Designer plugin to import temp-table schemas from Swagger documents

Description:

A new Business Entity Designer plugin

Consultingwerk.BusinessEntityDesigner.Plugins.Json.JsonSchemaImporterPlugin

has been added to the product. This plugin allows to import a temp-table to a Business Entity based on the JSON schema found in a provided Swagger file.

SCL-4258 Implement Angular rendering support for the "allowDrag" property in the SmartGrid

Description:

We have implemented rendering support for the allowDrag property of the SmartGrid in our Angular UI.

Task

SCL-4262 products.i now includes the UsePLOforSmartBusinessEntityAdapterSaveChangesParameter preprocessor

Description:

The products.i.template file shipped with the SmartComponent Library releases now includes the UsePLOforSmartBusinessEntityAdapterSaveChangesParameter switch. The switch was introduced in SCL-3845 “ServiceAdapter:SubmitChanges should support native Serialization of the SaveChanges parameter object” to avoid a breaking-change for applications expecting the SaveChangesParameter to be ISerializable instead.

As products.i.template is just used to support new applications we are not seeing the need to deactivate this switch by default.

SCL-4263 Fixed storage allocation for all SmartDB tables and indexes

Description:

Some SmartDB tables and indexes have not been allocated in the right storage area according to the CCSBE spec. This has been resolved now.

SCL-4264 Index improvements on SmartSchedulerJobStatus database table

Description:

We have improved the index usage on the SmartSchedulerJobStatus database table in the SmartDB by modifying the existing indexes.