PDA

View Full Version : Listendaten RPG --> Java



scireum_mha
12-03-09, 13:46
Hallo liebe RPG Spezialisten,

eine Frage aus dem Java Lager. Wir haben eine Lösung welche SQL Abfragen in schicke Excelreports konvertieren kann. Auf der Anwenderseite kam das Begehren auf auch die Ausgabe von RPG Programmen (mit komplexer Businesslogik) in schicken Exceltabellen zu bekommen.

Ich habe mich etwas umgesehen und mir sind folgende Ansätze eingefallen:

1. Physische Datei
Man bau die RPG Programme so um das Sie unter der Angabe einer Jobnummer in eine physische Datei schreiben.
Vorteil:
Klares Datenformat, einfach auszulesen und kann zur Not per JOIN einfach mit weiteren Daten angereichert werden.

2. DataQ
Man sendet die Ergebnisse als DataQEntry wobei da bei großen Auswertungen glaube ich nicht so super toll ist.

3. Spoolfile analysieren
Man liest ein Spoolfile aus und hofft das derjenige der da reinschreibt sich auch an die vereinbarte Schnittstelle hält.

4. Stored Procedure
Habe im Netz einen interessanten Artikel gefunden wie man aus einem RPG Programm eine SP macht.
Siehe: Midrange Programmer, OS/400 Edition, (http://www.itjungle.com/mpo/mpo031402-story06.html#)
Allerdingt wird bei diesem Beispiel nur ein Wert zurückgegeben. Hier als gleich die Frage. Kann man mit SPs aus RPG auch eine ganze Liste an Werten zurückgeben?.
Zweite Frage: Wird man von einem Admin erschossen weil die SPs die RPG Programme interaktiv callen oder läuft das dann auch wie SQL als prestarted Job?

Nun meine Hauptfrage an die AS400 Gurus:
Was macht denn am meißten Sinn? Gibt es noch andere Ansätze um Listendaten aus RPG in Java zu bekommen? Wir suchen auch nicht die Lösung die aus informationstechnischer Sicht die beste ist, sondern das beste Verhälntis zwischen Kotzen und Nutzen aufweist. Natürlich sollte die Lösung trotzdem so stabil sein das man ab und zu auch etwas schlaf bekommt.

Ich freue mich auf Ihre Anregungen.

Freundliche Grüße

Michael Haufler

BenderD
12-03-09, 15:17
... naja, die Grundfrage ist zunächst einmal was diese RPG Programme jetzt denn für Ausgaben machen und von wo die neuen Auswertungen aufgerufen werden sollen.


D*B


Hallo liebe RPG Spezialisten,

eine Frage aus dem Java Lager. Wir haben eine Lösung welche SQL Abfragen in schicke Excelreports konvertieren kann. Auf der Anwenderseite kam das Begehren auf auch die Ausgabe von RPG Programmen (mit komplexer Businesslogik) in schicken Exceltabellen zu bekommen.

Ich habe mich etwas umgesehen und mir sind folgende Ansätze eingefallen:

1. Physische Datei
Man bau die RPG Programme so um das Sie unter der Angabe einer Jobnummer in eine physische Datei schreiben.
Vorteil:
Klares Datenformat, einfach auszulesen und kann zur Not per JOIN einfach mit weiteren Daten angereichert werden.

2. DataQ
Man sendet die Ergebnisse als DataQEntry wobei da bei großen Auswertungen glaube ich nicht so super toll ist.

3. Spoolfile analysieren
Man liest ein Spoolfile aus und hofft das derjenige der da reinschreibt sich auch an die vereinbarte Schnittstelle hält.

4. Stored Procedure
Habe im Netz einen interessanten Artikel gefunden wie man aus einem RPG Programm eine SP macht.
Siehe: Midrange Programmer, OS/400 Edition, (http://www.itjungle.com/mpo/mpo031402-story06.html#)
Allerdingt wird bei diesem Beispiel nur ein Wert zurückgegeben. Hier als gleich die Frage. Kann man mit SPs aus RPG auch eine ganze Liste an Werten zurückgeben?.
Zweite Frage: Wird man von einem Admin erschossen weil die SPs die RPG Programme interaktiv callen oder läuft das dann auch wie SQL als prestarted Job?

Nun meine Hauptfrage an die AS400 Gurus:
Was macht denn am meißten Sinn? Gibt es noch andere Ansätze um Listendaten aus RPG in Java zu bekommen? Wir suchen auch nicht die Lösung die aus informationstechnischer Sicht die beste ist, sondern das beste Verhälntis zwischen Kotzen und Nutzen aufweist. Natürlich sollte die Lösung trotzdem so stabil sein das man ab und zu auch etwas schlaf bekommt.

Ich freue mich auf Ihre Anregungen.

Freundliche Grüße

Michael Haufler

Fuerchau
12-03-09, 16:38
Bevor du unnötig viel Geld für eigene Entwicklungen ausgibst google mal nach Compleo.
Software: Compleo Suite - Spooldateien Spooldatei-Management Spoolmanagement (http://www.softguide.de/prog_x/px_0828.htm)

scireum_mha
13-03-09, 06:29
Danke für den Tip, aber Spoolfiles finde ich jetzt nicht wirklich prickelnd. (Zweizeilige Ausgabe, werden gerne mal abgeändert usw. usw.. Mir reichen da die Erfahrungen aus ein paar COLD Projekten)

Wir haben ja bereits eine Softwarelösung mit der ich physische bzw. SQL Abfragen sehr schön visualisieren kann. ( Willkommen bei scireum (http://scireum.de/index.php?inc=querymodule) ). Von dor aus (Java / JT400) würden auch die Programme aufgerufen.

Es handelt sich um klassische Listprogramme. (Lieferscheinprüfprotokoll, Kundenrabattlisten, Statistiken) Sie kennen das ja bestimmt ;-).

D.h. seither ist das so: Programm wird aufgerufen. Benutzer bekomm eine Parameterauswahl präsentiert, die gibt er ein, zwei mal F13 und los gehts. Dann kommt entweder ein Screen oder es purzelt etwas aus dem Drucker.

Wir möchten das jetzt eben abändern auf. Weboberfläche, Parametereingabe inkl hierarischer Berechtigungssteuerung. Programm nudelt, liefert seine Daten an Java. Java formatiert, gruppiert, rechnet Zwischensummen usw. usw., macht ein Excel daraus und schickt das per Mail an den User.
Den Java Teil haben wir bereits. Es geht jetzt nur noch darum vorne das RPG anzuflanschen. Daher die Frage an die RPG Profis wie man das am intelligentesten macht, denn es gibt ja mehrere Wege.

Am meißten interessiert mich das mit Stored Procedures, kann man hier auch mehrere Sätze (Liste) zurückgeben?

mfg

Michael Haufler

KM
13-03-09, 07:14
Hallo,

Du kannst aus RPG bzw. SQLRPG ja ein Resultset mit mehreren Ergebniszeilen zurückgeben. Du musst die Stored Procedure dann auch entsprechend definieren (z.B. mit "dynamic result sets 1"). Dieses Resultset kannst Du dann in Deiner Java-Anwendung verarbeiten.

Die SQLRPG-Anweisung würde ungefähr so aussehen, wobei RESULT ein Array ist und Z der Indexzähler.


C/EXEC SQL
C+ SET RESULT SETS ARRAY :RESULT FOR :Z ROWS
C/END-EXEC

Frage noch: Wie kommt man denn an das "scireum query modul" ? Ich habe nirgends eine Download-Möglichkeit gefunden. Ich würde das gerne mal testen.

Gruß,
KM

BenderD
13-03-09, 07:37
Frontend ist also Java basiert, Backend ist (teils) vorhandene RPG Funktionalität, an Informationen gehen eine Handvoll Parameter hin und es kommt letztlich ein Resultset zurück.
Hört sich in der Tat auf den ersten Ton nach stored Procedure mit ResultSet Rückgabe an... Der Reihe nach:
- Aufruf und Parameter Übergabe:
pro stoPro:
- einfach zu implementieren (create Procedure... das wars)
- Aufruf über Database Server (JDBC Treiber reicht, kein sonstiges Toolbox Gedöns, ConnectionPools etc. einfach verwendbar
contra stoPro:
- konzeptionelles verbiegen von Datenbank

Rückgabe ResultSet
contra stoPro:
- RPG hat keine bis stark limitierte dynamische Speicherverwaltung (letztlich hängt da eine statische Größe eines Arrays dahinter, das allenfalls erst während des Programmablaufs mit Speicher hinterlegt wird)
- man wird Beta Tester eines Features, das nicht wirklich genutzt wird
- ich würde da pragmatisch in dem RPG Ham das ResultSet in eine Table (mit generiertem Namen) stellen und den Tablenamen zurückgeben.

Von der Architektur her, kann man die Erstellung der Table (eventuell eben auch aus dem bisher erstellten Spool) in eine RPG Funktion kapseln und wenig an der bisherigen Mimik ändern.

Die Schnittstelle zwischen Java und RPG könnte man ebenfalls in einer generischen Java Schicht als WebService maskieren.

D*B



Danke für den Tip, aber Spoolfiles finde ich jetzt nicht wirklich prickelnd. (Zweizeilige Ausgabe, werden gerne mal abgeändert usw. usw.. Mir reichen da die Erfahrungen aus ein paar COLD Projekten)

Wir haben ja bereits eine Softwarelösung mit der ich physische bzw. SQL Abfragen sehr schön visualisieren kann. ( Willkommen bei scireum (http://scireum.de/index.php?inc=querymodule) ). Von dor aus (Java / JT400) würden auch die Programme aufgerufen.

Es handelt sich um klassische Listprogramme. (Lieferscheinprüfprotokoll, Kundenrabattlisten, Statistiken) Sie kennen das ja bestimmt ;-).

D.h. seither ist das so: Programm wird aufgerufen. Benutzer bekomm eine Parameterauswahl präsentiert, die gibt er ein, zwei mal F13 und los gehts. Dann kommt entweder ein Screen oder es purzelt etwas aus dem Drucker.

Wir möchten das jetzt eben abändern auf. Weboberfläche, Parametereingabe inkl hierarischer Berechtigungssteuerung. Programm nudelt, liefert seine Daten an Java. Java formatiert, gruppiert, rechnet Zwischensummen usw. usw., macht ein Excel daraus und schickt das per Mail an den User.
Den Java Teil haben wir bereits. Es geht jetzt nur noch darum vorne das RPG anzuflanschen. Daher die Frage an die RPG Profis wie man das am intelligentesten macht, denn es gibt ja mehrere Wege.

Am meißten interessiert mich das mit Stored Procedures, kann man hier auch mehrere Sätze (Liste) zurückgeben?

mfg

Michael Haufler

scireum_mha
13-03-09, 16:29
@KM @BenderD
Vielen Dank für die Infos. Das hat mir wirklich weiter geholfen.

Ich glaube wir nehmen SPs, das schöne ist auch das man dann kein aufwändiges Jobhandling braucht. Da die meißten Listen als Papier ausgegeben wurden kommen da ja auch keine Mio Sätze zurück.

@KM
Stimmt wir haben keine downloadbare Demo da man das System schon ein wenig konfigurieren muß bis es läuft. (Das ganze läuft ja in einem Application Server).
Bei Interesse kann ich aber sehr gerne eine unverbindliche kostenlose Demo anbieten. z.B. per Teamviewer direkt am Arbeitsplatz.
Bitte rufen Sie mich doch hierzu einfach am Montag an oder senden Sie mir eine Email. (Kontaktdaten hier: Willkommen bei scireum (http://scireum.de/index.php?inc=contact) )

mfg

Michael Haufler