Creating, Modifying, or Deleting ZUAUSR Processing Scripts
Overview
Several steps are taken to add new script functions.
- Add Script data to ~/users/zu/zuausr/appworx/SCRIPT.pm
- Create appropriate SQL script in /ZUAUSR/product/PROD/bin to perform the work
- Create ZUAUSR Base Class
- Associate Base Class to SUPER class
Add Script data to ~/users/zu/zuausr/appworx/SCRIPT.pm
The following template is repeated through SCRIPT.pm. To include a new script, add a section with the following format substituting the new script information for:
- GRANT_BANPROXY : name of the ZUAUSR base class
- zua_grant_banproxy : name associated to the SQL script under /ZUAUSR/product/PROD/bin
# process GRANT_BANPROXY "script" elsif ( $process_ind eq $::process_ind_add and $class_name eq 'GRANT_BANPROXY' ) { # verify no pending BANNER processing # (procedure says process GRANT_BANPROXY only if BANNER processing completed) my $continue = &::verify_banner( @data ); if ( $continue == $::failure ) { $process_status = $::skipped; $status_msg = "BANNER processing pending"; return ( $process_status, $status_msg ); } $script_command = "BEGIN\n:result := zua_grant_banproxy(\'$userid\');\nEND;"; $status_msg = &execute_db_procedure ( $script_command, $class_inst ); if ( $status_msg =~ m/Success/ ) { return ( $::status_ind_completed, $status_msg ) } else { return ( $::status_ind_processing_failure, $status_msg ) } }
Create Appropriate SQL Script
The reference in SCRIPT.pm, $script_command = "BEGIN\n:result := zua_grant_banproxy(\'$userid\');\nEND;";, refers to a SQL script located at /ZUAUSR/product/PROD/bin. Actions that effect change to Banner or ORACLE are encoded into scripts at the PROD location. PROD is the only instance of ZUAUSR running, even if other instances contain copies of some relevant files.
SQL scripts that are of type SCRIPT follow a pattern. The scripts follow clear checking to be sure the user is not terminated, that the user has basic pre-requisite roles granted, and that the user does not already have the role set.
Script Comparison for Similar Functionality
The following excerpts show the places in which the scripts differ where the functions are essentially the same. Each of these files are 171 lines; most of the lines in the two scripts are identical.
< rem TITLE: zua_grant_banproxy.sql < rem DESCRIPTION: script to create the zua_grant_banproxy function to < rem grant connect through BANPROXY to users for Banner9 --- > rem TITLE: zua_grant_banjsproxy.sql > rem DESCRIPTION: script to create the zua_grant_banjsproxy function to > rem grant connect through BANJSPROXY to users for Banner9
< Program: grant_banproxy < Purpose: Grant connect through BANPROXY to users for Banner9 access --- > Program: grant_banjsproxy > Purpose: Grant connect through BANJSPROXY to users for Banner9 access
< create or replace function zua_grant_banproxy ( parm1 varchar2, debug_flag IN boolean := FALSE ) --- > create or replace function zua_grant_banjsproxy ( parm1 varchar2, debug_flag IN boolean := FALSE )
< execute immediate 'alter user ' || v_uname || ' grant connect through banproxy'; < < rc_msg := success_msg||': '||'CONNECT through BANPROXY granted'; --- > execute immediate 'alter user ' || v_uname || ' grant connect through banjsproxy'; > > rc_msg := success_msg||': '||'CONNECT through BANJSPROXY granted';
Script Comparison for Different Functionality
The following exemplifies the fact that the script's function ultimately defines it's contents. Yet, the difference in line number is 171 to 208. The bulk of the SQL code is the same.
< rem TITLE: zua_grant_banproxy.sql < rem DESCRIPTION: script to create the zua_grant_banproxy function to < rem grant connect through BANPROXY to users for Banner9 --- > rem TITLE: zua_insert_gurusri.sql > rem DESCRIPTION: script to create the zua_insert_gurusri function to > rem insert a row into BANSECR.GURUSRI for MEP 17,18c17,18 < Program: grant_banproxy < Purpose: Grant connect through BANPROXY to users for Banner9 access --- > Program: insert_gurusri > Purpose: Insert a row into GURUSRI to give users a default campus for MEP 22c22 < create or replace function zua_grant_banproxy ( parm1 varchar2, debug_flag IN boolean := FALSE ) --- > create or replace function zua_insert_gurusri ( parm1 varchar2, debug_flag IN boolean := FALSE ) 25a26,27 > v_uinit varchar2(2); > v_vpdi varchar2(6); 45c47,49 < WHERE USERNAME LIKE user_in; --- > WHERE USERNAME LIKE user_in > and not exists (select 'y' from bansecr.gurusri > where gurusri_vpdi_user_id = username); 137c141,144 < close sel_username_cursor; --- > LOOP > BEGIN > v_uinit := substr(v_uname,1,2); > v_vpdi := 'UAA'; 139c146,172 < execute immediate 'alter user ' || v_uname || ' grant connect through banproxy'; --- > if v_uinit in ('AF','AH','AN','AY','VN','VF','DN','DF','IN','IF','IH','PN','PF','PY') or > v_uname in('VRSX10','VRSX20','VRSX1','VRSX2') or > v_uname like('OPS$AXRE%') or > v_uname like('KIKEN%') or > v_uname like('KIANC%') then > v_vpdi := 'UAA'; > elsif v_uinit in ('EF','EN','FF','FH','FN','FY','LF','LN','NN','NF', > 'RN','RF','ZN','ZF') or > v_uname in('VRSX30','VRSX40','VRSX3','VRSX4') or > v_uname like('OPS$FXRE%') or > v_uname like('KIFBK%') then > v_vpdi := 'UAF'; > elsif v_uinit in ('JY','JN','JF','JH','TF','TN','KN','KF') or > v_uname in('VRSX50','VRSX60','VRSX5','VRSX6') or > v_uname like('OPS$JXRE%') or > v_uname like('KIJUN%') then > v_vpdi := 'UAS'; > else > v_vpdi := 'UAA'; > end if; > insert into bansecr.gurusri (gurusri_vpdi_user_id, gurusri_vpdi_code, gurusri_user_def_inst_ind, > gurusri_activity_date,gurusri_user_id,gurusri_data_origin) > values(v_uname,v_vpdi,'Y',sysdate,'ZUAUSR',NULL); > END; > FETCH SEL_USERNAME_CURSOR into v_uname; > EXIT WHEN sel_username_cursor%notfound; > END LOOP; 141c174,178 < rc_msg := success_msg||': '||'CONNECT through BANPROXY granted'; --- > IF sel_username_cursor%isopen > THEN close sel_username_cursor; > END IF; > > rc_msg := success_msg||': '||'ID inserted into BANSECR.GURUSRI';