Die Hauptanforderung an die Schicht der Datensammlung aus der Sicht der darüberliegenden Modellerstellung ist es, die heterogene Natur der verschiedenen Datenquellen zu verschatten und somit eine einzige (homogene) Schnittstelle zur Abfrage dieser Daten zu ermöglichen.
Dies wird dadurch realisiert, daß allen Agenten, die potentiell Kontakt mit der Modellerstellungsschicht haben, die einheitliche Schnittstelle DataProvider implementieren. Deren wesentlicher Bestandteil ist die Festlegung der Datenabfrage und des Formates der zurückgelieferten Daten (in diesem Falle Zeitreihen) bzw. die Ausnahmeregelungen für Fehlerfälle.
Hinsichtlich der Implementierung liegt es nahe, die Bestandteile eines Agenten in solche aufzuteilen, die generischen Charakter haben und solche die speziell für ein bestimmtes Einsatzgebiet angepaßt sein müssen und deren Spezifität höher ist.
Folgende Bestandteile sind im DataProvider implementiert:
Folgende Bestandteile müssen in einem Subagenten des Typs DataProvider implementiert sein:
Wie eingehend in beschrieben, müssen entsprechende Methoden implementiert werden, die die Steuerung von Datenquellen ermöglichen. So z.B. Methoden zur Initialisierung, Konfiguration, Abrage von Daten oder Beenden der Datensammlung, um nur einige zu nennen.
Aufgrund der Heterogenität der Datenquellen und der Beschaffenheit von MASA sind erst auf dieser Ebene solche Strukturen möglich bzw. nötig. Hierbei handelt es sich um einfache Datenhaltung, je nach zu erwartender Datenmengen in Form von Arrays/Vektoren oder beispielsweise auch sequenzieller Dateien.
Im DataProvider ist also der generische Teil der Funktionalität zu finden, der für alle Agenten gleichermaßen notwendig und wiederverwendbar ist, d.h. Gerüste für Schnittstellen, die Benutzeroberfläche, entsprechende Datentypen, -strukturen und Methoden. Im besonderen hervorzuheben ist die Tatsache, daß es sich hierbei um eine abstrakte Klasse handelt, da es nicht möglich oder sinnvoll wäre, einen DataProvider alleine zu instantiieren. Diesem würden in jedem Falle die eigentlichen Bestandteile zur Datensammlung bzw. -erfassung fehlen.
Demgegenüber muß die Schnittstelle im Subagenten entsprechend der spezifischen Anforderungen implementiert werden, d.h. das vorhandene Gerüst des DataProvider muß mit entsprechenden eigenen Methoden überschrieben werden.
An dieser Stelle sei auf eine Änderung im Makefile des Systems verwiesen. In Ergänzung zu make newagent wurde die Prozedur, das Gerüst für einen neuen Subagenten zu erstellen, in make newsubagent weitgehend automatisiert. Um das Gerüst für einen neuen Subagenten zu Erstellen, genügt ein Aufruf von make newsubagent, die Angabe des Superagenten (z.B. DataProvider) und des gewünschten Namens für den neuen Subagenten. Daraufhin werden die notwendigen Dateistrukturen, Links und Namenszuweisungen erstellt.