This is divided into several sections:Perl - On-Line HTML pages, books, WEB tutorials HTTP/HTML - books RoAccess
End User Training RoLoader Training (Optional RoAccess PlugIn) RoPages Training (Optional RoAccess PlugIn) Program Development Training
Frames VS Non-Frames Using Radio Buttons vs. Hyperlinks Selecting Language to USE Utilizing Non-RoAccess graphics for custom look
Selecting from Multiple Real or Virtual Servers Selecting a Database from that Server the Username the Password
Selecting a Subject Area or Repository Selecting the starting MODE (Edit/Display) ItemType Filter option Long Form option
The Ubiquitous HELP button Switching between Display and Edit mode The Button Tray at the top Subject Areas History Audit DBA Utils The Item Class Selector The Long Form Option ItemType Info Button Selecting a ItemType Selecting a System ItemType Up and Down arrows The Hidden Dot Doing a simple name wildcard filter Doing an Extended filter
Button Tray at the top Subject Areas Types SpreadSheet Path Reports Stored Reports Edit Mode Buttons New Item Delete Item Rename Item Information Area Up/Down Arrows function List of Items Bottom: count
Button Tray at top Environment Version Info Path Reports AttList Edit Mode Buttons Copy Item Information Area Right, Left, Up and Down arrow buttons Display Mode Only Attributes with data are displayed What determines display order -extended metadata Attribute Info button Text and Value Attributes, differences Link Attributes: how to interpret display and hyperlinks Binary/Blob/Document Attributes - mime types Edit Mode Value Attributes: text, range, lookup from LIST Text Attributes: text, range, long lines Link Attributes: adding, deleting, link qualifiers, link order Binary Attributes: uploading, descriptions, mime-types Extended Metadata: PICs like I4, F10.6, C20 Number of columns and rows to display, min and max The next mode to be in When to Update Database, when not. Form changed and not.
Selecting type of spreadsheet and delivery format Selecting which Items to be used Selecting which attributes to be displayed Extended Filtering Option Changing the Selected List Interpreting various Spreadsheet Output Formats Hyperlinks to each Item Link Attributes
What is a path report How to create a path report Selecting Reporting Style Lists Simple Graphic Advanced Graphics Unique Names Add Definition Option Depth Selecting Which Path Report Interpreting Report Outputs Various runs for List, and graphics to display differences
Select Which Stored Report Selecting a Seed Item
Gather ItemType Statistics: shows many hard to find problems. Show All Hidden Items / Instances. Quick problem resolutions. Procedure Versions. Handling Production, Test and Development
text/html upload a file: see UpLd.pl download a file mime type: see DownLoad.pl display an image: see ItemGet.pl set up a FRAMESET: see Login.pl
Can telnet and command WEB server. Listens on an I/P address and port (socket) Examples: IIS (Microsoft Internet Information Server) NT only PWS (personal/peer WEB server) Apache (Windows and Unix) Netscape Enterprise (Windows and Unix) Java WEB Server (Sun, Unix) Others. RoAccess runs on them all
Steps in a query HTML handling Stateless (no "sessions") Can just send a HTML text file Can start a program, pass data to and from it HTML can have JavaScript or Java Notes: Killing a long running cgi-bin does not kill the program. Use the kill command from NTRESKIT Displaying long Item lists can take LONG time: the browser usually MSIE and Netscape and each version of each are different. Make no assumptions of similarity or sameness of actions Typical RoAccess (cgi program) activation URL is http://server/roaccess/cgi-bin/program.pl the WEB server knows to run a .pl file using Perl Perl loads the text, compiles and executes it print statements from the perl program are read by the WEB server and then echoed (mostly) back to the browser Rochade accesses are done by passing a file or pipe of data to the BATCH CLIENT (Autopilot executable for Windows) Results come back in a file or pipe (pipes are not reliable in Windows, even NT) Program processes results of Rochade query Program uses print statements to send HTML back to browser Program exits (and so does perl) Menu programs to not need to query Rochade Programs can also do other things, like open ODBC connections, run other programs, etc.
Interpreter Performance options Modules Platform independent General Syntax every statement ends with ";" a line from a # to end of line is a comment # inside a string are not a comment "Hello # there" is not a comment perl is mostly lower case. Don't use upper case as a rule supplied subroutines do not need () for arguments: @array = split / /,$line; @array = split(/ /,$line); Do NOT use the () unless forced to. Just clutter up screen needlessly Variables Simple: $value=123 ; Array: $value[0] = "Hello"; Associative array $value{"Description"} = "This is text"; note: no space before the "{" or the "[" Subroutines sub doit { ... } invoked by &doit, doit(), doit(args,...) can return values, set globals The "require" statement separate file can contain inline code, subroutines, ends in a "1" search path in @INC Special Syntaxes Block is { } Most used perl subroutines print "string"; @array = split / /, $line; ($var1,$var2,$var3) = split / /,$line,3;
Not a WEB server - a WEB application using cgi programs Written in Perl Provided in source format, available in executable Can integrate Visual Basic, C, C++ or other WEB applications and plugins Can have multipls RoAccess "servers" for Development, Test, Production, custom versions, testing new releases. Many uses. Each runs under same WEB server, with just a different name, like http://server/roaccess, http://server/production, http://server/custom but usually have names more meaningful. They can run on different machines or different WEB servers on the same machine listening on different I/P addresses and ports
Language Independent Coding AConfig.pro & AConfig.pl cgi-lib.pl - industry "standard" puts parameters into variables, modified a small bit handles upload of files %in associative array $in{"iT"} is the ItemType Trace/Debug - runtime selectable Error Processing: Fatal: processing can't continue: missing parameter, illegal conditions. RoAccess does a great deal of validity and reasonableness checking RoAccess Standard Processing parameters starting with lower case are considered program variables: $in{'iT'} = "SCN/PROGRAM" by cgi-lib $iT="SCN/PROGRAM" ; Upper case parameters are special use on case by case A number of "standard variables $d (database) "AP-DATA" $u (user) "ROADM" $sa (Subject Area) MANAGEMENT INITIAL $sa_short (Subject Area) MANAGEMENT $iT (ItemType) "SCN/PROGRAM" $iN (ItemName) "MORTGAGE RECALC" $aN (Attribute Name) @aNs (attribute names) an array list $rT (run time Tag) ROA_FIRST_SERVER (see RoAccess.ini) @cli_lines (RPL to go to Rochade) @results (results of RPL) Location of temp files, other standard variables used later Documentation Each screen has a "automatic help" button Attributes have blue "info ball" for in depth Attribute info Basic Application Flow Graphics:cgi-lib invoked "automatically" set standard variables write HTTP header write preliminary boilerplate to screen create @cli_lines array of RPL pass to Rochade get results in @ro_results analyze results print to screen in HTML if a FORM end HTMLdisplay inputs, outputs declare target program
call hidden_variables() to pass parametersCreates files starts a program uses outputs Passing Parameters Between Screens Parameter passing is automatic Any screen can be invoked by GET or PUT. RoAccess makes them seem the same. gen_query_string(overrides) is for hyperlinks hidden_variables() is for FORMS @user_variables (see AConfig.pro) declares additional user variables to be automatically passed between screens Extended Metadata: To save what Rochade cannot Data TYPE and display PIC Attribute Display Order Modified RoAccess Applications Good for minor needed changes: to implement a business rule, such as by default all users are read only. Fastest way to change (just tweaking) Changes will be overwritten on next RoAccess upgrade or new version User Written Applications user_html directory: user images and HTML pages user_cgi-bin directory: user perl programs these directories will not be overwritten by RoAccess new versions AConfig.pl integrates application using configuration parameters
Everyone must have their own copy of Roaccess subdirectory: all under c:\inetpub\wwwroot user1 user2 each with own copies of AConfig.pl and RoAccess.ini Strings: 'aaa/a\b' "value is $value" '#$PUTLN HELLO^ THERE "#\$GET $iT \@iN DEFINITION" $ says a variable follows @ says a variables follows (sort of) From ItemGet screen Add MINE button to user_html and AConfig.pl Create my_item_get.pl in user_cgi-bin Display parameters Select a particular ITEM/ITEMTYPE with a link attribute with multiple links Display both DEFINITION and Link Attribute with hyperlinks Create a FORM below it with every type of input/button to submit to ../cgi-bin/ItemGet.pl <INPUT TYPE="TEXT" <INPUT TYPE="HIDDEN" <INPUT TYPE="RADIO" <INPUT TYPE="CHECKBOX" <INPUT TYPE="SUBMIT" <TEXTAREA> .. </TEXTAREA> <SELECT> <OPTION>...</SELECT>
If a table is created, be sure to close it before writing an error message Tables should not be over 100 or so lines. Break into multiple tables When using TRACE, look at VIEW SOURCE because the displayed WEB page with trace may have missing items because of special characters like "<" or spaces in data are compressed to one space on the WEB page output URL's must escape certain characters Output to screen must call escape_line() to display special characters, like "<" All tag parameters <TAG PARAMETER="value"> should always have value in double quotes (") When starting TRACE on/off separate window, do "FILE/NEW WINDOW". Do not double click browser ICON or use the START window. The new window won't share the cookies between themselves.
ROA_RO_LOADER ItemType Purpose How it fits in Usage Extended Metadata LIST : allowable lists of values LIST of LINK QUALIFIERS: which are allowed Display PICs Numeric RANGE Where can data come from Existing files Word processing documents Spreadsheets Export from programs Output from custom programs that read custom or proprietary databases. A number of other sources Validation Types Why so many possible validations? Range, LIST, LIST of Link Qualifiers, PICs Items Linked to Exist This Items must not exist Just Delete These Items No 2 lines in data file refer to same Item /Instance File Spreadsheet Cell Formats Simple Text Wrapped Text Embedded Hard Returns (non-wrapped) Binary Blob/Document/File loading format Link Attribute formats (several) Starting RoLoader Understanding the many options Overview of what will be happening What if your browser times out? No problem. Load now or later? Validations Internal Display Options (for the curious minded) Types of Error and validation Messages Loading only part of the data file Loading only a range of input data lines (e.g., 100-200) Loading certain attributes, ignoring others What if I later find my data was bad, or I want to reload. What are my options?
Why RoPages Rochade consumes resources (CPU and disk) This limits number of concurrent accesses What can be cached, and what not? What order of magnitude improvement expected? Between 10 and 100 times improvement. The more heavily loaded your Rochade Repository, the higher the improvement factor. How to specify what Databases, Subject Areas/Projects and ItemTypes to be cached How to identify a cached page. How to refresh a cached page. Where is the cache? How is cache created? How is cache maintained? Initially - none or all As you go - automatically keeps in sync with Repository Refresh on Demand - One Item Refresh on Demand - All Items Autopilot and Scanners?