Keep up to date with the Symphony Framework by subscribing to the mailing list.

Check out the new Symphony Framework Academy! It’s the home for information and tutorials to help you get the most from the Symphony Framework! Click on the Academy option below.

Symphony Framework Release Notes

Symphony Framework Version 2.5.6.5.


Changes to some of the templates have been made basde on new capabilities within CodeGen. You must update CodeGen to version 4.3.1 prior to updating the Symphony Framework.

A new Symphony.Conductor.Static.ThreadSafe class has been added to the framework. This class contains a single thread safe Boolean property that can be used to validate if a thread has previously been used to execute Synergy code.

The Symphony_BLListViewModel.tpl template file has been modified to use the new thread safe Boolean property exposed by the Symphony.Conductor.Static.ThreadSafe class.

You can now define additional import statements when code generating by adding them to a file called namespace.inc and placing this file in a folder pointed to by the logical TPLINC.

You can now alter the way the code generation uses the repository file name for a number of templates. A new user token has been added that allows you to overwrite the default behaviour.

-ut DATAFILENAME=

Unless specified the templates continue to use the token that uses the repository file name assigned to a structure. You can specify an actual file name, the name of a regular synergy function of the name of a static class method. If specifying a function name you must prefix the function name with %%. The following templates files now allow you to change the name of the opened file when generating code.

--Symphony_FileIO.tpl
--Symphony_BLListViewModel.tpl
--Symphony_DataValidator.tpl

TAG attributes for a repository structure can be used in two ways. They can be used as filters or validation. Filters allow you to specify additional field values as well as the key values you are attempting to read a file with. Validation is when the tag field IS the key field. This second option causes some code generated files to function incorrectly. This has been addressed and you can now optionally prevent validation tags from overwriting key values when reading file. To do this on the CodeGen command line specify the following user token;

-ut TAGUNDEFINEOPTION=TAG_FIELD

The following template files are affected;

-- Symphony_FileIO.tpl

The Symphony_Select.tpl template file uses the new capabilities available in CodeGen. This requires that you update to version 4.1.12 of CodeGen. The template has also been modified to exclude array fields from the where clause.

The base FileIO class has been extended to include a new KeyReference property. This property allow you to define the file access key of reference. The default value is 0 which is the primary key. Additional logic has been added so that if after a ReadFirst or FindFirst operation a “Record not found” error is encountered the code then performs a ReadNext. This is to ensure that any TAG validation does not prevent the file positioning to the first valid record in the file.

The AsyncObservableCollection class has been modified in an attempt to fix thread synchronization issues in the base ObservableCollection<> class. To ensure that you can fully synchronize the loading of your collection on a background thread you must use the AddToCollection() and ClearCollecition() methods in place of the Add() and Clear() methods. The Symphony Framework development team are actively working to create a fully thread safe collection for a future release.

A new enumeration has been added to the Symphony.Conductor.ViewModel namespace called ThreadStatusIndicator. This enumeration provides the ability for you to report on the status of a background worker thread. Its available values are;
-- Inactive
-- Active
-- Completed
-- Canceled


The BackgroundLoadedSearchViewModel class has a new LoadingIndicator read-only property. This property exposed an enumeration called ThreadStatusIndicator. This enumeration can be used in your XAML code to provide an indication of the status of a thread.