third_party_content:sprezz_blog:19069.6444444444

OpenInsight - Genesis

Published 16 MAR 2020 at 03:28:00PM by Sprezz

Updated on 21 MAR 2020 at 03:28:00PM

As I start to write this blog entry, Aaron has pointed out that it is 25 years to the day since Advanced Revelation (AREV) 3.12 was released. That means it is even longer since OpenInsight (OI) 1.0 was released. Recently working with some individuals, it became apparent that not everybody's memory goes back that far, so we thought it'd be a good idea to put together an article which combined a little bit of history with a dollop of technical information about OpenInsight load sequences - to assist in helping debug non-starting OpenInsights.

When people launch OI, they might be aware that they're actually launching an executable file, Oinsight.exe (or OpenInsight.exe for 10+) and Oengine.dll (or RevEngine.dll for 10+), but they might not be aware why this turn of events came to pass. To understand this we have to cast our mind back to the early 90s when the days of DOS were numbered and the future lay in the Windows GUI.

The team at Revelation were justifiably proud of the success of the myriad of alternative Base Filing Systems (BFSs) that were available for the developer community. The separation of the programming logic layer from the physical filing system layer had proven to be very successful with AREV. In fact Revelation had won a special award from Microsoft for driving the sales of their nascent SQL Server product. With the addition of BFSs for Lotus, DB2, dBase et al Revelation realised that they were onto a good thing. And what's better than a good thing? Even more of a good thing!

So deciding that being able to talk to ANY back end was a good thing, they also considered that being able to talk to (or be talked to) by ANY front end must also be a good thing. Ans so was born OE 1.0. The engine. Just the engine. No front end as we know it, linear hash as a back end by default, but any BFS you wanted to use. With hindsight this was genius. Just not commercial genius. The Rev community voted with their feet and refused to use it. The engine as we know it was pretty much the same beast. It could run R/Basic and it could read and write data - but there was no decent IDE. Rev tried to include a simple third party development environment when they released OI 1.0 but it was no AREV.

So back to the drawing board. Rather than start again reengineering the engine, Rev quickly began development of a separate executable whose job was to ;

  • Communicate with Windows
  • Communicate with the engine
  • Support a more familiar IDE

and this became Oinsight.exe. The executable responsible for all of the Windows interaction - the Presentation Server - was embedded within this. So now if we wanted to launch say a CUSTOMER window with a couple of statics, a couple of edit lines and an OK and Cancel button the scenario would unfold as follows where the protagonists are as follows ;

  • Windows
  • Oinsight.exe
  • Oengine.exe

Please note this conversation is simplified for explanatory purposes…

Please launch window CUSTOMER OK Oengine - please read the compiled definition of CUSTOMER from SYSREPOSWINEXES Read it - here you go! Windows - please create a window called CUSTOMER sized as follows with the following characteristics OK - I've done that but I don't call it CUSTOMER I call it 12786 OK - I'll remember that - thanks Windows - now please create a static called TXT.CUST_ID OK - done - I call it 12787 Windows - now please create another static called TXT.CUST_NAME OK - done - I call it 12788 Windows - now please create an edit line called EDL_CUST_ID OK - done - I call it 12789 Windows - now please create an edit line called EDL_CUST_NAME OK - done - I call it 12790 Windows - now please create a push button called BTN_OK OK - done - I call it 12791 Windows - now please create a push button called BTN_CANCEL OK - done - I call it 12792

and there we have it - a working Window.

From hereon in, OI is oblivious to the existence of the Window as it is completely under the control of Windows. Of course, Windows knows who the owner is, so as the user mouses around the screen the following conversation ensues

Hey OI the user just moved the mouse by a pixel in 12786 Don't care They did it again in 12786 Still don't care They just right clicked the mouse when over 12789 Don't care - developer doesn't want to do anything Oh wait - they've clicked on 12791 Really? The OK button? OK Oengine, see if you can find a script for the OK button for CUSTOMERS Found it and running it It's finished running so now I'm going to look for promoted events Found the system click handler and I'm now running that Right nothing else to do

OK let's wait until Windows tells us something we care about

So there is an ongoing dialog between Windows and OI with OI either ignoring Windows messages it doesn't care about, or asking OE if there's anything it's meant to be doing.

Which leads us on to the question of exactly what happens when the user double clicks the OI icon on the desktop. That sequence is as follows in 9.4 :-

Oinsight.exe loads imgMan32.dll is loaded to later display the splash screen Several other OI dlls are loaded Supporting Windows dlls are loaded OI then loads various language support dlls including UTF8 support

OI then loads tool specific dlls OI then loads the routines to support linear hash OI then loads the engine dll OI then loads Lotus Notes support OI then loads font support OI then displays the splash screen TCP/IP support is installed The SYSPROG.DBT is read The linear hash client is started Boot revmedia map is loaded Communication is opened to the UD service Files are attached System routines are loaded Initialise is run The login dialog is launched

For 10.0+ it is

OpenInsight.exe loads Supporting Windows dlls are loaded Windows imaging is loaded OI then loads various language support dlls including UTF8 support OI then loads various COM objects OI then checks the .rxi file for startup options OI then loads font support OI then loads the splash screen OI loads communication libraries TCP/IP support is installed OI loads the engine dll OI checks licensing The SYSPROG.DBT is read The linear hash client is started Communication is opened to the UD service Files are attached System routines are loaded Initialise is run The login dialog is launched

Comments

Original ID: post-3145220902794394206
  • third_party_content/sprezz_blog/19069.6444444444.txt
  • Last modified: 2024/01/17 19:45
  • by 127.0.0.1