Implementierung Dynamic Services
Inhaltsverzeichnis
Sinn und Zweck der Dynamic Services
Implementierung
Aufbau des Dynamic Services
Implementierung in der App
Implementierung in der XML-Datei
1. Sinn und Zweck der Dynamic Services
Durch die Dynamic Services kann man in die SQL-Statements in den xml-Dateien eingreifen und so die Syntax des SQL-Statements dynamisch bearbeiten. Dadurch können unter anderen die Suchen an die Sprache des Users angepasst werden oder die Suche bei bestimmten Bedingungen eingeschränkt werden.
2. Implementierung
a. Aufbau des 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ück geben. 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 den Service lässt sich des weiteren aus den Stream Parameter auslesen, die man zur Initialisierung von globalen Variablen nutzen kann. Dafür musst man die Funktion Utils.GetRequestStreamValues(HttpContext.Current.Request) aufrufen . Diese liefert einen Dictionary mit string-object-Paaren zurück. Hier sollte man auch einen Defaultwert setzen da die Funktion auch NULL zurück liefert kann. Aus diesem Dictionary kann man dann den benötigten Wert auslesen. Die Schlüssel sollen alle mit "cus_" beginnen.
b. Implementierung in der App
In der URL mit der auch die Dynamic Search aufgerufen wird werden auch die Werte, die man evt. in dem Dynamic Service braucht, initialisieren. Diese werden einfach als Parameter in der URL angegeben d.h. auf dem Namen("cus_" und eigentlicher Name) folgt ein Gleichheitszeichen und Wert den man übergeben möchte.(z.B.: DynamicSearch/Window/Machine?cus_Value=1)
c. Implementierung in der XML-Datei
Die Dynamic Services werden innerhalb von drei geschleiften Klammern aufgerufen. In den geschleiften Klammern steht dann der Namespace des Services (Innosoft.CRM.Core.Service.DynamicObjectsService.DynamicObjects) gefolgt von dem eigentlichen Namen des Dynamic Services. Will man nun die standardmäßige GetValues aufrufen folgt auf dem Namen der Klasse ein Fragezeichen und die Parameter, die man der Funktion übergeben möchte (z.B.: Innosoft.CRM.Core.Service.DynamicObjectsService.DynamicObjects.MachineService?Where). Will man eine andere Funktion aufrufen folgt nach dem Name des Services ein senkrechter Strich und daraufhin der Name der Funktion. Die Parameter werde nun wie in der GetValues Funktion übergeben (z.B.: Innosoft.CRM.Core.Service.DynamicObjectsService.DynamicObjects.GeomapService|GetWhereClause).