-
Job soll auf eine Beendigung warten
Hallo zusammen,
ich suche z.zt. mal wieder eine Idee.
Folgendes Szenario.
Job B läuft im System als Loop Job der über eine DTAQ verschiedene arbeiten durchführt
Job A ( interaktiv oder Batch ) soll eine Exceldatei erstellen und erstellt die Anfrage
in der DTAQ für Job B.
Job B erstellt diese Exceldatei und soll das OK an Job A senden.
Dazu muss Job A auf die Beendigung warten.
Frage: Wie habt ihr solche Szenarien gelöst ?
Gruß
Michael
-
Hallo Michael,
Ich habe das bei meinen Produkten immer so gelöst:
Job A sendet in die DTAQ von Job B folgenden Inhalt:
Name der Bibltiothek + Data Queue von Job A an dem die Antwort geschickt wird + die Daten selbst.
Wenn also in den ersten 20 Stellen des DTAQ-Eintrags Lib+Name stehen, sende ich einen Status zurück.
Du musst also, nachdem du die Daten an die DTAQ von Job B sendest, auf die eigene DTAQ horchen gehen.
Damit hast du die beste Performance und die beste Reaktionszeit.
lg Andreas
-
Nimm eine Keyed-DTAQ. Beim QRCVDTAQ kannst du einen Schlüssel angeben.
Der Batchjob empfängt die Daten mit Job-Nr. '000000' und sendet seine Antwort an Job NNNNNN.
Die Antwort-JobNr. muss natürlich in den Daten enthalten sein.
Der anfordernde Job warten dann mit seiner Job-Nr. als Key auf die Antwort.
Alternative 2 geht auch per MSGQ.
Für Dialogjobs kannst du auf die Display-MSGQ einen Break-Handler setzen.
Du sendest die Anfrage an den Batchjob und lässt den User anschließend weiterarbeiten.
Sobald die Batchaufgabe fertig ist, wird eine Break-Message an die MSGQ gesendet.
Der Breakhandler wird direkt aufgerufen, der aktive Job also unterbrochen, und du kannst dann das tun was du tun musst. Wird der Breakhandler verlassen, läuft das unterbrochene Programm einfach weiter.
Es gibt bestimmt noch mehr Wege.
-
Bei der Data Queue muss man allgemein darauf achten, dass eventuell hängengebliebene Einträge zuvor herausgelesen werden müssen.
Wenn aus irgendeinem Grund das PGM vom Job A abstürzt und nochmals aufgerufen wird.
Dann würde in der DTAQ das Ergebnis vom vorherigen Aufruf enthalten sein.
-
Programmabsturz?
Wofür gibts eigentlich MONITOR-Gruppen und MONMSG (CLP/CLLE)?
;-)
-
Na bei einem MONITOR oder was auch immer, hast du ja einen Absturzt und da würde der Eintrag in der DTAQ liegen bleiben ;-)
-
Hallo,
es ist auch noch eine Idee aufgekommen:
Job A sendet in die DTAQ läuft weiter und macht einen HLDJOB
Job B verarbeitet und macht einen RLSJOB A
Was haltet ihr davon ?
Gruß
Michael
-
Zitat von Fuerchau
Nimm eine Keyed-DTAQ. Beim QRCVDTAQ kannst du einen Schlüssel angeben.
Der Batchjob empfängt die Daten mit Job-Nr. '000000' und sendet seine Antwort an Job NNNNNN.
Die Antwort-JobNr. muss natürlich in den Daten enthalten sein.
Der anfordernde Job warten dann mit seiner Job-Nr. als Key auf die Antwort.
Alternative 2 geht auch per MSGQ.
Für Dialogjobs kannst du auf die Display-MSGQ einen Break-Handler setzen.
Du sendest die Anfrage an den Batchjob und lässt den User anschließend weiterarbeiten.
Sobald die Batchaufgabe fertig ist, wird eine Break-Message an die MSGQ gesendet.
Der Breakhandler wird direkt aufgerufen, der aktive Job also unterbrochen, und du kannst dann das tun was du tun musst. Wird der Breakhandler verlassen, läuft das unterbrochene Programm einfach weiter.
Es gibt bestimmt noch mehr Wege.
Frage:
Heißt das das ich nur eine DTAQ für alle Sender als Empfänger hätte ?
-
Zitat von mk
Job A sendet in die DTAQ läuft weiter und macht einen HLDJOB
Job B verarbeitet und macht einen RLSJOB A
Interessanter Lösungsansatz.
Find ich persönlich weniger optimal den Jobstatus als Kommunikationsplattform zu benutzen. Außerdem benötigt dann der Job B auch entsprechende Rechte.
lg Andreas
-
Zitat von mk
Frage:
Heißt das das ich nur eine DTAQ für alle Sender als Empfänger hätte ?
Du kannst bei Keyed DTAQ neben den Daten auch einen Key mitgeben.
Und zwar sowohl beim Senden als auch beim Empfangen.
Somit kannst du definieren, dass dein Job A und dein Job B die selbe DTAQ verwendet, aber mit unterschiedlichen Keys "horchen" gehen.
Dadurch brauchst du nicht mehrere DTAQs sondern kannst alles mit einer abbilden.
-
Genau für sowas ist die Keyed-DTAQ gedacht.
Auf jeden Fall ist es immer wichtig, eine DTAQ auch mal aufzuräumen (DLT/CRT bei IPL o.ä.).
Vor dem Senden mit Job-Nr. kann man per SQL den Jobstatus des Zieljobs prüfen ob der User nicht inzwischen die Lust am Warten verloren hat.
Ach ja, noch eine Alternative:
Du schreibst einen Webservice, der per SQL-HTTP-Requests abgefragt wird, da ist das Warten auch schon drin.
-
... der Serverjob muss dann auch noch Multithreading können, sonst hält er alles auf, wenn er lahmt oder steht und Excel geht am besten mit Java => gibt es fix und fertig erweiterbar, seit Jahren in vielen Installationen bewährt, heißt AppServer4RPG und ist Open Source.
D*B
Similar Threads
-
By Mida in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 26-07-18, 15:32
-
By realerhanno in forum IBM i Hauptforum
Antworten: 19
Letzter Beitrag: 21-03-18, 07:31
-
By Isabella Pridat-Zapp in forum Archiv NEWSboard Events
Antworten: 0
Letzter Beitrag: 10-09-15, 12:50
-
By Mädele in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 23-04-03, 07:41
-
By HoScHiE in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 10-05-02, 10:03
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks