430 likes | 520 Views
R18 Administration – A Closer Look. NERDug 2006 – Suffolk University Session 10727 7/28/2006 9:30AM Jeff Ohvall – University of Wisconsin, Stout Kay Schnur – University of Wisconsin, Stout Jeff Butera – Hampshire College. R18 Administration – Outline. Computed Columns What's new
E N D
R18 Administration – A Closer Look NERDug 2006 – Suffolk University Session 10727 7/28/2006 9:30AM Jeff Ohvall – University of Wisconsin, Stout Kay Schnur – University of Wisconsin, Stout Jeff Butera – Hampshire College
R18 Administration – Outline • Computed Columns • What's new • Tricks/traps! • Development Lifecycle • Conceptually same • Move utilities different, LPR is fun! • R18 Migration Plan • What, when and why • We got there, you can too!
Computed Columns • New MANDATORY language/syntax • Similar to Java/J# • If Unidata combined, focus effort here • Run scanners early and often! • Take action to correct/change computed columns in R17 live environment NOW!
Computed Columns • Syntax is similar to Java/J# • Follows object-oriented design • There is a learning curve • Frustration will ensue – keep plugging away • Must end with a return statement
Computed Column Variables • CDD vars must have v or vl notation • Temp vars should use x or xl notation • Remove all periods • Capitalize first letter after period ID => vId STUDENTS.ID => vStudentsId X.TEMP => xTemp
Computed Column Variable Types • Matters more for SQL/Oracle • string • money • date • realnum • key • boolean • int
Computed Column Key Type • Creates pointer to another file string xResult1; key xKeyStudentAcadCred for file StudentAcadCred; xKeyStudentAcadCred = vlPstStudentAcadCred[1]; xResult1 = vStcTerm; return xResult1;
Computed Column Typecast • Changes one type to another • List new type in parens int xTemp; xTemp = 5; string xString; xString = (string) xTemp; return xString;
Computed Column Arrays • Like Unidata list variable • Elements can be inserted, deleted, extracted • Use [] notation to grab specific element int xTemp; int[] xlMylist; ... xTemp = xlMylist[4]; return xTemp;
Computed Column Subroutines • Must be IS typed on BGP • First argument is only output allowed • Naming convention same as variables: string xResult1; int xAge; xResult1 = SCalcAge(vId); xAge = (int) xResult1; return xAge;
Computed Column Control/Blocks • May enclose blocks of code in {} • Blocks following if/else MUST have {} string xResult1,xResult2; int xAge; xResult1 = SCalcAge(vId); xAge = (int) xResult1; if (xAge > 40) { xResult2 = 'OLD'; } else { xResult2 = 'YOUNG'; } return xResult2;
Computed Column Methods .Char() is like CHAR: X = CHAR(253) string xResult; xResult = (253).Char(); .Size() is like DCOUNT: DCOUNT(APP.APPLICATIONS,@VM) return vlAppApplications.Size();
Computed Column Methods ArrayCat like CATS: XL.RESULT = CATS(STUDENTS.ID:'*', STU.ACAD.PROGRAMS) string xlResult; xlResult = ArrayCat((vStudentsId:'*'), vlStuAcadPrograms) return xlResult;
Computed Column Methods SubArray like FIELD or EXTRACT: XL.RESULT = FIELD(VL.STU.ACAD.PROGRAMS,@VM,2) XL.RESULT<1,-1> = FIELD(VL.STU.ACAD.PROGRAMS,@VM,3) string xlResult; xlResult = SubArray(vlStuAcadPrograms,2,2); return xlResult;
Computed Column Methods ToDelimitedString like CONVERT (not really) Converts Array to string with given delimiter: string [] xlResult; xlResult = vlStuAcadPrograms. ToDelimitedString((253).Char()); return xlResult;
Computed Column Methods Convert like CONVERT (reallly!) Works on Single/multi valued vars: string [] xlResult; xlResult = vlGlpsGlNo.Convert("_",""); return xlResult;
Computed Column Methods • Many other math/other methods: • Abs • Sqrt • Sum • Index • ToUpperCase • ToLowerCase • Count • Trim • Len
Computed Column Operators Comparison < > <= >= == != ArrayLT ArrayGT ArrayLE ArrayGE ArrayEQ ArrayNE Boolean && || ! Math + - * / += -= *= /= ^ % String : :=
Development Lifecycle • Steps/screens to move code different • Overall process not different than before • Code in development appenv • Move into test appenv • Conduct test(s) for code/screen/processes • If needed, fix in development and repeat • Move into production when ready
Development Lifecycle – Step 1 • Code in development appenv • This includes: • files/fields • computed columns • screens (web/UI) • reports/processes • list specs • GENerate process/screen • Debug syntax errors as needed
Development Lifecycle – Step 2 • Declare items as custom • Use CDEC (like MDEF) • Can mark items as clone of Datatel process/screen/et DMSU22 <=> XDMSU22 • Builds MOVEINFO record (like MDEF) • This need only be done once • Remove Datatel-delivered components!
Development Lifecycle – Step 3 • Create release package using CPKG • Can group multiple declarations (CDEC) • This builds a software update like Datatel • Places copy into Local Product Repository • Re-run CPKG anytime you make changes • LPR updated with new version
Development Lifecycle – Step 4 • Install release package into test appenv • Just like any other software update: • Create software group (CSUG) • Install software group (ISUG) • Test screen/process in new appenv • Go back and redevelop in dev appenv • Start at beginning, but skip CDEC
Development Lifecycle – Step 5 • Install release package into production • Just like any other software update: • CSUG already run previously • Install software group (ISUG)
Development Lifecycle – Admin • SA Valet used to download software updates • Copies from DPR to your LPR • Requires various admin logins • Installing software updates done thru UI • Requires screen access, no passwords
Development Lifecycle – Tools • RPIF – Item finder based on process • XCRB01 • SUGS – See software groups/statuses • SUSE – Update finder based on date, status, group, etc • 21141.44-1805 • 21141 • Installed 07/10/2006 thru 7/16/2006 • Released 07/01/2006 thru 07/02/2006 • Release status of Completed
R18 Migration Plan – Live Date? • Two approaches • build tasks with time estimates, work forward, determine target live date • choose target live date, work backward to assign tasks • Institutional needs/constraints • Database change will require more time • Oracle, SQL or distributed
R18 Migration Plan – Scanners • Computed column • Custom code • Data (format) • Unidata combined • focus on computed column over others • Oracle/SQL • data format cleanup is HUGE • computed column important
R18 Migration Plan – Big Picture • Build/populate test appenv • Test UI/webadvisor • Correct any issues, repeat • Build/populate last appenv before live • Move ALL custom to LPR - no code changes • Build/populate production appenv • Install custom from LPR - don't convert! • Test UI/webadvisor • Live (whew)
R18 Migration Plan – Single Appenv • Copy R17 main to R18 location • Build appenv (SA Valet) • Data migration • Custom code migration • Computed column migration • WebAdvisor setup
R18 Migration Plan – Gotchas • Deploys all Datatel-delivered code from new source • appl.VALCODES not getting copied (inq only) • PDEF changes lost • internal size of fields • DMI parameters reset (fixed?) • HR file permissions • Hard-coded pathes (ELF, shell/perl scripts) • LDAP guest user required • TDClient didn't get copied (fixed?) • Key counter from CONTROL.POINT to PID8 error (fixed?) • new files in toolkit (FS) don't get created until field added