The Omnis Advantage: Part 5 – The Catalog


In my last post I described how we can add expression elements, such as variable and column names, to an expression with very few keystrokes when we are certain of the item name we want to use – and we are certain of how that name is spelled. But there is another keyboard-accessible source for inserting such names that is nearly as fast – and that is very useful when we are NOT certain of the name we need or of its spelling. This is one of the many uses of:

The Catalog

The Catalog in the Omnis Studio IDE is a window that we can open or bring to the front at any time in the development process. It provides us with interactive access to a variety of expression elements arranged by category. The categories are shown as the names of the tabs on the two-column tab pane that fills that window. Those categories are, from left to right:

String Tables

Each pane displays two columns of lists. The column on the left displays a list of subcategories for the selected category tab and the column on the right displays a list of the members of the subcategory selected from the list on the left.

For this blog post, we’ll limit the discussion to the first tab – the Variables pane. But that is the one most frequently used – and it has the most relevance to our current thread.

The Omnis Catalog provides easy access to the Variables, Schemas, and so on, in your application: for example, the image above illustrates the instance variables available within the currently selected remote form.

At first glance, this appears to be some sort of data dictionary. But the Catalog is much more than a data dictionary of table and column names. Virtually ANY element that can be placed in an expression, beyond the basic operators, is accessible through the Catalog – so we could think of it as a “Component Store for Expression Elements”. But since variables are probably the most often used elements, they are put in the most convenient place: the first Catalog tab.

How does this help us as we are writing code for our Omnis Studio library? We can access any item listed in either of the two columns of the current pane directly from the keyboard as part of our expression entry workflow. Here’s how that works:

While typing an expression into any calculation entry area within Omnis Studio, a simple keystroke combination of Command-9 on a Mac – and an even simpler one on Windows where it’s only a press of the F9 key – launches the Catalog window if it is not already open or brings it to the front if it is. The first time we do this after launching Omnis Studio itself, Variables is the current pane, the Task item in the left column has already been selected (by being the first item in that list) and the focus is in the right column with the first item there selected (if there are any items in that column to select).

While it appears on the surface that we’ll need to grab the mouse and start clicking to use this window, Omnis Studio has additional features that allow us to keep our hands on the keyboard. Suppose that we need to get the name of an Instance variable, but we need to see that list to remind us of the ones that are available for the context where we invoked the Catalog – which might have been the “Field name” entry area for a Calculate command in the Method Editor for a specific remote form class.

Here’s how we would proceed

First, we’d press the Tab key, which switches the focus into the column on the left side of the Catalog. We would then type “i” because the first item in that list that begins with “i” is “Instance”, which is the category we want. We then type the Tab key again to get back into the right side list. When we see the variable we want, we simply type the first few characters of that item to select that line of the list. We could also use the arrow keys, but typing characters is often faster because Omnis skips right to the first line matching the string we typed. We can also use the asterisk as a “wild card” character. When the item we want is highlighted, we simply hit the Return/Enter key and that variable name is placed in the field we were in when we invoked the Catalog. The focus is now in that field and the Method Editor window is now the front window again.

It’s much faster to do than to explain

The Catalog window remains open. The next time we invoke it (as long as we haven’t closed it in the meantime), the Variables tab will still be the current one, the Instance category will still be selected and the right column will still have the focus. So as long as we need the name of another Instance variable, the process is even faster the next time we use it!

Remember, this is for situations where we aren’t sure of the name of the item we want. If we had known the variable name, we could have simply used Tab Completion as described in my previous post. Both techniques apply ANYWHERE within our Omnis Studio library where we need a pointer to a variable – so anywhere we are working on a live expression or anywhere we need a reference to a variable that is in scope, such as the “data name” property for a field that we are supplying in the Property Manager window.

These first five posts to our blog all support my assertion that a seasoned Omnis Studio developer can generate more code with fewer keystrokes than a seasoned developer in most other languages or environments. And they are intended to help newcomers who are just beginning to evaluate Omnis Studio understand that even in this GUI programming environment, a properly educated Omnis Studio developer can do a great deal without ever having their hands leave the keyboard. And less time is required for debugging because we generally don’t have to worry about spelling or syntax errors.

But there will be times when we need to go looking for programming elements whose names and features we don’t know. Again, Omnis Studio provides some useful tools for these situations as well. I will introduce one of those in my next post.

SQL Worker Objects: “Taking the Load Off” in Omnis Studio 6.0


SQL Worker Objects – What are they?

The majority of DAMs in Omnis Studio 6.0 will contain additional ‘statement worker’ objects. You will be able to create a SQL Worker Object by sub-classing an Omnis Object class with your chosen statement worker. You will then be able to use the worker object to execute long-running SQL queries (like SELECT statements) as background tasks. This will leave your Omnis application free to continue. More importantly, it will leave your GUI free so the application can remain responsive. What’s more, you will be able to create multiple SQL worker objects if required and assign each one a separate worker task.

What are they not?

You will not be able to simply replace your existing DAM session objects with worker objects. This is because worker objects operate asynchronously. Unlike $fetch() when using a DAM statement object, you will not get your results back straight away. Instead, when the worker’s background task completes, it ‘calls back’ into your object with a list containing the result set. You can then add code to the call back method that will populate your list fields on-the-fly.

Want to know more?

If you are a member of the Omnis Developer Partner Program (ODPP) and you want to try out the new SQL Worker Objects for yourself, along with all the other features in Omnis Studio 6.0 (summarized here in the blog), you can request to join the Beta program on TigerLogic’s website.

The Omnis Advantage: Part 4 – Tab Completion

dswain_post4_tab completion

In my last post about Syntax Checking, I stated that Omnis Studio saves us debugging time by not allowing us to create syntactically incorrect expressions in our code (it can’t correct our logic, but this is still a big step!). Now I want to mention some of the ways it helps us write those expressions faster as well. One of the principle features that helps us in this way is:

Tab Completion

Yes, Omnis Studio also provides “Tab Completion”, whereby our code is completed simply by tabbing, but this is required in a much narrower scope than in other programming languages that offer it.

When I mentioned in an earlier post that the combination of Omnis Tokenization and Keystroke List Navigation in the Method Editor was faster for building methods than Tab Completion in other programming languages, I wasn’t dismissing Tab Completion as a programming feature as being useless. Far from it – Tab Completion is most efficient when we need to quickly add correctly spelled single-word items to a string, not entire complex commands that have a multi-word syntax.

So where can we use this in Omnis Studio? We can use it for adding variable and column names, notation string segments and related items within expression strings. When we are certain – or reasonably certain – of the item name we want to use, Tab Completion is the fastest way of entering it. Tab Completion also assures us of correct spelling, again saving us that particular debugging headache.

As we enter the string for an expression, Omnis Studio “watches” our keystrokes and is aware of the context within which we’re working. The first keystroke in a field that expects to see an expression, or the first keystroke after any operator, can potentially be the beginning of an item name. Since variable and column names MUST begin with an alphabetic character, typing such a character and then pausing for a moment (“moment” will be defined later in this post) triggers the Tab Completion search mechanism and a list of all in-scope variables that begin with the letter or string that has been typed so far is presented as a drop down selection list.


Omnis creates a list of possible variable names automatically.

What we do with this list can vary a bit. If there is only one item in the list and it happens to be in the item we want, simply hitting the Tab key will place the entire item into the expression string, hence the name “Tab Completion”. If the list is longer and we decide selecting from the list is easier than typing more characters, we can simply use the down arrow key to scroll quickly to the item we want and then press the Enter/Return key to place the selected item in the expression string. Maybe typing another character or two would let us use the Tab key instead so this is a judgment call.

We’ve now covered the use of Tab Completion for variable and column names. But, if Omnis Studio notices that we have begun writing a notation string, each period (full stop) character represents the beginning of a new notation segment. In this case, any alphanumeric character, dollar sign or hash symbol will be seen as the first character of the next segment (hash marks as the initial character as described in the previous paragraph signal that we want the name of a hash variable and a dollar sign as the initial character indicates we are beginning a notation string.). A left square bracket marks the beginning of an embedded expression within the notation string so Omnis Studio switches to “expression mode” (my term) because of this change of context. And that expression could include a notation string, etc.


Omnis shows you the next item in the context of the whole expression.


This feature is really referred to as “Notation Help” rather than “Tab Completion”, since we don’t always use the Tab key to complete the item. “Notation” is being use broadly here to mean “any expression element”. Operators are generally only 1 or 2 characters long, numbers are values that must be directly entered and character and date strings are not tokenized, so help can’t be offered for these. Functions also can’t be selected this way, but their names usually require a few keystrokes anyway.

How much of a pause causes the Notation Help to kick in? That is determined by the value of the general Omnis Studio property “notationhelptimer” (to view this property in Omnis, click on “Studio 5.x” and then “Prefs” in the Studio Browser). It holds a numeric value that is interpreted in milliseconds and defaults to 1000, so 1 second by default. Changing this applies the new value to that copy of Omnis Studio, not to a specific library or project.

OK, we now know a few features of Omnis Studio that can save us development and/or debugging time when we know more or less what we’re doing – that is, we know the EXACT names of the items we want to use in our code. But, what if we’re less sure? There are features to help speed us along in those situations too, which we’ll begin exploring in my next post.


What is Omnis?


What is Omnis?

Omnis Studio is a powerful and versatile Rapid Application Development platform and integrated development environment that enables you to build all types of cross-platform enterprise, web-enabled and mobile applications on virtually any device, on any platform. Our Omnis Studio infographic below illustrates a simple overview of how easy it is to create and deploy Omnis Studio applications.



If you are ready to concentrate on developing the concepts, strategies and total solutions of your applications, save time in development, and enter new markets; Omnis is the one easy-to-use tool you need to create powerful leading edge desktop, web and mobile applications including JavaScript-based apps. Learn more

The Omnis Advantage: Part 3 – Syntax Checking

dswain3_automatic_syntax checking

In part two of this series on Keystroke List Navigation, I pointed out how quickly we can select commands in the Omnis Studio Method Editor, but also indicated that expressions are handled somewhat differently. In this post, I’ll explain how Omnis Studio minimizes the need for tracking down syntax errors in expressions, saving hours of debugging time. This is made possible by another Omnis Studio development feature:

Automatic Expression Syntax Checking

Long entry fields in the command line details area of the Method Editor generally require one of two kinds of input: expressions or strings. And even these strings can contain “live” expressions injected within square brackets. Anywhere that we can enter an expression, Omnis Studio offers us some additional help.

Any expression we enter MUST be syntactically correct. If it isn’t, the focus simply is not allowed to leave that entry field. In this case, the test is not performed until we attempt to exit the field, at which point Omnis Studio attempts to tokenize the expression.

Every variable, operator and function has a unique token. If we name an item that does not exist where one of these kinds of resources is expected, we will get an error. There are also syntax rules (like balancing parentheses, required number of function parameters, etc.) that must be obeyed.

Omnis checks your syntax and urges you to correct your code.

If some element is out of place or just not there we will also get an error. While it may occasionally be frustrating to be forced to correct our expression entry before moving on, it could take considerably more time to track down and correct that same mistake later.

However, if we do want to come back and fix our expression entry later we can always cut the entire calculation string from that entry field and paste it into the Comment field to resolve later.

The Automatic Expression Syntax Checking feature exists everywhere we can provide an expression. And this includes anywhere we can provide a string that contains an expression in square brackets, such as window titles, menu line labels, Text objects on windows and reports, etc.

I maintain this is a time saver because hunting down such errors in other programming languages that do not provide a feature like Automatic Expression Syntax Checking is a true time waster.

There are also other related time-saving features that come into play as we are building our expressions which can cut down on spelling mistakes here as well – once we learn how to use them.


Moving Applications to Modern Web Standards, Part 2

We are delighted to feature a guest blog post by long-time Omnis developer, Raymond Treß of AdelConsult AB based in Sweden. Ray has a broad knowledge of the Enterprise and Web software industry, and has been speaking on behalf of the Omnis Studio development environment for many years.

Previously, we featured part one of Ray Treß’s post “Moving your Omnis Applications to Modern Web Standards,” and today we’ll continue the conversation with a deeper look at Omnis Studio 5.2.2 and DASframework (Development Acceleration System framework).

Migrating to the new Web Standards with Omnis Studio

Existing Omnis users already on the Omnis Studio Object Oriented (OO) level can easily extend their applications to the Web Standards incorporated into Omnis Studio 5.2.2. The step to bring the power of their existing OO applications to the Web and Mobile world is a relatively easy one, especially if already familiar with creating remote forms.

The steps from prior Omnis versions (like Omnis 7 or “Classic” as it is called) to Omnis Studio 5.2.2 may be a bit more complex, because developers would have to cross the OO bridge first.

Some developers in the past have tried to “go it alone” to convert their “Classic” apps, whereas using a conversion tool or framework to accelerate the conversion process may have many advantages – mainly in savings of time and cost.

That’s where a framework like “DASframework,” which I and a number of developers created, could help. This framework does not completely migrate or convert existing applications, but it helps a lot. With its sophisticated multi-library, multi-task structure, and a pool of other tools, it makes the configuration and development of Web and Mobile apps dynamic and easy.

DASframework supports the development of data-driven applications, including extensive event messaging and many other interactive GUI features. It’s based on a framework written for the first Omnis Web Client, but has been greatly extended to make use of the modern HTML5/JavaScript Client technology available in Omnis Studio 5.2.2.

The framework has already helped some large European Omnis customers to bring the power of their existing Omnis applications to the modern Web Standards world in a very short time.

There is a group of contributors supporting the further development of the framework. Over time, we’ll publish more information about DASframework and intend to make it available to all Omnis developers—and everyone is welcome to contribute to this project. This will be a new approach of sharing know-how and software in the Omnis community. (If you are interested in more information right away, please email me personally at ray at

I personally feel Omnis Studio 5.2.2 is the next platform for building all types of applications. The direction seems pretty clear to me: the only responsible thing to do is to continue to move your applications towards HTML5.

Securing your investment in the future

The question for most application developers is about longevity. That is, what can you do to develop apps that have a long lifespan, while not relying solely on an assortment of “JavaScript frameworks” or other proprietary Web Clients, like Flash, that may not be available for the long-term?

As someone who has been working with other tools, like Adobe FLEX, since the very first versions from Macromedia, I can attest to the value that FLEX promised. But times have changed, and as devices, technologies and user expectations have evolved, everyone building interactive, feature rich apps for the Web needs to look forward for better options.

Contact Raymond Treß:

Moving Applications to Modern Web Standards, Part 1

We are delighted to feature a guest blog post by long-time Omnis developer, Raymond Treß of AdelConsult AB based in Sweden. Ray has a broad knowledge of the Enterprise and Web software industry, and has been speaking on behalf of the Omnis Studio development environment for many years.

In my experience, there is a shift in the application development market towards Web Standards that started long before last summer, when there was a lot of publicity over the “Apple [HTML5] versus Adobe [Flash]” discussion. I find that many of my customers are actively exploring or migrating to applications built with Web Standards, that is, apps built using HTML5, JavaScript, and CSS. Today, in the majority of cases, these Web Standards can deliver feature rich, highly functional apps on Mobile/Desktop browsers. In time, more and more types of applications will utilize these technologies as the Web rapidly matures around HTML5.

Everyone is backing Web Standards

We can see that every major software vendor is contributing to Web Standards today and there is real momentum in making the Web better. Regarding most issues, it is difficult to get Microsoft, Google, Apple, Facebook, Adobe, and others to agree on anything, but they all agree that Web Standards are the future and they are investing heavily. Fortunately for developers, TigerLogic’s Omnis Studio 5.2.2 supports the HTML5/JavaScript/CSS Web Standards, with easy to build remote forms and ready-made JavaScript components. TigerLogic has a long history in developing Web Client technology so the implementation of the new Web Standards into Omnis Studio, and moving away from plug-in based browser technology, is a natural evolution for this software developer.

Omnis: an “all-in-one development system”

Omnis Studio brings together all the paradigms I enjoy in Object Oriented (OO) programming—such as Classes, Components, MVC (Model – View – Controller), together with the new Web Standards. And even better, I can continue to program in the Omnis Studio ecosystem, without having special skills in HTML5 or JavaScript. In my opinion, there is an opportunity here for those who know other systems, such as Adobe FLEX or Microsoft Silverlight, to switch to Omnis Studio. I would suggest that every OO-aware developer would be successful with Omnis Studio and HTML5 after a short learning curve to become familiar with the differences between, say FLEX and Omnis Studio. The most impressive benefits of using Omnis Studio are its speed of development time and the ability to interoperate with third-party systems and languages, such as .NET, Java, and SOAP. And that’s why I like Omnis Studio, because I’m able to use the best of (nearly) all worlds in ONE ecosystem instead of getting lost in a bunch of different development environments and frameworks. Omnis is really a kind of “all in one development system“.

Learn more about moving to Omnis Studio 5.2.2 for web app development using Ray’s specially designed framework in “Moving Applications to Modern Web Standards, Part 2” coming soon.

Contact Raymond Treß:

Healthcare Applications – Patient Involvement

In this second article of a two-part post, Managing Director of TigerLogic Germany, Birgit Jäger, discusses the suitability of Omnis Studio for developing healthcare applications, and draws on recent case studies where companies have successfully implemented mobile enabled healthcare solutions that help achieve phenomenal growth and efficiency.

Patient involvement in diagnosis and treatment a growing trend

A significant trend in healthcare today is the increasing participation of patients in their diagnosis and treatment, both for therapeutic and financial reasons. This trend is apparent in the form of electronic health records, electronic patient diaries, multimedia patient information systems, online scheduling, and so on, whereby the patient takes an active role in their ongoing monitoring and treatment.

The advantages of such patient-involved solutions include:

  • Patients take a pro-active role in their therapy.
  • Two-way online communication helps to avoid unnecessary consultations and saves time, cost and may help avoid unnecessary hospital visits.
  • Patients can be monitored more intensively with less adminstrative work.
  • Patient data can be accessed at any time from any location.
  • Online communication is potentially safer, more efficient and more accurate, making documentation and quality assurance easier.
  • The bigger data volumes gathered are delivering more helpful empiric information for medical research institutions.

Omnis JavaScript Client helps meet the latest healthcare trends

Omnis Studio allows developers to create apps that run on virtually any device, making it well suited for patient-involved solutions where the patient may be using their own desktop computer, tablet, or smartphone to access their data or communicate with their healthcare provider using a two-way online communication system.

Why the Omnis JavaScript Client technology is ideal for the development of modern online systems in healthcare:

  • Only one code base for all platforms and client devices to be developed: the same app can be accessed on an iPhone, a smartphone with Android or Windows Phone, a tablet PC, or any type of browser.
  • All-in-one self-contained environment: Omnis Studio allows any type of application to be updated and enhanced quickly and easily.
  • Time-to-market is critical to meet the demands of each healthcare participant requiring an online system solution: Due to the high productivity of Omnis Studio, new mobile and online applications can be developed with Omnis in a fraction of time.
  • Omnis Studio’s open architecture, structure and connectivity: Online healthcare applications built with Omnis Studio can be added to nearly any existing medical solution, regardless of the platform or environment it is based on.

Developed by Germany based developer CNM, and in cooperation with the University Hospital of Freiburg and the German Society for Bipolar Disorder (DGBS), the electronic diary system for patients with bipolar disorder is a successful Omnis Studio application that is meeting the modern healthcare trend towards two-way online communication between patients and healthcare providers:

Patient diaries have proved their worth in medicine for a long time both in monitoring and in therapy, mainly for diseases with unstable pathology, such as diabetes, asthma and coronary heart diseases, but especially for bipolar disorder and depression. However, until now the patient diaries have been created on paper and then transcribed to computer, a process which is very time consuming and creates the possibility for errors – this does not benefit the patient, their doctor or hospital staff. Due to modern software and communication technologies, patients are now able to enter their experiences into electronic patient diaries, which means that monitoring and diagnosis can be done much quicker and more accurately.

Many similar projects are in development for disease and medical therapy application solutions using Omnis Studio. See TigerLogic’s website for more Omnis Studio success stories.


Birgit Jäger

Healthcare Applications – Keeping up with the Market


In this first article of a two-part post, Managing Director of TigerLogic Germany, Birgit Jäger, discusses the suitability of Omnis Studio for developing healthcare applications, and draws on recent case studies where companies have successfully implemented mobile enabled healthcare solutions that help achieve phenomenal growth and efficiency.

Healthcare’s mobile technology trend

The healthcare industry, worth billions annually, is among the most prevalent adopters of mobile technology as demand for instant access to patient data continues to grow on a worldwide basis.  For software developers and system integrators, this provides many valuable opportunities for delivering software and hardware solutions, as well as professional services. Furthermore, improvements in software design and hardware play a vital role in a healthcare organization’s ability to provide more efficient services to their clients.

Healthcare industry challenges

All facets of the healthcare industry are facing serious challenges:

  • Continuous increasing costs due to evolving technical innovations and demographic trends in the Northern hemisphere.
  • Growing demands as well as new therapies requiring more involvement from patients, coupled with the need for better documentation and quality assurance.
  • Health insurance systems struggling in most countries to find a realistic approach to balancing increasing expenses, lobby group pressures, new technical possibilities and rising patient demands.

These circumstances, and more, are prompting technology tools to rapidly transform in conjunction with the healthcare industry’s ever-changing requirements – requirements in billing systems for medical services, reporting and information exchange, patient records, treatment information, documentation, and quality management, etc. For example, in many European countries, healthcare applications are changed and upgraded every quarter.

With this in mind, developers of healthcare applications require a sophisticated development environment that can respond quickly and easily to change and further development, and allow the integration of new technologies that allow data access anytime and anywhere.

Omnis Studio for healthcare application development

From security systems for museums and production control in dairies, to logistics, asset management and manufacturing, Omnis Studio is used for the development of a wide range of application types in different industries. Looking a bit deeper into the industry sectors, it appears that a significant proportion of Omnis applications belong to the medical and healthcare market.

Perhaps this is no coincidence. Omnis Studio enables healthcare solution providers to keep up with the constantly changing legal requirements in the industry and provide their customers with continuous innovations.

Omnis Studio offers:

  • High productivity and clear structural functionality and features, which allow for rapid application development in less time and with fewer resources than with most other application development tools on the market.
  • Open architecture which allows developers to easily integrate external components and adapt their applications to the latest technologies.
  • The Omnis JavaScript Client technology which allows developers to add new modules or enhancements for the web, tablets and smartphones from a single code base. Most importantly, all of this can be done without the need for a complete redesign.

To illustrate a successful healthcare application written in Omnis Studio, software developer amétiq AG of Switzerland has effectively addressed changes in their clients’ requirements and the healthcare market as a whole:

amétiq AG has adapted their solution with the addition of a web module, providing doctors and patients direct and secure access to their personal medical data and information via the web or mobile device. With over 1,000 installations of their doctor’s office solution in Switzerland, amétiq AG has experienced year-on-year growth of 20% to 30% while meeting the challenging demands of the health industry and its mobile technology adoption.

See TigerLogic’s website for more Omnis Studio success stories.

Birgit Jäger

The Omnis Advantage: Part 2 – Keystroke List Navigation


In my last post, I described Omnis Tokenization as the way Omnis Studio eliminates misspelling of commands. But I’ve left explaining how we SELECT those command tokens to this post. We do that using:

Keystroke List Navigation

Other languages offer programmer aids like “tab completion” to help minimize typos and speed the development process, but Omnis Studio provides an even faster technique for those who know how to use it.

Any list display field in an Omnis Studio application, including in the development environment, can be navigated from the keyboard by typing a string of characters for which Omnis searches within that list.

In the Method Editor, the commands for Omnis methods are presented to us in a categorized list. We don’t need to scroll through this list and click on the command we want once we are familiar with those commands. That would be horribly slow!

Instead, the method line display area and this list of commands have been linked, and any keystrokes we type when the focus is in one of these areas searches through that list for the first command that matches our keystroke string. With the help of wildcard characters and next/previous options, this process is very fast.

Possible command parameters are shown which you can select with your

For example, if we want to add the “Open window instance” command at the currently selected line in a method, we only need to type “o*w” and we have it. The asterisk is a wildcard. We then tab once to put the focus into a list of existing window classes and a few more keystrokes selects the name of the desired class – which is also already tokenized. We then tab again to the entry field for specifying an optional instance name and positioning information, etc.

The whole process is quick and eliminates the possibility of spelling errors for nearly every element in the completed command line. If you want to see HOW quick, come to an Omnis Studio developer conference or training class and watch an experienced Omnis Studio developer who understands how to use the tools.

Sometimes we also need to enter expressions in certain commands. How are those handled? Watch for the next article in this series, The Omnis Advantage: Part 3 – Syntax Checking, to find out.