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
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home