Starting the Presentation Server


didyouknowoiWhile most of an application’s configuration information is stored in various application database records, there are some startup options that need to be determined before the actual database can be accessed (i.e. before the OpenEngine virtual machine is loaded).

The Presentation Server can be configured with a wide range of options at startup, via means of an RXI configuration file, and/or a set of command line switches.  Both methods support nearly all of the same options, but any option specified by a command line switch always overrides the same option specified in the configuration file.

Presentation Server configuration (RXI) files

There are nearly twenty options that can be applied when starting the Presentation Server and adding these as switches to a command line shortcut can be a tedious and error-prone exercise. In order to remedy this, it is possible to create an RXI (Revelation Xml Ini) file to store these options instead, where they are read and parsed by the PS during its boot-up sequence.  Read On…

Advertisements

Modernising the writing, debugging and management of Symbolic Code – Scheduled for OI 10.0.4.


youtubeoi10-e1529069260513.pngI was recently working on a new application and I came across an issue with one of my symbolic dictionary items.  The code was pretty simple, but not being a professional developer, I just could not see what the issue was.

Now, I would usually have dropped in a simple debug statement to see what variables were being set when and with what values.  This would have quickly told me where I had gone wrong in my code.  So, I dropped a Debug statement into my symbolic code, saved the table, ran the form and we dropped into the debugger.

Alas, no variable information is displayed in the debugger for the symbolic code and I was none the wiser for my efforts.  Back to the very simple Symbolic Code editor and I had to work things out for myself.  With only three lines of code, I actually managed to find the error pretty quickly, but just imagine if that was a 100 lines of code, a thousand lines of code or more – yes I have seen this on more than a few occasions.

I was talking to Bob Carten during one of our exploratory and (for me) learning sessions and I mentioned how difficult the symbolic editor is to work in.  He laughed and asked if I’d be interested in a new feature coming in OpenInsight 10.0.4 and which specifically addressed my issue.

In fact, Bob told me excitedly that this new method of writing symbolic code, opens up a whole host of other possibilities.  He touched on them, but I am afraid that he quickly left me scratching my head.  For example, why would you want to have a three part conversion, at least that’s what I think we were talking about?  Anyway, that’s for another time.

For now, you can see this new technique in my latest OI10 Quick Start Video which has just finished uploading to my YouTube channel.

Elegant debug statements


youtubeoi10.pngI recently uploaded an OpenInsight 10 lesson and at the beginning of the video I talk about a rogue debug statement that I had left in my code in the previous video (on purpose you understand).

Mark Marsh (Professional OpenInsight Application Developer) emailed me with an extremely useful tip to using debug statements in code and which will avoid the issue and embarrassment of leaving a rogue debug statement in your code.  It is also great for those of you with OpenInsight development teams because the trick is user specific.

I’d like to offer Mark a huge thank you for sharing this invaluable tip with me and for enabling me to then share it with you.

You can see the video here and the tip is in the video comments – it’s well worth a look.

An Introduction to the Features and Benefits of OpenInsight 10.


didyouknowoi

An Introduction to the Features and Benefits of OpenInsight 10

Thursday, June 7th, 2018
11:00 am PT / 2:00 pm ET / 7:00 pm BST

REGISTER NOW for this complimentary webcast.

As a reader and subscriber of this blog, you will not have failed to notice that in April  2018, Revelation Software proudly announced the long anticipated official release of OpenInsight Development Suite (OI) 10.0.  This ground breaking released has been completely re-engineered for 64-bit and there are a wealth of new features and benefits which make application development in OpenInsight easier and faster than ever.

Nearly every bit of code in the product has been rewritten, from the user’s interface, to the various reporting tools and the speed of the indexing routines.  Revelation Software have listened to their user base and delivered in this release.

If you are a WORKS subscriber, OpenInsight application developer, MultiValue application developer, or simply someone looking for an easier application development tool set – This is a FREE Webinar that you cannot afford to miss.

To just touch the surface, OpenInsight 10 provides the following new and/or improved components:

  • New IDE
    OpenInsight 10 delivers a brand new Integrated Development Environment (IDE) to developers.  It is visually similar to modern application development tools, it is intuitive and yet it is still designed for the MultiValue developer in mind.  Each of the product’s designers, for forms, tables, reports and all others are now contained into a single, cohesive and dynamic work space.
  • Arev64
    The next generation of the Advanced Revelation emulator, utilising the full power and capabilities of modern 64-bit architectures.  Yet again, Revelation have extended the life of their legacy DOS applications.
  • User and Data Security
    With increased concerns about security and privacy, including the current GDPR requirements, a number of enhancements and changes have been made to further   strengthen data security within OpenInsight and to provide system manager (DBA’s) with greater user management controls.
  • Management Console
    The OpenInsight Management Console is a powerful browser-based database management tool for system administrators.  It provides an overview of your system and the ability to send useful and timely messages to workstations.
  • Git Integration
    For small, medium and large development team, managing your code is a must and OpenInsight’s repository based environment is now tightly integrated to the Git   source code management system and thereby giving you access to one of the leading application development management tools for teams.
  • Universal Driver 5.1
  • This latest version of the ever popular Universal Driver supports 64-bit operating systems and Volume Snap Shot (VSS) capability.  Together, these technologies provide the highest levels of reliability and the facility to quickly recover if something should go bad.

In this webinar Mike, Bob and Bryan will provide an overview of these new features and
benefits of OpenInsight 10 and more.

REGISTER NOW for this complimentary webcast.

If you are unable to attend at this time, register today and attend the archived event at your convenience!

Renaming a Table


didyouknowoiSo, I build most of my applications without much planning and preparation.  Yeah, yeah, I know P*** poor planning = P*** poor performance, but I am not a professional and I don’t pretend to be, I just quickly knock systems together for a hobby, as a learning process and also for demo purposes.

In the the following case, I had a table called MP_OPPORTUNITIES, named thus for historical reasons and so that I could easily copy and paste code from another application into this one.  However, the application that I am working on ‘might’ make it into OpenInsight 10, or I might release it on a case by case basis to OI WORKS developers, I’ve not decided yet, and for that reason I’d like to have table names and form names that make some sense.

Anyway, the form would be better named MP_ORDER_ENTRY and therefore the corresponding data table would also benefit from being called MP_ORDERS (following my naming convention).  So, I dropped into the Database Manager, changed the table name and was prompted with the Impact Analysis report.  I noted the items and duly renamed the table.

Problem 1 – The form now opens as read only and I cannot change the data bindings, as I had expected I would :(.

Plan B: Restore from backup and this time I’ll clear out all of the data bindings in the form, save it and then rename the table.

Problem 2 – OI will now not save the form because I appear to have a rogue data binding and OI cannot find column ” “.  I checked all of the data bindings and even removed a couple of edit tables, alas no joy!!

A quick call to support and once again the guys put me on the right track.
It is always easier to do things the right way, instead of blindly ploughing into self made problems.

So, if you have a badly named table, this is the best way that ‘I’ have found to put your system right:

  • Design the database and system properly from the outset ;-).

    This should be a given,  but if you are like me, you’ll need to do the following:

  1. Firstly take a good backup of your system, right before you try this and not the day before, like me (will I ever learn?).
  2. Open the Database Manager, select the table that you wish to rename and rename it to your new table name.

    renametable

  3. When you rename the table, OpenInsight will conveniently run an Impact Analysis check on the system and report entities that you might (will) need to look at following the renaming of the table.  OpenInsight does not (at this stage in the OpenInsight 10 development) rename all of the values throughout the system for you.  That’s currently a manual process.

    impactanalysis
    In my case, this means looking at two forms.  For a system that might be a little older, it gets a little more difficult and you might have popups, reports and other entities to consider.  It might even be worth sticking with your badly named table.  After all, the only time that end users are likely to see the table name is if you have exposed any report writing tools to your users.

    I should also point out that, I have previously chosen bad table names and I have renamed them before creating any forms, popups, reports, etc. against the data tables.  Those rename perfectly and with no extra worries or work involved.

  4.  So, we now have our renamed table and list of problem forms.  Lets sort those out by opening a record (Ctrl+R, or Open Record), selecting SYSREPOSWINS as the Table Name and locating our required Record/s.  In my case it is the form called SYPHERSPOS**MP_OPPORTUNITY_ENTRY (as shown below).

    openrecord

  5. This will open up the record in the OpenInsight Integrated Development Environment (IDE) using the appropriate tool, the System Editor ++ in this instance.  For the uninitiated (like me), this is a daunting screen and one in which (I think) someone with only a little knowledge can do a lot of damage – so be careful and get advice if you don’t know what you are doing.

    openrecord1

  6. Thankfully, OpenInsight’s ‘Find and Replace’ feature comes to the rescue.  From the Search menu, we select Replace and we are prompted with the dialogue window shown below.  Simply enter the value that we want to search for in the ‘Find what’ prompt (our old table name in this instance) and the new new table name in the ‘Replace with’ prompt.  All very straight forward.

    findandreplace2

    OpenInsight will then trawl through the record and let you know how many instances of the value have been found.  Click Replace All (as above) and the System Editor makes the changes and reports the replacements accordingly.

  7. So, we now have a renamed table and a form with an old name and new data bindings.  We can now launch and run the form and it’ll work just fine, pulling data from the newly named table.  However, one last step is needed to put our system right.

    We open the MP_OPPORTUNITY_ENTRY form in the Forms Designer and simply select ‘Save As’ from the File menu and save the form with the new name – MP_ORDERS.

    renameform

    This will leave you with both our new MP_ORDERS form and the old MP_OPPORTUNITIES form.  Open the old form and select Delete from the File menu and you are done.

Of course, all of this hard work could have been avoided if I’d spent a few minutes properly planning my system.  However, it is nice to know that OpenInsight and the guys at Revelation Software still have my back and if I get myself into, they can help me to get out of that mess again.

Note to self – It really is time to get some proper training 😉

Thank you to Andrew and Bob for helping through this.

 

 

 

Index Rebuilding in OI10


dbmindexrebuild
The Database Manager as seen in OpenInsight 10

This is another of my ‘reminder to self’ blog postings but something that one or two of you might find useful.

In OpenInsight 10 you can view the Database Manager panel and simply select a data table, right mouse click to open the context menu and from there you can do a whole host of things, including rebuilding the index for that table (see the image to the left).

That is great, but what if you want to rebuild all of your indexes.  It’s going to be a little cumbersome and time consuming selecting each table, then right mouse clicking, then selecting rebuild index, then waiting for it to rebuild and then repeat, repeat, repeat …

Following a quick conversation with Bob, I had the solution.  For the moment, the option to rebuild all indexes in an application from a menu is not available.  A convenient menu option might well come in an update, but for now it is as easy as launching the System Monitor (but you’ll have that running already in development mode) and typing ‘update_index””,””,1’ and hitting return to execute the command (as shown below).

indexrebuild
The System Monitor, running under OpenInsight 10.

You will get a message to let you know how many tables you will be rebuilding the indexes for and a reminder that this “could take a long time”.  Click Yes to continue and OpenInsight will go away and index all of your tables.  There is no progress bar at the moment, so watch the OpenInsight 10 Main IDE’s status line for messages about the indexing.  You’ll see OpenInsight run through your tables and (assuming all goes well, which it will) you will be presented with a “Processing Completed” note in the status line.  Job done.

Thank you to Bob Carten for this tip.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Controlling TCL


tcl

I have recently been asked if OpenInsight 10 can be enhanced to enable developers to filter TCL commands, or in other words, to only show TCL commands that the developer wishes to expose to their end users.  For example, it is often a requirement or wish, for DELETE to be removed or screened from the users because it can cause issues.  However, it would be useful if LIST could be exposed so that knowledgeable end users could run list commands for quickly produced ad-hoc reports.

During one of my catch-up sessions with Mike, I put this to him and found that this is actually something that was introduced back in 2009.  Most likely following a customer request at tone the RUG meetings that Mike holds from time to time.

As Mike has detailed for me, configuring the system to filter TCL commands it pretty straight forward:

  1. As an OpenInsight developer, you initially need to make a record in the SYSENV file.  This record should have a key with one of the options noted below:
    • TCLCMDS*APPNAME*USERNAME
    • TCLCMDS**USERNAME
    • TCLCMDS*APPNAME
    • TCLCMDS
  2. In this record, you should enter a command that you want your users to have access to and be able to use from TCL (as shown below).  The user will then be limited to using only those those commands by typing the commands into the TCL as normal.  The TCL Assistant will also then only show those commands that are available to the users.
TCL-SYSENV
Configuration record as seen in OpenInsight 10

Now, with the options set as above, when the TCL Assistant button is pressed the user will be given a filtered list of available commands (as shown below).

tcl
Filtered TCL Assistant as shown in OpenInsight 10

If the user tries to be clever and force a command that has been filtered out of the available options (for example, DELETE or COPY_ROW), OpenInsight will return a ‘command not supported’ message and the command will not run.

This now enables developers to safely expose TCL with the controls that ensure that their systems are safe and that end users cannot run a command that is not unsupported by the developer in their application.

I no longer maintain an OpenInsight version 9 system on my machine for testing this (I’m fully OI10) and although the screen shots within this posting are taken from an OpenInsight 10 system, the above should be possible in most of the OpenInsight 9.x versions released since 2009.

Finally, thank you to Mike for helping me to put this blog posting together.