From fd7a27d4863638feae15bdf3ffe479e46e9f6e95 Mon Sep 17 00:00:00 2001 From: Pedro Debevere Date: Thu, 31 Oct 2024 08:59:36 +0100 Subject: [PATCH 1/6] Update Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md --- ...ataMiner_Core_DataMinerSystem_Range_1.1.md | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md b/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md index 72851677a7..a2944c4e9e 100644 --- a/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md +++ b/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md @@ -7,6 +7,98 @@ uid: Skyline_DataMiner_Core_DataMinerSystem_Range_1.1 > [!NOTE] > Range 1.1.x.x is supported as from **DataMiner 10.1.11**. It makes use of a change introduced in DataMiner 10.1.11 that makes it possible to obtain table cell data using the primary key. In earlier DataMiner versions, the display key was needed to obtain this data. +### 1.1.2.1 + +#### API changes for improved performance + +Version 1.1.2.1 introduces some changes (of which some are breaking) to the class library API to reduce the number of SLNet calls that are executed in the background. + +**Extended IDms interface** + +The IDms interface has been extended with additional methods for retrieving an object that represents an existing DataMiner object (without checking whether it actually exists): + +- IDma GetAgentReference(int agentId) +- IDmsElement GetElementReference(DmsElementId dmsElementId) +- IDmsView GetViewReference(int viewId) + +These methods can be used as an alternative to the IDms.GetElement(DmsElementId), IDms.GetView(int) or IDms.GetAgent(int) methods. +The IDms.GetElement(DmsElementId), IDms.GetView(int) or IDms.GetAgent(int) methods will in the background perform an SLNet call to request info about the item. + +Using the GetAgentReference, GetElementReference or GetViewReference methods, this additional SLNet call will only be called when information is requested. +Therefore if you perform a set, e.g. a parameter set on an element, the SetParameterMessage SLNet call in the background without having to request additional data from SLNet. + +Note, however, if you create you request a reference to an object that does not exist on the System by providing an invalid ID, an exception will only be thrown when a call to the server is performed. Using the IDms.GetElement(DmsElementId), IDms.GetView(int) or IDms.GetAgent(int) method will already throw an exception if the Agent does not exist when the method executes. + +In summary, you can use these methods if you are sure the item exists which can result in improved performance because some additional SLNet calls can be avoided. +If you do not know the item exists, you should use the IDms.GetElement(DmsElementId), IDms.GetView(int) or IDms.GetAgent(int) method. + +Behavior prior to this RN: + +```csharp +var dms = protocol.GetDms(); +var element = dms.GetElement(new DmsElementId(346, 100)); // Performs an SLNet call to obtain info about the element. +var parameter = element.GetStandaloneParameter(10); +parameter.SetValue(100); // Throws ElementStoppedException in case the State property of the ElementInfoEvent message obtained in the GetElement call indicates the element is stopped. In this case no server call is executed. +``` + +Behavior since this RN: + +```csharp +var dms = protocol.GetDms(); +var element = dms.GetElement(new DmsElementId(346, 100)); // Performs an SLNet call to obtain info about the element. +var parameter = element.GetStandaloneParameter(10); +parameter.SetValue(100); // Does not check State property of the ElementInfoEvent message obtained in the GetElement call indicates the element is stopped. Server call is executed. +``` + +Alternative to avoid additional SLNet call: + +```csharp +var dms = protocol.GetDms(); +var element = dms.GetElementReference(new DmsElementId(346, 100)); // No SLNet call executed. +var parameter = element.GetStandaloneParameter(10); +parameter.SetValue(100); // Does not check State property of the ElementInfoEvent message obtained in the GetElement call indicates the element is stopped. Server call is executed. +``` + +**Breaking changes** + +Note also that the API has some breaking changes with regard to exceptions that are being thrown because the State property for an element is not checked anymore before a set executes. +This means that some calls no longer throw an ElementStoppedException but instead a ElementNotFoundException (or no exception at all). +Refer to the XML documentation on the methods to see if/when an exception is now thrown. + +- IDmsElement.GetStandaloneParameter\ no longer throws an ElementNotFoundException +- IDmsElement.GetTable no longer throws an ElementNotFoundException +- IDmsColumn.GetAlarmLevel no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsColumn.GetDisplayValue no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsColumn\.GetValue no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsColumn.Lookup no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsColumn\.SetValue no longer throws an exception +- IDmsStandaloneParameter.GetAlarmLevel no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsStandaloneParameter.GetDisplayValue no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsStandaloneParameter\.GetValue no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsStandaloneParameter\.SetValue no longer throws an exception +- IDmsTable.AddRow no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsTable.DeleteRow no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsTable.DeleteRows no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsTable.GetDisplayKey no longer throws an ElementStoppedException but instead will return null if the element is stopped +- IDmsTable.GetDisplayKeys no longer throws an ElementStoppedException but instead will return an empty set if the element is stopped +- IDmsTable.GetPrimaryKey no longer throws an ElementStoppedException but instead will return null if the element is stopped +- IDmsTable.GetPrimaryKeys no longer throws an ElementStoppedException but instead will return an empty set if the element is stopped +- IDmsTable.GetRow no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsTable.GetRows no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsTable.RowExists no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped +- IDmsTable.SetRow no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped + +**Updated/changed SLNet calls** + +Additionally, some changes have been made to the SLNet calls that are executed in the background: + +- When info for a single view is requested, the GetInfo message of type ViewInfo will now have the viewId mentioned in the ExtraData property of the SLNet call. If the request is sent to a DataMiner verion that supports this (see RN41169, then DataMiner will only proivde info in the response for that view instead of all. +- When property configurations are requests, the GetINfo message of type PropertyConfiguration will now include type requested type (e.g. ELEMENT, SERVICE or VIEW) so rthe response only includes the property configurations of the requested type. +- The ReferencedVersion property of IDmsProtocol will now be obtained via a GetInfo SLNet call of type Protocols instead of the GetProtocolMessage. Perfomrance tests indicate that this is a less impacting call. + +Note that only DataMiner versions where RN 41169 is implemented DataMiner will respond with only the requested information. If the request is made to an older DataMiner version, +all info will be in the response. In that case, class library will just filter out the needed info. + ### 1.1.1.12 #### Fix - Breaking change reverted for InterAppCalls From 4dbb0761ebcb3cc2e923b844e673d2d38c71915e Mon Sep 17 00:00:00 2001 From: Pedro Debevere Date: Mon, 18 Nov 2024 09:09:10 +0100 Subject: [PATCH 2/6] Update Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md --- ...yline_DataMiner_Core_DataMinerSystem_Range_1.1.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md b/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md index a2944c4e9e..a7e82bbd5a 100644 --- a/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md +++ b/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md @@ -9,7 +9,7 @@ uid: Skyline_DataMiner_Core_DataMinerSystem_Range_1.1 ### 1.1.2.1 -#### API changes for improved performance +#### API changes for improved performance [ID 41178] Version 1.1.2.1 introduces some changes (of which some are breaking) to the class library API to reduce the number of SLNet calls that are executed in the background. @@ -99,6 +99,16 @@ Additionally, some changes have been made to the SLNet calls that are executed i Note that only DataMiner versions where RN 41169 is implemented DataMiner will respond with only the requested information. If the request is made to an older DataMiner version, all info will be in the response. In that case, class library will just filter out the needed info. +### 1.1.1.13 + +#### New Feature - Added SendMessages method to ICommunications interface + +The ICommunications interface has been extended with the following method: + +```csharp +DMSMessage[] SendMessages(DMSMessage[] messages); +``` + ### 1.1.1.12 #### Fix - Breaking change reverted for InterAppCalls From 5f24f730f8da093704009e54f23225cc6ddf1389 Mon Sep 17 00:00:00 2001 From: Pedro Debevere Date: Mon, 18 Nov 2024 09:24:35 +0100 Subject: [PATCH 3/6] Update ClassLibraryVersioning.md --- develop/devguide/ClassLibrary/ClassLibraryVersioning.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/develop/devguide/ClassLibrary/ClassLibraryVersioning.md b/develop/devguide/ClassLibrary/ClassLibraryVersioning.md index 771ab9f6d8..04750d6a95 100644 --- a/develop/devguide/ClassLibrary/ClassLibraryVersioning.md +++ b/develop/devguide/ClassLibrary/ClassLibraryVersioning.md @@ -17,4 +17,4 @@ The different components of a version A.B.C.D represent the following: ## Released versions -Refer to the [class library release notes](xref:ClassLibrary_Range_1.2) for an overview of the released versions. +Refer to the [Skyline.DataMiner.Core.DataMinerSystem](xref:Skyline_DataMiner_Core_DataMinerSystem_Range_1.1) for an overview of the released versions. From 05e48ba6f576dc5fe6f1dc9ad7bbed7f789f8da0 Mon Sep 17 00:00:00 2001 From: MariekeGO <94605575+MariekeGO@users.noreply.github.com> Date: Mon, 18 Nov 2024 13:19:18 +0100 Subject: [PATCH 4/6] Review + breaking changes updated --- .../ClassLibrary/ClassLibraryVersioning.md | 2 +- .../Breaking_changes/Breaking_changes.md | 1 + ...ataMiner_Core_DataMinerSystem_Range_1.1.md | 90 +++++++++---------- 3 files changed, 44 insertions(+), 49 deletions(-) diff --git a/develop/devguide/ClassLibrary/ClassLibraryVersioning.md b/develop/devguide/ClassLibrary/ClassLibraryVersioning.md index 04750d6a95..0f85577bc3 100644 --- a/develop/devguide/ClassLibrary/ClassLibraryVersioning.md +++ b/develop/devguide/ClassLibrary/ClassLibraryVersioning.md @@ -17,4 +17,4 @@ The different components of a version A.B.C.D represent the following: ## Released versions -Refer to the [Skyline.DataMiner.Core.DataMinerSystem](xref:Skyline_DataMiner_Core_DataMinerSystem_Range_1.1) for an overview of the released versions. +Refer to the [Skyline.DataMiner.Core.DataMinerSystem](xref:Skyline_DataMiner_Core_DataMinerSystem_Range_1.1) release notes for an overview of the released versions. diff --git a/release-notes/Breaking_changes/Breaking_changes.md b/release-notes/Breaking_changes/Breaking_changes.md index 6ec6917c52..fa35fb8857 100644 --- a/release-notes/Breaking_changes/Breaking_changes.md +++ b/release-notes/Breaking_changes/Breaking_changes.md @@ -9,6 +9,7 @@ The following breaking changes have been introduced in recent DataMiner releases | Release note ID | Release version(s) | Description | |--|--|--| | [41195](xref:General_Feature_Release_10.5.1#automation-locking-behavior-of-automation-script-actions-has-been-enhanced-id-41195) | DataMiner 10.4.0 [CU10]/10.5.1 | Changes made to the locking behavior of Automation script actions will affect the behavior of the *Generate Information*, *Log*, *Send Notification*, *Send Report*, *Set State* and *Set Template* actions. | +| [41178](xref:Skyline_DataMiner_Core_DataMinerSystem_Range_1.1#api-changes-for-improved-performance-id-41178) | Skyline.DataMiner.Core.DataMinerSystem | API changes for improved performance cause some calls to no longer throw an ElementStoppedException but instead an ElementNotFoundException or no exception at all. | | [41059](xref:Web_apps_Feature_Release_10.4.12#monitoring-app-alarm-card-urls-now-also-contain-the-element-id-id-41059) | DataMiner 10.3.0 [CU21]/10.4.0 [CU9]/10.4.12 | From DataMiner 10.3.0 [CU21]/10.4.0 [CU9]/10.4.12 onwards, Monitoring app alarm card URLs will also contain the element ID. | | [40867](xref:General_Feature_Release_10.4.12#automation-subscriptoptionsskipstartedinfoevent-will-now-by-default-be-set-to-true-id-40867) | DataMiner 10.5.0/10.4.12 | SubScriptOptions.SkipStartedInfoEvent will now by default be set to true. | | [40372](xref:General_Feature_Release_10.4.11#gqi---get-alarms-data-source-updated-alarm-id-and-root-alarm-id-columns-id-40372) | DataMiner 10.5.0/10.4.11 | The *Alarm ID* and *Root Alarm ID* columns of the GQI data source *Get alarms* have been updated. | diff --git a/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md b/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md index a7e82bbd5a..73addf4ed0 100644 --- a/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md +++ b/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md @@ -11,9 +11,9 @@ uid: Skyline_DataMiner_Core_DataMinerSystem_Range_1.1 #### API changes for improved performance [ID 41178] -Version 1.1.2.1 introduces some changes (of which some are breaking) to the class library API to reduce the number of SLNet calls that are executed in the background. +Version 1.1.2.1 introduces changes (some of which are breaking) to the class library API to reduce the number of SLNet calls that are executed in the background. -**Extended IDms interface** +##### Extended IDms interface The IDms interface has been extended with additional methods for retrieving an object that represents an existing DataMiner object (without checking whether it actually exists): @@ -21,18 +21,13 @@ The IDms interface has been extended with additional methods for retrieving an o - IDmsElement GetElementReference(DmsElementId dmsElementId) - IDmsView GetViewReference(int viewId) -These methods can be used as an alternative to the IDms.GetElement(DmsElementId), IDms.GetView(int) or IDms.GetAgent(int) methods. -The IDms.GetElement(DmsElementId), IDms.GetView(int) or IDms.GetAgent(int) methods will in the background perform an SLNet call to request info about the item. +These methods can be used as an alternative to the *IDms.GetElement(DmsElementId)*, *IDms.GetView(int)*, and *IDms.GetAgent(int)* methods. The *IDms.GetElement(DmsElementId)*, *IDms.GetView(int)*, and *IDms.GetAgent(int)* methods will perform an SLNet call in the background to request info about the item. With the new *GetAgentReference*, *GetElementReference*, and *GetViewReference* methods, this additional SLNet call will only be called when information is requested. Therefore if you perform a set, e.g. a parameter set on an element, the *SetParameterMessage* SLNet call is performed in the background without having to request additional data from SLNet. -Using the GetAgentReference, GetElementReference or GetViewReference methods, this additional SLNet call will only be called when information is requested. -Therefore if you perform a set, e.g. a parameter set on an element, the SetParameterMessage SLNet call in the background without having to request additional data from SLNet. +However, note that if you request a reference to an object that does not exist in the system by providing an invalid ID, an exception will only be thrown when a call to the server is performed. If the *IDms.GetElement(DmsElementId)*, *IDms.GetView(int)* or *IDms.GetAgent(int)* method is used, an exception will already be thrown if the Agent does not exist when the method is executed. -Note, however, if you create you request a reference to an object that does not exist on the System by providing an invalid ID, an exception will only be thrown when a call to the server is performed. Using the IDms.GetElement(DmsElementId), IDms.GetView(int) or IDms.GetAgent(int) method will already throw an exception if the Agent does not exist when the method executes. +In summary, you can use these methods if you are sure the item exists, and these can result in improved performance because some additional SLNet calls can be avoided. If you do not know whether the item exists, you should use the *IDms.GetElement(DmsElementId)*, *IDms.GetView(int)*, or *IDms.GetAgent(int)* method instead. -In summary, you can use these methods if you are sure the item exists which can result in improved performance because some additional SLNet calls can be avoided. -If you do not know the item exists, you should use the IDms.GetElement(DmsElementId), IDms.GetView(int) or IDms.GetAgent(int) method. - -Behavior prior to this RN: +Behavior prior to this change: ```csharp var dms = protocol.GetDms(); @@ -41,7 +36,7 @@ var parameter = element.GetStandaloneParameter(10); parameter.SetValue(100); // Throws ElementStoppedException in case the State property of the ElementInfoEvent message obtained in the GetElement call indicates the element is stopped. In this case no server call is executed. ``` -Behavior since this RN: +Behavior since this change: ```csharp var dms = protocol.GetDms(); @@ -59,49 +54,48 @@ var parameter = element.GetStandaloneParameter(10); parameter.SetValue(100); // Does not check State property of the ElementInfoEvent message obtained in the GetElement call indicates the element is stopped. Server call is executed. ``` -**Breaking changes** - -Note also that the API has some breaking changes with regard to exceptions that are being thrown because the State property for an element is not checked anymore before a set executes. -This means that some calls no longer throw an ElementStoppedException but instead a ElementNotFoundException (or no exception at all). -Refer to the XML documentation on the methods to see if/when an exception is now thrown. - -- IDmsElement.GetStandaloneParameter\ no longer throws an ElementNotFoundException -- IDmsElement.GetTable no longer throws an ElementNotFoundException -- IDmsColumn.GetAlarmLevel no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsColumn.GetDisplayValue no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsColumn\.GetValue no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsColumn.Lookup no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsColumn\.SetValue no longer throws an exception -- IDmsStandaloneParameter.GetAlarmLevel no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsStandaloneParameter.GetDisplayValue no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsStandaloneParameter\.GetValue no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsStandaloneParameter\.SetValue no longer throws an exception -- IDmsTable.AddRow no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsTable.DeleteRow no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsTable.DeleteRows no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsTable.GetDisplayKey no longer throws an ElementStoppedException but instead will return null if the element is stopped -- IDmsTable.GetDisplayKeys no longer throws an ElementStoppedException but instead will return an empty set if the element is stopped -- IDmsTable.GetPrimaryKey no longer throws an ElementStoppedException but instead will return null if the element is stopped -- IDmsTable.GetPrimaryKeys no longer throws an ElementStoppedException but instead will return an empty set if the element is stopped -- IDmsTable.GetRow no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsTable.GetRows no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsTable.RowExists no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped -- IDmsTable.SetRow no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped - -**Updated/changed SLNet calls** +##### Breaking changes + +Some breaking changes have been introduced in the API with regard to exceptions that are thrown because the *State* property for an element is no longer checked before a set is executed. This means that some calls no longer throw an ElementStoppedException but instead an ElementNotFoundException or no exception at all. + +To see if and when an exception is thrown, refer to the XML documentation on the methods. + +- IDmsElement.GetStandaloneParameter\ no longer throws an ElementNotFoundException. +- IDmsElement.GetTable no longer throws an ElementNotFoundException. +- IDmsColumn.GetAlarmLevel no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsColumn.GetDisplayValue no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsColumn\.GetValue no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsColumn.Lookup no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsColumn\.SetValue no longer throws an exception. +- IDmsStandaloneParameter.GetAlarmLevel no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsStandaloneParameter.GetDisplayValue no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsStandaloneParameter\.GetValue no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsStandaloneParameter\.SetValue no longer throws an exception. +- IDmsTable.AddRow no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsTable.DeleteRow no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsTable.DeleteRows no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsTable.GetDisplayKey no longer throws an ElementStoppedException but instead will return null if the element is stopped. +- IDmsTable.GetDisplayKeys no longer throws an ElementStoppedException but instead will return an empty set if the element is stopped. +- IDmsTable.GetPrimaryKey no longer throws an ElementStoppedException but instead will return null if the element is stopped. +- IDmsTable.GetPrimaryKeys no longer throws an ElementStoppedException but instead will return an empty set if the element is stopped. +- IDmsTable.GetRow no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsTable.GetRows no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsTable.RowExists no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. +- IDmsTable.SetRow no longer throws an ElementStoppedException but instead will throw an ElementNotFoundException if the element is stopped. + +##### Updated/changed SLNet calls Additionally, some changes have been made to the SLNet calls that are executed in the background: -- When info for a single view is requested, the GetInfo message of type ViewInfo will now have the viewId mentioned in the ExtraData property of the SLNet call. If the request is sent to a DataMiner verion that supports this (see RN41169, then DataMiner will only proivde info in the response for that view instead of all. -- When property configurations are requests, the GetINfo message of type PropertyConfiguration will now include type requested type (e.g. ELEMENT, SERVICE or VIEW) so rthe response only includes the property configurations of the requested type. -- The ReferencedVersion property of IDmsProtocol will now be obtained via a GetInfo SLNet call of type Protocols instead of the GetProtocolMessage. Perfomrance tests indicate that this is a less impacting call. +- When info for a single view is requested, the *GetInfo* message of type *ViewInfo* will now have the *viewId* mentioned in the *ExtraData* property of the SLNet call. If the request is sent to a DataMiner version that supports this (see [RN 41169](xref:General_Feature_Release_10.5.1#slnet-getinfo-messages-for-the-propertyconfiguration-and-viewinfo-types-now-support-retrieving-information-for-a-specific-item-id-41169)), DataMiner will only provide info in the response for that view instead of all. +- When property configurations are requested, the *GetInfo* message of type *PropertyConfiguration* will now include the requested type (e.g. ELEMENT, SERVICE, or VIEW) so the response only includes the property configurations of the requested type. +- The *ReferencedVersion* property of *IDmsProtocol* will now be obtained via a *GetInfo* SLNet call of type *Protocols* instead of a *GetProtocolMessage* call. Performance tests indicate that this is a less impacting call. -Note that only DataMiner versions where RN 41169 is implemented DataMiner will respond with only the requested information. If the request is made to an older DataMiner version, -all info will be in the response. In that case, class library will just filter out the needed info. +Note that only in DataMiner versions where [RN 41169](xref:General_Feature_Release_10.5.1#slnet-getinfo-messages-for-the-propertyconfiguration-and-viewinfo-types-now-support-retrieving-information-for-a-specific-item-id-41169) is implemented, DataMiner will respond with only the requested information. If the request is made to an older DataMiner version, all info will be in the response. In that case, the class library will just filter out the needed info. ### 1.1.1.13 -#### New Feature - Added SendMessages method to ICommunications interface +#### New feature - SendMessages method added to ICommunications interface The ICommunications interface has been extended with the following method: From 08bdd8be42ae7f9038c6c2f4748aa01bbc786219 Mon Sep 17 00:00:00 2001 From: Pedro Debevere <97611683+PedroDebevere@users.noreply.github.com> Date: Mon, 18 Nov 2024 13:26:57 +0100 Subject: [PATCH 5/6] Update release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md Co-authored-by: Marieke Goethals <94605575+MariekeGO@users.noreply.github.com> --- .../Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md b/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md index 73addf4ed0..dea146cb41 100644 --- a/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md +++ b/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md @@ -87,7 +87,7 @@ To see if and when an exception is thrown, refer to the XML documentation on the Additionally, some changes have been made to the SLNet calls that are executed in the background: -- When info for a single view is requested, the *GetInfo* message of type *ViewInfo* will now have the *viewId* mentioned in the *ExtraData* property of the SLNet call. If the request is sent to a DataMiner version that supports this (see [RN 41169](xref:General_Feature_Release_10.5.1#slnet-getinfo-messages-for-the-propertyconfiguration-and-viewinfo-types-now-support-retrieving-information-for-a-specific-item-id-41169)), DataMiner will only provide info in the response for that view instead of all. +- When info for a single view is requested, the *GetInfo* message of type *ViewInfo* will now have the *viewId* mentioned in the *ExtraData* property of the SLNet call. If the request is sent to a DataMiner version that supports this (see [RN 41169](xref:General_Feature_Release_10.5.1#slnet-getinfo-messages-for-the-propertyconfiguration-and-viewinfo-types-now-support-retrieving-information-for-a-specific-item-id-41169)), DataMiner will only provide info in the response for that view instead of for all views. - When property configurations are requested, the *GetInfo* message of type *PropertyConfiguration* will now include the requested type (e.g. ELEMENT, SERVICE, or VIEW) so the response only includes the property configurations of the requested type. - The *ReferencedVersion* property of *IDmsProtocol* will now be obtained via a *GetInfo* SLNet call of type *Protocols* instead of a *GetProtocolMessage* call. Performance tests indicate that this is a less impacting call. From 0d815cda1c514118f6fc9269bd12ea208b93d6ee Mon Sep 17 00:00:00 2001 From: MariekeGO <94605575+MariekeGO@users.noreply.github.com> Date: Tue, 19 Nov 2024 08:24:08 +0100 Subject: [PATCH 6/6] Added GetElement link --- .../Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md b/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md index dea146cb41..2e7e9c8ede 100644 --- a/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md +++ b/release-notes/Code_Libraries/Skyline.DataMiner.Core/Skyline.DataMiner.Core.DataMinerSystem/Skyline_DataMiner_Core_DataMinerSystem_Range_1.1.md @@ -58,7 +58,7 @@ parameter.SetValue(100); // Does not check State property of the ElementInfoEven Some breaking changes have been introduced in the API with regard to exceptions that are thrown because the *State* property for an element is no longer checked before a set is executed. This means that some calls no longer throw an ElementStoppedException but instead an ElementNotFoundException or no exception at all. -To see if and when an exception is thrown, refer to the XML documentation on the methods. +To see if and when an exception is thrown, refer to the documentation on the methods in the API section (e.g. [GetElement](xref:Skyline.DataMiner.Core.DataMinerSystem.Common.IDma.GetElement*)). - IDmsElement.GetStandaloneParameter\ no longer throws an ElementNotFoundException. - IDmsElement.GetTable no longer throws an ElementNotFoundException.