Versions Compared


  • 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-2373 Excluded Consultingwerk.SmartFramework.SmartFrameworkServices from deployment without SmartFramework


We have excluded the Consultingwerk.SmartFramework.SmartFrameworkServices class from our deployments that do not include the SmartFramework as this was causing compile errors due to missing referenced types.

SCL-2376 Fixed Invalid ELSE branch in TextBox.cls


We have fixed an error with an empty ELSE branch of IF statements in the SmartComponents.Web classes

- Editor.cls
- HiddenField.cls
- TextBox.cls

SCL-2381 ValidationMessage.cls: ** WARNING: Invalid INITIAL option ignored for HANDLE or OBJECT REFERENCE variable. (3349)


We have removed the INITIAL option from a property definition in the ValidationMessage class. This option was creating a confusing compile-time message. It had not runtime impact however.


SCL-2377 Added option for Tracing-Filter "*" to ProfilerService


We have added a new variant of the StartProfiler method of the IProfilerService interface:

Code Block
     * Purpose: Starts a profiling session including debug listing
     * Notes:
     * @param pcOutputFileName The file name of the profiler output file (.prof)
     * @param pcDescription The description for the profiler session
     * @param pcDebugListingDirectory The directory to generate debug-listings in (? for output file directory)
     * @param pcTraceFilter The filter for procedure/names to enable detailled tracing for (use "" to disable detailled tracing)
    METHOD PUBLIC VOID StartProfiler (pcOutputFileName AS CHARACTER,
                                      pcDescription AS CHARACTER,
                                      pcDebugListingDirectory AS CHARACTER,
                                      pcTraceFilter AS CHARACTER).

This method allows passing the TRACE-FILTER argument for the PROFILER system handle.

For more details on the parameters of the PROFILER system handle, see this article:

SCL-2380 Performance Improvements of the SmartRepositoryService


We have improved the performance of the SmartRepositoryService by

- optimizing the initial caching of the SmartObjectType table and the building of the base class list
- optimization of the query parsing codce in the ObjectMasterDataAccess (specific implementation, rather than using the DsQueryString class)
- optimization in the DataAccess class with regards to building the list of validation method. This is no longer done in the instance constructor of the DataAccess class each time a DataAccess instance is created. This is now stored in a static Dictionary.
- caching of the SmartBusinessEntityConfiguration objects in the SmartBusinessEntityConfigurationProvider

The startup time of the SmartRepositoryService has improved significantly (ca. 1/50 with a customer's database).

The time for the FetchRepositoryObject method execution has improved also significantly (ca. 1/2).

SCL-2382 Update "SmartDB Upgrade and Migration Routine" for ANT 1.10


Following the discussion here we have added the laoderRef option to the references to the PCT.jar file in the SmartDB Upgrade and Migration Utility. This ensures compatibility of the tool with ANT 1.10.

New Feature

SCL-1996 Added assignment of Menu Function Security Token to the Menu Structure Security Assignment


Menu Functions can both be authorized by the SMF (Smart Menu Function) and the SST (Smart Security Token) realm. Multiple menu functions can reference the same security token.

To simplify the assignment of the menu function authorization, we have now added the assignment of the security token as a combo-box to the tree view in the Menu Security Maintenance form.

SCL-2343 Implemented ability to assign RestartRowid to DatasetModel classes and start fetching data from a known ROWID


Implemented two new methods in the DatasetModel class:

Code Block
     * Purpose: Returns the Next-Rowid
     * Notes:   The Next-Rowid is the row-identifier required for retrieving
     *          the next batch. The usage of this method is only required, when
     *          implementing ROWID based batching with Dataset Models throughout
     *          different AppServer requests. The SetRestartRowid method acecpts
     *          the same values
     * @return The row-identifier required for retrieving the next batch


Code Block
     * Purpose: Sets the Restart-Rowid for the next request
     * Notes:   Allows to start retrieving data from a specific row.
     *          The usage of this method is only required, when implementing
     *          ROWID based batching with Dataset Models throughout different
     *          AppServer requests.
     * @param pcRowid The value for the Restart-Rowid
     * @return The reference to the DatasetModel itself for fluent style code
    METHOD PUBLIC DatasetModel SetRestartRowid (pcRowid AS CHARACTER):

The GetNextRowid method allows to retrieve the next ROWID (or set of ROWID's) as a character value required to obtain the next batch.

The SetRestartRowid method initializes the DatasetModel (or DatasetModel performed), so that the following Fill() operation fetches for this next batch.

Both methods are implemented to allow ROWID based batching in different instances of the DatasetModel (typically when batches are retrieved during different AppServer requests).

SCL-2375 Implemented a Garbage-Capable version of the HandleHolder class


The Consultingwerk.HandleHolder class does not perform a DELETE OBJECT for the reference widget handle value. We have implemented a StrongHandleHolder class now which deletes the referenced widget handle when

- the StrongHandleHolder is deleted or garbage collected or
- another Handle value is assigned to the Value property of the StrongHandleHolder instance

Using the StrongHandleHolder instead of returning a widget handle value from a factory method will reduce the risk of memory leaks when working with handle based objects.