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
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);
}