OUS_Benachrichtigung.. - Universitätsbibliothek Rostock

Werbung
OUS / Benachrichtigung bei Vormerkung auf eine Entleihung
Schematische Darstellung & Scripts / UB Rostock / Stand: 31.08.2011 - v004
1) Schematische Darstellung des Ablaufs
Ablaufschritt / Script
1. sybase / crontab
2. hro<ILN>_read_userdat10_start_script
hro<ILN>_read_userdat10_result_script
Beschreibung
> Prozess zur Generierung der Info-Mails wird 1x täglich
gestartet
> Script ermittelt via SQL-Abfrage
hro<ILN>_read_userdat10_usr_sql alle Benutzer, auf deren
Entleihungen eine Vormerkung eingegangen ist
> Daraus wird eine ausführbare Datei
hro<ILN>_read_userdat10_result_script generiert, die mit Ihrer
Ausführung für alle selektierten Benutzer den Text generiert
und per E-Mail sendet
> Zur Protokollierung wird eine E-Mail an den LBS-Admin
gesendet
> Script erzeugt zu versendende E-Mails inkl. Titeldaten mit
dem SQL-Template hro<ILN>_read_userdat10_text_sql und
versendet sie
> Dazu wird im SQL-Template die jeweilige address_id_nr des
Benutzers eingetragen und per SQL-Abfrage (isql) der Text inkl.
der Liste der betreffenden Titel erstellt
2) Ergebnismail
Informationsservice
Universitätsbibliothek Rostock und Bibliotheken im Ausleihverbund
Betreff : Vormerkung auf entliehenes Medium
Wir möchten Ihnen mitteilen, dass auf ein von Ihnen entliehenes Medium eine Vormerkung
eingegangen ist. Bitte beachten Sie die Leihfrist, da eine Verlängerung jetzt nicht mehr möglich ist.
Liste der betreffenden Medien:
-------------------------------------------------------------------------Autor/Titel: Müller-Richter, Klaus : "Kampf der Metapher!" : Studien zum Widerstrei
Barcode/Signatur: 28$004421043 / 28/BB2:CC 4800 M947 K1
Fällig am: 17-08-10
-------------------------------------------------------------------------Sie können Ihre Nutzerdaten unter der folgenden Adresse einsehen :
https://katalog.ub.uni-rostock.de/loan/DB=1/LNG=DU/USERINFO_LOGIN
Mit freundlichen Grüßen
Ihre Bibliothek
1
3) Verwendete Scripts
sybase / crontab:
55 04 * * * /global/sybase/com/hro62_read_userdat10_start_script batch
hro62_read_userdat10_start_script
#!/bin/ksh
#
# hro<ILN>_read_userdat10_start_script
# Scriptgenerierung aus LBS-Datenbank mit SQL-Script
# ---------------------------------------------------------# historie:
# 06.07.10 - created, j.s. - ub hro
#
# Parameter: $1 = MODE
# ---------------------------------------------------------# ---------------------------------------------------------# Parameter fuer Ausfuehrung setzen
# ---------------------------------------------------------# Steuerung
# --------SCRIPTID=10
ILN=62
MODE=inter
COLUMNWITDH=300
SYBASEUSR=ro-user
SYBASEUSRPW=passwd
[email protected]
SLOG="reservation to"
#
#
#
#
#
#
#
#
eindeutige Script-Identifikationsnummer
ILN
Ausfuehrungsmode batch oder inter(aktiv)
Spaltenbreite fuer SQL-Text
RO-User LBS-Datenbank
Passwort fuer RO-User LBS-Datenbank
Empfaenger LOG-File
Suject fuer LOG-File
# Verzeichnisse
# ------------SCRIPTDIR=$HOME/com
TMPDIR=$HOME/tmp
LOGDIR=$HOME/log
# Dateien
# ------SQLUSR=hro${ILN}_read_userdat${SCRIPTID}_usr_sql
# SQL-Script Nutzerliste
SQLTEXT=hro${ILN}_read_userdat${SCRIPTID}_text_sql # SQL-Script Text an Nutzer
RESULTSCRIPT=hro${ILN}_read_userdat${SCRIPTID}_result_script
# Auszufuehrendes ResultScript
MAILTMP=mailtmp_${ILN}_${SCRIPTID}_user_
# fuer Generierung temp. File fuer
Mailversand
LOGFILE=mailtmp_${ILN}_${SCRIPTID}_log.txt
# Logfile
SEDSCRIPT=hro_remind_ous_sedscript
# sed-Script zum Bearbeiten der SQLAusgabe Nutzerliste
# ---------------------------------------------------------# LOGFILE an Administrator senden
CR_SUBJECT()
{
{
echo "From: sqlscript"
echo "Subject: SQL-LOG_${ILN}: hro${ILN}_read_userdat${SCRIPTID} - ${SLOG}"
echo "\nSQL-LOG: hro${ILN}_read_userdat${SCRIPTID} - ${SLOG}\n"
echo "Mail-Script fuer reminder service erzeugt und ausgefuehrt: $SCRIPTDIR/$RESULTSCRIPT"
echo
echo "SCRIPT:"
echo "---------------"
cat $SCRIPTDIR/$RESULTSCRIPT
} > $TMPDIR/$LOGFILE
/usr/lib/sendmail -t $1 < $TMPDIR/$LOGFILE
}
# ---------------------------------------------------------# Start des Main-Scripts
# ----------------------------------------------------------
2
# MODE als Parameter uebergeben
if [ $# = 1 ]
then
if [ $1 = "batch" ]
then
MODE=batch
# Make sure this script is only executed from batch/crontab.
# If so read .profile else stop execution
#tty 1>/dev/null 2>&1
if [ $? -eq 0 ]
then
echo "MODE batch can only be executed from batch/crontab !!"
exit 1
else
. ${HOME}/define_sybase 1>/dev/null 2>&1
# SYBASE='/global/sybase/ASE_120'; export SYBASE
fi
else
MODE=inter
fi
else
MODE=inter
fi
# Check SYBASEUSR Verbindung zur Datenbank
echo exit > $SCRIPTDIR/test_${SYBASEUSR}_pw.login
$SYBASE/OCS-12_0/bin/isql -U$SYBASEUSR -P$SYBASEUSRPW i$SCRIPTDIR/test_${SYBASEUSR}_pw.login > $LOGDIR/test_${SYBASEUSR}.ok
found="`wc -l $LOGDIR/test_${SYBASEUSR}.ok | awk '{ print $1 } ' | tr -d '[:space:]'`"
rm $LOGDIR/test_${SYBASEUSR}.ok
if [ $found != "0" ]
then
echo "\n\tWrong password for user $SYBASEUSR !!\n"
exit
fi
# Loeschen Files der letzten Ausfuehrung
{
rm $TMPDIR/$LOGFILE
rm -f $TMPDIR/${ILN}_*remind${SCRIPTID}.sql
rm -f $TMPDIR/${ILN}_*remind${SCRIPTID}.txt
rm -f $TMPDIR/${MAILTMP}*.txt
} 2> /dev/null
# Ausfuehrbare Datei fuer remind service erzeugen
{
echo
CR_REMIND\(\)
echo
{
echo
\# Zuerste Mahntext mit Titelliste generieren
echo
\# Parameterliste
echo
\# 1 = E-Mail Absender
echo
\# 2 = E-Mail Empfaenger
echo
\# 3 = E-Mail Betreff
echo
\# 4 = address_id_nr Benutzer
echo
\# ACHTUNG - DIESER AUSDRUCK MUSS MIT DEM INHALT VON @address_id_nr IM SQL-SCRIPT
UEBEREINSTIMMEN !
echo
SUBST_ADDRESS_ID_NR=\"Xaddress_id_nrX\"
echo
\# Eigenes SQL-Script fuer Aufstellung genererien, substitute Aufstellung mittels sed
echo
sed s/\$SUBST_ADDRESS_ID_NR/\$4/ $SCRIPTDIR/$SQLTEXT
\>$TMPDIR/${ILN}_\$4_remind${SCRIPTID}.sql
echo
\$SYBASE/OCS-12_0/bin/isql -U$SYBASEUSR -P$SYBASEUSRPW -w$COLUMNWITDH i$TMPDIR/${ILN}_\$4_remind${SCRIPTID}.sql \> $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.tmp
echo
\# SQL-Result-File aufbereiten:
echo
cat $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.tmp \| grep \"#\" \| sed \'s/#//\' \>
$TMPDIR/${ILN}_\$4_remind${SCRIPTID}.sed
echo
cat $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.sed \>
$TMPDIR/${ILN}_\$4_remind${SCRIPTID}.txt
echo
rm -f $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.tmp
echo
rm -f $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.sed
3
echo
{
echo
echo \"From: \$1\"
echo
echo \"To:\$2\" \| sed \'s/ /, /\'
echo
echo \"Subject: \$3\"
echo
cat $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.txt
echo
} \> $TMPDIR/${MAILTMP}\$4.txt
echo
/usr/lib/sendmail -t \$2 \< $TMPDIR/${MAILTMP}\$4.txt 2\>\&1 \>/dev/null
echo
}
} > $SCRIPTDIR/$RESULTSCRIPT
case $MODE in
'inter')
$SYBASE/OCS-12_0/bin/isql -U$SYBASEUSR -P$SYBASEUSRPW -i$SCRIPTDIR/$SQLUSR | sed f$SCRIPTDIR/$SEDSCRIPT | tee -a $SCRIPTDIR/$RESULTSCRIPT
;;
'batch')
$SYBASE/OCS-12_0/bin/isql -U$SYBASEUSR -P$SYBASEUSRPW -i$SCRIPTDIR/$SQLUSR | sed f$SCRIPTDIR/$SEDSCRIPT >> $SCRIPTDIR/$RESULTSCRIPT
;;
*)
echo "Invalid argument"
exit 1
;;
esac
sleep 10
# Execute setzen und ausfuehren
chmod 755 $SCRIPTDIR/$RESULTSCRIPT
$SCRIPTDIR/$RESULTSCRIPT
CR_SUBJECT $MAILLOGTO
exit
4
hro62_read_userdat10_usr_sql
/* ------------------------------------------------------------- */
/* Historie : */
/* 06-07-2010 - js: address_id_nr fuer Titeldaten integriert */
/* ------------------------------------------------------------- */
/* SELECT @@VERSION ; go */
use lbsdb
go
PRINT
PRINT
PRINT
PRINT
PRINT
''
'///////////////////////////////////////////////////////'
'62-5. Erinnerungsservice VormerkungenAuf vom Vortag'
'///////////////////////////////////////////////////////'
''
SELECT "Start information service at"= getdate ()
go
SET ROWCOUNT 0
go
DECLARE @iln smallint,
@day_diff int,
@inter_lib_loan tinyint
/* ----------------------------------------------------------------------------------------------- */
/* A = Benachrichtigung aufgegebene VormerkungenAuf vom Vortag */
/* ----------------------------------------------------------------------------------------------- */
SELECT
@iln = 62 /* UB ROSTOCK */,
@day_diff = -1 /* Tagesdifferenz */,
@inter_lib_loan = 9 /* Ausleihtyp fuer Fernleihe */
/* SELECT Statement Ausgabe fuer Befehlsdatei */
SELECT
"CR_REMIND [email protected] " + CHAR(34) + rtrim(b.email_address) +
CHAR(34) + " " + CHAR(34) + "Informationsservice UB Rostock `date +" + CHAR(34) +
"%d.%m.%y" + CHAR(34) + "` / Vormerkung auf entliehenes Medium / s n " + b.borrower_bar +
CHAR(34) + " " + CONVERT(VARCHAR(20), b.address_id_nr)
FROM
borrower b, loans_requests l, reservation r
WHERE
b.iln=@iln /* 62 = Rostock */
/* @day_diff Tage vorher benachrichtigen */
AND DATEDIFF(day,GETDATE(),r.reservation_date_time) = @day_diff
/* Nur folgende Nutzertypen - only the following borrower types */
AND b.borrower_type < 80
/* Status muss 5 = ausgeliehen sein */
AND l.loan_status = 5
/* Nicht Ausleihtyp Fernleihe */
AND NOT (l.type_of_loan = @inter_lib_loan)
/* Nur fuer erste Vormerkung, ggf. auch mehrere an einem Tag */
AND ((SELECT COUNT(*) from reservation WHERE volume_number = r.volume_number) =
(SELECT COUNT(*) from reservation WHERE reservation_date_time = r.reservation_date_time))
/* email adresse vorhanden */
AND NOT (PATINDEX('%@%', b.email_address) = 0)
/* Verknuepfungen der Tabellen */
AND b.iln = l.iln
AND b.iln = r.iln
AND b.address_id_nr = l.address_id_nr
AND l.volume_number = r.volume_number
GROUP BY
b.address_id_nr
SELECT "End information service at"= getdate ()
go
5
hro62_read_userdat10_text_sql
/*
/*
/*
/*
/*
/*
/*
-------------------------------------------------------------------- */
hro<ILN>_read_userdat10_text_sql
*/
Text und Titelliste fuer Benachrichtigung Vormerkung generieren
*/
*/
Historie:
*/
01.07.10 js: created
*/
-------------------------------------------------------------------- */
/* LBS-DATENBANK */
use lbsdb
go
/* HIER ALLGEMEIN VERWENDETE VARIABLEN */
DECLARE @iln
int,
@address_id_nr
int,
@day_diff
int
@inter_lib_loan
tinyint
SELECT @iln
= 62,
/* ILN */
@day_diff
= -1,
/* Tagesdifferenz */
@inter_lib_loan = 9,
/* Ausleihtyp fuer Fernleihe */
@address_id_nr
= Xaddress_id_nrX
/* Substitute-Ausdruck fuer CR_REMIND! */
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
'#Informationsservice'
'#Universitätsbibliothek Rostock und Bibliotheken im Ausleihverbund'
'#'
'#Betreff : Vormerkung auf entliehenes Medium'
'#'
'#Wir möchten Ihnen mitteilen, dass auf ein von Ihnen entliehenes Medium eine'
'#Vormerkung eingegangen ist. Bitte beachten Sie die Leihfrist, da eine Verlängerung'
'#jetzt nicht mehr möglich ist.'
'#'
'#'
'#Liste der betreffenden Medien:'
'#--------------------------------------------------------------------------'
-- SELECT Statement kalkuliert mit CASE auch leeren ous_copy_cache ein (author, shorttitle,
signature)
SELECT
CASE
WHEN (c.shorttitle IS NULL) AND (c.author IS NULL) THEN '# '
-- STUFF: Jahresangaben beim Autor in Runden Klammern entfernen
WHEN (c.shorttitle IS NULL) AND (c.author IS NOT NULL) THEN '#Autor: ' +
CONVERT(char(70), STUFF(c.author, CHARINDEX('(', c.author), CHARINDEX(')', c.author) CHARINDEX('(', c.author) + 1, '')) + ' '
WHEN (c.shorttitle IS NOT NULL) AND (c.author IS NULL) THEN '#Titel: ' +
CONVERT(char(70), c.shorttitle)
WHEN (c.shorttitle IS NOT NULL) AND (c.author IS NOT NULL) THEN '#Autor/Titel:
' + CONVERT(char(70), RTRIM(STUFF(c.author, CHARINDEX('(', c.author), CHARINDEX(')',
c.author) - CHARINDEX('(', c.author) + 1, '')) +
-- Doppelpunt als Trennzeichen nur, wenn Autor vorhanden
CASE
WHEN RTRIM(STUFF(c.author, CHARINDEX('(', c.author), CHARINDEX(')',
c.author) - CHARINDEX('(', c.author) + 1, '')) IS NOT NULL THEN ' : '
END
+ SUBSTRING(c.shorttitle,1,50)) + ' '
END,
CASE
WHEN (c.signature IS NULL) THEN CHAR(10) + '# Barcode: ' + CONVERT(char(12),
v.volume_bar)
WHEN (c.signature IS NOT NULL) THEN CHAR(10) + '# Barcode/Signatur: ' +
CONVERT(char(42), v.volume_bar + ' / ' + c.signature)
END,
CHAR(10) + '# Fällig am: ' + CONVERT(char(8), l.expiry_date_loan,5),
CHAR(10) + '#'
FROM
loans_requests l, volume v, ous_copy_cache c, borrower b, reservation r
WHERE
l.iln = @iln
6
and v.iln = @iln
and c.iln = @iln
and b.iln = @iln
and r.iln = @iln
and l.address_id_nr = @address_id_nr
AND b.address_id_nr = l.address_id_nr
and l.volume_number = v.volume_number
AND l.volume_number = r.volume_number
and v.epn = c.epn
/* @day_diff Tage vorher benachrichtigen */
AND DATEDIFF(day,GETDATE(),r.reservation_date_time) = @day_diff
/* Nur folgende Nutzertypen - only the following borrower types */
AND b.borrower_type < 81
/* Status muss 5 = ausgeliehen sein */
AND l.loan_status = 5
/* Nicht Ausleihtyp Fernleihe */
AND NOT (l.type_of_loan = @inter_lib_loan)
/* Nur fuer erste Vormerkung, ggf. auch mehrere an einem Tag */
AND ((SELECT COUNT(*) from reservation WHERE volume_number = r.volume_number) =
(SELECT COUNT(*) from reservation WHERE reservation_date_time = r.reservation_date_time))
ORDER BY
l.no_renewals DESC
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
'#--------------------------------------------------------------------------'
'#'
'#Sie können Ihre Nutzerdaten unter der folgenden Adresse einsehen :'
'#https://katalog.ub.uni-rostock.de/loan/DB=1/LNG=DU/USERINFO_LOGIN'
'#'
'#Mit freundlichen Grüßen'
'#Ihre Bibliothek'
'#'
go
hro_remind_ous_sedscript
# sed script zur aufbereitung der kommandodatei informationsservice
# 16 zeilen vom anfang loeschen
1,16d
# von DELETE-Marke (x rows affected) bis Dateiende loeschen
/(/,$d
7
hro62_read_userdat10_result_script
CR_REMIND()
{
# Zuerste Mahntext mit Titelliste generieren
# Parameterliste
# 1 = E-Mail Absender
# 2 = E-Mail Empfaenger
# 3 = E-Mail Betreff
# 4 = address_id_nr Benutzer
# ACHTUNG - DIESER AUSDRUCK MUSS MIT DEM INHALT VON @address_id_nr IM SQL-SCRIPT
UEBEREINSTIMMEN !
SUBST_ADDRESS_ID_NR="Xaddress_id_nrX"
# Eigenes SQL-Script fuer Aufstellung genererien, substitute Aufstellung mittels sed
sed s/$SUBST_ADDRESS_ID_NR/$4/ /global/sybase/com/hro62_read_userdat10_text_sql
>/global/sybase/tmp/62_$4_remind10.sql
$SYBASE/OCS-12_0/bin/isql -Uro-user -Ppasswd -w300 -i/global/sybase/tmp/62_$4_remind10.sql
> /global/sybase/tmp/62_$4_remind10.tmp
# SQL-Result-File aufbereiten:
cat /global/sybase/tmp/62_$4_remind10.tmp | grep "#" | sed 's/#//' >
/global/sybase/tmp/62_$4_remind10.sed
cat /global/sybase/tmp/62_$4_remind10.sed > /global/sybase/tmp/62_$4_remind10.txt
rm -f /global/sybase/tmp/62_$4_remind10.tmp
rm -f /global/sybase/tmp/62_$4_remind10.sed
{
echo "From: $1"
echo "To:$2" | sed 's/ /, /'
echo "Subject: $3"
cat /global/sybase/tmp/62_$4_remind10.txt
} > /global/sybase/tmp/mailtmp_62_10_user_$4.txt
/usr/lib/sendmail -t $2 < /global/sybase/tmp/mailtmp_62_10_user_$4.txt 2>&1 >/dev/null
}
CR_REMIND [email protected] "[email protected]"
"Informationsservice UB Rostock `date +"%d.%m.%y"` / Vormerkung auf Ihre Entleihung / s n
00280007337" 5640
CR_REMIND [email protected] "[email protected]"
"Informationsservice UB Rostock `date +"%d.%m.%y"` / Vormerkung auf Ihre Entleihung / s n
00280015178" 55839
# u.s.w.
8
Herunterladen