|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.bsvrz.pat.datgen.generator.main.DataGenerator
public class DataGenerator
Generator-Applikation zur zeitlich gesteuerten Erzeugung von Online-Daten beliebiger Attributgruppen zu Test- und Analysezwecken. Über Aufrufparameter können Attributgruppe, Aspekt, Simulationsvariante und die Objekte, für die die Daten erzeugt werden, die Art der Anmeldung (als Quelle oder Sender) und das zeitliche Verhalten vorgegeben werden. Die erzeugten Daten können bei Bedarf beim Versand protokolliert werden. Aufruf:
java
de.bsvrz.pat.datgen.generator.main.DataGenerator [-protModul=] [-datei=] [-autark] []
([-zyklus=[-]] [-anzahl=] [-spreizung=] [-zeit=] [-rolle=]
–objekte= -daten=)+
oder java de.bsvrz.pat.datgen.generator.main.DataGenerator
[-protModul=] -eingabe= [-basisUri=] [-zeitstempel=] [-validieren=ja|nein] [-datei=]
[-autark] [] ([-rolle=] [-objekte= -daten=])+
Beispiel: java de.bsvrz.pat.datgen.generator.main.DataGenerator -ausgabe=kopf -objekte=vrz.aachen:MQ -daten=atg.verkehrswerte:asp.analyseWerte
Es können also eine oder mehrere Anmeldespezifikationen beim Start des Programms angegeben werden. Jede Anmeldespezifikation kann optional die Zykluszeit,
Anmelde-Rolle, die Art der Protokollierung und die Angabe der Objekte, für die die Anmeldung durchgeführt werden soll, enthalten. Wenn diese Argumente
weggelassen werden, dann übernehmen sie ihren Wert aus der vorhergegangenen Anmeldespezifikation. Über die Datenspezifikation muss angegeben werden, welche
Daten angemeldet werden sollen.
Die Zykluszeit kann durch eine relative Zeitangabe
spezifiziert werden.
Für den Platzhalter anmeldeRolle
können die Werte quelle
bzw. sender
eingesetzt werden, um zu signalisieren, dass die
anzumeldenden Daten als Quelle an beliebige Empfänger bzw. als Sender an eine Senke übertragen werden sollen. Wenn keine Anmelde-Rolle angegeben wurde, wird
standardmäßig der Wert empfänger
benutzt.
Mit dem Platzhalter objektSpezifikationen
können mehrere Objekte durch Komma getrennt spezifiziert werden. Ein Objekt wird entweder durch die
Objekt-Id oder vorzugsweise durch die PID des Objekts spezifiziert. Optional kann hinter der Objekt-ID oder PID mit Doppelpunkt getrennt ein Mengenname
angegeben werden; damit wird dann nicht das angegebene Objekt, sondern alle in der angegebenen Menge unterhalb des angegebenen Objekts enthaltenen Objekte
spezifiziert.
Mit dem Platzhalter datenSpezifikation
werden durch Doppelpunkt getrennt die PID der Attributgruppe, die PID des Aspekts und die
Simulationsvariante für die Anmeldung und die Datenerzeugung spezifiziert. Die Simulationsvariante kann (einschließlich des vorhergehenden Doppelpunkts)
weggelassen werden um die Default-Simulationsvariante (i.a. 0) zu benutzen.
Nach der Anmeldung auf die spezifizierten Daten werden für jede Anmeldespezifikation unabhängig zyklisch Daten für die jeweiligen Objekte generiert. Dabei
wird das Senden der Datensätze über den im Platzhalter spreizungsGrad
angegeben Wert (in Prozent) über den entsprechenden Anteil der Zykluszeit
homogen verteilt. Bei der Angabe -zyklus=1m -spreizung=50
werden minütlich Datensätze für die Objekte generiert und innerhalb der ersten 30
Sekunden eines jeden Zyklus übertragen. Wenn kein Spreizungsgrad angegeben wurde, wird der Wert 0
benutzt. Dabei werden die Datensätze der
einzelnen Objekte in jedem Zyklus im Block übertragen.
Die Anzahl der Zyklen, kann über den Platzhalter anzahlZyklen
vorgegeben werden. Wenn keine Anzahl vorgegeben ist, dann wird der Wert 0 benutzt,
der als unbeschränkt interpretiert wird.
Beim Versenden von Datensätzen können diese mit Hilfe der Ausgabefunktion des Onlineprotokollierers ausgegeben werden.
Beim Erzeugen von Daten berücksichtigt der Datengenerator die im Metamodell angegebenen Wertebereichsgrenzen. Ansonsten sind die erzeugten Daten im
wesentlichen zufällig, d.h. aus fachlicher Sicht i.a. nicht sinnvoll.
Nested Class Summary | |
---|---|
private static class |
DataGenerator.DataCycler
Datenerzeugungs-Thread |
private static class |
DataGenerator.QueueSurrogate
Klasse die statt der Klasse Queue zum Versenden eingesetzt wird, aber die Datensätze ungepuffert an die Datenverteiler-Applikationsfunktionen weitergibt. |
private static class |
DataGenerator.Sender
Implementiert den Sende-Thread |
Field Summary | |
---|---|
private static ClientDavInterface |
connection
Verbindung zum DaV |
private static DataModel |
dataModel
Das Datenmodell |
private static Debug |
debug
Die Debug-Ausgabe |
private static DataKindDeterminer |
dkd
Das Objekt zur Bestimmung der Datenart |
private static boolean |
hasSendControl
Gibt an, ober der Datengenerator Sendesteuerung wünscht oder nicht. |
private static boolean |
isAutarkic
Zeigt an, ob Datengenerator autark arbeiten, d. |
private static boolean |
isGenerator
|
private static boolean |
isSendControlValid
true , wenn Sendesteuerung verlangt wird. |
private static int |
numberOfThreads
Anzahl der laufenden Datenerzeugungs-Threads |
private static ProtocolModuleConnector |
pmc
Andockstelle für Protokollierungsmodule |
private static Set |
registeredObjects
Liste der Objekte, für die Sendeerlaubnis vorliegt |
private static SendInterface |
sendQueue
Sende-Queue |
private static long |
waitForDataRequests
Wartezeit nach dem Anmelden , damit die Sendesteuerungen eintreffen können, bevor Daten gesendet werden |
Fields inherited from interface de.bsvrz.dav.daf.main.ClientSenderInterface |
---|
START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION |
Constructor Summary | |
---|---|
private |
DataGenerator(ClientDavParameters parameters,
List subscriptionInfos)
Erzeugt einen neuen Datengenerator, der Zufallsdaten erzeugt und als Datentelegramme versendet |
private |
DataGenerator(ClientDavParameters parameters,
List subscriptionInfos,
XmlFormatReader xfr)
Erzeugt einen neuen Datengenerator, der Daten aus einer XML-Protokolldatei einliest und als Datentelegramme versendet |
Method Summary | |
---|---|
static void |
checkSubscription(List subscriptions)
Anmeldungen durchgehen und den Wunsch nach Sendesteuerung entsprechend setzen. |
void |
dataRequest(SystemObject object,
DataDescription dataDescription,
byte state)
Sendesteuerung des Datenverteilers an die Applikation. |
boolean |
getIsAutarkic()
Liefert Information, ob Datengenerator autark läuft oder nicht. |
private static boolean |
hasDataRequest(ResultData data)
Methode zur Feststellung, ob angegebenes Objekt gesendet werden darf |
boolean |
isRequestSupported(SystemObject object,
DataDescription dataDescription)
Diese Methode muss von der Applikation implementiert werden, um zu signalisieren, ob Sendesteuerungen gewünscht sind und mit der Methode dataRequest verarbeitet werden. |
static void |
main(String[] arguments)
Hauptfunktion des Datengenerators |
private List |
register(List subscriptionInfos)
Registrierung durchführen |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static DataKindDeterminer dkd
private static boolean isGenerator
private static boolean isSendControlValid
true
, wenn Sendesteuerung verlangt wird.
private static Set registeredObjects
private static final SendInterface sendQueue
private static long waitForDataRequests
private static ClientDavInterface connection
private static DataModel dataModel
private static Debug debug
private static boolean isAutarkic
private static int numberOfThreads
private static ProtocolModuleConnector pmc
private static boolean hasSendControl
Constructor Detail |
---|
private DataGenerator(ClientDavParameters parameters, List subscriptionInfos, XmlFormatReader xfr) throws Exception
subscriptionInfos
- List
e der anzumeldenden Datenxfr
- XmlFormatReader zum Interprtieren der XML-Dateiparameters
- ClientDavParameters
mit den Kommandozeilenparametern
Exception
- bei Problemenprivate DataGenerator(ClientDavParameters parameters, List subscriptionInfos) throws Exception
parameters
- ClientDavParameters
der ApplikationsubscriptionInfos
- List
e der anzumeldenden Daten
Exception
- bei ProblemenMethod Detail |
---|
public static void checkSubscription(List subscriptions)
subscriptions
- Liste der Anmeldungepublic void dataRequest(SystemObject object, DataDescription dataDescription, byte state)
dataRequest
in interface ClientSenderInterface
object
- Das in der zugehörigen Sendeanmeldung angegebene Objekt, auf das sich die Sendesteuerung bezieht.dataDescription
- Beschreibende Informationen zu den angemeldeten Daten auf die sich die Sendesteuerung bezieht.state
- Status der Sendesteuerung. Kann einen der Werte START_SENDING
, STOP_SENDING
, STOP_SENDING_NO_RIGHTS
,
STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
enthalten.public boolean getIsAutarkic()
true
ist, falls der Datengenerator autark läuft. Sonst ist es false
.private static boolean hasDataRequest(ResultData data)
data
- Der zu prüfende Datensatz
public boolean isRequestSupported(SystemObject object, DataDescription dataDescription)
dataRequest
verarbeitet werden. Da hier Sendesteuerung erwünscht ist, liefert diese Methode true
zurück.
isRequestSupported
in interface ClientSenderInterface
object
- Das in der zugehörigen Sendeanmeldung angegebene System-Objekt.dataDescription
- Die in der zugehörigen Sendeanmeldung angegebenen beschreibenden Informationen der angemeldeten Daten.
true
, falls Sendesteuerungen gewünscht sind, sonst false
.public static void main(String[] arguments)
arguments
- String[] mit Aufrufargumentenprivate List register(List subscriptionInfos) throws Exception
subscriptionInfos
- List
mit den Anmeldeinformationen
Exception
- bei Problemen
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |