S/ENL - The Sprezzatura Electronic Newsletter (All the RevSoft News That's Fit To Print (And bits that probably aren't as well...)) Hi there and welcome to our end of year SENL! We're pleased to be able to bring you another goodie bag of tech trivia, in depth articles, product reviews and even a new column from John Godfrey "OpenInsight for Dummies".
What a roller-coaster ride the last 12 months have been! At the beginning of the year it looked as though all we had to look forward to was a continuing erosion of the RevSoft user base along with a slow decline in the product until it finally gave up the ghost. Now as this year ends we're sitting on the brightest looking future in a long time! We're pleased to be able to preview next year with our insight into 32 bit OI.
With RevSoft's permission we're pleased to reproduce the text of the President's letter - it describes the past year in greater detail and saves us doing it!
Some of the projects we've been working on internally here at Sprezzatura have finally made it out into the marketplace and have been garnering plaudits from all and sundry. We're particularly pleased with our S/ocket tools and S/Can product - we'll talk about them in the next SENL. Suffice to say that S/ocket provides a way for OI and AREV users to undertake sockets communications (reading web pages remotely, communicating with external systems etc) and S/Can (Can we fix it? S / Can!) (If you don't know Bob the Builder forget the foregoing…) - a utility for OI users to scan directly from within OpenInsight. We've taken a new approach to our licensing costs for utilities and we're starting to express utility pricing in "Consultancy days". We know that when evaluating utilities the temptation is always to think "hmmm how long would it take me to write that myself?" and we're committed to ensuring that the answer is a no-brainer - it'll always make sense to take the Sprezz product! S/Web is a MAJOR case in point. There've been over two person years of R&D gone into this product and it shows. More than just a replacement for OICGI - S/Web is a completely self contained development environment for the Web and Rev G, AREV or OI. We're so confident that it'll meet your needs that we'll a) Allow you to evaluate it free of charge for up to 30 days b) Make it ludicrously inexpensive for you to acquire a development copy This SENL has an article about the AREV version of S/Web. Licensing is slightly different for the OI version so if this is an issue why not drop us an email to info@sprezzatura.com. We are now actively seeking beta test sites for our Rev G implementation of S/Web, so again if you're interested, drop us a line. Something which seems to be happening with a little more frequency than it used to these days is that people mail and say "I've got a problem with my network configuration and I was wondering if you could help?". The answer is a very straightforward and resounding "YES". The degree of help comes down to what you actually want! We can provide email/phone based support for $40 (US) per 15 minute unit or on-site work starting at $75 an hour (senior consultants obviously cost more). Most support mails are answered by return and you'll be warned if a query is going to take more than one unit to resolve. I can't help but recall a visit we had last week from a dishwasher engineer who spent 5 minutes looking at our machine, twisted a pipe then gave me a bill for $150. "That's a bit steep for 5 minutes work" I complained, "how is the bill broken down"? "Easy" he said, "time and materials $10, gaining the experience to be able to fix it in 5 minutes, $140". Onto a point that for various reasons is dear to our heart at the moment. S/List licensing. On the road-show earlier this year we came across a company who were distributing S/List with their own package. Their interface allowed the user to modify reports which were then executed via S/List. Now the web site for S/List explicitly states " S/LIST reports may be deployed with no additional charge but the S/LIST interface may not be exposed in any way to the user. That is to say, if the user can develop their own reports either using the S/LIST Assistant or in any other manner a developer license is required". In other words, if you provide ANY way for your user to modify the report output appearance rather than run canned format reports, you must provide them with a developer copy. We genuinely thought this was as unambiguous as it was possible to be but this developer claims to believe differently. If you are using S/List for reporting AND your users can change any aspect of the appearance of the output themselves (even by using your own front end to modify the sentence eventually executed by S/List) your users need a development copy. If you find yourselves in breach because the licensing was ambiguous to you too then contact us and we'll try to ensure that you can fulfil your legal obligations at a price you can afford! (Or just wait 'til we find out via the grapevine and we'll come to you <g>). We're working on the next generation of S/List as we speak - but as this will take a while we're hoping to release a patch for OIPI 4.1 users early in the new year. Our documentation elves have been very busy this holiday season. If you're an S/List user you'll be VERY pleased to know that new revised documentation is now available on line at our web site. Just navigate to the S/List section and it's all there! For those of you who want to read more about S/Web, the technical documentation is now available on line. The documentation IS a work in progress so we welcome your feedback! Again just go to the S/Web section of our web site to read it! Finally, a Sprezzatura contingent will be on the West Coast of the US in mid January. If you'd like to meet to talk about how we at Sprezz can help you, or to talk further about S/Web or even to reform BARUG briefly for old times sake just drop us a line! Anyhow's enough already - time for the main show - so without further ado, ladies and gentlemen, we bring you the year end 2001 SENL! Best wishes All at Sprezzatura SENL Feedback
Well every time we put out a SENL the feedback is always the same - what took you so long? We've tried to keep the gap a bit shorter this time but we've got so much good stuff to document that we're bound to have another coming soon after this - just like the legendary E3 buses on Popes Lane here in Ealing.
JS writes "Andrew - I've heard rumours that s/list will soon be able to export to some sort of delimited text file? Is this true?"
Well with the advent of OIPI Professional, we expect to be adding a number of new features into the product including PDF production and CSV/Tab delimited files. HTML production will continue to be catered for by our "S/List for the Web" product - see the review in the next issue!
Meanwhile on the subject of the release by Sprezz of the SysKnowledge tool, SB from Cyprus writes "Silly me I cannot seem to install it. The setup tool wants OI somewhere which we do not use. Can you give us a pointer please?".
Looks like we forgot the possibility that AREV users might want to play with it! So we've cut an AREV version using an OI runtime which is freely available for download from our web site from the Sysknowledge section of our products and services page.
An artiste currently exhibiting in VA (that's Virginia rather than the V&A in London) (Enid Adams) writes :-
"Bon giorno,
I am trying to confirm the definition of sprezzatura. In Castiglione's "Book of the Courtier" it is referred to as meaning "nonchalance". I thought it meant an effortless gracefulness. I have only been able to find it in an all Italian dictionary which I cannot decipher, defined as
1. l'essere sprezzante; atteggiamento sprezzante 2. atteggiamento di voluta e ostentata negligenza, proprio di chi si sente molto abile nel faare qualcosa: trascuratezza intentionale: anche, la cosa in cui tale trascuratezza si manifesta: spressature di stile
I find sprezzante defined as contemptuous, but surely there must be more to the meaning which is positive. Please forward it to the person who chose this as the name of the business if you received this e-mail and have no idea of the answer. Surely they will know. Grazie!
Well suffice to say a polite reply winged it's way Enid wise - but we can't resist publishing part of the Emu's response… Dear Enid,
My wife is Sicilian and has a postgraduate degree in English, so she has advised the following re your etymogical dilemma:-
1. l'essere sprezzante; atteggiamento sprezzante
sprezzante = scornful and atteggiamento = attitude
sprezzante is not like sprezzatura - they come from different dialectical origins. This is similar to the way "cactus" and "armadillo" are quite different words in English. 2. atteggiamento di voluta e ostentata negligenza, proprio di chi si sente molto abile nel faare qualcosa: trascuratezza intentionale: anche, la cosa in cui tale rascuratezza si manifesta: spressature di stile
attitude of intentional and demonstrated negligence, of expressing skill in doing something: intentional neglect: also, the things in which such ease is manifest : showing artfulness in style
So "sprezzatura" is more akin to the word "aplomb".
Aplomb can be confidence or overconfidence, certainly. Neglect can be artful or artless , certainly. We prefer to think Sprezzatura not as "arrogant and neglectful", but as "bearing aplomb, ease, artfulness and confidence".
Other Italian words which see to hark from the same derivation- sprizzare | - | to sprinkle. | spruzza | = | sprays , hence the slang word for drink "spritzer" in English | sputtacchiera | = | spittoon / spit bucket. |
There is a word in Hungarian - "sprizzatura" = for an ancient Hungarian spring-loaded stomach pump. Sadly we now know this to be the intended spelling of the company name. Accordingly please let us know if you would like a personal tour of our warehouse. It features the biggest collection of used 3.5" hose fittings and custom gastroscope attachments in the entire northern hemisphere.
The etymology of the word "Sprezzatura" is not as important as the meaningless argument it generates. This can be artless argument or artful argument.
Eric
Ars Brevis Coph Linctus
Another satisfied Slist user writes from Texas, "Working with S/List that we just purchased, I must say it is a fantastic product.". And some very interesting feedback from another client in the States "I've run into something interesting in our indexing.- In our VENDORS files we have an index based on the 2 letter state abbreviation.- For some strange reason, the abbreviation for Colorado does not work - in that, there are records in there for this state, but no results come back when you search. Is there some hidden bug with this 2 letter combination?"
As Aaron points out, the answer to this is YES! There very well could be a problem with these two letters, but only with an XRef. The 2 character state abbreviation for Colorado is CO, which is in the default stop list. Any XRef placed or including a US state will not include this state.
JW, after kindly complimenting us on the last SENL raises an S/List question - "Our OI courier system (yes we also did one of those) generates a large transaction file sometimes approaching 1 million records. We would love to have our customers use SList for adhoc reporting but don't want them to execute selects that traverse such large files. For our own OIPI reporting we have built processes that read Xreference inverts and very quickly create short saved lists of transaction keys in the SYSLISTS file.
My question is: Can we use SList on these saved SYSLISTS lists? Can we run a process that executes Activate_Save_Select and then calls a saved SList statement?"
And of course, the good news is, "Yes you can". S/List is designed to work off active select lists. Of course it works even easier if, instead of Repository Executing an Slist report you just Call Slist(Sentence) where Sentence is the Slist sentence to execute!
And the sort of feedback we love to see - from DK in the US "Andrew, "I can't tell you how much I enjoyed reading V3I1. I enjoyed for the openness, and for the wit. Man, I've missed you guys! With Mike Ruane in charge, I might just come back."
The final word must go to a German subscriber who when asked if he wanted SENL sending replied "Yes, please - I always prefer reading SENL over working :-)". OpenInsight 32 Bit
As regular readers will know Revelation have announced the forthcoming availability of a 32 bit version of OpenInsight to be released through the Works program (which is actually starting to live up to it's original promise). As you'd probably expect, we at Sprezz have been playing with the product for some time now, and as the release date approaches we'd like to give you a first glimpse of the new product.
Let's start by saying exactly what OI32 is and equally what it is not.
In the first instance, OI32 is pretty much a direct port of OI16. This is in and of itself both good news and bad news. The good news (well actually GREAT news if you're a developer) is that because of this all of your existing programs (well unless you're making 16 bit API calls - see later) will require no work to convert.
We put this to the test here by taking an existing application, deleting all of the exes and dlls and copying in the new exes and dlls. We kicked off OI32 et voilà - our application but 32 bit! This HAS to be the easiest upgrade in the history of Revelation Software - and further proof that the company is now of the developers, by the developers for the developers.
The bad news? The bad stuff is that it is just a port. But there are already plenty of plans afoot for how the product can take advantage of the full range of 32 bit enhancements out there, including OLE, multiple threads and lots more. (Enough to get Carl salivating - no mean feat I assure you!).
So what's the first thing you'll notice when you launch OI32?
PICTURE
Perhaps the "non-bold" 32 bit lettering?! After that as you can see you don't really see a difference as OI launches…
PICTURE until you invoke the task manager that is - when you see PICTURE
and notice that OINSIGHT is now running as a 32 bit process - not as an NTVDM! The next noticeable difference is when you invoke the system editor and open the SYSREPOS table
PICTURE
no more - "list truncated" messages! Yes, the 64K limit has finally been breached! Back in '83 this seemed like infinity but these days it is nothing! Now OpenInsight uses the flat memory model and all variables (including linear hash rows) can be up to 2 GB. The same detail carries on through to ALL restrictions throughout the system. Quickdexes and Rightdexes can be any size, individual rows can be huge so binaries can now be stored directly in Linear hash rows (assuming you VB convert first!). Take a look at the following PICTURE
there at the bottom is the money shot - the row is over 8MB in size!
The other areas where you'll a difference is in the way in which UTILITY now seamlessly calls the 32 bit dialogs - instantly adding a better look and feel to you application :- PICTURE
PICTURE
As reported previously the only minor problem with API calls is that all calls to external API calls need to be re-prototyped. This is no big deal and if you're using this facility the chances are you won't find this at all difficult. This isn't really intended to be a review - more of a "first glance" at an exciting product. From our perspective we're having as much fun as we've had in years. This feels like AREV again! So hopefully RevSoft will be making some costing and availability announcements soon - in the meantime just stay patient - the wait'll be worth it! The OpenInsight Repository - Part 1 - Andrew P McAuley OpenInsight was conceived around the idea of a centralised application repository within which all components could be stored for subsequent reuse. Access to this repository was intended to be via one centralised routine called the REPOSITORY function. This document sets out to describe in detail all aspects of the RESPOSITORY function as well as describing what the various SYSREPOS related tables are.
The SYSREPOS Table
What Is The SysRepos Table? The SysRepos table is a meta dictionary for the application, that it, it is intended that all application components should be registered with the repository. Note that this is not vital for all application components, compiled programs for example will work without a corresponding repository entry, but the lack of repository entries can lead to deployment problems. For this reason it is recommended that repository entries be created for all application components.
A repository entry is essentially one row in a linear hash table that describes one application component. An application component can be something as small as a structure definition or something as large as an entry window. It is important to note that the repository entry describes the application component, it is not the application component, no more so than a dictionary item is the data it describes. Whilst the SysRepos table is a linear hash table, it is not readable via standard RTP57 calls as anyone who has tried to access SysRepos from Advanced Revelation will testify. This is because in early days the creators of OpenInsight decided that the repository ought to be encrypted to encourage access via the centralised REPOSITORY function (q.v.). To this end they took RTP57 and essentially added encryption, calling the end result REPOS.BFS.
The dos files REVREPOS.LK and REVREPOS.OV contain the SysRepos information. The dictionary information is stored in REVDICT.LK and REVDICT.OV. If the reader wishes to look more closely at these files it is easy to create a new temporary file, called say TEMP_SYSREPOS and note the REV file numbers. Then copy RevRepos.* over RevNnnnn.* and all of the rows will be accessible - albeit in their encrypted form. N.B. The dictionary items are not encrypted.
What is the key structure of the SysRepos table? SysRepos rows are keyed on a four part key having a structure as follows :-  | Part 1 Application Id |  | Part 2 Type Id |  | Part 3 Class Id |  | Part 4 Entity Id |
E.g.
EXAMPLES*OIWIN**NOTEBOOK Or EXAMPLES*DOC*HTML*LOGON_FORM
What is the row structure of the SysRepos table? The rows in SysRepos are normal linear hash rows containing 29 columns. These columns are as follows :- <1> | Author of entity | <2> | Multivalued list of users having access permissions. $Public for all. | <3> | Multivalued list of users having update permissions. $Public for all. | <4> | Sub key. Generally the name of the dos file this entity refers to. | <5> | Used by. A multi-valued list of entities which use this entity. | <6> | Uses. A multi-valued list of entities which this entity uses. | <7> | Unused | <8> | Unused | <9> | Unused | <10> | Unused | <11> | Unused | <12> | Unused | <13> | Unused | <14> | Unused | <15> | Multi-valued list of documents associated with this entity. | <16> | Unused | <17> | Unused | <18> | Evaluate flag - true or false. Does the entity need to be looked at? Generally set if impact analysis determines that a changeelsewhere has impacted this entity. | <19> | Evaluate notes - associated with the flag. Free text entered during impact analysis. | <20> | Shareable flag. Should the entity be shown as available in applications which inherit from this application? | <21> | Publishable flag. Should the entity be included in deployments? Generally set to false for source code. | <22> | Checkout flag. Is the entity currently checked out? | <23> | State - a flag designed to indicate at which stage of development an entity is. Never developed. | <24> | Log pointer. Name of the row in SYSREPOSLOG which records updates for this row. | <25> | Date of last update | <26> | User responsible for last update. | <27> | Entity title | <28> | Entity description | <29> | Recompilation flag. Is the entity awaiting recompilation? Set by impact analysis. |
The other repository related tables
Whilst SysRepos stores the actual repository entities there are several other tables which store additional information about the repository (information tables) and others which actually store the application components referenced in the repository (storage tables).
As a rule these tables have a name prefixed with the word SYSREPOS but there are notable exceptions to this, specifically for stored procedures (SYSPROCS) and compiled code (SYSOBJ).
Information Tables
SYSREPOSCLASSES The SysReposClasses table rows describe individual classes within types, for example, the double click (DBLCLK) (class) OpenInsight events (OIEVENT) (type).
The rows are keyed on a two part key with a structure as follows :-
0*1 Type Id
0*2 Class Id
e.g. OIEVENT*DBLCLK
In the picture below, the highlighted "Activated" represents the SysReposClasses level. PICTURE The rows themselves have the following structure :-
<1> Name. Short "English" name for the class as shown in the application manager.
<2> Description. Additional description of the class - infrequently used.
<3> Unused
<4> Infrequently used. Normally the name of the executable to launch to use this entity (e.e. WINWORD) but in the case of images the subdirectory they are located in (e.g. BMPS).
<5> Infrequently used. Sometimes contains the name of the top level identifier (OpenInsight, Lotus Notes or General) for this entity as seen in the application manager. This refers to a value in the SysReposStorage table (q.v.).
<6> Infrequently used. Sometimes contains the name of the family identifier (Report, DB etc.) for this entity as seen in the application manager. This refers to a value in the SysReposTypeFamilies table (q.v.).
SYSREPOSLOCKS The SysReposLocks table records details of checkouts from the system. It records who performed the checkout along with details of what was checked out. It only records information when the entities checked out are "Locked".
The rows are keyed on a three part structure as follows :-
0*1 Application Identifier (e.g. EXAMPLES)
0*2 User name
0*3 Timedate stamp for when the checkout was created.
The rows themselves have the following structure :- <1> | | Status. This can have the following values | | 0 | New checkout | | 1 | Checked out | | 2 | Checked in | | -1 | Checkout error | | -2 | Partial checkout error | | -3 | Check in error | | -4 | Partial check in error | <2> | | Title of checkout | <3> | | Apparently unused | <4> | | Multi-valued list of repository keys for entities checked out. | <5> | | Multivalued list of entity checkout statuses. Values are | | 1 | Locked | | 2 | Checked out | | 3 | Checked in | | 4 | Removed | | -1 | Lock error | | -2 | Checkout error | | -3 | Checkin error | <6> | | Seems to be unused | <7> | | True if no errors and locks successful. | <8> | | The type of copy. Possible values are | | 1 | Copy from | | 2 | Copy to | <9> | | The location of the checkout, for example c:\backup | <10> | | Kind of checkout format | | 1 | Copy of OpenInsight | | 2 | Checkout | <11> | | Multivalued list of errors encountered, sub-value delimited. |
SYSREPOSLOG The SysReposLog table records details of the last N actions taken against a repository entity where N defaults to 10 but may be modified in the database manager.
The rows are keyed on a four part structure as follows :-
Part 1 Application Id
Part 2 Type Id
Part 3 Class Id
Part 4 Entity Id
The rows themselves repeat once per log entry with a multi-valued structure as follows :-
<0,1> Time/Date stamp
<0,2> Action taken
<0,3> User taking action
SYSREPOSSTORAGE The SysreposStorage table is used to define the uppermost hierarchy of the Application Manager. In other words, if all application manager levels were collapsed, the remaining rows would each represent a row in the SysReposStorage table.
The row key is the primary key describing the row level. For example, OI or LOTUS.
The rows have the structure
<1> Display name of row (e.g. OpenInsight)
<2> The priority of the row (lower makes it appear higher)
<6> A multivalued array of sub-valued lower levels, where sub-value 1 is the RowId to the SysReposTypeFamilies table and sub-value 2 is a comma delimited array of RowIds to the SysResposTypes table.
PICTURE
SYSREPOSTYPEFAMILIES The SysreposTypeFamilies table is used to define the secondary level of the hierarchy of the Application Manager. In other words, if all application manager entities were expanded once, each row below the main level would represent a row in the SysReposTypeFamilies table. The row key is the primary key describing the row level. For example, UI or MISC.
The rows have the structure
<1> Display name of row (e.g. User Interface Components)
PICTURE
SYSREPOSTYPES The SysreposTypes table is used to define the tertiary level of the hierarchy of the Application Manager. In other words, if all application manager entities were expanded twice, each row below the main level would represent a row in the SysReposTypes table.
The row key is the primary key describing the row level. For example, OIWIN or POPUP
The rows have the structure
<1> Display name of row (e.g. OpenInsight Forms)
<2> Description of type
<3> Multi-valued list of supported repository methods
<4> Not used. Sometimes replicates RowId.
<5> Boolean flag indicating whether sub-classes are available for this type.
<6> Storage class the type belongs to, e.g. OI.
<7> Family type the type belongs to, e.g. UI
PICTURE
Storage Tables
SYSOBJ Used to store compiled programs and debug tables. SYSPROCS Used to store stored procedures and inserts. SYSREPOSAPPNOTES Used to store application notes
SYSREPOSDATASOURCES Used to store conection object definitions
SYSREPOSDBCOMPONENTEXES Used to store compiled Dataset definitions
SYSREPOSDBCOMPONENTS Used to store Dataset definitions
SYSREPOSEVENTEXES Used to store event executables and debug tables
SYSREPOSEVENTS Used to store event code
SYSREPOSMESSAGES Used to store message definitions
SYSREPOSPOPUPS Used to store Popup definitions
SYSREPOSRELEASES Used to store Deployment definitions
SYSREPOSREPORTS Used to store Report and Query definitions
SYSREPOSVIEWS Used to store RDK view definitions
SYSREPOSWINEXES Used to store compiled form definitions (See TB#2)
SYSREPOSWINS Used to store uncompiled form definitions (See TB#1) The OpenInsight Repository - Part 1 - Andrew P McAuley OpenInsight was conceived around the idea of a centralised application repository within which all components could be stored for subsequent reuse. Access to this repository was intended to be via one centralised routine called the REPOSITORY function. This document sets out to describe in detail all aspects of the RESPOSITORY function as well as describing what the various SYSREPOS related tables are.
The SYSREPOS Table
What Is The SysRepos Table? The SysRepos table is a meta dictionary for the application, that it, it is intended that all application components should be registered with the repository. Note that this is not vital for all application components, compiled programs for example will work without a corresponding repository entry, but the lack of repository entries can lead to deployment problems. For this reason it is recommended that repository entries be created for all application components.
A repository entry is essentially one row in a linear hash table that describes one application component. An application component can be something as small as a structure definition or something as large as an entry window. It is important to note that the repository entry describes the application component, it is not the application component, no more so than a dictionary item is the data it describes. Whilst the SysRepos table is a linear hash table, it is not readable via standard RTP57 calls as anyone who has tried to access SysRepos from Advanced Revelation will testify. This is because in early days the creators of OpenInsight decided that the repository ought to be encrypted to encourage access via the centralised REPOSITORY function (q.v.). To this end they took RTP57 and essentially added encryption, calling the end result REPOS.BFS.
The dos files REVREPOS.LK and REVREPOS.OV contain the SysRepos information. The dictionary information is stored in REVDICT.LK and REVDICT.OV. If the reader wishes to look more closely at these files it is easy to create a new temporary file, called say TEMP_SYSREPOS and note the REV file numbers. Then copy RevRepos.* over RevNnnnn.* and all of the rows will be accessible - albeit in their encrypted form. N.B. The dictionary items are not encrypted.
What is the key structure of the SysRepos table? SysRepos rows are keyed on a four part key having a structure as follows :-  | Part 1 Application Id |  | Part 2 Type Id |  | Part 3 Class Id |  | Part 4 Entity Id |
E.g.
EXAMPLES*OIWIN**NOTEBOOK Or EXAMPLES*DOC*HTML*LOGON_FORM
What is the row structure of the SysRepos table? The rows in SysRepos are normal linear hash rows containing 29 columns. These columns are as follows :- <1> | Author of entity | <2> | Multivalued list of users having access permissions. $Public for all. | <3> | Multivalued list of users having update permissions. $Public for all. | <4> | Sub key. Generally the name of the dos file this entity refers to. | <5> | Used by. A multi-valued list of entities which use this entity. | <6> | Uses. A multi-valued list of entities which this entity uses. | <7> | Unused | <8> | Unused | <9> | Unused | <10> | Unused | <11> | Unused | <12> | Unused | <13> | Unused | <14> | Unused | <15> | Multi-valued list of documents associated with this entity. | <16> | Unused | <17> | Unused | <18> | Evaluate flag - true or false. Does the entity need to be looked at? Generally set if impact analysis determines that a changeelsewhere has impacted this entity. | <19> | Evaluate notes - associated with the flag. Free text entered during impact analysis. | <20> | Shareable flag. Should the entity be shown as available in applications which inherit from this application? | <21> | Publishable flag. Should the entity be included in deployments? Generally set to false for source code. | <22> | Checkout flag. Is the entity currently checked out? | <23> | State - a flag designed to indicate at which stage of development an entity is. Never developed. | <24> | Log pointer. Name of the row in SYSREPOSLOG which records updates for this row. | <25> | Date of last update | <26> | User responsible for last update. | <27> | Entity title | <28> | Entity description | <29> | Recompilation flag. Is the entity awaiting recompilation? Set by impact analysis. |
The other repository related tables
Whilst SysRepos stores the actual repository entities there are several other tables which store additional information about the repository (information tables) and others which actually store the application components referenced in the repository (storage tables).
As a rule these tables have a name prefixed with the word SYSREPOS but there are notable exceptions to this, specifically for stored procedures (SYSPROCS) and compiled code (SYSOBJ).
Information Tables
SYSREPOSCLASSES The SysReposClasses table rows describe individual classes within types, for example, the double click (DBLCLK) (class) OpenInsight events (OIEVENT) (type).
The rows are keyed on a two part key with a structure as follows :-
0*1 Type Id
0*2 Class Id
e.g. OIEVENT*DBLCLK
In the picture below, the highlighted "Activated" represents the SysReposClasses level. PICTURE The rows themselves have the following structure :-
<1> Name. Short "English" name for the class as shown in the application manager.
<2> Description. Additional description of the class - infrequently used.
<3> Unused
<4> Infrequently used. Normally the name of the executable to launch to use this entity (e.e. WINWORD) but in the case of images the subdirectory they are located in (e.g. BMPS).
<5> Infrequently used. Sometimes contains the name of the top level identifier (OpenInsight, Lotus Notes or General) for this entity as seen in the application manager. This refers to a value in the SysReposStorage table (q.v.).
<6> Infrequently used. Sometimes contains the name of the family identifier (Report, DB etc.) for this entity as seen in the application manager. This refers to a value in the SysReposTypeFamilies table (q.v.).
SYSREPOSLOCKS The SysReposLocks table records details of checkouts from the system. It records who performed the checkout along with details of what was checked out. It only records information when the entities checked out are "Locked".
The rows are keyed on a three part structure as follows :-
0*1 Application Identifier (e.g. EXAMPLES)
0*2 User name
0*3 Timedate stamp for when the checkout was created.
The rows themselves have the following structure :- <1> | | Status. This can have the following values | | 0 | New checkout | | 1 | Checked out | | 2 | Checked in | | -1 | Checkout error | | -2 | Partial checkout error | | -3 | Check in error | | -4 | Partial check in error | <2> | | Title of checkout | <3> | | Apparently unused | <4> | | Multi-valued list of repository keys for entities checked out. | <5> | | Multivalued list of entity checkout statuses. Values are | | 1 | Locked | | 2 | Checked out | | 3 | Checked in | | 4 | Removed | | -1 | Lock error | | -2 | Checkout error | | -3 | Checkin error | <6> | | Seems to be unused | <7> | | True if no errors and locks successful. | <8> | | The type of copy. Possible values are | | 1 | Copy from | | 2 | Copy to | <9> | | The location of the checkout, for example c:\backup | <10> | | Kind of checkout format | | 1 | Copy of OpenInsight | | 2 | Checkout | <11> | | Multivalued list of errors encountered, sub-value delimited. |
SYSREPOSLOG The SysReposLog table records details of the last N actions taken against a repository entity where N defaults to 10 but may be modified in the database manager.
The rows are keyed on a four part structure as follows :-
Part 1 Application Id
Part 2 Type Id
Part 3 Class Id
Part 4 Entity Id
The rows themselves repeat once per log entry with a multi-valued structure as follows :-
<0,1> Time/Date stamp
<0,2> Action taken
<0,3> User taking action
SYSREPOSSTORAGE The SysreposStorage table is used to define the uppermost hierarchy of the Application Manager. In other words, if all application manager levels were collapsed, the remaining rows would each represent a row in the SysReposStorage table.
The row key is the primary key describing the row level. For example, OI or LOTUS.
The rows have the structure
<1> Display name of row (e.g. OpenInsight)
<2> The priority of the row (lower makes it appear higher)
<6> A multivalued array of sub-valued lower levels, where sub-value 1 is the RowId to the SysReposTypeFamilies table and sub-value 2 is a comma delimited array of RowIds to the SysResposTypes table.
PICTURE
SYSREPOSTYPEFAMILIES The SysreposTypeFamilies table is used to define the secondary level of the hierarchy of the Application Manager. In other words, if all application manager entities were expanded once, each row below the main level would represent a row in the SysReposTypeFamilies table. The row key is the primary key describing the row level. For example, UI or MISC.
The rows have the structure
<1> Display name of row (e.g. User Interface Components)
PICTURE
SYSREPOSTYPES The SysreposTypes table is used to define the tertiary level of the hierarchy of the Application Manager. In other words, if all application manager entities were expanded twice, each row below the main level would represent a row in the SysReposTypes table.
The row key is the primary key describing the row level. For example, OIWIN or POPUP
The rows have the structure
<1> Display name of row (e.g. OpenInsight Forms)
<2> Description of type
<3> Multi-valued list of supported repository methods
<4> Not used. Sometimes replicates RowId.
<5> Boolean flag indicating whether sub-classes are available for this type.
<6> Storage class the type belongs to, e.g. OI.
<7> Family type the type belongs to, e.g. UI
PICTURE
Storage Tables
SYSOBJ Used to store compiled programs and debug tables. SYSPROCS Used to store stored procedures and inserts. SYSREPOSAPPNOTES Used to store application notes
SYSREPOSDATASOURCES Used to store conection object definitions
SYSREPOSDBCOMPONENTEXES Used to store compiled Dataset definitions
SYSREPOSDBCOMPONENTS Used to store Dataset definitions
SYSREPOSEVENTEXES Used to store event executables and debug tables
SYSREPOSEVENTS Used to store event code
SYSREPOSMESSAGES Used to store message definitions
SYSREPOSPOPUPS Used to store Popup definitions
SYSREPOSRELEASES Used to store Deployment definitions
SYSREPOSREPORTS Used to store Report and Query definitions
SYSREPOSVIEWS Used to store RDK view definitions
SYSREPOSWINEXES Used to store compiled form definitions (See TB#2)
SYSREPOSWINS Used to store uncompiled form definitions (See TB#1) Celebrity Interview - Pat McNerthney
Who are you? Pat McNerthney. Who do you work for? Self-employed. What is your role in the RevSoft community? Self described OI32 Grunt Coder. I am currently responsible for all of the assembly, C and C++ code in the OI32 project. How long have you been involved with RevSoft? During the OI32 port I noticed a source code header file with my name at the start of the maintainence log which stated that I created that header file on March 1st, 1986, so at least 15 years. Which products do you use? None...I only make'em. What do you most like about RevSoft products? That they are implemented in themselves (the good parts are anyway). What do you most dislike about RevSoft products? That they aren't more mainstream. If you HAD to use another database what would it be and why? MySQL, the complete source code is available to fix any problems. What are your favourite 3 books and why? 1. Undocumented DOS 2nd Edition - Schulman and others 2. PC Interrupts - Brown, Kyle 3. Since then anything worth reading is online... Nothing like curling up in bed with a nice thick, terse reference manual! What are your favourite 3 CDs/Albums and why? Debian GNU/Linux Source - 1 Debian GNU/Linux Source - 2 Debian GNU/Linux Source - 3 All these CDs *ROCK*, I never get tired of them. What are your three favourite films and why? All time favourite would be 2001: A Space Odyssey. I remember seeing it when it was first released with my father. I had no idea what it meant then and I am still trying to figure it out but I think I am making progress.
A recent film I liked was American Beauty.
Matrix was a fun watch. What event in history would you most like to have been present at? The Big Bang...everything has really slowed down since then. And finally Your motto/witty aphorism You don't have to do anything you don't want to. Letter From the President - 2001 Fellow Revelation Developers and Users: Greetings! I hope this letter finds you well. This past year has been an exciting one for me, and for the community as well. Revelation had a number of accomplishments this year that I would like to recap. The Year in Review: There were tremendous changes in the Revelation world this year. What happened? Read on! First: We had two, yes two, upgrades for OpenInsight. In March we released OI version 3.7.4, and in October we released version 3.7.5. Upgrades are available free to Works members. For comparison purposes, it has been 2 years since there were any enhancements to OI, and many, many years since there was more than one release in a year. These upgrades addressed such issues as 32-bit functionality, XML, enhanced Web features, Wireless and PDA development, plus a few bug fixes and extra features. We purchased the OpenInsight Printer Interface from Splaver software, an incredible printing tool for OpenInsight, and provide it free to Works Subscribers. We've published a number of new Knowledge Base articles. It's been a very good year for Works members. Second: We had a worldwide Roadshow. Revelation gave daylong seminars in New York, Seattle, Los Angeles, San Francisco, Houston, Washington DC, Chicago, and Atlanta. We had a similar show in the UK at Milton Keynes, and shows in Melbourne and Sydney, Australia, as well as a daylong show in Auckland, New Zealand. These were well attended, and the attendees' reactions were overwhelmingly positive. It was great to meet so many of our developers around the world, and to associate faces with names I had known for years from CompuServe first, and then from the Website. Third: We released a real, working Java product. By partnering up with the Insitech Group, we've been able to bring you JOI- The Java OpenInsight tool. JOI is a series of add-ons that let developers use their existing Linear Hash Tables, Dictionaries, Indexes, and stored procedures with their favorite Java Development tool. Clean, simple, and 100% pure Java, JOI offers a no-compromise, no-apologies, no-limit gateway to the Java universe. JOI represents a future for us in the non-Windows world, and a future for us in the distributed computing world. Fourth: Revelation has again become active in the more mainstream Multivalued world- attending International Spectrum shows, advertising in their magazine, and presenting at the show in San Diego this upcoming February. We'll be giving two talks, as well as displaying our wares in a booth. Go to WWW.Intl-Spectrum.com to see details about the show. Please, if you are in the area, stop by and see us in booth 38. Fifth: We enhanced our Network Products line greatly. We created the NLM 5.5 upgrade, which addressed the speed issue seen when running OpenInsight on Windows 2000 workstations connecting to Novell servers. We created a pure, 32-bit TCP/IP driver, and are working on creating a Universal Network Driver that will run on either Novell or NT, using either TCP/IP, IPX, or Named pipes. So what's happing right now? The economy at present looks tight, but this is the situation where Revelation applications shine. The average Revelation application, whether written in RevG, Arev or OI, seems to have the half-life of plutonium: once installed, it appears that they will run forever. At times like these organizations need their applications to do more for them than ever. Revelation-based applications are more than up t |