[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    833

    Question 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

  2. #2
    Registriert seit
    Nov 2020
    Beiträge
    331
    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

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Nov 2020
    Beiträge
    331
    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.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Programmabsturz?
    Wofür gibts eigentlich MONITOR-Gruppen und MONMSG (CLP/CLLE)?
    ;-)
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Nov 2020
    Beiträge
    331
    Na bei einem MONITOR oder was auch immer, hast du ja einen Absturzt und da würde der Eintrag in der DTAQ liegen bleiben ;-)

  7. #7
    Registriert seit
    Jan 2001
    Beiträge
    833
    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

  8. #8
    Registriert seit
    Jan 2001
    Beiträge
    833
    Zitat Zitat von Fuerchau Beitrag anzeigen
    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 ?

  9. #9
    Registriert seit
    Nov 2020
    Beiträge
    331
    Zitat Zitat von mk Beitrag anzeigen
    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

  10. #10
    Registriert seit
    Nov 2020
    Beiträge
    331
    Zitat Zitat von mk Beitrag anzeigen
    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.

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... 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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Antworten: 0
    Letzter Beitrag: 26-07-18, 15:32
  2. 1 Master soll 10 Slaves per TCP/IP synchron bedienen
    By realerhanno in forum IBM i Hauptforum
    Antworten: 19
    Letzter Beitrag: 21-03-18, 07:31
  3. Eine Marke, eine Halle, eine Messe: IT & Business - Ende September in Stuttgart
    By Isabella Pridat-Zapp in forum Archiv NEWSboard Events
    Antworten: 0
    Letzter Beitrag: 10-09-15, 12:50
  4. RCLSTG - soll ich oder soll ich nicht?
    By Mädele in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 23-04-03, 07:41
  5. Wie soll ich machen ?
    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
  •