Show/Hide Toolbars

Therefore Programming Interface 3.0

Therefore API > What's New

What's new in Thereforeā„¢ 2017

Scroll

New feature: Tab Control Fields

The new field type TheCategoryFieldType.TabControlField is meant for better organization of categories and case definitions. Like label, table and image fields, tab controls do not hold any index data values.

Every tab control consists of one or more tabs. Tabs are represented by the TheTabInfo class. Each tab has a TabNo, defining the order the tabs were added to the tab control, and a Position, containing the order for displaying the tabs.

 

The new TheCategoryField.ParentFieldNo property can be used to determine if a field is located in tab control field. This property is now also used for column fields in table fields and thereby replaces the old BelongsToTable property. The BelongsToTable property is hereby deprecated but still compatible and will return field numbers for table fields only.

 

New feature: Workflow Errors

Errors in automatic workflow errors can be queried in the Thereforeā„¢ Navigator in Thereforeā„¢ 2017. To perform a query returning error information with the API, execute a workflow query with TheQuery.ExecuteWorkflowQuery in combination with the new enumeration value TheWorkflowFalgs.ErrorInstances.

Using the flag AllInstances will also return error information while DefaultInstances and RunningInstances won't.

In the TheQueryResultRow the workflow error information will always be present in the positions TheQueryResultRow.Count - 6 to - 9.

 

The classes TheWFInstance and TheWFInstanceInfo have the new properties ErrorString, ErrorInfo and ErrorTimestamp to access detailed information about the error.

Errors can be cleared with TheWFInstance.ClearError for a single workflow instance and TheServer.ClearWorkflowError for multiple workflow instances.

 

New feature: Multi Language Categories and Case Definitions

With Thereforeā„¢ 2017 it is possible to configure the visible text in categories and case definitions including fields and tabs in different languages. For this the concept of the connection default language has been introduced.

By default the connection default language is the default UI language selected in the Thereforeā„¢ Navigator. This setting is only loaded on application startup. It can be overwritten by TheServer.SetLanguage. This parameter can only be changed when not being connected to the server.

When being set on a server object, loading a TheCategory and TheCaseDefinition with this server object hands over the connection default language from the server to the loaded object and from these to every TheCategoryField and in further succession to every TheTabInfo object. The properties Name and Description of TheCategory and TheCaseDefinition and the property Caption of TheCategoryField and TheTabInfo will now return their value in the connection default language if available.

The connection default language is not dependent on the language resource files installed with Thereforeā„¢ as it only refers to the category and case definition configuration.

 

The language for the properties can always be change by calling SetCurrentLCID (find directs links below) in all four classes. When using 0 as parameter, the currently used language will be changed back to the connection default language.

Additionally each property has a Get and Set method with an LCID parameter to get and set values in the corresponding language independent of the currently used language.

With the GetAvailableLCIDs method in the TheCategory and TheCaseDefinition classes, a list of LCIDs the corresponding object has been configured with is returned.

 

New feature: Language sensitive query conditions

Opposing to the multi language feature for categories and case definitions, language sensitive query conditions are partially bound to the language resource files installed with Thereforeā„¢ on the machine executing the API code. For this new overloads of the TheQuery.Execute and TheQuery.ExecuteAsync with an additional LCID parameter.

Language sensitive conditions parsing consists of two different parts: Thereforeā„¢ query operators and macros (as they can be used in the Navigator) and language sensitive formats of values like dates and the decimal point.

 

Operators and macros can now be accessed in the different languages by using TheQuery.GetValidOperandMacros and TheQuery.GetValidOperators. Any LCID can be used here. If there is no language resource file present for this LCID, the default will be used. The macros and operators returned are always in the same static order.

 

Executing a query with the LCID as parameter will parse conditions with macros and operators for the given LCID. If there is no language resource file present for this LCID, the default will be used. Dates and decimal numbers will also be parsed with the default formatting settings for this LCID. By default the date and decimal point format configured by the user (can be changed under Language in the Windows Control Panel). These settings will be ignored here.

Please note: To date there is a bug in Microsoft Windows preventing the standard Hungarian date format to be parsed correctly.

 

New feature: Design Object Lock

The new feature to lock objects like categories and case definitions in the Thereforeā„¢ Solution Designer leads to a breaking change in the API. This breaking change will cause compatibility problems with existing solutions that modify categories and case definitions.

Categories and case definitions loaded with TheCategory.Load and TheCaseDefinition.Load can not be changed anymore. Executing SaveChanges will always fail. To be able to change categories and case definitions loading has to be performed by TheCategory.LoadForEdit and TheCaseDefinition.LoadForEdit. This will put an object lock on the loaded category or case definition. Executing SaveChanges will remove the object lock when saved successfully but will not put a new lock on the object.

With TheCategory.Unlock and TheCaseDefinition.Unlock the lock can be removed as well.

 

New Classes

TheTabInfo

TheTabInfoList

TheWFInstanceList

 

New Properties

TheCategoryField.ParentFieldNo

TheCategoryField.ShowInTabNo

TheCategoryField.Tabs

 

TheQueryResultRow.InstanceNo

TheQueryResultRow.TokenNo

 

TheWFInstance.ErrorString

TheWFInstance.ErrorInfo

TheWFInstance.ErrorTimestamp

 

TheWFInstanceInfo.ErrorString

TheWFInstanceInfo.ErrorInfo

TheWFInstanceInfo.ErrorTimestamp

 

New Methods

TheCaseDefinition.CreateTab

TheCaseDefinition.GetCurrentLCID

TheCaseDefinition.DeleteTab

TheCaseDefinition.DeleteTranslation

TheCaseDefinition.GetDescription

TheCaseDefinition.GetName

TheCaseDefinition.LoadForEdit

TheCaseDefinition.MoveField

TheCaseDefinition.SetCurrentLCID

TheCaseDefinition.SetDescription

TheCaseDefinition.SetName

TheCaseDefinition.Unlock

 

TheCategory.CreateTab

TheCategory.GetCurrentLCID

TheCategory.DeleteTab

TheCategory.DeleteTranslation

TheCategory.GetDescription

TheCategory.GetName

TheCategory.LoadForEdit

TheCategory.MoveField

TheCategory.SetCurrentLCID

TheCategory.SetDescription

TheCategory.SetName

TheCategory.Unlock

 

TheCategoryField.GetCaption

TheCategoryField.GetCurrentLCID

TheCategoryField.SetCaption

TheCategoryField.SetCurrentLCID

 

TheMultiQuery.Execute (new overload)

TheMultiQuery.ExecuteAsync (new overload)

 

TheQuery.Execute (new overload)

TheQuery.ExecuteAsync (new overload)

TheQuery.GetValidOperandMacros

TheQuery.GetValidOperators

 

TheServer.ClearLocalCache

TheServer.ClearWorkflowError

TheServer.Connect (new overload)

TheServer.GetCategories (new overloads)

TheServer.GetObjects (new overload)

TheServer.SetLanguage

 

TheWFInstance.ClearError

 

Ā© 2022 Therefore Corporation, all rights reserved.