Versions Compared

Key

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

...

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

...

SCL-2528 REST Entities Web Handler now supports exposing individual array elements for GET requests to Collections

Description:

The REST Entities Web Handler now supports exposing individual array elements for GET requests to Collections.
http://localhost:8820/web/Entities/SCL2528/Salesreps ?fields=SalesRep,RepName,MonthQuota[4] ( http://localhost:8820/web/Entities/SCL2528/Salesreps ?fields=SalesRep,RepName,MonthQuota%5B4%5D) will now return just the MonthQuota[4] field.
Individual array elements can also be specified in the @RestAddress annotation for collections. When receiving the individual resource or during update array fields are still represented as JsonArray's only.

SCL-2551 Providing a more meaningful error message when wrong type of menu function is used in menu structure

Description:

We are raising now a more meaningful error message when attempting to render a web menu structure that contains an incompatible menu function.

SCL-2552 Added Group Boxes to Security Realm Maintenance

Description:

To simplify the distinction between implementation details and site configuration data for security realms, we have added group boxes to the maintenance form.

SCL-2555 Implemented Security Assignment Maintenance Screen Input Restrictions

Description:

We have implemented client side input restrictions (validation) to the security assignment maintenance screen. This restriction blanks out the user name when entering a group name and vice versa as only one of the fields may be populated.

New Feature

SCL-2138 Implemented Business Entity Designer Plugin that supports generating Repository Meta Lookup

Description:

We have implemented a Business Entity Designer plugin that supports creating lookup controls in the Repository for a selected Table of the current Business Entity Design.

SCL-2303 Release of the first prototype of a rendering engine for GUI for .NET Forms

Description:

We have implemented a rendering engine compatible to the Meta-Repository-Types. This rendering engine support rendering the same repository data to GUI for .NET, Angular and NativeScript.

SCL-2426 Implemented Refresh functionality in the SmartDataBrowser

Description:

The SmartDataBrowser now supports a Hotkey for Refresh. The the Hotkey can either be set as an ABL Shortcut (e.g. F5 or CTRL-R) to the

Code Block
languageabl
Consultingwerk.SmartComponents.Implementation.SmartDataBrowserSettings:RefreshHotKeyString


property or an System.Windows.Forms.Shortcut value to the

Code Block
languageabl
Consultingwerk.SmartComponents.Implementation.SmartDataBrowserSettings:RefreshHotKeyString


property. The property can also be set using the JSON Startup file of the GUI session using a static property setting:

Code Block
languageabl
    "staticProperties": {
...
        "Consultingwerk.SmartComponents.Implementation.SmartDataBrowserSettings:RefreshHotKeyString": "F5",
...
}


When the user hit's the property, the SmartDataBrowser will let the linked Data Adapter to either reopen it's query or fetch updated data from the backend.

SCL-2530 Implement new utility to perform bulk updates or deletions to object master records

Description:

Implemented a new utility that supports updating or deleting multiple object master records. The product module can be updated for a set of objects using a button in the Ribbon.
!screenshot-1.png|thumbnail!

SCL-2553 Implemented REST Endpoint to retrieve Security Item Lookup configuration

Description:

We have implemented a new RESTful endpoint which supports web rendering of the security item lookup for a security realm.
http://localhost:8820/web/Entities/SmartFramework/GetSecurityRealmItemLookup ?Value=99c76236-bd65-aeb8-e013-4ffcf411e4c1
Where Value is the GUID of the Security Realm.
Sample response:

Code Block
languageabl
{
  "SerializedType": "Consultingwerk.Framework.RepositoryServices.SmartBusinessEntityLookupDescriptor",
  "LookupBrowserFields": "SecurityTokenCode,SecurityTokenDescription",
  "LookupDialogFilterFields": "SecurityTokenCode,SecurityTokenDescription",
  "LookupDialogFilterOperators": "BEGINS,BEGINS",
  "LookupDialogQuerySort": "BY eSmartSecurityToken.SecurityTokenCode",
  "LookupDialogQueryString": "FOR EACH eSmartSecurityToken",
  "LookupDialogTitle": "Select Security Token",
  "LookupEntityName": "Consultingwerk.SmartFramework.Authorization.SecurityTokenBusinessEntity",
  "LookupEntityTable": "eSmartSecurityToken",
  "LookupKeyField": "SecurityTokenCode",
  "LookupKeyValueColumn": "SecurityTokenGuid",
  "LookupQueryString": "FOR EACH eSmartSecurityToken WHERE eSmartSecurityToken.SecurityTokenCode BEGINS \"&1\""
}

...

SCL-2554 Implemented a JSON Endpoint for Security Assignment Verification

Description:

Implemented a RESTful endpoint for the security assignment verification (similar to the GUI form).
Sample URL:
http://localhost:8820/web/Entities/SmartFramework/IsRestrictedCheck ?RealmGuid=9f2d813a-d8c2-2bbb-dc13-7aabd0d7e66f&SecurityItemGuid=cd229641-1db6-81b3-e211-66569ba03908&UserGuid=ffcc4f24-af98-8187-e211-4714049f854c
That is the Message Translation Realm, Security Item Dutch and user mikefe (in Consultingwerk)
Returns:

Code Block
languageabl
{
  "IsRestricted": true,
  "Reason": "User",
  "Runtime": 0,
  "Groups": [
    {
      "GroupName": "Consultingwerk Admin",
      "ParentGroupName": "Admin",
      "LoginCompanyName": "Consultingwerk Ltd."
    },
    {
      "GroupName": "User"
    },
    {
      "GroupName": "Admin"
    }
  ]
}

...

SCL-2558 Implemented ClassHelper:GetClassNamesInClassPath as a Business Entity

Description:

To simplify usage of the ClassHelper:GetClassNamesInClassPath in environments support business entities, we have implemented a business entity as a wrapper to ClassHelper:GetClassNamesInClassPath
This feature is implemented using a Named Query on the new Consultingwerk.Util.ClassHelper.ClassHelperBusinessEntity business entity.
Query name: ClassNamesInClassPath
Parameter BaseClassName (Character): Consultingwerk.SmartFramework.Authorization.ISecurityRealmService
Parameter IncludeAbstractClasses (Logical): false
When invoking this via the JSDO generic service, you should also set the StopAfter to zero (turn off stop-after) using an additional query string parameter: &stopAfter=0

...

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