hilfe bei BIRT

casusangelus

Grünschnabel
Hi!
Ich brauche wen, der sich mit BIRT auskennt. Ich habe das programm letztens entdeckt und das tutorial durchgearbeitet, aber jetzt komme ihc nciht weiter.
ich möchte als datenquelle für einen bericht ein java programm bentuzen. dazu habe ihc eins geschrieben, was mir mehrere zufallszahlen ausgibt. wie kann ich das programm als datenquelle benutzen?
ich hoffe es kann mri jemand helfen!
 
danke schön, das hat mir schonmal sehr geholfen. habe das eben ausprobiert mit einer Funktion "Zufall", die ich in dem Programm erstellt habe. funktioniert das denn auch, wenn ich nur die main funktion in dem programm habe?
 
In BIRT ist es ja bei einer Datenquelle wie folgt:
Du rufst ne Funktion auf (auf nem Objekt oder statisch,...). Diese Funktion liefert dir irgendwelche Rückgabewerte und die werden dann in BIRT verarbeitet.
Wenn du mit main die public static void main meinst:
Die kannst du zwar aufrufen und die wird auch ausgeführt aber sie ist eben void. d.h. du kannst dort keine Daten rausziehen. Du solltest BIRT in etwa vergleichen mit einer fremden Klasse die auf deine Java Klasse zugreift.
Du kannst dein Java Objekt also instanziieren, bestimmte Methoden aufrufen um es z.B. in irgendeinen Zustand zu versetzen und dann per getter oder sonstwas Daten auslesen.
 
ich habe ein neues problem ^^
ich habe in meinem programm die funktion quad(int x), die mir eine quadratzahl ausgeben soll. wenn ich die jetzt in das dataset einbaue mit:
DataSourceClass = new Packages.uebungen.Beispiel();
DataSource=DataSourceClass.quad(int x);
sagt er, "identifier is a reserved word".
wenn ich es so einbaue:
DataSourceClass = new Packages.uebungen.Beispiel();
DataSource=DataSourceClass.quad(x);
sagt er, "cannot find function quad.", genauso wie wenn ihc das x weglasse.
wie baue ich das richtig in das data set ein?
 
Die Programmierung in BIRt erfolgt mit Hilfe von Rhino Script. Rhino Script ist der Programmiersprache Java sehr ähnlich, bis auf die Tatsache, dass Rhino untypisiert ist

Du hast die Funktion public int quad(int x). wie würdest du sie in Java aufrufen? x muss natürlich einen Wert haben ansonsten ist x null und eine Funktion quad(Object o) existiert nicht. auf quad(int x) passt null nicht so ganz.

Probier mal:
x = 5;
DataSourceClass = new Packages.uebungen.Beispiel();
DataSource=DataSourceClass.quad(x);

Ich weiß nicht genau was du machen willst aber um Quadratzahlen oder sonstige Rechnungen durchzuführen bietet BIRT zahlreiche andere Möglichkeiten. Du musst also nicht jede kleinere Rechnung in ne Java Klasse auslagern. Aber ich nehme an du testest bisher nur.
 
der sagt immer noch, "cannot find function quad". :(

es geht mir jetzt nich unbedingt darum, quadratzahlen auszugeben, sondern ein bisschen rumzuprobieren, mit birt funktionen aus java programmen aufzurufen und quadratzahlen war jetzt das einfachste was mir eingefallen ist(da ich noch nich sooo viel kann^^)
 
Könntest du evtl nen Auszug aus deinen Scripts und der Java Klasse posten. Ansonsten läuft es auf raten raus.
 
also ich weiß nicht wieso, aba als ihc es jetzt nochmal ausprobiert habe, hat es plötzlich funktioniert :):)

jetzt kommt aber gleich die nächste frage ^^
wie baue ich denn so einen bericht in ein javaprogramm ein? am besten so, dass er die daten aus dem programm kriegt und der bericht dann immer wieder erneuert wird(verständlich?). habe mir schon diese seite: http://www.eclipse.org/birt/phoenix/deploy/reportEngineAPI.php angeguckt, aba da meine englisch und programmierkenntnisse noch nicht so gut sind, habe ihc leider nicht wirklich was verstanden :(
 
Leider verstehe ich nicht so ganz was du meinst.

Wenn du BIRT in dein eigenes Java Programm integrieren möchtest warst du da auch schon auf der richtigen Seite. Die ReportEngine die du dazu in dein Programm integrieren musst ist nicht sehr leicht zu bedienen und schon gar nicht zu integrieren.
Mehr als in der Doku steht kann ich dir leider nicht erklären und ja es ist wirklich so schwierig. BIRT ist ein riesiger Klotz. Die Integration beschränkt sich deshalb nicht auf ein paar Jars die man in den Klassenpfad legt.
Es gibt auch sehr viele Einstellungen um einen Bericht zu rendern. Die musst du BIRT in deinem Programm anhand von Objekten übergeben. Ohne sehr gute Java Kenntnisse ist die Integration nicht durchführbar in meinen Augen.


Um Berichte auszuführen ist glaube ich beim Download der ReportEngine ne .bat Datei dabei. Der kannst du auf Kommandozeilenebene per Parameter eine Berichtsdatei, das Format übergeben sowie ne Zieldatei angeben. Wäre auch ne Möglichkeit von deinem Java Programm das Teil auf Konsole zu starten und die resultierende Datei danach zu öffnen. Ist jedenfalls sehr viel einfacher als BIRT in das Programm zu integrieren.
 
Zurück