Karl Rosner

Batch Automation UC4

Start - Tipps und Tricks - Lösungen: UC4 und SQL - Wo ist eine Task gelaufen?

Lösungen: UC4 und SQL

Wo ist eine Task gelaufen?

Sie kennen das Problem? Da haben Sie die als Information über den Lauf einer Task in UC4 nur die Runnummer der Task. Und Sie haben 20 oder mehr Mandanten in Ihrem UC4 System.

Dann gibt es im wesentlichen zwei Lösungsmöglichkeiten:

1) Sie melden sich in jedem Mandanten an, und suchen in den Statistiken, bis Sie die fragliche Runnummer gefunden haben.

oder

2) Sie starten eine SQL Abfrage, welche die gewünschte Information sofort zurückliefert.

Eine solche SQL Anfrage ist relativ einfach aufgebaut:

select ah_name, ah_client, ah_idnr, ah_timestamp1
from ah
where ah_idnr = ?
order by ah_name;

Als Parameter wird die gesuchte Runnummer erwartet. (Parameter werden in der Abfrage dir Fragezeichen - '?' - gekennzeichnet.) Das Ganze kann in eine SQL VARA sowie ein Script, welches den Parameter einliest und das Ergebnis anzeigt, gepackt werden. Das zugehörige Script kann bspw. wie folgt aussehen:

... Start SCRI ...

:read &runid#, , "gewünschte Runid", , MN

! &parm1# ist der Wert der 1. Variable in obiger Abfrage
! dieser Wert ist in der SQL VARA hinterlegt!
:set &parm1# = "&runid#"

:set &hnd# = prep_process_var("<SQL_VARA>")
:process &hnd#
:     set &nam# = get_process_line(&hnd#, 1)
:     set &cli# = get_process_line(&hnd#, 2)
:     set &idn# = get_process_line(&hnd#, 3)
:     set &tim# = get_process_line(&hnd#, 4)
! Ausgabe Namen, Runid, Client und Zeitstempel des Laufes
:     p "&nam# (&idn#) in &cli# at &tim#"
:endprocess
:close_process &hnd#

... END SCRI ...

Dieser Ansatz eignet sich natürlich auch dazu, Suchen nach anderen Gesichtspunklten aufzubauen. Das Prinzip ist immer das gleiche:

  • es wird eine SQL-VARA estellt, welche die gewünschte Abfrage durchführt
  • es wird ein SCript erstellt, welches die benötigten Parameter einliest, die Abfrage startet und das Ergebnis anzeigt

Nachfolgend ein paar Beispiele hierzu.

Es werden jeweils nur die SQL Abfrage und die benötigten Parameter angezeigt. Das aufrufende Script sieht in allen Fällen ähnlich wie das obige
Beispiel aus (einzig die Prameter und die zurückgelieferten SQL Spalten ändern sich).

Wann und wo ist ein Objekt gelaufen?

! &parm1# und &parm2# sind die Werte der beiden Variablen in der Abfrage unten
! diese Werte sind in der SQL VARA hinterlegt und müssen im Script gesetzt
! werden

parm1 == Objektfilter (generisch)
parm2 == Objektfilter (generisch)

select ah_client, ah_name, max(ah_timestamp1)
from ah
where ah_name like ?
    and ah_client not in (2, 3)
     and ah_name in (select distinct ah_name
         from ah
         where ah_name like ? )
group by ah_client, ah_name
order by ah_client, ah_name;

Wann und wo ist ein Objekt gelaufen - mit Zeitstempel

! &parm1#, &parm2# und &parm3# sind die Werte der drei Variablen in der
! Abfrage unten
! diese Werte sind in der SQL VARA hinterlegt und müssen im Script gesetzt
! werden

parm1 == Objektfilter (generisch)
parm2 == Objektfilter (generisch)
parm3 == Zeitstempel (Datum - YYYY-MM-DD)

select ah_client, ah_name, max(ah_timestamp1)
from ah
where ah_name like ?
     and ah_client not in (2, 3)
     and ah_name in (select distinct ah_name
from ah
where ah_name like ?
     and substr(ah_timestamp1, 1, 10) > ?)
group by ah_client, ah_name
order by ah_client, ah_name;

Wann und wo ist ein Objekt gelaufen - mit Anzeige der Häufigkeit

! &parm1# ist der Wert der 1. Variable in der Abfrage unten
! dieser Wert ist in der SQL VARA hinterlegt!

parm1 == Objektfilter (generisch)

select ah_client, ah_name, count(*)
from ah
where ah_name like ?
     and ah_client not in (2, 3)
group by ah_client, ah_name
order by ah_client, ah_name;