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.

Architektur Datenanbieter
Abbildung 1: Architektur der Datenanbieter-Anbindung an das Taurus® DataProcurement
Die Konsumenten erhalten die jeweilige Daten-Schnittstelle durch den Zugriff auf die Schnittstellenmethoden von ITaurusPlatform. Es muss darauf geachtet werden, dass die zurückgelieferten Schnittstellenobjekte remotingfähig sind. Dies wird erreicht, indem die Implementierung der Daten-Schnittstelle von der Basisklasse AbstractBaseRemoteDataAccess ableitet.

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# Copy imageKopieren
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;
        }
    }
}
Die Klasse SampleImplementation leitet von der Basisklasse AbstractBaseRemoteDataAccess ab (für Remoting-Zugriff auf die Schnittstellenobjekte durch die Konsumenten) und implementiert die Daten-Schnittstelle IDirectoryService.
C# Copy imageKopieren
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"; }
        }
    }    
}