Das Taurus® DataProcurement ist ein Anwendungsrahmen zur
Beschaffung von Daten mit Hilfe von Datenanbietern.
Ein Datenanbieter ist ein Funktionsblock, der bestimmte
Programmierschnittstellen implementieren muss.
Die vorliegende Referenzdokumentation beschreibt die existierenden
Schnittstellen der Datenanbieter des Taurus® DataProcurement.
Architektur
Abbildung 1 zeigt die Architekur der Anbindung eines
Datenanbieters an das Taurus® DataProcurement.
Der Datenanbieter leitet von der Basisklasse
AbstractBaseProvider ab, die die Implementierung des
Funktionsblocks bereitstellt (IArgoPlugin,
IDataProcurementProvider).
Der Datenanbieter implementiert eine Datenanbieter-Schnittstelle
die durch das Taurus® DataProcurement verwendet wird und eine
Daten-Schnittstelle die einen direkten Zugriff der Konsumenten
erlauben.
Implementierungsbeispiel
In den folgenden Codeauszügen wird die Implementierung des
Datenanbieters SampleProvider gezeigt.
Die Klasse SampleProvider leitet von der Basisklasse
AbstractBaseProvider ab, implementiert die
Datenanbieter-Schnittstelle IDirectoryServiceProvider und
verwendet die Klasse SampleImplementation, die die
Implementierung der Daten-Schnittelle IDirectoryService enthält.
C# | Kopieren |
---|---|
using IFS.Common; using IFS.Taurus.DataProcurement.Support; using IFS.Taurus.DirectoryServiceProvider.Interface; using IFS.Taurus.DirectoryService.Interface; using IFS.Argo.Application; [assembly: PluginClass(typeof(SampleProviderNamespace.SampleProvider))] namespace SampleProviderNamespace { /// <summary> /// Datenanbieter SampleProvider: /// Implementierung der Datenanbieter-Schnittstelle (IDirectoryServiceProvider) /// </summary> public class SampleProvider : AbstractBaseProvider, IDirectoryServiceProvider { /// <summary> /// Name des Datenanbieters /// </summary> private const string NAME = "SampleProvider"; /// <summary> /// Gewichtung des Datenanbieters /// </summary> private const int WEIGHT = 1; /// <summary> /// Implementierung der Daten-Schnittstelle /// </summary> private SampleImplementation sampleImpl; /// <summary> /// Initialisiert eine neue Instanz der SampleProvider-Klasse. /// </summary> public SampleProvider() : base() { } /// <summary> /// Initialisiert den Funktionsblock. /// </summary> /// <returns>Erfolg der Ausführung</returns> public override ErrorCode Initialize() // IArgoPlugin { ErrorCode errorCode = base.Initialize(); this.sampleImpl = new SampleImplementation(this, this.dpCacheInstance); return errorCode; } /// <summary> /// Ruft den Namen des Datenanbieters ab. /// </summary> public override string Name // IDataProcurementProvider { get { return NAME; } } /// <summary> /// Ruft die Gewichtung des Datenanbieters ab. /// </summary> public override int Weight // IDataProcurementProvider { get { return WEIGHT; } } // Implementierung der Datenanbieter-Schnittstelle (IDirectoryServiceProvider) public ErrorCode GetDirectoryService(out IDirectoryService dirService) { dirService = this.sampleImpl; return ErrorCode.OK; } } } |
C# | Kopieren |
---|---|
using System.Collections.Generic; using IFS.Common; using IFS.Taurus.DataProcurement.Support; using IFS.Taurus.DataProcurementProvider.Interface; using IFS.Taurus.DirectoryService.Interface; using IFS.Taurus.DataProcurementCache.Interface; namespace SampleProviderNamespace { /// <summary> /// Datenanbieter SampleProvider: /// Implementierung der Daten-Schnittstelle (IDirectoryService) /// </summary> public class SampleImplementation : AbstractBaseRemoteDataAccess<IDirectoryService>, IDirectoryService { /// <summary> /// Initialisiert eine neue Instanz der SampleImplementation-Klasse. /// </summary> public SampleImplementation(IDataProcurementProvider prov, IDataProcurementCache cache) : base(prov, cache) { } // Implementierung der Daten-Schnittstelle (IDirectoryService) public ErrorCode Find(string serviceName, out IList<IDirectoryServiceInformation> serviceInfos) { ErrorCode result = ErrorCode.Invalid; serviceInfos = new List<IDirectoryServiceInformation>(); // Implementierung // ... return result; } public ErrorCode Register(IDirectoryServiceInformation serviceInfo) { ErrorCode result = ErrorCode.Invalid; // Implementierung // ... return result; } public ErrorCode Deregister(IDirectoryServiceInformation serviceInfo) { ErrorCode result = ErrorCode.Invalid; // Implementierung // ... return result; } public string Name { get { return "SampleDirectoryService"; } } } } |