Implementierung Dynamic Services

Sinn und Zweck der Dynamic Services

Durch die Dynamic Services können Sie in die SQL-Statements in den xml-Dateien eingreifen und so die Syntax des SQL-Statements dynamisch bearbeiten. Dadurch können u.a. die Suchen an die Sprache des Users angepasst werden oder die Suche bei bestimmten Bedingungen eingeschränkt werden.

Implementierung

Aufbau der Dynamic Services

Die Dynamic Services liegen im Innosoft.CRM.Core-Namespace unter Services. Diese Services implementieren alle das Interface IDynamicObject, was bedeutet dass alle Dynamic Services die Funktion GetValues beinhalten müssen. GetValues erwartet als Eingabeparameter ein Stringarray. und gibt einen string zurück, der dann in das SQL geschrieben wird. Der Service kann auch weitere Funktionen beinhalten, diese müssen allerdings "params string[] arg" als Eingabeparameter beinhalten und einen string zurückgeben. Des weiteren kann der Service auch einen Konstruktor beinhalten. In diesem können dann globale Variablen initialisiert werden, die mehrere Funktionen verwenden können. In dem Service lässt sich aus den Stream Parametern auslesen, die zur Initialisierung von globalen Variablen genutzt werden können. Dafür müssen Sie die Funktion Utils.GetRequestStreamValues(HttpContext.Current.Request) aufrufen . Diese liefert ein Dictionary mit string-object-Paaren zurück. Setzen Sie auch einen Defaultwert, da die Funktion auch NULL zurückliefern kann. Aus diesem Dictionary können Sie den benötigten Wert auslesen. Die Schlüssel sollen alle mit "cus_" beginnen.

Implementierung in der App

In der URL mit der auch die Dynamic Search aufgerufen wird, werden auch die Werte, die evtl. in dem Dynamic Service gebraucht werden, initialisiert. Diese werden einfach als Parameter in der URL angegeben d.h. auf den Namen ("cus_" und eigentlicher Name) folgt ein Gleichheitszeichen und Wert der übergeben werden soll (z.B.: DynamicSearch/Window/Machine?cus_Value=1).

Implementierung in der XML-Datei

Die Dynamic Services werden innerhalb von drei geschweiften Klammern aufgerufen. In den geschweiften Klammern steht dann der Namespace des Services (Innosoft.CRM.Core.Service.DynamicObjectsService.DynamicObjects) gefolgt von dem eigentlichen Namen des Dynamic Services. Möchten Sie die standardmäßige GetValues aufrufen, folgt auf den Namen der Klasse ein Fragezeichen und die Parameter, die der Funktion übergeben werden sollen (z.B.: Innosoft.CRM.Core.Service.DynamicObjectsService.DynamicObjects.MachineService?Where). Um eine andere Funktion aufzurufen, folgt nach dem Namen des Services ein senkrechter Strich und daraufhin der Name der Funktion. Die Parameter werden nun wie in der GetValues Funktion übergeben (z.B.: Innosoft.CRM.Core.Service.DynamicObjectsService.DynamicObjects.GeomapService|GetWhereClause).