As IBM readies Unity for the Windows 95/NT beta release, a question needs to be raised by Client Access professionals: Whats in it for me? No serious look at Client Access/400 could be complete without a critique of Unity.
A couple of years ago, rumors started filtering down that Rochester was working on a new front-end for the AS/400. The idea, according to the rumors, was to eliminate the old non-programmable terminal interface entirely and to build up a single elegant GUI for all OS/400 tasks. This project, according to rumors, even had a code name: Project Unity.
In the meantime, a lot of us who have been waiting for the Client Access Win95/NT client have been in a quandary. Was Unity going to be a part of Client Access Win95/NT client? If so, the beta code we were being fed by IBM seemed pretty anemic. For instance, last issue we reviewed the System Object Access (SOA) module of the Client Access Win95 client. SOA is an interesting product. It provides a GUI for the operational tasks of the AS/400. Butwhen you dig beneath the surfaceSOA is not much more than a screen-scraper. Was this what Project Unity was all about?
Well, now it seems that Unity does officially exist at Rochester, and the project is finally coming to Client Access Win95/NT client beta. Many of the questions that have nagged us are being answered. IBM has even put screen camera captures on its Web site to show us how Unity works.
So what does Unity look like? How is it different than the current GUIs in Client Access Win95/NT client beta? All of these are interesting questions thatin a very real sensehighlight the problems that all of us face as we develop real AS/400 Client Access applications. Lets look at Project Unity from this perspectivewhat will Unity teach us about moving applications to a real Client Access environment.
Unitys Explorer Interface
The first thing youll notice about Unity is the Win95 Explorer metaphor. (See Figure 1: Unity Profile Manager.) That is, Unity starts out with a two-paneled representation of AS/400 services displayed in a hierarchy. As you click on the icons within the hierarchy, you are led deeper into the structure of OS/400. For instance, in Figure 1 there are eight sets of services listed under the icon representing a Boston AS/400: Database, File Systems, Jobs, Messages, Output, Printers, System, and Users. If you click on the System icon, youre led to a second hierarchy: Alerts, Authorization Lists, Hardware Inventory, Problems, Software Inventory, and System Policies. Click System Policies and you continue your journey.
On the surface, this hierarchy may appear to be no more than a new analogy for old AS/400 branching menus. But this isnt the case at all. A menu is really more akin to an HTML page of URLs than an Explorer hierarchy; the links within a menu have no inherent structure, and can in fact be self-referencing. However, a Win95 Explorer hierarchy provides a single, structured representation of every service available to Unity, and represents everything within that structure as an object that can be manipulated.
If you stop to think about this difference in approaches, the organizational task that faced the developers of Unity is exactly the same task we Client Access programmers face when were moving from menu-based systems to the Windows 95 Client Access paradigm. The task is more than screen-scraping the menus: its providing object-like organization in logical hierarchies. This means that weve got to analyze and organize our projects applications into logical groups from the get-go, instead of tacking them onto a menu-like drop-box of available options.
How new is this approach? Is it the right approach? Does this represent a new standard around which we should be rallying, or merely one more standard that isnt standard at all?
If you remember Windows 3.1 and NT 3.5, the only place where this kind of hierarchical structure previously existed was in the File Manager. Maybe thats why IBM took so much time before releasing Unity, perhaps there was uncertainty about the direction NT was going to lead the GUI. Now that it appears that NT 4.0 will be using the Windows 95 GUI, it seems a sure bet that the Explorer paradigm will succeed as a standard, and that Rochesters development efforts will continue to integrate OS/400 functions in a unified manner. For those of us who develop Client Access applications, emulating the Explorer interface will now become one of the first lessons we should learn.
But theres a larger lesson for developers too. IBM integrated its design of Unity to fully complement the Windows 95 platform. It didnt try to re-invent the wheel, or try to reimagine the ideal interface. It used Win32 OCXs to create the design and developed the OCXs along the way. By doing this, Client Access becomes a real extension of the clients desktop, not an attachment of some foreign OS. This, of course, has always been the problem with AS/400 connectivity products in the past: things on the AS/400 worked differently than on a PC client. Consequently, when we as developers tried to integrate PCs with the AS/400, we always seem to get it backwards. That is, we always tried to make the users desktop look and feel like an AS/400 terminal. Now it appears IBM is giving us a product that gets this relationship right: it integrates the AS/400 to the desktop, and not the other way around. Its about time, and with the new APIs and OCXs that Unity will be providing, it shows us that it really can be done with some elegance.
Program Granularity and Tight Control Over Function
Within Unity, IBM has also reformulated how an AS/400 application should interact with the client. In previous incarnations of GUIs for the AS/400, including SOA,
the user was provided with a display frame or window into which parameters could be typed. Then, when the OK button was pressed, the parameters were passed onto OS/400 through a remote procedure call, and OS/400 itself sent back any messages that were generated. This made life simpler for OS/400 communications management because the complete requirements for any particular OS function were passed along with each submission. Unfortunately, however, this also made programming within the GUI extremely cumbersome. There was little opportunity to provide context-sensitive editing within a panel, and the panels themselvesby necessitytended to hold a lot more information than could be easily handled in the event-driven model. This was especially true in the pure screen-scraping implementations, there wasnt much granularity in the applications, and they worked exactly like their NPT command counterpartsthey tended act like dumb terminals with pretty faces.
Unitys modular implementation, by comparison, seems much more tightly integrated with OS/400. For instance, the Change a User panel (shown in Figure 2) develops a logical progression of steps towards the goal of maintaining the profile of the user. Functionally, this panel provides a parallel component to the old OS/400 command CHGUSRPRF (shown in Figure 3). However, the Unity implementation seems to provide inherent logic in the organization of the commands subfunctions (such as Groups, Personal, Security, Jobs, and Networks), and each click of an associated button provides a tighter control over the process of changing the user profile.
Rochester orchestrated this new level of granularity by creating new APIs for OS/400. This is probably a major reason for the delay in Unitys release; new APIs require extensive testing. The results are dramatic. There is no question that the representation of functions to the operator is much simpler, better organized, and more easily managed in Unity. From this perspective alone, the increased ease of use from Unity may have been worth the wait. And for developers who are contemplating a similar conversion of their own custom OS/400 commands, Unity provides a good model from which a lot can be learned.
Is Unity Worth It?
How significant will Unity prove to be? The more you work with the Unity GUI, the more you realize how your previous vision of the AS/400 has been colored by NPT commands. Unity doesnt seem like new coat of paint over the same old architecture, but a real change in the way we relate to OS/400. A good example of this sort of change can be seen in Unitys System Policies icon.
Every AS/400 site on the planet has a policy for backing up the system. The policies vary, but the OS/400 commands are usually the same: SAVOBJ, SAVLIB, etc. Various iterations of these commands become the glue that preserves our systems in an emergency and guarantees we still have a job the next day if the system inadvertently crashes. Generally, these backup policies are not set in stone, but are orchestrated through custom menus or through OS/400s Operator Assistant.
Of course, no IS manager in his or her right mind would turn over the process of archiving the AS/400 to a novice operator. The commands are somewhat complex and, without proper supervision or documentation, the chances of a novice completing a useful archive are, regrettably, remote.
By comparison, Unitys GUI implementation of a backup policy provides equivalent functionality and a much easier interface. With the System Policies object, the Backup Policy is one available option. When activated, the Backup Policy provides a list of multiple backup practices, displayed as object icons in a window. (See Figure 4.) In this
example, theres a daily backup policy, a weekly policy, and a monthly policy. By double- clicking on one of these policies, the rules of a particular backup policy can be quickly modified. (See Figure 5.)
Within this configuration, group parameters are organized in a logical fashion in tabs along the top of the window. These tabs include the What, Where, and When parameters, as well as general Global parameters. Individual parameters within a particular group are also framed. For instance, in Figure 5 theres a frame called Select data to save that surrounds the selections that the configuration controls.
What have we really gained from this orderly presentation of a backup policy? First of all, weve received an encapsulation of our backup process that is easy to access, quick to modify, relatively intuitive to comprehend, and functionally equivalent to the various confusing and complicated OS/400 commands that previously graced our AS/400 operations menus. Secondly, Unitys paradigm implements the policy in a way that is easy to communicate to our staff, makes training a new SYSOPR easier, and can free the more experienced operators to perform other duties. In other words, by integrating the AS/400s user interface into the clients GUI, weve eliminated a tremendous overhead of user training and expertise, and provided more robust tools in the process.
When will Unity be ready?
Parts of Unity are currently available. The remainder of the features will be available next year. If youre really interested in how its going to affect your site, you should check out IBMs Web site for Unity at: http://as400.rochester.ibm.com/products/unity/homepg.htm How much functionality will Unity have? IBM has said it will provide new functions to Unity over various releases, at the same time replacing GUI functions previously supported by SOA and other utilities. Of course, this means more waiting for Unity, but from all appearances, it looks like Rochester is going to teach us a lot about building Client Access applications in the process.
Figure 1: Unitys Profile Manager Figure 2: Unitys Change a User Panel
Figure 3: Displaying OS/400 Change User Profile (CHGUSRPRF) Command Figure 4: Unitys Backup Policy Options
Figure 5: Modifying a Backup Policy