Beispielsammlung, Leitfaden > Datenbankwartung mit Optionen

Datenbankwartung mit Optionen

Ziel: Die Archivierung der Datenbank soll über einen Workflow automatisiert werden, wobei der Benutzer die Einstellung dazu in einem Dialog eintragen kann.

Verwendete Objekte: Job, Workflow, Script und Variable

Verwendete Script-Sprachmittel: ACTIVATE_UC_OBJECT, :BEGINREAD, GET_VAR, :PRINT, :PUT_VAR und :READ


Beispiel

Ein wichtiger Bestandteil der Verwaltung eines Automation Engine Systems ist die regelmäßige Wartung der Datenbank. Zu diesem Zweck stehen Ihnen Dienstprogramme zur Verfügung, die auch im Batchmodus verwendet werden können. Es ist äußerst praktisch einen Workflow anzulegen, der die Schritte für die Wartung durchführt und die Parameter (z.B. Mandant) vom Benutzer über einen Eingabedialog erhält.

Variable

Legen Sie als erstes eine statische Variable mit folgenden Attributen an:

Sie wird die statische Variable die Nummer des Mandanten und die Werte "J" bzw. "N" für jeden Wartungschritt enthalten, je nachdem ob der Benutzer diesen durchführen will.

Script

Legen Sie als nächstes ein Script an, das einen Eingabedialog mit Hilfe des Script-Sprachmittels :BEGINREAD erzeugt. Dieser empfängt vom Benutzer die Informationen zum Wartungsvorgang:

Geben Sie mittels der Parameter für :BEGINREAD an, dass beim Mandanten nur Zahlen zwischen 0 und 9999 angegeben werden dürfen. Bei den Einstellmöglichkeiten sollen die Werte "J" und "N" zur Auswahl vorhanden sein. Die ausgewählten Optionen müssen in das Variablen-Objekt gespeichert werden. Nutzen Sie dies auch, um jene Optionen, die bei der letzen Wartung verwendet worden sind, im Eingabedialog automatisch einzutragen. Der Benutzer hat natürlich nach wie vor die Möglichkeit andere Einstellungen zu setzen.

Das Script startet mittels der Script-Funktion ACTIVATE_UC_OBJECT einen Workflow, der die eigentliche Wartungsprozedur vornimmt. Vergessen Sie hierbei nicht, zuvor abzufragen, ob bei allen Optionen (Archivieren, Reorganisieren, Entladen) der Wert "N" ausgewählt wurde. Der Workflow braucht in diesem Fall erst gar nicht zu starten.

!Settings of the last maintaining procedure are to be retrieved.

:SET &default_value_m# = GET_VAR('VARA.DATABASE_MAINTENANCE','CLIENT')

:SET &default_value_a# = GET_VAR('VARA.DATABASE_MAINTENANCE','ARCHIVING')

:SET &default_value_r# = GET_VAR('VARA.DATABASE_MAINTENANCE','REORGANIZING')

:SET &default_value_e# = GET_VAR('VARA.DATABASE_MAINTENANCE','UNLOADING')

 

 

!A Dialog is to be displayed in which the user can specify the options for database maintenance

:BEGINREAD

:PRINT "MAINTAINING THE AE database"

:PRINT "--------------------------------------------------------------------------"

:READ &client#, "0-9999", 'client (0-9999)', &default_value_m#

:PRINT "--------------------------------------------------------------------------"

:PRINT ""

:PRINT "Archiving"

:READ &archiving#, "'Y','N'",'Shall the database be archived?', &default_value_a#

:PRINT ""

:PRINT "Reorganizing"

:READ &reorganizing#, "'Y','N'",'Shall the database be reorganized?', &default_value_r#

:PRINT ""

:PRINT "Unloading the DB"

:READ &unloading#, "'Y','N'",'Shall the database be unloaded?', &default_value_e#

:PRINT ""

:PRINT "--------------------------------------------------------------------------"

:ENDREAD

 

 

!If the user selects "No" for each option, database maintenance is not necessary.

:IF &archiving# = 'N'

:   IF &reorganizing# = 'N'

:      IF &unloading# = 'N'

:      SET &start# = 'N'

:      ENDIF

:   ENDIF

:ENDIF

 

:IF &start# = 'N'

:  BEGINREAD

:  PRINT 'Database maintenance not necessary.'

:  ENDREAD

:ELSE

:  PUT_VAR 'VARA.DATABASE_MAINTENANCE','CLIENT',&client#

:  PUT_VAR 'VARA.DATABASE_MAINTENANCE','ARCHIVING',&archiving#

:  PUT_VAR 'VARA.DATABASE_MAINTENANCE','REORGANIZING',&reorganizing#

:  PUT_VAR 'VARA.DATABASE_MAINTENANCE','UNLOADING',&unloading#

!The workflow for database maintenance is started.

:  SET &ret = ACTIVATE_UC_OBJECT('JOBP.DATABASE_MAINTENANCE')

:ENDIF 

Wenn in den Attributen des Scripts die Option Zur Laufzeit generieren aktiviert ist, so wird der Eingabedialog nicht angezeigt! Als Einstellungsparameter werden in diesem Fall die Vorgabewerte benutzt (gilt auch für die anderen aktivierbaren Objekte!).

Workflow und Jobs

Erstellen Sie einen Workflow, der für jeden Teilschritt der Wartung einen Job enthält. Die Scripts sind bis auf den Aufruf des Dienstprogrammes gleich. Zuerst wird ermittelt, ob der Wartungsschritt durchgeführt werden soll sowie der betroffene Mandant. Anschließend wird je nachdem entweder das Dienstprogramm im Batchmodus aufgerufen oder im Aktivierungsreport vermerkt, dass dieser Wartungsschritt nicht ausgeführt wird.

JOBS.ARCHIVIEREN

:SET &archiving# = GET_VAR('VARA.DATABASE_MAINTENANCE','ARCHIVING')
:
SET &client# = GET_VAR('VARA.DATABASE_MAINTENANCE','CLIENT')

:
IF &archiving# = 'Y' 
UCYBDBar -B -S&client

:
ELSE
:   
PRINT 'Archiving shall not take place.'
:
ENDIF

JOBS.REORGANISIEREN

:SET &reorganizing# = GET_VAR('VARA.DATABASE_MAINTENANCE','REORGANIZING')
:
SET &mclient# = GET_VAR('VARA.DATABASE_MAINTENANCE','CLIENT')

:
IF &reorganizing# = 'Y' 
UCYBDBre -B -S&client#

:
ELSE
:   
PRINT 'Reorganization shall not take place.'
:
ENDIF

JOBS.UNLOADING

:SET &unloading# = GET_VAR('VARA.DATABASE_MAINTENANCE','UNLOADING')

:
IF &unloading# = 'Y' 
UCYBDBun -BREORG

:ELSE
:   
PRINT 'Unloading of data records shall not take place.'
:
ENDIF

 

Wenn Sie Windows-Jobs verwenden, empfehlen wir nach jedem Dienstprogramm-Aufruf eine Fehlerprüfung durchzuführen und gegebenenfalls den Rückgabewert entsprechend zu ändern. Dadurch bricht auch der Job ab, wenn die Durchführung des Dienstprogramms fehlschlägt, wodurch Sie den Fehler schnellstmöglich erkennen und darauf reagieren können.

 

Um dies zu realisieren, sind folgende 2 JCL-Zeilen nach dem Programm-Aufruf einzufügen:

@set retcode=%errorlevel%
@if NOT %ERRORLEVEL% == 0 goto :retcode

 

 


Automic Documentation - Tutorials - Automic Blog - Resources - Training & Services - Automic YouTube Channel - Download Center - Support

Copyright © 2016 Automic Software GmbH