Table of Contents

ExtendedFilter (.NET/Webservice)

Informationen

  • Kategorien: Kernel | Webservice (Server)
  • Version: 21.0.0.11226
  • Veröffentlichungsdatum: Mittwoch, 8. November 2017
  • Entwickler: Schulze
  • Benötigt Datenbankänderung: Nein
  • Betreff: Erweiterte Filter in .NET-Schnittstelle/Webservice

Beschreibung

Für die erweiterte Filtermöglichkeiten in der .NET- bzw. der Webservice-Schnittstelle wurden 4 neue Datenstrukturen und eine neue Funktion eingebaut.

Die Datenstrukturen dienen der Erstellung eines komplexen Filters, welcher in den Funktionen SelectEntityList und SelectEntityListAndGetData statt SimpleClassFilter bzw. ServerFileFilter verwendet werden kann.

Die neue Webservice-Funktion GetServerFileFilter (Wrapper für .NET-Schnittstelle: PitFM.Model.Filter.ExtendedFilter.GetFileFilter) gibt einen als Datei gespeicherten vorhandenen Filter mit dieser neuen Datenstruktur zurück.

Überblick über die Datenstrukturen:

Namespace: PitFM.Model.Filter

ExtendedFilter

-- bestimmt die Klasse der Entities für den Filter -- kann ein oder mehrere EntityFilter enthalten (ODER-verknüpft)

EntityFilter

-- kann eine Einschränkung der Entity-Klasse festlegen (abgeleitete Klasse) -- kann ein oder mehrere AttributeFilter enthalten (UND-verknüpft)

AttributeFilter

-- bestimmt das Attribut für Filterkriterien -- kann ein oder mehrere ValueFilter enthalten (ODER-verknüpft)

ValueFilter

-- bestimmt den konkreten Datenwert für ein Filterkriterium -- kann statt dem Wert einen Verweis auf ein Sub-Entity haben (FilterOperator EntityReference -> „ist gleich“ wie Entity XYZ) -- kann statt dem Wert eine Liste mit Werten in Form von Sub-ValueFilter-Objekten haben, die Art der Verknüpfung ist abhängig vom FilterOperator (AndGroup bzw. OrGroup)

Hinweis:

=> Beispiele siehe Dokument im Anhang

Dokumente

DO_081117_114144

Beispielcode

               WsModelNew.BaseFilter filter;
                {
                    GetServerFileFilterRequest request = new GetServerFileFilterRequest();
                    request.SessionID = s.Id;
                    request.Filename = string.Format("Test{0}.xml", n);
                    var response = svc.GetServerFileFilter(request);
                    filter = response.Result;
                }

                {
                    SelectEntityListHandleAndGetDataRequest request = new SelectEntityListHandleAndGetDataRequest();
                    request.SessionID = s.Id;
                    request.Filters = new pitfmWcfClient.WsModelNew.BaseFilter[1];
                    request.Filters[0] = filter;
                    request.Request = new pitfmWcfClient.WsModelNew.EntityListRequest();
                    request.Request.ComplexAttributeNames = new string[2];
                    request.Request.ComplexAttributeNames[0] = "Name_number";
                    request.Request.ComplexAttributeNames[1] = "First_name";
                    var response = svc.SelectEntityListHandleAndGetData(request);
                    Console.WriteLine("### n={0} => {1} Objekte", n, response.Result.CurrentSize);
                }