We are happy to announce v5.06.20 of our popular middleware for Delphi and C++Builder.
If you like kbmMW, please let others know! Share the word!
We strive hard to ensure kbmMW continues to set the bar for what an n-tier product must be capable of in the real world!
Notice that kbmMemTable v. 7.80.00 or newer is a prerequisite to this update.
This is the wrap up of the 5.06.xx beta release with some additional features, improvements and bugfixes. Major new features in this release includes::
- Added support for hardware based true random numbers via the new unit kbmMWInfTRNG (Enterprise Edition)
- Added ORM stage function Split for splitting data into separate groups.
- Added TkbmMWMultithreadMessageActionProcessor.
- Added optional non destructive ORM table upgrade feature.
Please check the end of this post for a detailed change list.
Professional and Enterprise Edition is available for all with a current active SAU. If your SAU has run out, please visit our shop to extend it with another 12 months.
CodeGear Edition is available for free, but only supports a specific Delphi/Win32 SKU, contains a limited feature set and do not include source.
Please visit https://portal.components4developers.com to download.
kbmMW is the premiere n-tier product for Delphi, C++Builder and FPC on .Net, Win32, Win64, Linux, Java, PHP, Android, IOS, embedded devices, websites, mainframes and more.
Please visit www.components4developers.com for more information about kbmMW.
Components4Developers is a company established in 1999 with the purpose of providing high quality development tools for developers and enterprises. The primary focus is on SOA, EAI and systems integration via our flagship product kbmMW.
kbmMW is a portable, highly scalable, high end application server and enterprise architecture integration (EAI) development framework for Win32, ..Net and Linux with clients residing on Win32, .Net, Linux, Unix, Mainframes, Minis, Embedded and many other places. It is currently used as the backbone in hundreds of central systems, in
hospitals, courts, private, industries, offshore industry, finance, telecom, governements, schools, laboratories, rentals, culture institutions, FDA approved medical devices, military and more.
5.06.20 July 11 2018
Important notes (changes that may break existing code)
* Remote Desktop require Seattle or newer to compile.
- Added TkbmMWONObject.AssignObject which assigns another ON object
values to the current one, clearing the original values.
- Added TkbmMWONObject.MergeObject which merges another ON object
values into the current one, potentially preserving the original
- Added function kbmMWWildcard2RegEx(const AWildCard:string):string;
in kbmMWGlobal.pas. It converts a file wildcard string to a valid
regular expression string. It supports * and ?.
- Added boolean triggerModified option to kbmMW_Field attribute.
It controls if changes to that particular ORM field in the class
should indicate that the data has been modified and thus resolves.
- Added mwoctfNonDestructive to TkbmMWORMCompatibleTableFlag.
Can be used in CompatibleTable, UpgradeTable and CreateOrUpgradeTable
to control if only non destructive changes should be made to
make an existing table compatible. If set, fields will not be removed,
renamed, its field type changed or made smaller in size or precision.
Indexes, primary or unique constraints will also not be changed.
- Added SkipNoNameColumns property to TkbmMWCSVStreamer. Default false.
If false and property Header is true, columns with an empty name will
be given a name using DefaultNamePrefix and a column number.
If true and property Header is true, columns with an
empty name will be skipped.
- Added property AutoActivate:boolean to TkbmMWCustomConnectionPool.
Default true. If true and a connection is attempted to be obtained
the connection pool is automatically set to active, else an exception
- Added TkbmMWMultithreadMessageActionProcessor which works similar to
TkbmMWMessageActionProcessor except all messages are executed
completely asynchronously. Be aware that execution order may be different
than message post order.
- Added new kbmMWProcess unit containing process related classes.
(currently only for Windows).
- Added function Split(const AGroupFields:string; const AHaving:string=''):IkbmMWLinqStages;
to IkbmMWORMStage. It will split data in the stage into multiple
stages according to Group By and Having like rules.
- Added OnLogin2, OnLoginSuccess2,OnLoginFail2,OnLogout2,OnAuthorize2,OnTrace2 events
to TkbmMWAuthorizationManager. They are alternatives to existing events and are
called after the "old" events. The events take a context instance which
contains all information known during the autorization operation.
The data in the context can be modified on the fly to override default
- Added unit kbmMWInfTRNG (Enterprise Edition) which provides support for
hardware based true random noise generators for generating random numbers.
This is usually considered the cryptographically most secure random generator.
Default it supports https://13-37.org/en/infinite-noise-trng but
others can be used aswell as long as they can generate random data
into a file. TkbmMWInfTRNG32 and TkbmMWInfTRNG64 are surfaced as
default random number generator classes.
- Updated unittests.
- Added (const AWaitUntilStopped:boolean=true) argument to Stop method
- Added property TopIfExists:TkbmMWDOMXMLNode to TkbmMWDOMXML.
Returns top (non declarative) node if it exists, else nil.
- Updated TkbmMWORM.ModifiedValuesToDataset to attempt to leave record position
- Updated kbmMWFastCGI unit to use kbmMWProcess unit.
- Added function DiffMinutes(const AValue:TkbmMWDateTime):integer; to
- Added optional ATopName:string to PrepareXMLStorage in TkbmMWConfiguration.
- Remote Desktop require Seattle or newer to compile.
- Fixed TkbmMWDateTime.DiffDays, DiffHours and added DiffMinutes.
- Fixed TkbmMWConfiguration bug introduced in 5.06.10 by the
case insensitive object notation changes.
- Fixed TkbmMWONCustomObject.Path issue when instantiating
final ON custom object.
- Fixed nasty string sharing bug in TkbmMWStringBuilder when isntance
was reused with preceded by Clear.
- Fixed A/V in TkbmMWYAMLStreamer.LoadFromUTF16String when
not able to parse due to empty or syntax error.
- Fixed incorrect calculation in kbmMWMimeDecodedSize which cound result
in buffer overruns.
- Fixed A/V in TkbmMWBPParser.Create and TkbmMWBPParser.CreateFromString
when syntax error or empty definition.
- Fixed TkbmMWCustomConnectionPool to ensure all properties are read
during component load, before it is set to active.
- Improved AMQP client disconnect handling and fixed channel leak.
- Fixed IkbmMWLinqStage.GroupBy to require , between field names.
- Fixed incorrect TkbmMWDateTime DiffHours and DiffDays.
- Fixed bugs in TkbmMWConfiguration.