Portable and dynamic distributed applications architecture5694601Abstract A system and method is shown for enabling a plurality of computers and associated computer resources, some or all of which may be of heterogeneous configuration, to cooperatively process various applications such that the execution is transparent to the user regardless of where the application is actually executing. This distributed applications architecture performs an information distribution service between multiple transaction processing systems by working with a transaction processor via communication channels to other hosts within the network and a dialog manager which uses a transaction processor interface to communicate with the transaction processor. The architecture employs a map service which provides an editor to create the maps for the application panels, a compiler to generate the maps into a linkable form, and a linkable interpreter which translates the linkable form into the screen presentation format for that platform. To distribute an application, the source code for the procedures, view and panels are moved as a block to the new system. This is possible because once the application source code is complete, all application logic, user interface control tables, view definitions, and other application-specific tables for one transaction definition are packaged by the present invention in a single load module on the system where the application will reside. The load module is then compiled using the target system's compiler, link editor, and bind process. Thus, all environment-dependent variations of import/export are automatically integrated with the application at load module bind time, requiring no source code changes. Claims What is claimed is: Description BACKGROUND OF THE INVENTION
______________________________________
FUNCTION INTERNAL NAME ROW COL LENGTH
______________________________________
Transaction Name
IEF1-TRAN 1 1 8
Panel Name IEF1-PANEL 1 10 8
Panel Title NA/Optional 1 19 30
System Name IEF1-SYSTEM 1 58 8
Date/Time IEF1-CURDT 1 62 18
User ID IEF1-USER 2 72 8
Message ID IEF1-MSGID 23 1 6
Message Text
IEF1-MSGTX 23 8 25
Function Key Prompts
NA 24 1 <79
______________________________________
The format of the Function Key Prompts is `Fnn=prompt` where "nn" is a one or two digit number identifying the function key number, and "prompt" is variable length indicator of the associated function. When using DL/1 or other data bases, it is desirable, or often even necessary, to have a collection of functions and sub-functions packaged as TRANA and while another set of functions are packaged as TRANB to minimize the number of data bases associated with a given transaction. Therefore, according to the preferred embodiment of the present invention, multiple functions are packaged in each transaction module. Packaging multiple functions within a single transaction code (hereinafter referred to as a "trancode") improves user friendliness. Furthermore, it also minimizes the number of objects that must be managed when installing an application in a new system or when re-deploying a new release of an application. The size of any resulting transaction module is a design consideration and must balance technical and performance considerations with user friendliness and ease of maintenance. A terminal as contemplated by the present invention is a presentation facility, such as a video terminal screen, and an input mechanism, normally a keyboard. However, as noted previously, this input mechanism could be a program, voice, barcode, mouse, or other input as well as a keyboard. Similarly, the display could be a program as well as the more conventional terminal display. Each logical terminal has a name that is unique within the DAA network. The terminal is the primary interactive input/output facility for DAA applications according to the preferred embodiment of the present invention. Once the input has been prepared to the user's satisfaction, he may press ENTER (or an equivalent) to invoke the transaction. This transaction input stream will be passed to the appropriate system in the network. Once arriving at the appropriate system, it will be processed according to the transaction code. Once the transaction has been invoked, the application or the Information Engineering Task (IET) runtime controller, will be responsible for interpreting the input stream and in turn invoking the appropriate procedure. Output generated by DAA transactions will be presented to the logical terminal, formatted according to the interface and device characteristics associated with the terminal (e.g., any necessary control sequences associated with display devices will be included in the the data stream). The primary human interface to the DAA environment is through terminals that present panels of information from the applications via transactions executing in the various systems. Often, the terminal is a 24.times.80 video screen with keyboard. However, a "terminal" could also be a program (e.g., an interactive program such as a spread sheet package). Each logical terminal is uniquely defined within each system. An application as contemplated by the present invention is a collection of transactions that perform a set of functions on behalf of the application. Each application has a four character name that is unique within each deployed runtime system. A transaction with DAA according to the present invention is a collection of resources (panels, reports, procedures, databases, etc.) to be utilized in behalf of an application to perform various functions for that application. Each transaction is uniquely identified within each runtime system into which is is deployed. Additionally, each transaction comprises a set of load modules or programs that perform the specified functions in the appropriate environment for that transaction. Each transaction has a primary program (load module) which may, in turn, invoke sub-modules on behalf of that transaction. As shown in FIG. 9, each DAA application transaction is composed of application procedures, panels, views, working storage, DAA run-time functions, a Transaction Definition Table (TDT), and other tables. As can be seen according to the preferred embodiment of the present invention, portion 152, containing the DAA runtime procedures and tables, is application independent. Portion 154, containing the TDT, procedures (input, refresh), panels (menu, application) and views (import, export, profile), remains application dependent. Procedures have direct access to working storage, but are completely isolated from panels and views (and consequently isolated from the mechanics of inter-transaction communication, device communication, profile management, etc.). Each transaction may perform multiple functions on behalf of the application. These functions are represented by application procedures. A procedure as contemplated by the present invention is a collection of code that performs a particular set of functions on behalf of a transaction. Each procedure has a name that is unique within the associated transaction. An application procedure may be invoked as a result of a panel being presented to the transaction that contains this procedure. A procedure may also be invoked by a distributed application transferring a request for service through a network request (LINK) to the designated system/transaction thereby invoking the designated transaction procedure. Upon completion of execution of a procedure, the procedure may stipulate that a panel is to be prepared and presented back to the application user or it may designate that control is to be passed to another system/transaction/procedure with a remote request or it may designate that control is to return to the calling system/transaction/procedure that invoked this procedure. A panel within DAA according to the present invention is a defined format for information interchange with a logical terminal (e.g., an IBM 3279 display terminal). Each panel is uniquely identified within the associated transaction. Associated with each panel is an INPUT procedure and REFRESH procedure. The input procedure is invoked when the corresponding panel is received from a terminal. The optional refresh procedure is executed upon the restart of an application or from a HELP suspension in order to refresh data to be presented on the panel prior to output display of the panel. An input procedure is an application program that is invoked when a panel is received by a system from a terminal/process. When an input panel is received from a logical terminal, the input procedure associated with the panel is invoked. A refresh procedure is an application program that is invoked prior to displaying a panel that is requested from a menu or is invoked upon restart of an application that has been suspended for HELP documentation presentation. The refresh procedure is typically used to retrieve data from data bases prior to display on the panel. The refresh procedure may also be invoked when a panel is to be presented as an initial user request from a menu. A refresh procedure may be associated with a menu selection and/or a panel. If a refresh procedure is associated with a menu selection, this procedure will be invoked prior to the display of the panel. If, however, a menu selection does not explicitly have a refresh procedure, then the refresh procedure on the panel specification will be invoked. If neither the menu selection nor the panel specification specify a refresh procedure, then the panel will be presented from the data in working storage, as populated from the profile view. Working storage, sometimes also referred to as a transaction view, contains all data items that will be referenced by all panels, views, and procedures for this transaction. Working storage is passed to each procedure within the transaction for use in executing the logic of that procedure. Working storage consists of a fixed section, which is used to communicate between DAA run-time functions and application procedures, and a variable section, which is entirely application-defined. Within DAA, according to the preferred embodiment of the present invention, application procedures communicate with each other, and with outside resources, via "views". Views are used to help isolate application procedures from the mechanics of inter-system communications, device presentation management, help facilities, menus, and other DAA common services. This isolation of the application logic from "services" ensures that: an application can be serviced, without programming changes, through continually evolving communications, storage, presentation, packaging, processing, etc., technologies. an application can be implemented on a variety of platforms and architectures, based on cost/performance measurements (not on migration costs). an application can be implemented on a variety of user environments, including variances in national language, human interface hardware, and user preference. an application can be altered in real time, including data interchange (view) re-definitions, without disruption or loss of data. A view within DAA as contemplated by the present invention is a designated collection of data items that are utilized by the application. A view is a named collection of such data items and includes the identification and length of these data items as they relate to the particular transaction. The primary types of views are profile, import, and export. A profile view identifies all data items which are to be saved in the user's profile between executions of this transaction. An import view defines all data items to be presented to a called procedure by a calling procedure. An export view defines all data items to be presented upon completion of the execution of a called procedure to the calling procedure. The profile view is a subset of working storage (sometimes known as a transaction view) that is to be saved in the user's profile for this application. At the completion of the execution of a procedure, the profile view for that procedure is extracted from working storage and written to the profile data base. As this transaction is reinvoked by subsequent data entry or application restart, this profile view is read from the profile data base and used to repopulate working storage. The profile view is intended to be a subset of working storage which defines the data requirements of the current user dialog state while minimizing the overhead associated with maintaining user profiles. The import, or input, view is a collection of data items that are presented to a procedure when a procedure is LINKed-to from a calling system/transaction/procedure. When a procedure completes and indicates an Exit State of LINK, the DAA control program (IET) will extract from working storage the data items identified by the import view for the called procedure and package that with the control information necessary to specify the calling and called system/transaction/procedure. This message is routed to the designated system and transaction for execution. The import view, when received at the called system/transaction/procedure, is used to populate working storage for the called transaction. The export, or output, view is a collection of data items representing the results of the execution of a called procedure. The export view is a subset of items contained in working storage at the completion of a procedure execution when the exit state is set to RETURN. This export view is packaged with interface control information into a message to be routed back to the calling system/transaction. When this message arrives at the designated system/transaction/procedure, the profile view for that system/transaction/procedure is retrieved from the profile data base and used to populate working storage. The export view is then extracted from the message Just received and used to populate (and overlay profile data in) working storage. The specified procedure is then restarted. A transaction view is a collection of data items to be used by the collection of procedures, panels, and views that make up a transaction. These data items may be thought of as COBOL Data Definitions or as C structures, although other lanugages may be Used, that specify each of these data items. The transaction view is passed as a working storage area to each procedure within the transaction for use in executing the logic of that procedure. When the TDT is first referenced, the GTD system will generate the "system required" portion of the transaction view and place this in the associated SRCLIB (described later). The transaction view name is usually of the form "tdtTVW". The application designer is then required to add any application-unique data items to this transaction view. Once specified, the transaction view is used as a data reference source for procedures, panels, and other views. APPLICATION PORTABILITY. Application portability is achieved by supporting, on all DAA system platforms, and for evolving system environments: identical application source programs; identical application definitions; and identical application development environments. Source program portability, or identical application source programs, for all supported platforms, is achieved by adherance to a selected set of industry-adopted standards, combined with a platform-independent program interface. Examples of industry-adopted standards which are used to assure source program portability include: "C" program compliance with draft proposed ANSI "C" (X3J11), including the defined function library; "COBOL" program compliance with ANSI X3.23-1985 (Intermediate Level); and "SQL" compliance with ANSI X3.135-1986. Adherance to these standards are checked on all platforms having ANSI compliant compilers or pre-compilers. Deviation from the standard, including non-portable use of system-specific functions, is checked whenever feasible. Examples of areas in which industry-wide standards do not exist include: interface to a transaction processing system; interface to a presentation system; communications between cooperative processes; routing messages to terminals, transactions, systems; user interface; profile management; help and user documentation. These functions are provided by DAA, but are completely isolated from application logic. Furthermore, there is one interface between DAA and application procedures. The application procedure is called, passing it the address of working storage. Interaction between DAA run-time services and the application is via a fixed portion of working storage. The application uses working storage to request services such as display a specific panel or link to a procedure. However, the application does not specify data requirements, logical control sequence, or any other mechanics of the service. Parameters of DAA services are isolated from the application logic, making the application source program independent of system-specific implementations. The runtime environment for DAA applications provides for the major functions to be supported by a run time driver (IET) and associated run time subroutines. An application (input) procedure is invoked as a result of input from a panel or input from a remote procedure call(i.e., LINK). In either case, the structure and content of working storage, as well as the calling sequence itself, is identical. It is transparent to the application whether input was received from a panel or another procedure (except that an optional RETURN may be made to a calling procedure). These two forms of input are further described in the following paragraphs. When panel input is received from a terminal to a procedure, the user's profile view is extracted from the ROLLFILE and placed in working storage. Working storage is presented to the procedure and the procedure is executed, which typically performs application-dependent data base query/updates, manipulative logic on data items in working storage and/or data bases, and preparation of output data elements in working storage (which may be saved in the user's profile or displayed to the output terminal when control is returned to IET). If, for example, the designer of the application receives input, reads data from the data base, places that data in working storage, and returns control to IET, the same panel will be displayed with the newly populated working storage data. If the logic of the input procedure is such that it determines from terminal input or user action request (e.g., a function key) that an alternative panel is to be displayed, it may do so by inserting the new panel name in the IEF1-PANEL field and returning control to the IET. IET will prepare a panel for the input terminal consistent with the panel specification. If the IEF1-PANEL field is left blank, the master menu will be displayed. The designer has the option of interrogating the user action request (e.g., function key), located in working storage element IEF1-FUNKEY, to determine action to be taken by this procedure in response to a user action request from the terminal. Note, however, that certain action requests are reserved for use in dialog actions defined in the consistent user interface (and implemented by IET). An external procedure is a procedure which is physically located in a different transaction and possibly different system. The external procedure itself is not included in the calling transaction load module but a reference to this external procedure is made to correlate the import and export views for this procedure. An application procedure can use the LINK and RETURN exit states to invoke external procedures. Distributed Resource Control (DRC) is used to route the request to the designated system/transaction. The procedure name, as specified, must be a well defined procedure name within the called system/transaction. If it is not well-defined, then the menu for the called transaction will be displayed to the user. The invoked system/transaction/procedure operates in the same DAA environment as the parent transaction/procedure and has the same options (i.e., if a panel is to be displayed upon completion of the execution of this called procedure, the procedure may do so by entering a panel name in the IEF1-PANEL field and returning control with the IEF1-XSTATE field blank to display this panel to the requesting user). A called external procedure may return control to the calling procedure by setting the variable IEF1-XSTATE to RETURN. In this case, the IET control program will extract data items from working storage as specified by the export view for this called external procedure, package that with the interface control block that initiated this call request and submit this output message to the calling system/transaction/procedure. Upon return to the calling system/transaction, the IET control program at that system will extract the profile view for the calling procedure from the profile data base and use it to populate working storage of the calling transaction, followed by a population (and consequent overlay) of working storage based on the export view received from the called external procedure. The calling procedure will be reinvoked for further processing. DAA profile management is a service which is automatically provided to all application procedures executing in the DAA environment. Profile management saves and restores an identified subset of working storage, completely independent of application procedure logic. Profile management enables DAA transactions to have the characteristics of conversational transactions (except profiles are by user instead of terminal), without requiring application logic. Consequently, DAA procedures have some of the ease-of-programming features inherent with interactive-mode applications, while retaining the resource administration advantages inherent with transaction processing. One side effect of DAA's profile management is that working storage is set according to the definition of the user profile (and not necessarily the last execution of the procedure). This encourages application procedures to be coded for serial re-usability and/or reentrancy. Application definition portability, both with respect to supported platforms and evolving system environments, is achieved by using tables (as opposed to generating code) within the application load module. Tables to describe the application requirements and definitions are independent of the specific implementation environment. For example, panel tables do not have any device-related information nor do import/export views have any protocol-specific information. Environmental dependencies, such as terminal devices or inter-system communications protocol, are isolated from the application definition. Consequently, DAA support for changes to the environment, either through explicit application transfer to another environment, or through natural evolution of the current environment, is achieved without impacting the application. DAA provides a platform-independent interface to a structured development process, plus an automated mechanism for transferring an entire application development environment between platforms. "Generate Transaction Definition" (GTD) is an interactive tool used for semi-automating the transaction development process. GTD provides the developer with a mechanism for specification of all transaction elements. The user creates and edits the Transaction Definition Table (TDT), which identifies the elements to be included in the transaction and the relationship between the elements. GTD also provides the mechanism for specifying parameters of DAA services, such as dialog interaction control, panel layout, profile mapping, import/export mapping, etc. GTD provides a "common user interface" to the developer, independent of the platform being used for development. The tool has the same panels, and same options, on all systems. All aspects of application development are identical on all platforms, including transaction definition, menu definition, panel layouts, view definitions, working storage definition, help and information documentation, etc. Variations in file naming conventions, compiler options, link options, SQL pre-compile options, and other system features are hidden from the developer. Variations in physical characteristics of supported terminals/devices are transparent to the developer. Variations in the transaction processing system, and associated interfaces, are hidden from the developer. Installation procedures are identical on all systems. In addition, there is a function within GTD which provides for the automated transport of the entire development configuration, for a given application, from one system platform to another. These capabilities promote rapid deployment of applications across heterogeneous platforms. GTD is a structured development environment and enforces structured construction of transactions. Since all components are known and controlled by GTD, it is feasible to automate the transfer of applications from traditional (albeit partially automated) development methodology to full-cycle CASE tools such as Texas Instruments' IEF. DYNAMIC APPLICATIONS. The primary attributes of DAA transactions, according to the present invention, which contribute to the capability for dynamic application modification are: packaging all application-specific components of a transaction into single load module; and insulating transactions from the impact of view definition changes. Additionally, DAA services associated with application transactions can be modified dynamically and synchronously (with respect to all application transactions) since: most DAA services are implemented as independent processes, communicating (in system-dependent implementations) with DAA run-time functions in the transaction; and the DAA run-time functions are dynamically loaded, independent of the transaction's load module. These capabilities enable continuous operations at all systems. It avoids the problems of synchronized installation, enabling maintenance on each system to be performed asynchronously. It also enables continual upgrades to DAA service capability (e.g., ability to support new terminals/devices; new user dialogs; new help/documentation presentation features; etc.), transparent to application transactions. One or more application procedures are packaged together with a transaction definition table, views, panels, and other resources to create a uniquely identified load module. This load module, in combination with other attributes such as scheduling priority, is identified to the Transaction Processing Monitor via a "transaction identifier". This transaction identifier is the basis for scheduling work within DAA. The load module which is associated with the transaction identifier includes: Application procedures. Set of resources to be used in conjunction with application procedures, such as data sets or data bases. Transaction Definition Table. This table includes, among other things: A table of all referenced procedures, both internal and external. For each referenced procedure, the import, export, and profile views associated with that procedure. A table of all referenced panels. For each referenced panel, the refresh and input procedures associated with that panel. Working storage. In summary, the load module contains all application-specific logic and data. Since the load module is treated as an indivisible unit by the transaction processing system, modifications of program logic, data base query, panels, and/or any other components of the transaction will always be installed synchronously, thereby ensuring load module integrity. Most non-DAA systems, both transaction processing systems and interactive systems, require or allow user interface control tables be physically separate from load modules (which inevitably leads to synchronization problems). Specifically not included in the load module are the DAA run-time functions (IET, etc.,) which provide and/or interface to the various services provided by DAA. IET, along with all lower level service functions associated with IET, is implemented outside the load module. IET is isolated from application load modules in order to reduce application load module size, synchronize system-wide installation, enforce IET upgrades into all applications, and perform IET upgrades without rebind or other modification to the application. IET, along with all other DAA run-time functions, are implemented as a dynamic link module, callable from the (DAA provided) "main" program which gains control from the transaction processor. Many DAA services are implemented as independent processes which utilize system-dependent techniques to communicate with the run-time functions linked to application transactions. These services include documentation retrieval system, profile management, and distributed resource control. The DAA services are implemented as servers; functions within application transactions are clients. DYNAMIC VIEW MANAGEMENT. Application procedures communicate with each other, and with outside resources, via "views". Views are used to help isolate application procedures from the mechanics of inter-system communications, device presentation management, help facilities, menus, and other DAA common services. Following each execution of a procedure, a subset of working storage is saved on disk. This subset is a specific "profile" view for the procedure. The profile view is used to re-populate working storage when panel input is complete (working storage is re-populated from both the panel input data and the profile). The relationships between DAA application procedures, working storage, and profile views is shown in FIG. 10. The portion of FIG. 10 designated 156 represents that portion of the execution under IET control. The portion designated 158 represents the portion of the execution that remains under control of the application. When a transaction has been restarted after being suspended, a system according to the present invention uses the user identification provided at logon, and the application identification of the desired application procedures, to locate the profile view which has matching identification. If no profile view is found, to match the given identification, the system will generate a new profile view that bears the given identification. Once a profile view bearing the given identification has either been located or generated, the dialog manager then performs its processing sequence until the transaction is suspended again or completed. The dialog manager (IET) processing sequence for profile views, panel views, and working storage is summarized as follows: Read profile 160 and map to working storage 162. Read panel input 164 and map to working storage 162. Execute procedure 166. Map working storage to profile 166. Map working storage 162 to panel 164. Display panel (not shown). Working storage is used directly by the application procedures. External views are used for coordinating (asynchronous, queued) data interchange between procedures. Views which are interchanged between procedures via LINK, RETURN, or XFER or "profile" views which are stored on the user/session profile stack are "External views". These views have the property of existing asynchronously to the life cycle of transactions. (e.g., the transaction could be modified while a view is in transit between transaction executions, possibly with a different definition for working storage). When data is interchanged between two transactions, or even between one execution instance of a transaction and another execution instance of the same transaction (e.g., "profile" views), a mapping occurs between an external view and working storage. The following transformation considerations apply to this mapping: The internal representation of data within working storage may not correspond to the internal representation of the same data item in the external view. Either the format or length may be different. Data items may be added to or removed from working storage or an external view. The naming convention used by items in working storage may not correspond to the naming convention used by the external view. The data content of the external view will change over time. Not all transactions using the external view are updated (nor necessarily have to be updated) to reflect changes in external view content. In any case, installation of external views or working storage modifications should be possible, in real time, with no disruption of application transactions or data distributions in progress. The quantity of data within a view may vary. A repeating structure may occur a variable number of times. External views are implemented according to the ISO presentation protocol standard, which defines both a "source" language specification for data structures as well as the run-time data encoding algorithms. To achieve the goal of data interchange in an environment which permits real-time transaction modification, working storage is defined independently from the external views (import, export, profile). A view consists of a set of data elements, which can be "primitive" items or "sets" of data elements. The recursive definition allows arbitrarily complex structures. Each data element of a view is assigned an identifier (which is always associated with the .same element, even if the element changes relative position within the structure or has a change of length). Each data element of working storage is assigned an identifier (which is always associated with the same element, even if the element changes relative position within the structure or has a change of length). A projection table is constructed for each view which defines the mapping between identifiers in a view and identifiers in working storage. Using ISO-defined ASN.1 encoding, including embedded identifiers for each data element, views can be interchanged across heterogeneous platforms. Furthermore, view encoding is independent of any structural change in working storage since embedded identifiers are used for mapping (i.e., mapping is not dependent upon sequence of items in either working storage or view). Consequently, data integrity of view exchange is maintained even with changes in relative order and/or removal or addition of items within the view. CONSISTENT USER INTERFACE. A user interface scenario which illustrates user interaction with a distributed DAA application is shown in FIG. 11. In this example, a user 168 entered a panel on terminal 58 which was associated with System 2/Transaction 2/Procedure 2. Since the user's terminal was physically located on System 1, Distributed Resource Control (DRC) was used to route the message (i.e., panel input) to System 2/Transaction 2/Procedure 2. Application logic within Procedure 2 requested a LINK to System 3/Transaction 3/Procedure 3. DRC was used to route the LINK message to System 3/Transaction 3/Procedure 3. Application logic within Procedure 3 requested a panel to be displayed to the user. DRC was used to route the message (i.e., panel output) to the terminal 58 on System 1, for viewing by user 168. Within this scenario, involving multiple systems and transactions, user interface consistency is essential. The primary purpose of a consistent user interface within DAA is to have all computers, systems, applications look the same to the user. Panel layout, panel element interaction, and overall dialog flow are key aspects of user interface consistency. DAA enables and partially automates the specification of consistent, system- and device-independent panel layouts (via GTD). Dialog flow is partially defined by the developer (menus, panel validity checks, documentation) and partially defined by DAA conventions for dialog flow between applications. Run-time user dialog navigation is implemented by IET, independent of application logic. Providing a consistent user interface relies heavily upon profile management, which maintains the transaction state and selected application data for each user/session. The user and computer exchange requests, creating a user-driven dialog which moves along one of the hierarchical paths provided by the application. Within the dialog, data and control is passed from one procedure to another. A procedure may be located on any system within the DAA environment. The location of a procedure is transparent to both the application logic and the end user. IET controls most of the user dialog, isolating the application procedure from the major aspects of user interaction. This enables IET to implement not only a consistent user interface across all terminals and platforms, but also to evolve the user interface towards developing industry standards (independent of application logic). The following paragraphs describe an implementation of a consistent user interface (controlled by IET and defined by GTD). Although the IET will be described in greater detail later, it uses a mapping service to interpret any panel input by mapping the input into variables which will be used to build panels. It interfaces with a transaction processing subsystem to obtain a next panel from a user and to present the output in a panel form with which the user may interact. By using a table of instructions containing pointers to maps, views, and appliction procedures, the IET is instructed, via a translator for the table of instructions, as to which next panel to present based on the results of the processing of the previous panel. The IET manages dialog flow between various users, which can be a variety of logical terminals by initializing the fields within a transaction view for that transaction. After receiving a formatted input data message, the IET reads the message header to determine where the message is routed for proper processing. If the system.transaction.procedure name found in the header does not match that of the local system, the IET forwards the message packet on to the appropriate system. If there is a match, however, the IET yields control of the dialog flow to a map interpreter that the IET called. After the processing has completed to the extent possible, either due to application commands, or procedure suspension, or completion of the procedure, the IET builds an output message containing either an input view (for cooperative processing on another system.transaction.procedure) or an output view (for returning a cooperatively processed procedure or returning a panel containing the processed results to a user). Either way, the IET then forwards the message to the desired logical terminal. Panels are the primary unit of information interchange between transactions and terminals. A description of the user dialog which follows is with respect to sequences of panels. Within a panel, there is information structured according to definitions made in GTD. In particular, there are fields which display or receive formatted data. The fields have various attributes, such as color, reverse video, etc. The panel is imported to DAA whenever an "action" is requested (e.g., an action can be associated with a function key or an action bar pulldown menu item). When the panel is imported to DAA, DAA receives data which has been entered in entry fields, the action requested, and the currently selected (e.g., cursored) data item. User interaction with panels, prior to the action request, are performed locally at the terminal (e.g., cursor movement, key entry to fields, etc.). This interaction is device-dependent, but is consistent across all DAA applications (for each particular terminal). Panel to panel navigation is terminal-independent. DAA transactions present panels to the terminal via a panel driver (referred to as TMS). TMS interprets panels prepared by GTD and supports color, extended attributes, reverse video, underscore, and other characteristics. Certain terminals that could receive these panel presentations may not be capable of supporting the full functionality of the panels as prepared by the designer. To support multiple levels of terminal capability but still provide maximum functionality for the most capable terminal devices, TMS uses terminal characteristics information provided by Distributed Resource Control (DRC). Therefore, the application designer can design terminal presentations that utilize the maximum functionality of any terminal that would utilize his application but, at the same time, be assured that his panels could be (dynamically) adapted to terminal devices that have lesser functionality. At the same time the user and transaction are exchanging requests involving the processing of information, the dialog, under control of the user, is moving along one of the paths provided by the application. The user "navigates" through the application using specific actions that are part of the dialog. These dialog actions don't necessarily request the transaction to process information; they may only cause movement through the dialog path. Dialog navigation within DAA is controlled at several levels: sessions, transactions, and panels. The highest level in the hierarchy of user interaction with DAA is the DAA "Display Applications" (DA) transaction. The DA transaction identifies active application on a system within the network for the designated user and may manage more than one session for each user. When a user signs onto the network, the User-ID becomes known to the network. By employing the display active (DA) transaction, a user is able to view the list of applications in progress for the specific User-ID. Through DA, the user may resume execution of an application or delete the profile view for an appliction from the ROLLFILE. Since DA is a network-wide facility, the user may, through function keys or by designating an alternate system, transfer control of the DA transaction to an alternate system. Such transfer of control allows the user to view a list of applications active for that user on other systems in the network. In order to manage and control the number of active applications, the system may restrict the number of active applications and the amount of ROLLFILE space allocated for each user. These parameters may be set by default when a new user signs on to the system and can be modified via the USR.C option of the IEC transaction (described later). Each user session has its individual profile stack containing the current state information for the corresponding hierarchy of transactions and panels. The DA transaction allows the user direct access to all of his active sessions (including transactions on remote systems, if the session's transaction thread leads to remote systems). The possible routes of navigation and destinations from session to session, for a typical dialog, are shown in FIG. 12. As can be seen, a user may request DA1 (IETAAS) 170, which displays DAA application, to start any session 172, may resume any suspended session 172, and may quit or suspend any session (current or suspended). Users can perform the following actions with respect to sessions: SUSPEND the current session. The suspend action saves the current state of the session and displays the DA panel. It is possible for the user to resume execution of the session at a later time (as an option from the DA panel), with the same data (profile) as the time of suspension. RESUME a suspended session (option on the DA panel). QUIT the current session. Terminates the current session, discards all profile information associated with the session, and returns users immediately to the DA transaction. The DA transaction is logically the farthest point to which users can return within DAA (i.e., the starting point for DAA users). In effect, quit is a fast-path exit to the highest level, logically bypassing the intermediate exit points. Any intermediate LINKed transactions are exited. QUIT a suspended session (option on the DA panel). CREATE a new session. The IET manages dialog flow for data input from a logical terminal for a suspended trnasaction that has been restarted by initializing the variables in the related transaction view. After receiving the data input from the stored profile view, it checks to see if the input from the user is formatted. The IET reads the profile view and generates a new profile view based on selected portions of the formatted data input. After converting the input from the input view and and profile view, the IET interfaces with a resident data base management system to obtain the necessary views, maps, and procedures required to process the input. The system creates an output view, populating with with selected portions of the processed data and results. The IET makes a profile view of the current state just completed and replaces the previous view stored in the ROLLFILE with the new profile view. The IET then transmits the output view, in the form of a message bearing a header with routing information to the appropriate logical terminal. Transaction navigation within a session is based on a thread of LINKed transactions. Each transaction has an execution state which is retained on the profile data base. The first transaction within a thread is determined by the user when he starts the session. The creation of a new LINK in the thread of transactions is under program control. The same transaction can occur more than once within a session. The return from a link can be performed by the program or can be short-circuited by the user (the Exit or Cancel actions). The possible routes of navigation and destinations from transaction to transaction, for a typical dialog, are shown in FIG. 13. The various routes depicted in FIG. 13 emphasize navigation about the thread of LINKed transactions. As seen, DA display DAA applications 170 begins by linking to DAA application transaction 174 via transaction 174's main menu. From this menu, other panels can be invoked and this transaction (174) can be either canceled or exited. The other panels can be LINKed to the LINKed panel of DAA application transaction 176 or they can be exited to return to the main menu. The LINKed panel in transaction 176 may cancel transaction 176, at the user's request, or it may connect to the main menu of transaction 176. This main menu may in turn invoke other panels within transaction 176, can cancel transaction 176 to get back to the other panels of transaction 174, and can exit transaction 176 to return to the main menu of transaction 174. This pattern repeats for every transaction added onto the LINK thread. Within a transaction, there is a set of panels. The navigation through a sequence of panels is a function of the user interaction with transaction procedures. The possible routes of navigation and destinations from panel to panel, for a typical dialog, are shown in FIG. 14. The first panel executed within a transaction is either the main menu or the panel resulting from a LINKed procedure execution. Within FIG. 14, a closer look at the detail within an example current transaction 174 is depicted. Main menu 178 is interconnected with panels 180, 182. From main menu 178, panels 180, 182 may be entered. The navigation possibilities vary at panels 180, 182. From panel 180, for example, a transaction may proceed to enter panel 182, enter panel 184, or cancel and return to main menu 178. Panel 182 may enter panel 184 or cancel and return to main menu 178. Panel 184 may enter panel 186 or cancel and return to panel 180. Panel 186, when completed, may only cancel and return to panel 180. The actions users can perform with respect to panels are: Go back one step (the Cancel action). This results in a refresh of the panel which is next higher in the hierarchy (e.g., the panel shown immediately prior to the current panel). A Cancel issued from the main menu terminates the transaction. The "Exit" action returns the user to the main menu for the current transaction. If the user is already in the main menu, and this transaction is LINKed, then a return is made to the main menu of the previous application transaction. If the user is already in the main menu, and this transaction is not LINKed, then exit to DA. Repeated exit requests allow users to step back through the application transaction by transaction, utlimately returning the dialog to the highest level in the hierarchy (the DA transaction). Refresh action. When users request refresh, any data entered on the panel is ignored, and the refresh procedure is executed to generate the current status of data to be displayed on the panel. Example of application which might require "refresh" is a directory list. "Help" action. When users request help, a help panel is displayed to assist users to complete the dialog. The help action triggers a help dialog, which is controlled entirely by IET and is further described in a subsequent section. Proceed one step (the Enter action). When users are finished interacting with a panel, it is submitted to the application with a specific action request. The action request can be either the enter action or other action which is not otherwise defined as a dialog control function managed by IET. Examples of how action requests are generated include the use of function keys for non-programmable terminals or mouse selection of action items in action bar pull downs on an intelligent work station. The action request results in the execution of the panel's input procedure. By convention, the input procedure has logic which results in a different panel being displayed, or the same panel with significant data content changes. The application controls the hierarchical level of the panel from the "input" procedure. The input procedure can declare the relative hierarchical level of the next panel displayed, such as 1, 0, -1, or -2. "1" means increment current level by one. The profile view associated with the input procedure is pushed on the session's profile stack, effectively saving the state of the panel as entered by the user. The profile view associated with the output procedure will be placed on the profile stack after the view Just saved. This option is always used for the transaction menu hierarchy. 0 indicates the current level is not to be modified. Next panel is displayed at the same level of the hierarchy. This is the default for application panels. -1 decrements the current level by one. A profile view is popped off the session's profile stack, recovering a panel and view as entered by the user. If there are no views on the stack for this transaction, then a RETURN is executed (with a completion code of "cancel"). This is the enforced action taken on a "Cancel". -2 removes all saved views which are on the profile stack for this transaction and forces execution of the main menu. "Help" for an application can be invoked at any time. Once invoked, the current state of the "Primary Panel" dialog is saved and a user dialog is initiated which is entirely under control of IET. When the user dialog is complete, control is returned to the state at which the "Primary Panel" dialog was interrupted. Each data entry or selection field on any panel can have an associated "help" panel. Additionally, the panel itself has a "help" panel. Invoking "help" from the primary panel results in field-level help, if available, otherwise panel-level help (otherwise, help on the help system). Once within help, there is a defined set of help actions (e.g., function keys) which provide additional information about application keys, index to help documentation, (glossary) help on "selection"-type fields within the help panel, etc. Information displayed within help panels are obtained from a documentation system. The documentation system organizes indexes documents by report.generation.chapter.section.page. The following conventions are used to assign document sections to help functions: REPORT.GENERATION. For a given combination of national language and transaction, there is a single "report.generation" which includes all application help information. Help functions may also invoke the general DAA help information, which is located on report-DAAHELP; generation=(language code). SECTION. For panel help information, the section named "S00" is reserved for extended help information (general information about the panel). All other sections are the name of a data entry "field" or a choice field mnemonic appearing on the panel. CHAPTER. The chapter named "GLOSSARY" is reserved for the following help functions: KEYS. This is a section which describes each key used by the application and its function. The listing does not have to indicate which keys are valid in the current state of the application. CONTENTS. This is a section which is also a table of contents of help information, organized by topic. HELP. (Only on DAAHELP). Contains "Help on Help" information. The chapter named "MESSAGE" is reserved for help on error messages (i.e., detailed description of each message generated by the application procedures). The sections within the chapter correspond to the message identifier code. All other chapters are the same as panel names and contain information specific to panels. The help panels themselves are documented on DAAHELP. Help is available at all times. Availability of help information for every application panel is validated, by GTD, when the transaction is built. Within the help dialog, every help panel (with the exception of Extended .Help panels) provide function key access to Extended Help. The title of help panels contain the word "Help" and identify the panel or field to which it applies. The invocation of help is transparent to the application procedure and does not interfere with the current dialog. Data that user had entered before requesting help is saved in the user's profile. The types of help panels are: HELP. The Help action provides contextual help about a specific field, a panel, or about the help facility. Field help is provided if the cursor is on an entry field or a menu choice filed. Panel help is provided (known as "extended help") if the cursor is not on an entry field nor a menu choice field. Panel help is also provided if field help is not defined for the field. Help facility help is provided which HELP is requested from a help panel. The help facility help is also provided if the panel help is not defined. EXTENDED HELP. When users request EXTENDED HELP, a help panel appears containing information about the current panel rather than a particular element on the panel. The EXTENDED HELP action option appears only in help panels. HELP CONTENTS. When users request help contents, a table of contents appears, organized by topic, of all the help information in the application. The HELP CONTENTS action option appears only in help panels. HELP INDEX. When users request help index, an index of the help information appears. The help index action option appears only in help panels. The HELP INDEX is in the form of a menu of options which provide the user access to the sections of help. KEYS HELP. When users request keys help, a list appears containing the names and functions of all keys used by the application. The keys help action option appears only in help panels. ENDING HELP. Users end help by requesting Exit or by repeatedly requesting Cancel to back out of any help panel. While users are navigating through sessions, transactions, and panels, information is retained in the profile data base. The application determines how much information is actually retained (i.e., the profile view) on the profile data base. The application also determines, within a transaction, the hierarchical relationship between panels within a dialog, and consequently the flexibility of the user to navigate between panels within a transaction. Once a panel is cancelled, a transaction exited, or a session quit, the information is not available. Alternatively, the "suspend" exit can be used to save the current information/state of a session, which enables reactivation of the session, without data loss, at any later time. A consistent user interface implementation on DAA is enabled from definitions made by the application designer using GTD. GTD provides the designer with options to define panels and implicitly define dialogs. At execution time the dialog management function (IET, TMS, etc.), which is isolated from the application code, implements user-driven navigation actions, ensuring a consistent user interface across all DAA applications. COOPERATIVE PROCESSING. Explicit cooperative processing between DAA application procedures is implemented via "LINK"/"RETURN". The mechanics of supporting LINK/RETURN, as well as support of generalized terminal/transaction data interchange, is provided by Distributed Resource Control services within DAA. Any DAA procedure can execute any other DAA procedure. The mechanism for executing a DAA procedure is the same whether it is packaged in the same transaction or a different transaction, located on the same or different system, located on the same or architecturally different type of processor, or located on the same type of transaction processing monitor or a different (DAA supported) transaction processing monitor. The system requires that the developer has defined a unique system.transaction.procedure name for both the called and the calling procedures. This enables the system to accurately deliver any messages between various machines. After saving a current state of a calling procedure as a profile view, and storing it in a profile data base, the IET extracts data items from the calling transaction view and places them in an input view to be shipped to the called procedure. The IET packages these data items, together with the unique called procedure's name and the unique calling procedure's name and sends the packet to the called procedure. At the called procedure, the IET loads the called procedure's profile view and the input view received from the calling procedure. The called procedure executes the requested procedure. The IET then extracts the data items from the called transaction view and places them in an output view to be returned to the calling procedure. The IET packages these data items, together with the unique called procedure's name and the unique calling procedure's name and returns the packet to the calling procedure. The IET at the calling procedure extracts the profile view stored in the profile data base and loads it, together with the returned output view into the calling procedure's transaction view. At this point the procedure is restarted for further processing. The specification for remote procedure execution is made as follows: Application procedure includes logic to set "exit state". Dialog flow specification. As a function of "exit state", defines a flow to a procedure. The flow can be a LINK, XFER, or SPAWN. This structured approach to specification of procedure execution is intended to isolate the application logic as much as possible from the mechanics of dialog flow. There are situations in which it is necessary to selectively execute a specific procedure on one of many systems. The logic required to make the determination of which system should be used to execute a procedure is application-dependent. The application has two system variables which it can use to set the system/transaction for a procedure: NSYSTEM (next system) and NTRAN (next transaction). Dialog flow is controlled by commands which may originate from the application procedure (as exit states) or from the user. User commands are entered via action requests (e.g., function keys, action bar-pull down choice selections, or commands entered in the command area). Most user commands are processed directly by IET, as defined in the section on "consistent user interface". The following commands may originate from the application procedure: LINK. This command saves the current state of the procedure. Just completed on the profile stack and executes an application procedure which may be in the same or a different transaction, located on the same or different system. The next procedure to be executed is specified in the working storage data item "NPROC"; the next transaction is in "NTRAN"; and the next system is in "NSYSTEM". The value of the system and transaction data items are interpreted according to the rules for DRC (Distributed Resource Control). The next procedure is passed information via an IMPORT view. The LINK process is described more completely later. RETURN. This command restores, from the user/session profile, the previous state of the DAA session thread, returning control to an application procedure which previously requested a "LINK". The procedure to which control is being returned is passed information via an export view. XFER. This command transfers control to another application procedure. The specification of procedure is the same as for LINK. Unlike LINK, which results in "stacking" the profile view (and information/input views), the XFER command results in discarding the entire stack prior to executing the procedure. Consequently, the new procedure is at the top of the stack. XFER is similar in effect to an "Exit.sub.-- application" followed by a LINK, with the additional feature that a view is communicated to the new procedure. A RETURN from the new procedure results in returning control to the Session Manager. (blank). This is the default exit state. It results in the display of the panel associated with the procedure. FIG. 15 shows a model of DAA dialog flow. The model combines "consistent user interface" definitions with programmable dialog flow commands, and is self-explanatory. At execution time, an application procedure sets an exit state which is interpreted by IET as a dialog flow request. The dialog flow may specify a LINK to a specific PROCEDURE (optionally qualified by transaction and system). The "to" procedure of the flow has associated with it an external import and export view. The relationships between DAA application procedures, working storage, import views, and export views are shown in FIG. 16. Procedure Y 184 will be a part of the transaction requesting procedure Z 196 to be executed using data from procedure Y 184. The portions of FIG. 16 designated 178, 182 are under application control, albeit possibly separate applications. The middle portion, 180, is under IET (part of preferred embodiment of the present invention, DAA) control. Initially transaction Y's working storage 186 is mapped to procedure Z's import view 188. The import view 188 is then sent to the IET in the "to" load module (not specifically shown) containing procedure Z 196. IET, in this module, maps the import view 188 into the transaction Z working storage 194. At this point, procedure Z 196 is executed. Procedure Z 196 may call upon other procedures and/or interactions with other entities (such as the originating terminal) before requesting a RETURN. IET, in the load module, maps transaction Z's working storage 194 into procedure Z's export view 190. Next, the export view 190 is sent to IET in the "from" load module (also not specifically shown). IET, in this load module, then maps the export view 190 into transaction Y's working storage 186. Lastly, procedure Y 184 is executed. Communications between transactions consist of messages having the following information: transaction identifier, interface control block, and a view. The usual transaction identifiers are: command--This data item indicates, generically, what type of message is being received. It may have one of the following values: =IETCONT. Indicates that this is a DAA transaction communications control function. This function can not be entered manually, it can only be created as a result of an application procedure (or IET) requesting a LINK, XFER, RETURN, or SPAWN. =RESET Indicates that the "consistent user interface" RESET function is to be performed for the indicated transaction. This command may be entered manually. Any data following the command is ignored. =QUIT Indicates that the "consistent user interface" QUIT function is to be performed for the indicated transaction. This command may be entered manually. Any data following the command is ignored. Any other value for the command data item causes a message interpretation to be attempted as if the message had originated from a terminal. The interface control block is a fixed structure, the same for all DAA transactions. Within the interface control block, the parameter IETICC is for dialog control and may assume one of the following values: #&LINK LINK command. #&RETN RETURN command. #&XFER XFER command. The view contained in inter-transactional communication is an import view if the command is LINK, XFER, or SPAWN, or is an export view if the command is RETU | ||||||
