430 likes | 532 Vues
Gain insightful knowledge and practical tips on R18 administration, including computed columns, migration plans, development lifecycle, and more. Explore the intricacies of syntax, object-oriented design, variable types, subroutines, methods, and operators to enhance your expertise. Learn how to efficiently move code across different environments and conduct thorough tests before deploying changes to production. Elevate your R18 skills with this detailed session.
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