Picture Perfect - Information Technology – The College of New Jersey

advertisement
Picture Perfect
A BATCH PROCESS TO LOAD PHOTOS INTO
ORACLE 9.0 CAMPUS SOLUTIONS
Session # 27561
The College of New Jersey
03/03/2010
Presenter
 Sushma Mendu
Applications Developer
Enterprise Applications
The College of New Jersey
Primary areas of work:
Student Administration
Security
The College of New Jersey
03/03/2010
About TCNJ







The College of New Jersey (TCNJ) was founded in 1855 and has grown to become one of
the top comprehensive colleges in the nation.
TCNJ is the State College of NJ located in in Ewing, close to Trenton
Primarily Undergraduate Liberal Arts Institution.
A wealth of degree programs offered through TCNJ’s seven schools—Arts &
Communication; Business; Culture and Society; Education; Science; Nursing, Health,
and Exercise Science; and Engineering make its retention and graduation rates among
the highest in the country.
Students – 6,400 undergraduate, 850 graduate
Faculty - 325 full-time, 350 adjunct
Staff - 675 full-time, 125 part-time
The College of New Jersey
03/03/2010
Technology at TCNJ
 Migrated from legacy system SIS to PeopleSoft-
Oracle suite of applications in 2009.
 Currently on
 Oracle 10g
 Peoplesoft 9.0
 Peopletools 8.49.15
 SunSolaris 9.0
The College of New Jersey
03/03/2010
Background
 PeopleSoft CS 8.9 has several pages which can display
photos - a highly visible feature in comparison to the legacy
system.
 This is a capability that the campus community (advisors,
administrative staff, campus police etc) would benefit from
extensively.
 There are also other third party systems (such as SOCS)
that would benefit from access to these photos.
The College of New Jersey
03/03/2010
Source
The photos are obtained via an add-on photo
management system – IDWorks.
 The photos are located on the IDWorks server.
 Details about the photos are maintained on the
Blackboard database.
 Filename – Customer_ID
 File Location – Photo_Path

The College of New Jersey
03/03/2010
Delivered process – Step 1
The College of New Jersey
03/03/2010
Step 2
The College of New Jersey
03/03/2010
Step 3
The College of New Jersey
03/03/2010
Challenge
 PeopleSoft’s current capability is to manually load one photo at a
time – we needed a Mass load process.
 TCNJ wanted to leverage PeopleSoft functionality and capability to
the maximum and minimize customizations
 TCNJ needed a process that would enable photos to be loaded into
PS and also be accessible to other third party systems.
 The process had to handle large loads during Orientation when
incoming students get their pictures taken for their ID cards and
also
 Daily updates for existing students and new Employees
The College of New Jersey
03/03/2010
Research
 Some of solutions we researched included
 Loading the photos via the Employee Photo Upload
Component Interface.
 C++ load programs
 SQL or PL/SQL scripts to load photos in the back-end
Had to be run by the DBAs
 Did not provide the capability to check the PeopleSoft system for
existing Emplids
 Did not give the Functional users control over the load process
 Did not provide any log of uploaded/updated photos

The College of New Jersey
03/03/2010
Solution
Other
third
party
software
ID
Works
PERL script
Black
board
DBase
Gets files, does compare and
loads into Oracle Dbase –
Photo Hub.Scheduled to run
daily
TCNJ
PhotoHub
TCNJ SERVER
Photos.jpg
SHELL script
PS
pages
PS
Oracle
DBase
The College of New Jersey
SQR
Loads jpgs to
PS tables
TCNJ PROD
SERVER
Photos.jpg
Creates a list of new
filesS
Scheduled to run
once a week.
Emplid.txt
03/03/2010
Script 1
 This script runs daily to keep the photo hub in sync with the
BlackBoard/IDWorks tables. This is scheduled via cron.

The script uses DBI and DBD Perl packages which allow access to
many database environments in a standard way. DBD implementations
exist for proprietary products such as Oracle, Microsoft SQL Server,
IBM DB2, and for free-software databases such as SQLite, PostgreSQL,
Firebird, and MySQL.
The College of New Jersey
03/03/2010
Script 2
 This is comprised of 4 scripts (3 Bourne shell scripts and one
SQL script) to pull down the latest photos as JPGs each
Tuesday morning to PAWS.
There is a main "wrapper" script (aka driver script). It calls a
script to get all the EMPLIDs where the photos have been
updated in the last 8 days. That script uses and the SQL
script.
Finally, the wrapper script calls the script that actually loops
through all the EMPLIDs that were gathered to download the
photos to a directory on the PAWS server and create the text
file containing those filenames.
The College of New Jersey
03/03/2010
This is the main script (getphotos.wrapper) that runs the sub-scripts
below to get the latest photos every Tuesday morning
 #!/bin/sh
cd /ora/u05/xfer/photo
/ora/u05/xfer/photo/getemplids.sh >/dev/null 2>&1
touch /ora/u05/xfer/photo/EMPLIDs.txt
/ora/u05/xfer/photo/getphotos.sh </ora/u05/xfer/photo/EMPLIDs.txt
>/dev/null 2>&1
cd /ora/u05/xfer/photo
chown psoft *.jpg *.log *.txt
The College of New Jersey
03/03/2010
This is the getemplids.sh script referenced in getphotos.wrapper, line 4

#!/bin/sh
ORACLE_HOME=/u01/app/oracle/product/10.2.0
PATH=$ORACLE_HOME/bin\:$PATH
export ORACLE_HOME PATH
/bin/rm -f /ora/u05/xfer/photo/EMPLIDs.txt
sqlplus -S photoid/xxxxxx@photoserver.tcnj.edu:1521/PHOTOS.photoserver.tcnj.edu
@/ora/u05/xfer/photo/getemplids.sql
The College of New Jersey
03/03/2010
This is the getemplids.sql script referenced in the last line of
getemplids.sh
 SPOOL /ora/u05/xfer/photo/EMPLIDs.txt
SET TERMOUT OFF
SET TRIMS ON
SET TRIM ON
SET PAGESIZE 0
SET HEADING OFF
SET FEEDBACK OFF
SET TAB OFF
SELECT EMPLID
FROM PHOTOID.PHOTOS
WHERE LAST_UPDATE > SYSDATE - 8;
SPOOL OFF
EXIT
The College of New Jersey
03/03/2010
This is the script that gets the actual photos out of the PHOTO database,
referenced in line 6 of getphotos.wrapper . An Apache web server running
on the photoserver provides a URL interface to the PHOTO Dbase

#!/bin/sh
PATH=/usr/bin:/usr/sbin:/bin:/sbin;export PATH
WGET=/usr/sfw/bin/wget
/bin/rm -f *.jpg File_names.txt nophoto.log
while read EMPLID ; do
if [ ! -z "$EMPLID" ]; then
echo "Getting photo for $EMPLID ..."
$WGET -q -O tmp.jpg 'http://photouser:xxxxxx@photoserver.tcnj.edu/idphotocgi/showphoto.pl?emplid='"$EMPLID"'&days=16'
if [ -s tmp.jpg ] ; then
mv tmp.jpg "$EMPLID.jpg"
echo "$EMPLID.jpg" >>File_names.txt
else
echo "$EMPLID" >>nophoto.log
fi
fi
done
rm -f tmp.jpg
chmod 644 *.jpg File_names.txt nophoto.log
The College of New Jersey
03/03/2010
begin-sql
CREATE OR REPLACE DIRECTORY BLACKBOARD_PHOTOS AS '/ora/u05/xfer/photo/';
end-sql
begin-sql
DECLARE
src_lob BFILE ;;
dest_lob BLOB;;
src_lob_exists BOOLEAN;;
f utl_file.file_type;;
file_name varchar2(200);;
src_emplid varchar2(200);;
emplid_exists PS_PERSON.EMPLID%TYPE;;
BEGIN
src_lob := bfilename( 'BLACKBOARD_PHOTOS', $Emplid_jpg );;
INSERT INTO PS_EMPL_PHOTO VALUES($Emplid, 1, EMPTY_BLOB())
RETURNING EMPLOYEE_PHOTO INTO dest_lob;;
DBMS_LOB.OPEN(src_lob, DBMS_LOB.LOB_READONLY);;
DBMS_LOB.LoadFromFile( DEST_LOB => dest_lob, SRC_LOB => src_lob, AMOUNT =>
DBMS_LOB.GETLENGTH(src_lob) );;
DBMS_LOB.CLOSE(src_lob);;
EXCEPTION
WHEN NO_DATA_FOUND THEN
utl_file.fclose(f);;
END;;
end-sql
The College of New Jersey
03/03/2010
Summary
 New photo is taken via IDworks
 The photo is stored on IDworks server
 Information about the photo – CustomerID, Photopath are available on the Dbase –
Blackboard
 Shell script 1 reads information on Blackboard, compares to local Dbase and



Inserts/Updates photos to TCNJ Photo Hub in BLOB format
FTPs the photos as BLOB to TCNJ Server
This script is scheduled via Cron to run daily
 Shell script 2 reads information on the TCNJ PhotoHub and
 gives a list of Emplids created in the past 7days - Change Log
 Saves the photos as JPG on the prod server
 This script is scheduled via Cron to run once a week
 Run Control / Scheduled job
 SQR reads the change log file and
 Compares with PS transaction tables to make sure Emplid is valid
 Checks if photo is existing – Insert or Update
 Creates a log of activity
 PS logs – emailed via Distribution Lists to Functional Users
The College of New Jersey
03/03/2010
Solution - SQR and RunCntl page
 Advantages:
 Built off of existing
PeopleSoft functionality
 Will not interfere with
upgrades
 Allows users to have control
over the process
 Allows control over the
cohort of Emplids for whom
we want to load photos
 Can be scheduled
 Clean and non invasive
 Secure
 This process can work with
other source Dbases as well.
The College of New Jersey
 Disadvantages:
 Reliant on a third party
system to provide the jpg
files
 Requires Shell scripts to run
as a means of connecting to
the photo source
 Sometimes the photos are
imported in different sizes
03/03/2010
Questions?
 Contact Information:
Sushma Mendu
mendu@tcnj.edu
Shawn Sivvy
ssivvy@tcnj.edu
The College of New Jersey
03/03/2010
Download