[go: up one dir, main page]

CA2380641A1 - Application framework in an e-commerce architecture - Google Patents

Application framework in an e-commerce architecture Download PDF

Info

Publication number
CA2380641A1
CA2380641A1 CA002380641A CA2380641A CA2380641A1 CA 2380641 A1 CA2380641 A1 CA 2380641A1 CA 002380641 A CA002380641 A CA 002380641A CA 2380641 A CA2380641 A CA 2380641A CA 2380641 A1 CA2380641 A1 CA 2380641A1
Authority
CA
Canada
Prior art keywords
role
component
attribute
user
activity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
CA002380641A
Other languages
French (fr)
Inventor
Roy A. Underwood
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Accenture Global Services Ltd
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of CA2380641A1 publication Critical patent/CA2380641A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

A system, method and article of manufacture are provided for accessing services within a server without a need for knowledge of an application program interface of the server. A role container is first created. Next, a rote class is defined and an attribute for the role class is generated which includes a default start page attribute. In the role container, a role object is made in the role class with the default start page attribute associated therewith. A
uniform resource locator is selected for the default start page attribute.

Description

DEMANDE OU BREVET VOLUMINEUX
LA PRESENTE PARTIE DE CETTE DEMANDE OU CE BREVET COMPREND
PLUS D'UN TOME.

NOTE : Pour les tomes additionels, veuillez contacter 1e Bureau canadien des brevets JUMBO APPLICATIONS/PATENTS
THIS SECTION OF THE APPLICATION/PATENT CONTAINS MORE THAN ONE
VOLUME

NOTE: For additional volumes, please contact the Canadian Patent Office NOM DU FICHIER / FILE NAME
NOTE POUR LE TOME / VOLUME NOTE:
A SYSTEM, METHOD AND ARTICLE OF MANUFACTURE FOR A HOST
FRAMEWORK DESIGN IN AN E-COMMERCE ARCHITECTURE
FIELD OF THE INVENTION
The present invention relates to software framework designs and more particularly to accessing services within a host server without any knowledge of the application program interface of the server.
BACKGROUND OF THE INVENTION
An important use of computers is the transfer of information over a network.
Currently, the largest computer network in existence is the Internet. The Internet is a worldwide interconnection of computer networks that communicate using a common protocol. Millions of computers, from low end personal computers to high-end super computers are coupled to the Internet.
The Internet grew out of work funded in the 1960s by the U.S. Defense Department's Advanced Research Projects Agency. For a long time, Internet was used by researchers in universities and national laboratories to share information. As the existence of the Internet became more widely known, many users outside of the academic/research community (e.g., employees of large corporations) started to use Internet to carry electronic mail.
In 1989, a new type of information system known as the World-Wide-Web ("the Web") was introduced to the Internet. Early development of the Web took place at CERN, the European Particle Physics Laboratory. The Web is a wide-area hypermedia information retrieval system aimed to give wide access to a large universe of documents. At that time, the Web was known to and used by the academic/research community only. There was no easily available tool which allows a technically untrained person to access the Web.
In 1993, researchers at the National Center for Supercomputing Applications (NCSA) released a Web browser called "Mosaic" that implemented a graphical user interface (GUI).
Mosaic's graphical user interface was simple to learn yet powerful. The Mosaic browser allows a user to retrieve documents from the World-Wide-Web using simple point-and-click commands. Because the user does not have to be technically trained and the browser is pleasant to use, it has the potential of opening up the Internet to the masses.
The architecture of the Web follows a conventional client-server model. The terms "client" and "server" are used to refer to a computer's general role as a requester of data (the client) or S provider of data (the server). Under the Web environment, Web browsers reside in clients and Web documents reside in servers. Web clients and Web servers communicate using a protocol called "HyperText Transfer Protocol" (HTTP). A browser opens a connection to a server and initiates a request for a document. The server delivers the requested document, typically in the form of a text document coded in a standard Hypertext Markup Language (HTML) format, and when the connection is closed in the above interaction, the server serves a passive role, i.e., it accepts commands from the client and cannot request the client to perform any action.
The communication model under the conventional Web environment provides a very limited level of interaction between clients and servers. In many systems, increasing the level of interaction between components in the systems often makes the systems more robust, but increasing the interaction increases the complexity of the interaction and typically slows the rate of the interaction. Thus, the conventional Web environment provides less complex, faster interactions because of the Web's level of interaction between clients and servers.

SUMMARY OF THE INVENTION
A system, method and article of manufacture are provided for accessing services within a server without a need for knowledge of an application program interface of the server. A role container is first created. Next, a role class is defined and an attribute for the role class is generated which includes a default start page attribute. In the role container, a role object is made in the role class with the default start page attribute associated therewith. A uniform resource locator is selected for the default start page attribute.
In one embodiment of the present invention, a plurality of attributes may be generated for the role container. In this embodiment of the present invention, these attributes may include a default start page attribute, a user name attribute, a user identifier attribute, and/or a role name attribute.
In another embodiment of the present invention, a user may be assigned to the role object. In yet another embodiment of the present invention, a plurality of role objects may be made in the role class with each role object having a unique default start page associated therewith. As an option, an operator role object and a customer role object may be made as well.
BRIEF DESCRIPTION OF THE DRAWINGS
The invention will be better understood when consideration is given to the following detailed description thereof. Such description makes reference to the annexed drawings wherein:
Figure 1 illustrates an exemplary hardware implementation of one embodiment of the present invention;
Figure 1.1 illustrates a flowchart for a codes table framework that maintains application consistency by referencing text phrases through a short codes framework according to an embodiment of the present invention;
Figure 1.2 is a flowchart depicting a method for providing an interface between a first server and a second server with a proxy component situated therebetween;
Figure 1.3 shows the execution architecture for components that make up the SAP Framework Execution Architecture according to an embodiment of the present invention;
Figure 1.4 is a flowchart illustrating a method for sharing context objects among a plurality of components executed on a transaction server;
Figure 2 illustrates the create component instances method according to an embodiment of the presentinvention;
Figure 3 illustrates multiple components in the same transaction context according to an embodiment of the present invention;
Figure 4 illustrates the forcing of a component's database operations to use a separate transaction according to an embodiment of the present invention;
Figure 5 illustrates the compose work form multiple activities in the same transaction according to an embodiment of the present invention;
Figure 6 illustrates JIT activation where MTS intercepts the Customer creation request, starts a process for the Customer package containing Customer component, creates the ContextObject and returns a reference to the client according to an embodiment of the present invention;
Figure 7 illustrates JIT activation when the customer object has been deactivated (the customer object is grayed out) according to an embodiment of the present invention;
Figure 8 is a flowchart depicting a method for providing an activity framework;
Figure 8.1 is an illustration of the MTS runtime environment according to an embodiment of the present mvenhon;
Figure 9 is a flowchart illustrating a method for accessing services within a server without a need for knowledge of an application program interface of the server;
Figure 9.1 illustrates the different layers in a Site Server framework architecture according to an embodiment of the present invention;
Figure 10 illustrates schema attributes and classes, with class "Role" and attribute "RoleName"
shown;
Figure 11 illustrates the creating of Container "Roles" according to an embodiment of the present mvenhon;
Figure 12 is an illustration of a graphic display at a point where a user has right-clicked on the Schema folder and selected New - Attribute according to an embodiment of the present W venhon;
Figure 13 illustrates the adding of different Roles according to an embodiment of the present invention;
Figure 14 illustrates an example of the graphic display showing the attributes of member "Joe Bloggs" according to an embodiment of the present invention;
Figure 15 is a flowchart that illustrates a method for handling events in a system;
Figure 15.1 illustrates a ReTA Event Handler framework that manages the informational, warning and error events that an application raises according to an embodiment of the present mvenhon;
Figure 16 is a flowchart depicting a method for managing user information;
Figure 16.1 illustrates a User framework which enables two approaches to maintaining user information according to an embodiment of the present invention;
Figure 17 is a flowchart that illustrates a method for managing business objects in a system that includes a plurality of sub-activities which each include sub-activity logic adapted to generate an output based on an input received from a user upon execution, and a plurality of activities which each execute the sub-activities in a unique manner upon being selected for accomplishing a goal associated with the activity;
Figure 17.1 shows a SubActivity component using the Persistence framework to retrieve a Customer Object from the Database according to an embodiment of the present invention;
Figure 18 is a flow chart depicting a method for persisting information during a user session;
Figure 18.1 illustrates a Session Flow Diagram - On Session Start according to an embodiment of the present invention;
Figure 19 illustrates a Session Flow Diagram - On Start ASP Page according to an embodiment of the present invention;
Figure 20 is a flow chart illustrating a method for generating a graphical user interface;
Figure 20.1 is an illustration showing the steps for generating a HTML page consisting of a form with a TextBox, a DropDown list and a PushButton according to an embodiment of the present invention;
Figure 21 is a flow chart depicting a method for software configuration management Figure 21.1 is an illustration of an IDEA framework on which the ReTA
Development Architecture Design is based according to an embodiment of the present invention;
Figure 22 illustrates the Configuration Management Life Cycle according to an embodiment of the present invention;
Figure 23 illustrates the change control 'pipeline' and each phase within the pipeline according to an embodiment of the present invention;
Figure 24 depicts the application of Roles within the Microsoft Transaction Server (MTS) management console according to an embodiment of the present invention;
Figure 25 illustrates an environment migration process that guides development within ReTA
engagement environments according to an embodiment of the present invention;
Figure 26 is an illustration of a Development/LJnit test for existing applications according to an embodiment of the present invention;
Figure 27 illustrates an assembly test for existing applications according to an embodiment of the present invention;
Figure 28 illustrates a system test for existing applications according to an embodiment of the present invention;
Figure 29 is a flowchart for production of existing applications according to an embodiment of the present invention;
Figure 30 illustrates a graphic display of Visual Source Safe according to an embodiment of the present invention;
Figure 31 illustrates a frame of PVCS Version Manager I-Net Client according to an embodiment of the present invention;
Figure 32 is an illustration of a Build Source Control Model according to an embodiment of the present invention;
Figure 33 illustrates an Assembly Test phase control mode according to an embodiment of the present invention;
Figure 34 illustrates a Microsoft Visual SourceSafe 'Labels' dialog box according to an embodiment of the present invention;
Figure 35 illustrates a Database Diagram within Visual Studio according to an embodiment of the present invention;
Figure 36 illustrates Object Modeling within Rational Rose according to an embodiment of the present invention;
Figure 37 illustrates directly calling a wrapped CICS component according to an embodiment of the present invention;
Figure 38 illustrates indirectly calling a wrapped CICS component according to an embodiment of the present invention;
Figure 39 illustrates RSW eTest Automated Testing Tool according to an embodiment of the present invention;
Figure 40 is an illustration which describes the physical configuration necessary for ReTA
development according to an embodiment of the present invention;
Figure 41 illustrates the application & architecture configuration for a typical ReTA Build environment according to an embodiment of the present invention;
Figure 42 illustrates the application & architecture configuration for a typical ReTA Build environment according to an embodiment of the present invention;
Figure 43 illustrates an )IDEA Framework with components in scope ReTA Phase 1 according to an embodiment of the present invention;
Figure 44 illustrates a NCAF Framework with the shaded components in scope for Phase 1 according to an embodiment of the present invention;
Figure 45 illustrates a MODEnc Framework according to an embodiment of the present invention;
Figure 46 illustrates a NCAF Framework according to an embodiment of the present invention;
Figure 47 illustrates the components that comprise the ReTA execution architecture and their physical location according to an embodiment of the present invention;
Figure 48 illustrates a MODEnc Framework for Operations Architecture according to an embodiment of the present invention;
Figure 49 is an illustrative representation of a solicited event resulting from the direct (synchronous) polling of a network component by a network management station according to an embodiment of the present invention;
Figure 50 is an illustrative representation of when an unsolicited event occurs when a network component sends (asynchronously) data to the network management station according to an embodiment of the present invention;
Figure 51 illustrates event management in a net-centric environment according to an embodiment of the present invention;
Figure 52 illustrates event management in an Intranet-based net-centric model according to an embodiment of the present invention;
Figure 53 illustrates event management when using an Extranet-based net-centric model according to an embodiment of the present invention;
Figure 54 illustrates the tables and relationships required for the ReTA Phase 1 Architecture Frameworks according to an embodiment of the present invention;
Figure 55 illustrates tables and relationships required for the ReTA Phase 1 validation application according to an embodiment of the present invention;
Figure 56 illustrates the physical configuration of a possible ReTA-engagement development environment according to an embodiment of the present invention;
Figure 57 illustrates the physical configuration of possible ReTA-based Assembly, Product and Performance testing environments according to an embodiment of the present invention;
Figure 58 illustrates Separate Web and Application Servers according to an embodiment of the present invention;
Figure 59 illustrates a Single Web and Application Server according to an embodiment of the present invention;
Figure 60 illustrates a Commerce Membership Server [Membership Authentication]
properties view according to an embodiment of the present invention;
Figure 61 illustrates a Membership Directory Manager Properties Dialog according to an embodiment of the present invention;
Figure 62 is an illustration of a Membership Server Mapping Property according to an embodiment of the present invention;
Figure 63 is an illustration of a Create New Site Foundation Wizard according to an embodiment of the present invention;
Figure 64 illustrates the web application being placed under the "Member"
directory of "cm" in Windows Explorer according to an embodiment of the present invention;

Figure 65 depicts a typical ReTA engagement development environment according to an embodiment of the present invention;
Figure 66 illustrates the development environment configuration for a ReTA
Phase 1 engagement according to an embodiment of the present invention;
Figure 67 illustrates an interface associated with the ability of inserting or removing statements within a block without worrying about adding or removing braces according to an embodiment of the present invention;
Figure 68 shows a Visual J++ Build Environment according to an embodiment of the present invention;
Figure 69 shows an interface for attaching to the MTS Process for debugging according to an embodiment of the present invention;
Figure 70 shows an interface for debugging an Active Server Page (example global.asa file) according to an embodiment of the present invention;
Figure 71 illustrates an example of Rose generated Java file and javadoc comments according to an embodiment of the present invention;
Figure 72 is a flowchart illustrating a method for testing a technical architecture;
Figure 72.1 illustrates the application & architecture configuration for a typical ReTA Build environment according to an embodiment of the present invention;
Figure 73 illustrates that the code for technology architecture assembly test may be migrated from the technology architecture component test environment as defined in the migration procedures according to an embodiment of the present invention;
Figure 74 illustrates the application & architecture configuration for a typical ReTA Build environment according to an embodiment of the present invention;

Figure 75 illustrates the physical characteristics of the testing environment to be utilized during the Performance Testing Phases according to an embodiment of the present invention;
Figure 76 is a flow chart depicting a method for managing change requests in an e-commerce environment;
Figure 76.1 illustrates a framework associated with the change tracker according to an embodiment of the present invention;
Figure 77 illustrates the Change Tracker Main Window according to an embodiment of the present invention;
Figure 78 illustrates the Change Request Detail Screen according to an embodiment of the present invention;
Figure 79 illustrates a History of Changes Window according to an embodiment of the present invention;
Figure 80 illustrates the Ad-Hoc Reporting Window according to an embodiment of the present invention;
Figure 81 illustrates the Manager Reporting Window according to an embodiment of the present invention;
Figure 82 illustrates the Migration Checklist Window according to an embodiment of the present invention;
Figure 83 is a flow chart illustrating a method for managing issues in an e-commerce environment;
Figure 83.1 illustrates the Issue Tracker Main Screen according to an embodiment of the present invention;
Figure 84 illustrates the New Issue Screen according to an embodiment of the present invention;

Figure 85 illustrates the Modify Issue Screen according to an embodiment of the present invention;
Figure 86 illustrates the Report Selection Screen according to an embodiment of the present invention;
Figure 87 is a flow chart depicting a method for network performance modeling;
Figure 87.1 illustrates the end to end process associated with Performance Modeling according to an embodiment of the present invention;
Figure 88 illustrates the Effective Network Performance Management according to an embodiment of the present invention;
Figure 89 illustrates an example of overhead introduced at lower layers according to an embodiment of the present invention;
Figure 90 illustrates a graph depicting a Network Usage Profile according to an embodiment of the present invention;
Figure 91 illustrates a Network Layout according to an embodiment of the present invention;
Figure 92 illustrates how the four tool categories relate to each other according to an embodiment of the present invention;
Figure 93 is a flow chart depicting a method for managing software modules during development;
Figure 93.1 illustrates the PVCS Migration Flow according to an embodiment of the present invention;
Figure 94 illustrates SCM Planning according to an embodiment of the present invention;

Figure 95 illustrates an Identify CM Units & Baselines Process Flow according to an embodiment of the present invention;
Figure 96 illustrates a manner in which CM Repositories and Practices Process Flow are established according to an embodiment of the present invention;
Figure 97 illustrates the Establish Change Control Process according to an embodiment of the present invention;
Figure 98 illustrates Collect Metrics and Identify CI Activities according to an embodiment of the present invention;
Figure 99 illustrates the Review/Establish Project Security according to an embodiment of the presentinvention;
Figure 100 illustrates the Determine Training Requirements according to an embodiment of the present invention;
Figure 101 illustrates the Create Project CM Plan according to an embodiment of the present invention;
Figure 102 shows the Manage CM Repository Process Flow according to an embodiment of the presentinvention;
Figure 103 is a flow chart illustrating a method for providing a system investigation report workbench;
Figure 103.1 illustrates a SIR Workbench Main Window screen which provides navigation buttons for adding new SIRs, viewing existing SIRS, viewing/printing existing reports and help according to an embodiment of the present invention;
Figure 104 illustrates New SIR window displayed upon select the New button on the Main Window according to an embodiment of the present invention;

Figure 105 illustrates a window for reviewing and modifying existing SIRS
according to an embodiment of the present invention;
Figure 106 illustrates the Change Control Details Window according to an embodiment of the present invention;
Figure 107 illustrates a Report Selection Screen upon selection the Report button from the main menu according to an embodiment of the present invention;
Figure 108 illustrates a graphic display of SourceSafe Administrator according to an embodiment of the present invention;
Figure 109 illustrates a configuration of a project tree within Visual SourceSafe Explorer according to an embodiment of the present invention;
Figure 109.1 illustrates a dialog box of the projection tree in Figure 109 designed to allow developers to quickly located and retrieve desired projects and/or files according to an embodiment of the present invention;
Figure 110 illustrates a graphic display when the user gets the latest of the server-side application code from VSS according to an embodiment of the present invention;
Figure 111 illustrates a window that appears where selection the Recursive checkbox permits copying of any sub-projects according to an embodiment of the present invention;
Figure 112 illustrates a History window displayed upon selection of View History menu item according to an embodiment of the present invention;
Figure 113 illustrates the VSS Explorer reflecting the status of the checked out files for other developers to see at a point where one can open the local project or files and make any desired changes according to an embodiment of the present invention;
Figure 114 illustrates Check In from within the VSS Explorer according to an embodiment of the present invention;

Figure 115 illustrates the prompting for Check In details according to an embodiment of the present invention;
Figure 116 illustrates a label creation dialog box according to an embodiment of the present invention;
Figure 117 illustrates a History of Project dialog box according to an embodiment of the present invention;
Figure 118 illustrates a History Details dialog according to an embodiment of the present invention;
Figure 119 illustrates the end to end evaluation process of an Internet firewall for ReTA
1 S according to an embodiment of the present invention;
Figure 120 is a chart of Firewall Products according to an embodiment of the present invention;
Figure 121 depicts the two firewall vendors selected for the product evaluation stage according to an embodiment of the present invention;
Figure 122 is a diagram of the Activity Framework classes with the VBActivityWrapper according to an embodiment of the present invention;
Figure 123 illustrates the relationships IVB Activity interface according to an embodiment of the present invention;
Figure 124 is a flow chart depicting a method for providing a global internetworking gateway architecture in an e-commerce environment;
Figure 124.1 illustrates a simple high level internetworking gateway architecture according to an embodiment of the present invention;

Figure 125 illustrates an Internetworking Gateway with a Specialized Proxy/Cache Server according to an embodiment of the present invention;
Figure 126 illustrates a high level global intemetworking gateway architecture according to an embodiment of the present invention;
Figure 127 shows an illustrative West Coast internetworking gateway architecture according to an embodiment of the present invention;
Figure 128 shows a Remote Access Internetworking Gateway architecture according to an embodiment of the present invention;
Figure 129 illustrates an Internetworking Gateway with Partner collaboration on Internet Development according to an embodiment of the present invention;
Figure 130 illustrates a persistable business object extending Persistence.
RetaPersistableObj.
According to an embodiment of the present invention;
Figure 131 illustrates layers of a shared property group manager according to an embodiment of the present invention;
Figure 132 is a flow chart depicting a method for initializing a database used with an issue tracker;
Figure 132.1 illustrates configuring of an issue tracker tool for normal operation according to an embodiment of the present invention;
Figure 133 illustrates a dialog box prompting to confirm the removal of linked tables within a database;
Figure 134 illustrates a New Table' dialog window being displayed upon selection of a 'New' button in order to insert a new table according to an embodiment of the present invention;

Figure 135 illustrates a prompting by Access for selecting tables to link according to an embodiment of the present invention;
Figure 136 illustrates a dialog box indicating linked tables according to an embodiment of the presentinvention;
Figure 137 illustrates a 'Welcome Form' window according to an embodiment of the present invention;
Figure 138 illustrates a 'Issue Form' window according to an embodiment of the present invention;
Figure 139 illustrates a window which permits modification of the available reports within the Issue tool according to an embodiment of the present invention;
Figure 140 illustrates a window displayed permitting modification of desired report elements to the new project name according to an embodiment of the present invention;
Figure 141 illustrates a Team Code Table window which allows adding and deleting of project locations according to an embodiment of the present invention;
Figure 142 illustrates a Team Membership Table window which allows adding and deleting of team members according to an embodiment of the present invention;
Figure 143 illustrates a Project Phases Table window which allows changing of project phases according to an embodiment of the present invention;
Figure 144 illustrates a Startup window which allows changing of the title of a database according to an embodiment of the present invention;
Figure 145 is a flowchart depicting a method for generating software based on business components;

Figure 145.1 illustrates a relationship between business components and partitioned business components according to an embodiment of the present invention;
Figure 146 illustrates how a Billing Business Component may create an invoice according to an embodiment of the present invention;
Figure 147 illustrates the relationship between the spectrum of Business Components and the types of Partitioned Business Components according to an embodiment of the present invention;
Figure 148 illustrates the flow of workflow, dialog flow, and/or user interface designs to a User Interface Component according to an embodiment of the present invention;
Figure 149 is a diagram of the Eagle Application Model which illustrates how the different types of Partitioned Business Components may interact with each other according to an embodiment of the present invention;
Figure 150 illustrates what makes up a Partitioned Business Component according to an embodiment of the present invention;
Figure 151 illustrates the role of patterns and frameworks according to an embodiment of the presentinvention;
Figure 152 illustrates a Business Component Identifying Methodology according to an embodiment of the present invention;
Figure 153 is a flow chart depicting an exemplary embodiment of a resources e-commerce technical architecture;
Figure 154 is a flow chart illustrating a second exemplary embodiment of a method for maintaining data in an e-commerce based technical architecture;
Figure 155 is a flow chart illustraing an exemplary embodiment of a method for providing a resources e-commerce technical architecture;

Figure 156 illustrates another exemplary embodiment of a method for providing a resources e-commerce technical architecture; and Figure 157 illustrates an additional exemplary embodiment of a method for providing a resources e-commerce technical architecture.

DETAILED DESCRIPTION OF THE INVENTION
The Resources eCommerce Technology Architecture (ReTA) is a solution that allows the use of packaged components to be integrated into a client based eCommerce solution.
Before the present invention, the Resources architecture offerings provided services that supported the construction, execution and operation of very large custom built solutions. In the last few years, client needs have shifted towards requirements for solutions that continually integrate well with third party applications (i.e., data warehouse and portion of the present description management systems). Previous engagements have proven that it is difficult to integrate these applications into a new solution. As application vendors continue to produce new releases that incorporate technical advancements, it is even more difficult to ensure that these integrated applications ~ continue to work with a given solution.
The ReTA approach to constructing, executing and operating a solution emphasizes the ability to change solution components with minimal impact on the solution as a whole.
From this approach, ReTA views third party applications as another component in the overall solution.
ReTA is component based, which means the engagement can choose to take only the pieces it needs to meet its specific business requirements. ReTA is especially suited to building small applications, implementing tools and packages, integrating applications and web enabling applications.
ReTA leverages the best capabilities from established market leaders such as Microsoft, SAP and Oracle. In addition, ReTA leverages some of the Resources prior efforts to integrate solutions.
The present invention is an assembly of these best capabilities that helps to ensure a holistic delivered solution.
In short, the benefits ReTA provides to the Resources practice and clients are:
~ Save engagement teams the redundant effort of repeatedly evaluating the same technology.

~ Help engagement teams avoid the risk of combining solution components that may be difficult to get to work together.
~ Make it cost effective and low risk to apply upgrades to each of the solution products without negatively affecting the other solution components.
~ Show the clients a solution to a real challenge that cannot be offered by SAP, Microsoft, IBM, Oracle or many technology startups involved in eCommerce work.
~ Focus the Resources architecture offering on common technology choices that coexist nicely.
In accordance with at least one embodiment of the present invention, a system is provided for affording various features which support a resources eCommerce Technical Architecture. The 1 S present invention may be enabled using a hardware implementation such as that illustrated in Figure 1. Further, various functional and user interface features of one embodiment of the present invention may be enabled using software programming, i.e. object oriented programming (OOP).
HARDWARE OVERVIEW
A representative hardware environment of a preferred embodiment of the present invention is depicted in Figure 1, which illustrates a typical hardware configuration of a workstation having a central processing unit 110, such as a microprocessor, and a number of other units interconnected via a system bus 112. The workstation shown in Figure 1 includes Random Access Memory (RAM) 114, Read Only Memory (ROM) 116, an I/O adapter 118 for connecting peripheral devices such as disk storage units 120 to the bus 112, a user interface adapter 122 for connecting a keyboard 124, a mouse 126, a speaker 128, a microphone 132, and/or other user interface devices such as a touch screen (not shown) to the bus 112, communication adapter 134 for connecting the workstation to a communication network (e.g., a data processing network) and a display adapter 136 for connecting the bus 112 to a display device 138. The workstation typically has resident thereon an operating system such as the Microsoft Windows NT or Windows/95 Operating System (OS), the IBM OS/2 operating system, the MAC OS, or UNIX
operating system.

SOFTWARE OVERVIEW
Object oriented programming (OOP) has become increasingly used to develop complex applications. As OOP moves toward the mainstream of software design and development, various software solutions require adaptation to make use of the benefits of OOP. A need exists for the principles of OOP to be applied to a messaging interface of an electronic messaging system such that a set of OOP classes and objects for the messaging interface can be provided.
OOP is a process of developing computer software using objects, including the steps of analyzing the problem, designing the system, and constructing the program. An object is a software package that contains both data and a collection of related structures and procedures. Since it contains both data and a collection of structures and procedures, it can be visualized as a self sufficient component that does not require other additional structures, procedures or data to perform its specific task. OOP, therefore, views a computer program as a collection of largely autonomous components, called objects, each of which is responsible for a specific task. This concept of packaging data, structures, and procedures together in one component or module is called encapsulation.
In general, OOP components are reusable software modules which present an interface that conforms to an object model and which are accessed at run-time through a component integration architecture. A component integration architecture is a set of architecture mechanisms which allow software modules in different process spaces to utilize each other's capabilities or functions. This is generally done by assuming a common component object model on which to build the architecture. It is worthwhile to differentiate between an object and a class of objects at this point. An object is a single instance of the class of objects, which is often just called a class.
A class of objects can be viewed as a blueprint, from which many objects can be formed.
OOP allows the programmer to create an object that is a part of another object. For example, the object representing a piston engine is said to have a composition-relationship with the object representing a piston. In reality, a piston engine comprises a piston, valves and many other components; the fact that a piston is an element of a piston engine can be logically and semantically represented in OOP by two objects.

OOP also allows creation of an object that "depends from" another object. If there are two objects, one representing a piston engine and the other representing a piston engine wherein the piston is made of ceramic, then the relationship between the two objects is not that of composition. A ceramic piston engine does not make up a piston engine. Rather it is merely one kind of piston engine that has one more limitation than the piston engine; its piston is made of ceramic. In this case, the object representing the ceramic piston engine is called a derived object, and it inherits all of the aspects of the object representing the piston engine and adds further limitation or detail to it. The object representing the ceramic piston engine "depends from" the object representing the piston engine. The relationship between these objects is called inheritance.
When the object or class representing the ceramic piston engine inherits all of the aspects of the objects representing the piston engine, it inherits the thermal characteristics of a standard piston defined in the piston engine class. However, the ceramic piston engine object overndes these ceramic specific thermal characteristics, which are typically different from those associated with a metal piston. It skips over the original and uses new functions related to ceramic pistons.
Different kinds of piston engines have different characteristics, but may have the same underlying functions associated with them (e.g., how many pistons in the engine, ignition sequences, lubrication, etc.). To access each of these functions in any piston engine object, a programmer would call the same functions with the same names, but each type of piston engine may have different/overriding implementations of functions behind the same name. This ability to hide different implementations of a function behind the same name is called polymorphism and it greatly simplifies communication among objects.
With the concepts of composition-relationship, encapsulation, inheritance and polymorphism, an object can represent just about anything in the real world. In fact, the logical perception of the reality is the only limit on determining the kinds of things that can become objects in object-oriented software. Some typical categories are as follows:
~ Objects can represent physical objects, such as automobiles in a traffic-flow simulation, electrical components in a circuit-design program, countries in an economics model, or aircraft in an air-traffic-control system.
~ Objects can represent elements of the computer-user environment such as windows, menus or graphics objects.

~ An object can represent an inventory, such as a personnel file or a table of the latitudes and longitudes of cities.
~ An object can represent user-defined data types such as time, angles, and complex numbers, or points on the plane.
With this enormous capability of an object to represent just about any logically separable matters, OOP allows the software developer to design and implement a computer program that is a model of some aspects of reality, whether that reality is a physical entity, a process, a system, or a composition ofmatter. Since the object can represent anything, the software developer can create an object which can be used as a component in a larger software project in the future.
If 90% of a new OOP software program consists of proven, existing components made from preexisting reusable objects, then only the remaining 10% of the new software project has to be written and tested from scratch. Since 90% already came from an inventory of extensively tested reusable objects, the potential domain from which an error could originate is 10% of the program. As a result, OOP enables software developers to build objects out of other, previously built objects.
This process closely resembles complex machinery being built out of assemblies and sub-assemblies. OOP technology, therefore, makes software engineering more like hardware engineering in that software is built from existing components, which are available to the developer as objects. All this adds up to an improved quality of the software as well as an increase in the speed of its development.
Programming languages are beginning to fully support the OOP principles, such as encapsulation, inheritance, polymorphism, and composition-relationship. With the advent of the C++ language, many commercial software developers have embraced OOP. C++ is an OOP
language that offers a fast, machine-executable code. Furthermore, C++ is suitable for both commercial-application and systems-programming projects. For now, C++ appears to be the most popular choice among many OOP programmers, but there is a host of other OOP languages, such as Smalltalk, Common Lisp Object System (CLOS), and Eiffel. Additionally, OOP
capabilities are being added to more traditional popular computer programming languages such as Pascal.

The benefits of object classes can be summarized, as follows:
~ Objects and their corresponding classes break down complex programming problems into many smaller, simpler problems.
~ Encapsulation enforces data abstraction through the organization of data into small, independent objects that can communicate with each other. Encapsulation protects the data in an object from accidental damage, but allows other objects to interact with that data by calling the object's member functions and structures.
~ Subclassing and inheritance make it possible to extend and modify objects through deriving new kinds of objects from the standard classes available in the system. Thus, new capabilities are created without having to start from scratch.
~ Polymorphism and multiple inheritance make it possible for different programmers to mix and match characteristics of many different classes and create specialized objects that can still work with related objects in predictable ways.
~ Class hierarchies and containment hierarchies provide a flexible mechanism for modeling real-world objects and the relationships among them.
~ Libraries of reusable classes are useful in many situations, but they also have some limitations. For example:
~ Complexity. In a complex system, the class hierarchies for related classes can become extremely confusing, with many dozens or even hundreds of classes.
~ Flow of control. A program written with the aid of class libraries is still responsible for the flow of control (i.e., it must control the interactions among all the objects created from a particular library). The programmer has to decide which functions to call at what times for which kinds of objects.
Duplication of effort. Although class libraries allow programmers to use and reuse many small pieces of code, each programmer puts those pieces together in a different way.
Two different programmers can use the same set of class libraries to write two programs that do exactly the same thing but whose internal structure (i.e., design) may be quite different, depending on hundreds of small decisions each programmer makes along the way. Inevitably, similar pieces of code end up doing similar things in slightly different ways and do not work as well together as they should.
Class libraries are very flexible. As programs grow more complex, more programmers are forced to reinvent basic solutions to basic problems over and over again. A
relatively new extension of the class library concept is to have a framework of class libraries. This framework is more complex and consists of significant collections of collaborating classes that capture both the small scale patterns and major mechanisms that implement the common requirements and design in a specific application domain. They were first developed to free application programmers from the chores involved in displaying menus, windows, dialog boxes, and other standard user interface elements for personal computers.
Frameworks also represent a change in the way programmers think about the interaction between the code they write and code written by others. In the early days of procedural programming, the programmer called libraries provided by the operating system to perform certain tasks, but basically the program executed down the page from start to finish, and the programmer was solely responsible for the flow of control. This was appropriate for printing out paychecks, calculating a mathematical table, or solving other problems with a program that executed in just one way.
The development of graphical user interfaces began to turn this procedural programming arrangement inside out. These interfaces allow the user, rather than program logic, to drive the program and decide when certain actions should be performed. Today, most personal computer software accomplishes this by means of an event loop which monitors the mouse, keyboard, and other sources of external events and calls the appropriate parts of the programmer's code according to actions that the user performs. The programmer no longer determines the order in which events occur. Instead, a program is divided into separate pieces that are called at unpredictable times and in an unpredictable order. By relinquishing control in this way to users, the developer creates a program that is much easier to use. Nevertheless, individual pieces of the program written by the developer still call libraries provided by the operating system to accomplish certain tasks, and the programmer must still determine the flow of control within each piece after it's called by the event loop. Application code still "sits on top of the system.
Even event loop programs require programmers to write a lot of code that should not need to be written separately for every application. The concept of an application framework carnes the event loop concept further. Instead of dealing with all the nuts and bolts of constructing basic menus, windows, and dialog boxes and then making all these things work together, programmers using application frameworks start with working application code and basic user interface elements in place. Subsequently, they build from there by replacing some of the generic capabilities of the framework with the specific capabilities of the intended application.
Application frameworks reduce the total amount of code that a programmer has to write from scratch. However, because the framework is really a generic application that displays windows, supports copy and paste, and so on, the programmer can also relinquish control to a greater degree than event loop programs permit. The framework code takes care of almost all event handling and flow of control, and the programmer's code is called only when the framework needs it (e.g., to create or manipulate a proprietary data structure).
A programmer writing a framework program not only relinquishes control to the user (as is also true for event loop programs), but also relinquishes the detailed flow of control within the program to the framework. This approach allows the creation of more complex systems that work together in interesting ways, as opposed to isolated programs, having custom code, being created over and over again for similar problems.
Thus, as is explained above, a framework basically is a collection of cooperating classes that make up a reusable design solution for a given problem domain. It typically includes objects that provide default behavior (e.g., for menus and windows), and programmers use it by inheriting some of that default behavior and overriding other behavior so that the framework calls application code at the appropriate times.
There are three main differences between frameworks and class libraries:
~ Behavior versus protocol. Class libraries are essentially collections of behaviors that you can call when you want those individual behaviors in your program. A
framework, on the other hand, provides not only behavior but also the protocol or set of rules that govern the ways in which behaviors can be combined, including rules for what a programmer is supposed to provide versus what the framework provides.
~ Call versus override. With a class library, the code the programmer instantiates objects and calls their member functions. It's possible to instantiate and call objects in the same way with a framework (i.e., to treat the framework as a class library), but to take full advantage of a framework's reusable design, a programmer typically writes code that overrides and is called by the framework. The framework manages the flow of control among its objects. Writing a program involves dividing responsibilities among the various pieces of software that are called by the framework rather than specifying how the different pieces should work together.
~ Implementation versus design. With class libraries, programmers reuse only implementations, whereas with frameworks, they reuse design. A framework embodies the way a family of related programs or pieces of software work. It represents a generic design solution that can be adapted to a variety of specific problems in a given domain.
For example, a single framework can embody the way a user interface works, even though two different user interfaces created with the same framework might solve quite different interface problems.
Thus, through the development of frameworks for solutions to various problems and programming tasks, significant reductions in the design and development effort for software can be achieved. A preferred embodiment of the invention utilizes HyperText Markup Language (HTML) to implement documents on the Internet together with a general-purpose secure communication protocol for a transport medium between the client and a company. HTTP or other protocols could be readily substituted for HTML without undue experimentation.
Information on these products is available in T. Berners-Lee, D. Connoly, "RFC
1866: Hypertext Markup Language - 2.0" (Nov. 1995); and R. Fielding, H, Frystyk, T. Berners-Lee, J. Gettys and J.C. Mogul, "Hypertext Transfer Protocol -- HTTP/1.1: HTTP Working Group Internet Draft"
(May 2, 1996). HTML is a simple data format used to create hypertext documents that are portable from one platform to another. HTML documents are SGML documents with generic semantics that are appropriate for representing information from a wide range of domains.
HTML has been in use by the World-Wide Web global information initiative since 1990. HTML
is an application of ISO Standard 8879; 1986 Information Processing Text and Office Systems;
Standard Generalized Markup Language (SGML).
To date, Web development tools have been limited in their ability to create dynamic Web applications which span from client to server and intemperate with existing computing resources.
Until recently, HTML has been the dominant technology used in development of Web-based solutions. However, HTML has proven to be inadequate in the following areas:
~ Poor performance;
~ Restricted user interface capabilities;
~ Can only produce static Web pages;
~ Lack of interoperability with existing applications and data; and Inability to scale.
Sun Microsystems Java language solves many of the client-side problems by:
~ Improving performance on the client side;
~ Enabling the creation of dynamic, real-time Web applications; and ~ Providing the ability to create a wide variety of user interface components.
With Java, developers can create robust User Interface (UI) components. Custom "widgets"
(e.g., real-time stock tickers, animated icons, etc.) can be created, and client-side performance is improved. Unlike HTML, Java supports the notion of client-side validation, offloading appropriate processing onto the client for improved performance. Dynamic, real-time Web pages can be created. Using the above-mentioned custom UI components, dynamic Web pages can also be created.
Sun's Java language has emerged as an industry-recognized language for "programming the Internet." Sun defines Java as "a simple, object-oriented, distributed, interpreted, robust, secure, architecture-neutral, portable, high-performance, multithreaded, dynamic, buzzword-compliant, general-purpose programming language. Java supports programming for the Internet in the form of platform-independent Java applets." Java applets are small, specialized applications that comply with Sun's Java Application Programming Interface (API) allowing developers to add "interactive content" to Web documents (e.g., simple animations, page adornments, basic games, etc.). Applets execute within a Java-compatible browser (e.g., Netscape Navigator) by copying code from the server to client. From a language standpoint, Java's core feature set is based on C++. Sun's Java literature states that Java is basically, "C++ with extensions from Objective C
for more dynamic method resolution."
Another technology that provides similar function to JAVA is provided by Microsoft and ActiveX Technologies, to give developers and Web designers wherewithal to build dynamic content for the Internet and personal computers. ActiveX includes tools for developing animation, 3-D virtual reality, video and other multimedia content. The tools use Internet standards, work on multiple platforms, and are being supported by over 100 companies. The group's building blocks are called ActiveX Controls, which are fast components that enable developers to embed parts of software in hypertext markup language (HTML) pages. ActiveX
Controls work with a variety of programming languages including Microsoft Visual C++, Borland Delphi, Microsoft Visual Basic programming system and, in the future, Microsoft's development tool for Java, code named "Jakarta." ActiveX Technologies also includes ActiveX
Server Framework, allowing developers to create server applications. One of ordinary skill in the art readily recognizes that ActiveX could be substituted for JAVA without undue experimentation to practice the invention.
Various aspects of ReTA will now be set forth under separate headings:
CODES TABLE FRAMEWORK
With reference to Figure 1.1, a codes table framework 140 is provided for maintaining application consistency by referencing text phrases through a short codes framework. First, in operation 142, a table of codes each having a text phrase associated therewith is provided. Such table of codes is stored on a local storage medium. Next, in operation 144, the table of codes is accessed on the local storage medium. One of the text phrases is subsequently retrieved by o selecting a corresponding one of the codes of the table, as indicated in operation 146. During operation, modification of the text phrases associated with each of the codes of the table is permitted. See operation 148.
The modification may be carned out during a business logic execution. Further, various services may be provided such as retrieving a single one of the text phrases, retrieving all of the text phrases in response to a single command, updating a single code and text phrase combination, updating all of the code and text phrase combinations, naming the table, adding a new code and text phrase combination, removing one of the code and text phrase combinations, and/or adding another table.
Further, a name of the table may be stored upon retrieval of the text phrase.
Further, a total number of code and text phrase combinations in the table may be determined and stored. In the case where a plurality of tables are provided, any number of the tables may be removed during operation. Additional information will be now be discussed relative to the various foregoing operations.
This portion of the present description details the ReTA Codes Table framework design from the perspective of the application developer. The purpose of a codes table is to maintain application consistency by referencing text phrases (to be displayed to the end user) through short codes.
The code and text phrase (decode) are stored in a standard table format. The codes table component stores this table locally on the web server, thus reducing the overhead of accessing the database each time the application needs to translate a code.
Description The role of this framework is to store frequently used code/decode sets on the web server and provide services that enable the application developer to retrieve the decodes) associated with code(s). In addition, the framework provides services to enable the developer to modify the contents of the locally stored codes table during business logic execution.
Services The Codes Table Framework provides the following services:
Retrieve single decode value Retrieve all decode values Update single Code/Decode Update all Codes/Decodes Set Table Name Add new Code/Decode Remove Code/Decode Add Table Remove Table -Components The Codes Table Framework consist of the following COM objects:

These components are described in detailed in the following sub-sections.
AFRetrieval The AFRetrieval component enables the application developer to load the specified codes table into local memory (for faster access) and retrieve the requested decode(s).
Methods The IAFRetrieval interface defines the access to the AFRetrieval component.
This interface supports the following methods:
AFMaintenance The AFMaintenance component maintains the specified local codes table.
Methods The IAFMaintenance interface defines the access to the AFMaintenance component. This interface supports the following methods:
S
SAP FRAMEWORK DESIGN
Figure 1.2 illustrates a method 150 for providing an interface between a first server and a second server with a proxy component situated therebetween. Initially, in operation 152, a request for a business object is identified by an application on the first server. The first server is connected to the second server in operation 153. In operation 154, selection criteria from the first server is transmitted to the second server. In response to the selection criteria, the first server receives a first recordset and a second recordset from the second server in operation 155. Business data is included in the first recordset and result codes are included in the second recordset. The first and second recordsets are mapped to the business object in operation 156 and, in operation 157, the business object is sent to the application on the first server.
The first and second recordsets may also be mapped to the business object using a utility conversion function. Additionally, the first and second recordsets may also be mapped to the business object using a utility conversion function. Optionally, the recordsets may be ActiveX
data objects (ADO) recordsets.
The first server may also receive a third recordset from the second server in response to the selection criteria. This third recordset may include errors and references to an error table on the first server for allowing processing of the errors.
In a further embodiment of the present invention, changes to the proxy component may be prevented from affecting the application on the first server. Additionally, generation of a plurality of the proxy components by a user may be allowed. The following material provides a more detailed description of the above-described method.
This portion of the present description details the ReTA SAP framework design from the perspective of the application developer. The role of this framework is to provide designs and templates that describe how to integrate an Internet application with a SAP
server. Unlike the other ReTA frameworks, this does not provide any code components for connecting to SAP, but uses the SAP/DCOM component connector created jointly by Microsoft and SAP.
This portion of the present description provides a framework for the design of the architecture using the SAP
DCOM connector components to integrate with SAP.
The DCOM Component Connector provides interoperability between R/3 objects and COM
objects across a heterogeneous network through well-defined business interfaces. It provides the development tools for connecting with SAP to standard SAP BAPI 's (Business Application Programmer Interface) as well as custom developed or modified BAPI's. The DCOM
component connector can connect to SAP on Windows NT or UNIX. The Application server needs to be R/3 Version 2.1 or higher or R/2 with SOD.

The ReTA SAP framework uses an adapter layer design that places a wrapper around the DCOM
component connector. The adapter layer improves developer productivity by managing some of the lower level tasks, and improves the flexibility of the final solution.
The remainder of this portion of the present description describes the Execution and Development Architectures for the SAP framework.
SAP Framework Execution Architecture The DCOM Component connector uses COM proxy components that map to SAP
Business Objects. There is one proxy component for each SAP business object. The SAP
business objects can contain both the standard BAPI 's (Business Application Programmer Interface) as well as custom developed or modified BAPI's. The SAP/DCOM component generation wizard connects to SAP, examines the SAP business object, and generates a proxy component with the same interface. The SAP/DCOM connector component can connect to SAP on Windows NT
or UNIX.
Figure 1.3 shows the execution architecture for components that make up the SAP Framework Execution Architecture 160.
Referring again to Figure 1.3, the different layers in the SAP framework architecture are shown.
The SAP/DCOM connector generated components 162 provide the actual connection to~SAP
164. These components are generated from the SAP Business Application Programmer Interface (BAPI) 166,168. The BAPI's are either the standard SAP BAPI's, custom created BAPI's or Remote Function Calls.
The ReTA framework uses an Adapter layer to provide a thin wrapper on the SAP/DCOM
connector components. The adapter layer provides the following benefits:
~ It insulates the application from changes in the SAP/DCOM connector components.
~ It provides utility functions for mapping the SAP/DCOM connector data types to the types required by the application.
~ It maps the SAP return error codes to the format required by the application.
The SAP/DCOM connector generated components use ADO (ActiveX Data Objects) recordsets to pass data to SAP. The adapter layer components map from these recordsets to the Business Objects or Business Data format used by the application. If a given method returns business data from SAP then this is in the form of an ADO recordset. If a method updates information in SAP
then one must pass in an ADO recordset with all the data. To initialize this ADO recordset one calls a separate standard interface method of the proxy component. SAP returns business errors by returning a separate ADO recordset that references an error table.
The ReTA framework's adapter layer maps the ADO recordsets that the DCOM
connector uses to the business objects or data objects used by the application. The adapter layer also maps the error table recordset returned by SAP to the error handling mechanism used by the application.
SAP Framework Development Architecture SAP/DCOM component connector generation The SAP/DCOM connector portion of the present description gives a detailed description of how to generate a COM proxy component for a given SAP BAPI. The steps for creating a proxy component are:
~ Using the DCOM Component Connector browser based tool, create a destination entry for the SAP Application server.
~ Use the DCOM Connector wizard to connect to this destination.
~ Browse through the available SAP Business Objects on the remote SAP system.
~ Select a business object and click Generate Component DLL.
The DCOM Component connector may then generate C++ and IDL files, compile these files to create the proxy component and install this component in MTS.
SAP Adapter component design This portion of the description describes the responsibility of the SAP
adapter components and gives a template for a component.
The SAP Adapter components are responsible for:

~ Insulating the application from changes in the SAP BAPI.
~ Receiving business data from SAP
~ Updating business data in SAP
S ~ Mapping to/from the SAP returned data types ~ Mapping the SAP error return codes to the error handling mechanism used by the application.
There is a one to one mapping between the SAP Adapter components and the generated SAP/DCOM connector components.
SAP Adapter component template This template gives an example of an SAP connector component with one method to receive business data and one method to send business data. It describes how to convert to/from the data types required by the SAP Connector component and how to manage the SAP return error codes.
Function GetSAPData(<in>selectionCriteria, <out> businessObject):integer ~ Create instance of the corresponding SAP connector component ~ Call corresponding SAP method passing in selectionCriteria.SAP may return an ADO
Recordset with the business data and a second ADO Recordset with the Result codes.
~ Call an error utility function that maps the error return codes onto the applications error handling system.
~ Map the return recordset onto the businessObject (possibly using utility conversion function). Return the business object to the caller of the function.
Function SetSAPData(<in>businessObject):integer ~ Create instance of the corresponding SAP connector component ~ Call the SAP connector standard method DimAS to retrieve the recordset that may be populated from the businessObject.
~ Populate the recordset from the businessObject (possibly using utility conversion function).
~ Cal the corresponding SAP method passing in the recordset.

~ Call the error utility function that maps the error return codes onto the applications error handling system.
~ Gives an example of an adapter component that demonstrates retrieving and updating SAP data and handling the SAP error codes.
MTS FRAMEWORK DESIGN
Figure 1.4 illustrates a method for sharing context objects among a plurality of components executed on a transaction server. In operation 170, a first component is executed on a transaction server. A context object is then generated for the first component in operation 172 to control a scope of the execution of the first component. In operation 174, a call made by the first component is identified to execute a second component. The context object of the first component is utilized for controlling the scope of the execution of the second component in operation 176. Optionally, the first and second components may be service order item components.
The first component may be an activity component and the second component may be a business component. As an option, a plurality of activity components may be provided.
As another option, a call made by the activity component may also be identified to execute a second business component with the context object of the activity component utilized for controlling the scope of the execution of the second business component. As a further option, a call made by the activity component may be identified to execute an error logging component with an additional context object separate from the context object of the activity component being utilized for controlling the scope of the execution of the error logging component. The following material provides a more detailed description of the above-described method.
This portion of the present description details the ReTA approach to performing "logical unit of work" database operations in the context of transactions. Applications developed with ReTA
implement transactions through Microsoft Transaction Server (MTS). Within the MTS
transaction context, ReTA applications group business components into transactions. The application developer designs each business component to define whether its actions should be performed within a transaction.

In addition, this portion of the present description details the MTS framework features and their implications on ReTA application design.
MTS Transactions: Application Design Implementation Description There are two main tasks the developer performs to design applications that use MTS to support transactions:
~ Code the application component to be MTS aware.
~ Use MTS services to group database operations into transactions.
Design MTS aware components Figure 2 illustrates a create component instances method 200. MTS controls the scope of transactions by using transaction context objects. Each transaction server component has an associated MTS context object 202, which controls the transaction context. If a component 204 needs to create instances of other components 206 during its processing, it uses the CreateInstance method of the MTS context object to create the new object.
Calling this method ensures that the new component has an associated MTS context object 202 with the correct transaction scope.
Group database operations into MTS transactions The following portions of the present description include three database operations grouping scenarios that a ReTA application developer can implement through MTS.
Compose work from multiple components in the same transaction As illustrated in Figure 3, in this scenario, the developer composes the work of a business activity 300 into a single transaction. Activity 300 uses business objects in components 302 and 304 to compete its work. Any database operations generated by either of these business components are completed in the context of a single transaction. To achieve this functionality, the developer uses the default transaction context scope that MTS provides.
The developer sets the transaction attribute of the Activity component to Requires a transaction and the attribute of the business components to either Requires a transaction or Supports transactions. When the activity component initializes, MTS creates a corresponding context object 306. Subsequently, when the activity component initializes the business components, these business components share the same context object and are therefore committed in the same transaction.
When the Activity completes and the reference to the activity component is removed, the transaction is committed. If any of the database calls, fails or any of the components decides to abort the transaction, the transaction is aborted and all the database actions performed are rolled back.
Force a component's database operations to use a separate transaction.
In this scenario, as illustrated in Figure 4, the developer creates a component whose database operations are always carried out in a separate transaction. For example, an error logging component 402 should not use the transaction context of the component generating the error.
This could cause the error logged to the database to be rolled back if an error occurs in a separate database operation. This scenario has an activity component 400, two business components 404,406 and an error logging component 402. If an error occurs in the activity, then an error message is sent to the error logging component (which logs the error in a database). The transaction of the activity is rolled back, however, the transaction of the error logging component is committed to the database.
In this scenario, the developer uses the default behavior of MTS. The error logging component is registered as Requires a new transaction. When the activity component initializes the error logging component, MTS creates a new transaction context for the component. If an error occurs in the activity, the database operations for the activity is rolled back, but any database operations that the error component generates is committed.
Compose work from multiple activities in the same transaction.

With reference to Figure 5 (which illustrates the compose work form multiple activities in the same transaction), in this scenario, the developer creates two separate activities 500,502 whose work sometimes need to be composed into a single transaction. To achieve this functionality using MTS, the developer creates a third activity component 504 that calls the other two activities. The third activity component is registered as Requires a transaction. When this component initializes, MTS creates a new transaction context. When the activity 504 initializes the other two activities 500,502, they share the same transaction context 506 (and any objects they create also have the ability to share the transaction context).
MTS Features: Application Design Implications Description Note: A FinancialWorks Knowledge Exchange (kX) posting (Optimizing Performance) provided most of the content for this portion of the description.
This portion of the description provides insight on the following MTS
features:
~ Connection Pooling ~ Stateless/Stateful objects ~ Package threading ~ Transactions ~ Just in Time activation ~ Object creation ~ Parameter Passing.
Connection Pooling MTS and ODBC provide connection pooling. MTS/ODBC associates a connection pool with a specific user account. Therefore, it is important that all data access components have a pre-defined account to use when requesting database connections. In addition, connections are pooled only within the same process. This implies that every MTS package may have a pool of connections, as each MTS package runs in its own process.

Note that the ODBC connections are pooled, not the ADO connections. When the application code closes the ADO connection, the corresponding ODBC connection stays in the pool until a configurable timeout expires (cptimeout). The configurable timeout key is in the registry under "Hkey Local Machine\Software\ODBC\ODBCINST.INI\<driver name>\cptimeout" (with a default value of 60 seconds). Connection pooling can be turned off by setting this value to 0. In effect, connection pooling keeps more connections open with the database but saves the (expensive) overhead of re-creating the connection every time.
Note: Connection pooling is a feature of the ODBC resource manager. MTS
automates the configuration of the ODBC resource to enable connection pooling.
Implications on application designn:
Create accounts for account packages. Group components under the appropriate credentials and 1 S packages. The Database server is a resource bottleneck. To improve performance, ensure high bandwidth connections exist between application and database servers.
Connection pooling provides performance improvement especially in the case where connections are used and released frequently such as Internet application.
Stateful and Stateless Objects MTS supports the concept of a stateful object. However, the object must satisfy the following conditions:
1) The object can not be transactional.
2) Even if it is marked as non-transactional, it cannot participate in a transaction (i.e. cannot be called from a transactional object or call a transactional object). The reason is that MTS implements an activity concept. In the activity concept, all objects participating in a transaction (or LUW) are logically "grouped" together. Upon the completion of that transaction, SetComplete is called and all objects in that activity are freed.
Thus, no object in the transaction holds context (state) on transaction completion.

3) To enable a stateful object to participate in a transaction, partition the object into two parts: Stateful and Transactional. The Stateful part lives outside MTS and uses the TransactionContext object to manage manually (making explicit calls to start, commit and/or abort) the transaction inside MTS. To maintain transactional integrity, use the TransactionContext (as opposed to the ObjectContext) to create MTS objects.
Therefore, the TransactionContext is passed inside MTS for later use of any MTS object instantiation. On the server, the code looks like the following: Set MtsObject =
MtxTransactionContext.Createlnstance("progid") Implication on application desi~
In general, be deliberate with MTS and state. When working with MTS
components, it is recommended to keep the context(state) on the client and have the server components be service driven. These components are instantiated to provide a service and then are freed.
Package Threading Every time a package receives a method call, MTS creates a new thread to service the request.
At the time of writing this portion of the present description, MTS packages have a maximum limit of 100 threads per package. If the number of the incoming concurrent calls exceeds 100, MTS serializes all excess calls. Project testing (a FinacialWorks project) proved that performance degraded significantly after reaching the 100 concurrent threads mark.
Implication on application design:
Due to this limitation, package the application DLLs in a way to minimize thread contention.
For future releases of MTS, Microsoft claims the limit for concurrent calls may increase to 1000.
Activities MTS defines an activity as set of objects acting on behalf of a client's request. Every MTS
object belongs to one activity. The activity ID is recorded in the context of the object. The objects in an activity consist of the object created by a base client and any subsequent object created by it and all of its descendants. Objects in an activity can be distributed across several processes (and machines).

Whenever a base client creates an MTS object, a new activity is created. When a MTS object is created from an existing context, the new object becomes part of the same activity. The object's context inherits the activity identifier of the creating context.
Implication on application design:
Activities define a single logical thread of execution. When a base client calls into an activity, all subsequent requests from other clients are blocked until control is returned to the original caller.
Automatic Transaction Control MTS initiates a transaction when a method on a transactional component is called. MTS records the transaction ID in the component's object context. This transaction ID is passed to other MTS
components' context objects requiring participation in the same transaction.
MTS operates with an optimistic assumption that the transaction is going to succeed. If the component never calls SetAbort, SetComplete, DisableCommit, or EnableCommit, the transaction commits when the client releases its last reference to the MTS
component.
If the component calls SetComplete, the transaction commits as soon as the method call returns to the client. When the component calls SetAbort the transaction aborts as soon as the method call returns to the client.
If the component calls DisableCommit, the transaction aborts when the client releases its last reference to the component. If the component calls EnableCommit, the transaction commits when the client releases its last reference to the component.
Implications on application design:
When designing the transaction timeout, consider the potential for slow system and network response times. The application design should avoid long running transactions and attempt to break them into smaller ones.

Note:
There is no explicit Commit method. If no objects have aborted the transaction by calling SetAbort or disabled commitment by calling DisableCommit, MTS may automatically commit the transaction when the client releases its object references.
Manual Transaction Control Transactions can also be manually controlled from a base client by using the transaction context to start and commit/abort a transaction. This is particularly useful in the case where a stateful base client activates an MTS-managed transactional object to carry out a distributed transaction.
In order to achieve that, MTS uses the Transaction Context created by the base client.
Just-In-Time Activation For every business object created, MTS intercepts the call and creates a sibling object called the Object Context. It is the object context that may manage the transaction and the business object activation/deactivation.
One of the interface methods on the context object is SetComplete. When SetComplete is called, the transaction (if any) is signaled as ready to be committed and the instance of the business object is destroyed releasing all resources used by it. The next time the client issues a method call, MTS creates a new instance of the business object and delegates the call to it (this is assuming that the client did not release its original reference to the MTS-supplied context wrapper). In the MTS world, this is known as JIT activation.
The following method call trace illustrates JIT activation:
~ The client application starts, and the client requests an instance of the Customerlnterface of the Customer component.
~ Set objICustomer = CreateObject("CustomerComponent.CustomerInterface") ~ COM searches the Running Object Table to determine whether an instance of the component is active on the client.

~ If not, COM searches the Registry for the information describing Customerlnterface and invokes the creation of the interface.
~ MTS 600 intercepts the Customer creation request 602, starts a process for the Customer S package containing Customer component 604, creates the ContextObject 606 and returns a reference to the client. See Figure 6.
~ The client application requests an operation on the Customerlnterface.
~ MTS invokes the operation and commits the transaction (if any) by calling SetComplete.
~ MTS 700 deactivates the component, freeing the thread, the memory and returns the result to the client. Figure 7 shows that the customer object 702 has been deactivated (the customer object is grayed out).
To take advantage of JIT activation, the clients do not release the reference to the MTS-supplied context wrapper (the client code does not set objICustomer = null). When the client requests a new operation, the Context wrapper creates a new instance of the Customer component and delegates the incoming call to it. By keeping the reference to the context wrapper, MTS does not need to recreate the object.
Implications on application design:
To take advantage of JIT activation, client applications acquire references to the server components as early as possible and uses them as needed. It would be ideal to obtain references at application startup, but this has the drawback of not being reliable. If for some reason the references were lost, this may result in run time errors.
Object Creation: New vs. CreateObject vs. CreateInstance This portion of the description describes the appropriate usage of the different types of object creation methods.
New:

The keyword "New" creates an object with private instantiation property. It is used with early binding.
CreateObj ect:
Normally used with late binding and used to create objects with public instantiation property. If other MTS object are instantiated using CreateObject (on the server), they run the risk of running in the wrong context. CreateObject can be used from the client to instantiate any MTS object.
Createlnstance:
It is the interface method of the context object used to instantiate other MTS
objects. This is the only way to guarantee the newly created object participates in the same current transaction.
When MTS instantiates a transaction, it records the transaction ID in the component's object context. This transaction ID is passed to other MTS components only when Createlnstance is used to create these objects.
Implication on application Design:
When CreateObject is used, Java/VB uses COM to create an instance of the object. If the Object is registered in MTS, MTS loads the DLL and creates a new instance passing back a MTS-managed handle to the object. The object gets a new MTS context.
When New is used in Java/VB, the action depends on where the object being created lives. If it is in a different DLL, COM is used and the mechanism is the same as CreateObject. If it is in the same DLL Java/VB creates the instance internally and may not create a new MTS-managed object, whereas CreateObject may. Private classes can only be created using New since they are not exposed to COM.
When one MTS object creates another MTS object, the new object gets a new context. If CreateObject (or New for an object in a different DLL) is used, the contexts are independent of each other. If a transaction is involved, the new context manages a completely different transaction from the original. If CreateInstance is used, the new object's context shares the same transaction as the invoking one.

Using New is only a problem in the following scenario. The application contains one DLL that contains more than one MTS-managed class. The application wants an instance of one of these classes to create an instance of the other (in separate contexts). New may not do this, whereas CreateObject and Createlnstance may. However, Createlnstance is required if they are to run under the same transaction.
Parameter Passing If Visual Basic is the language of choice, make sure to pass parameters by value (as the default in VB is by reference). This may help reduce network trips and hence improves performance.
If one is passing the collection object in MTS, make sure to use the Microsoft provided wrapper collection object. The standard VB collection object is known to cause errors when running under MTS. It is better to use a variant array instead of collection to pass information around.
It is more robust and performs better.
As parameters, MTS registered business objects are passed by reference as they use standard marshalling When working with MTS objects, ensure that object references are exchanged through the return from an object creation interface such ITransactionContext.Createlnstance or IObjectContext.Createlnstance. This allows MTS to manage context switches and Object lifetime.
Data Access and Locking Policy Database Locking should be in place to ensure the integrity of the database in a multi-user environment. Locking prevents the common problem of lost updates from multiple users updating the same record. The optimistic approach of record locking is based on the assumption that it is rarely the case for multiple users to read and update the same records concurrently.
Such a situation is treated as exceptional processing rather than normal.
Optimistic locking does not place any locks at read time; locks are actually placed at update time. A
time stamp mechanism should be provided to ensure that at update or delete times the record has not changed since the last time it is read. It is recommended to use optimistic locking with ADO and MTS to improve performance. If the data access mechanism uses ADO disconnected RecordSets, then the only possible locking policy is optimistic.
Implication on application Desi ri:
If one is using optimistic locking and ADO, it is recommended that one uses disconnected recordsets to marshal data. Project experience (FinancialWorks project) shows that the application should avoid using the ADO RecordSet.GetRows method, as it significantly slows performance.
Data Marshaling Use disconnected Recordsets. This may ensure high performance result when marshaling data across a network. Client applications have to reference an ADOR.Recrodset, which is a lighter version of the ADODB.Recordset designed specifically for client's use. With disconnected Recordsets only optimistic locking can be employed.
If the marshalling of data from client to server is done by collection, beware to use the wrapper collection provided on the MTS site. MTS may not work correctly when passing the VB
standard collection object. It is known to cause runtime errors.
ACTIVITY FRAMEWORK DESIGN
Figure 8 illustrates a method for providing an activity framework. First, in operation 800 a plurality of sub-activities are created which each include sub-activity logic adapted to generate an output based on an input received from a user upon execution. In operation 802, a plurality of activities are defined, each of which execute the sub-activities in a unique manner upon being selected for accomplishing a goal associated with the activity. Selection of one of the activities is allowed in operation 804 by receiving user indicia. In operation 806, an interface is depicted for allowing receipt of the input and display of the output during execution of the sub-activities associated with the selected activity.

The sub-activity logic may be adapted for verifying that all required input has been received prior to generating the output. Access to the input received from the user by each of the sub-activities of the activities may also be allowed.
Optionally, the activity may include creating a service order. Further, the sub-activities each may additionally include at least one business component.
The interface may include a plurality of displays that are each displayed during the execution of a corresponding one of the sub-activities. The following material provides a more detailed description of the above-described method.
This portion of the present description details the ReTA Activity framework design from the perspective of the application developer. The primary role of this framework is to provide services that support the "model view controller" (MVC) design pattern. In this pattern, the application implements a "separation of concern" among the user interface (view), logical unit of work (controller) and business components (model). Separating the user interface from the business logic increases reuse of the interface and the business component. In this design pattern, different types of interfaces can reuse the same model and the same interface can view different models. Another goal of separating presentation and storage responsibilities is to reduce the impact of change. For example, changing the user interface design should only impact the user interface components and not the business logic. Through modeling the "separation of concern" pattern, the ReTA Activity framework increases application maintainability and flexibility. It also encourages "best practice" coding standards.
Activity Framework Description See Figure 8.1, which illustrates the MTS runtime environment 830. The ReTA
Activity framework distributes the application development responsibilities as follows:
~ Web page (Active Server Page) (ViewlController) The application's web page logic 832 starts the activity 834, executes the sub-activity and creates the user interfaces. No business logic is contained directly in the web page code. The application developer leverages the ReTA Session, ReTA Activity and the ReTA UI frameworks from the web page code.
~ Activity Components (Controller) The application's activity logic implements the business process logic (functional control logic) 836. Activities support high-level S processes that are not the responsibility of any individual business components. This includes high-level steps related to a user's "logical unit of work" or business function.
Thus, activities enable multiple web pages to implement a "logical unit of work". An example of an activity implementing a "logical unit of work" with multiple web pages is "Create Service Order". In this example activity, the user selects a service to order on the first page, enters the customer information on the second page, reviews and submits the order on the third page and receives an order confirmation on the fourth page.
Business Components: (Model) Business components 837 implement the application's business entity logic. These components represent individual business entities (such as customer or account). Each entity encapsulates its own data and behavior acting on that 1 S data. Note: The Activity implements business logic that spans multiple business components.
The ReTA Activity framework consists of the following three main components:
Activity ~ An activity 834 encompasses a combination of web pages, which fulfill a business function. The activity has the following responsibilities:
~ Provide a "logical unit of work" context to all sub-activities within the activity. The Activity framework uses Microsoft Transaction Server (MTS) transactions to implement the "logical unit of work" concept. On the completion of a transaction (whether successful or abort), MTS ensures that each sub-activity may be in a consistent state (either completed or rolled back).
~ Check that requested information and conditions are fulfilled before executing logic.
~ Maintain information shared between the pages of the activity.
~ Create, trigger and manage sub-activities.
~ Check page access authorization, when browsing through activity pages.
~ Release all maintained information when closed.

~ Execute post-conditions when closed. Examples of post conditions are releasing resources tied up for the activity or removing pessimistic locks on tables.
~ Commit or abort all opened sub-activities.
The activity (by itself) does not contain any business logic. Sub-activities (and their S associated business components) provide the business logic. Thus, the activity maintains a context and provides a "logical unit of work" for a specific business functionality.
Sub-activity A sub-activity 838 executes a sub-part of the overall activity business logic.
The sub-activity represents the smallest grained business logic. For example in a "Create Service Order" activity, one sub-activity retrieves all the service types information to display on the first web page. A
sub-activity has the following responsibilities:
~ Check pre-conditions. Ensure requested information and conditions are fulfilled before executing business logic.
~ Execute business logic ~ Execute post-conditions.
View A view 840 defines the mapping between a user interface and business components containing the values to display. The view has the following responsibilities:
~ Unplugging the user interface from the business component values.
~ Automatically and transparent to the developer, capture all the values entered by the user and update the related business components.
~ Display the business component values attached to the user interface.
~ Trigger a sub-activity when capturing values.
~ Note: The Activity component maintains a separate view for each web page defined to be part of the activity.
Note:
The ReTA Activity framework fully supports business activity components written in Java or Visual Basic. In addition, the Activity framework provides partial support for business activity components written C++. For C++ components, the application developer must implement the services provided by the Activity utility classes AFView and AFViewBOMapping.

Services Components and Classes The Activity Framework implements these services through the following COM and Class objects:

The Activity Framework provides the following services:

'~ '~~e~w~~'~ For a specific Active Server Page, defines the ~~

curlew . mapping between a collection of user .e interface entry x .
~

fields and the business component ~ instances 9;~. containing the values to display.
' Note: Multiple .

views can exist for a single ASP.
For example, a separate view can be defined for each r_ form on a ~ page.

'~ew m ~ a~ > . i~ ~ g Defines the mapping between a user interface entry V : Vii ~ : ~ a . ping field and the business component instances containing the value to display.

ie '~a. ' . B , ~ttonB~ Defines the mapping between a user a : ping interface radio '~ _ ~'ew '. ad~ oB~tto button field and the business component , : ~,. . app' instances g containing the value to display.

'ew ~ ... : ~:. .:app: Defines the mapping between a dynamically ~ ~,. created .. ,'~ .- ~ T, , a ~ user interface entry field arid the busitles's component instances containing the value to display.

~'ewN ~'- ~ a : T- x g Defines the:mapping betwem a user=interface ' multi=

iew a t eaBO "a t : in. line entry field and the business component -instances containing the value to display.

9 ' ~1' ew ~ ~c~pDo . Defines the mapping between a user ~ : ~'~I,ap ~ i~ag interface drop , AF'VB~iea o ~ . ~ o~nB~ down combo box field and the business . . a~zp::n component instances containing the value to display:-iew t f i~st~ : OO : a Defines the mapping between a user s p~i,ng interface ~~ieuc~IlI~Li~s i - _ Selected List Box field and the business >a x fi ',rr components containing the values to display.

i -~'l~: ~ , ~ . >: , Defines the mapping between a user ~' ~ _ *~Mapp~:z~g interface_ '~B~' ew~ a , = b - ai=1B~:MaThumbNail (iconic pushbutton) field 7.p': ~ and the g business components containing the values to __ . _~a display.

These components and classes are described in detailed in the following sub-portions of the description.

AFActivity The AFActivity component provides the structure for implementing business logic, state management among web pages, management of views and sub-activities, and transactional support for carrying out a "logical unit of work". The application developer creates an activity component for each specific business activity by extending the AFActivity component.
The activity component shares the services provided within the Activity framework allowing the application developer to concentrate on the business logic. Application business logic is organized into three separate areas within an activity: pre-conditions, execution, and post conditions.
Methods The IAFActivity, IAFContext and IAFEventListener interfaces define the access to the AFActivity component. These interfaces support the following methods:

etneve ~ . s nce Retrieve a User Interface component ~~y instance from the .- ..~ .~~

~ ~ .-~ UI context of the activity.

~~.'~:

ddTo~ Con~te~t Add a User Interface component to the ;~ i UI context of y~, E ~ _ ' ~' ~ ~ ~ -" the activity.

~:

x<euteS ~ 'b ~t Execute the sub-activity related to mty~~ the current page for , the Activity. Call the sub-activity precondition, .: execute and postcondition methods.

sPart~ ct~i 't If the ASP name passed as a parameter is part of the activity, return true. This method calls the AFTrackingManager component of the ReTA
Session framework in order to get the result.

Chec ' age u~tho Ask the tracking object related to the '~zattio activity to check the page authorization (uses the AFTrackingManager component of the ReTA Session framework).
If the user is allowed to-access this page, set the current page of the activity with the page passed as parameter.

~ ~ 'ue a ~ue Return the business component value that is mapped to the specified UI field (uses the Activity framevi~ork View service).

et~ a a Return the activity name.

~;e ~ ~ .. -. ~:ameReturn the naiiie of the frame where to-displaythe encountered events.

C~etPa~ge ' . . Return a string containing all parameters : a to send to the next page. This string contains the names ofall UI

fields of the page and the JavaScript code needed to retrieve their values. Called by the ReTA UI

framework component AFScriptGenerator.

~

G~ et~a ' age Return the starting page of the activity.

g~~~, a a ~ age Return the next page foi the current ~ activity, based on the current activity page saved in the AFTracking object of the activity and on the action passed as parameter.

getCurreautPage Return the current page.
~-Abstract Methods The application developer implements the following abstract methods in the business activity component:

AFSubActivity The AFSubActivity component implements a sub-part of the overall activity business logic. The application developer creates a sub-activity component for each sub-part of a specific business activity by extended the AFSubActivity component. As with activities, the sub-activity workflow sequence is pre-condition, execution and post-condition.
Note:
There may be zero or more sub-activities on an ASP Page.
Methods The IAFSubActivity interface defines the access to the AFSubActivity component. This interface supports the following methods:

't' ~ ~tiallze~Store the requested component names (as defined t by the application developer). Store the passed in activity component reference. Store the sub-activity name.

ge ~ a ~ Return the sub-activity name.

getc~~ty% Return the reference to the activity component ty~ associated ~~ ~~ .r to the sub-activity.

Abstract Methods The application developer implements the following abstract methods in the business sub-s activity component:
AFCollection The AFCollection component is a general purpose collection component. The collection component can be used to store and retrieve a collection of COM components, integers or strings.
Methods The IAFCollection interface defines the access to the AFCollection component.
This interface supports the following methods:

addE~lre ne Add an element to the collection component.
'~t~

,.

a a f eri~t~ Return the element at the requested index.
'~t~" ' adds, ' ~ Add a string element to the collection component.
g s a '~ng 5t Return the string element at the requested g~. r index.

adds . ~t Add an integer element to the collection component.

'm t ' Return the integer element at the requested index.

i~s4 ~ r . If collection component is storing integers, return true.

sSt '~ng If collection component is storing strings, return true.

eset o Remove all the elements from the collection component.

AFVBActivityWrapper The AFVBActivityWrapper component enables the application developer to add Activities that are written in Visual Basic.
Meth~ci~
The IAFActivity, IAFContext, IAFEventListener and IAFVBActivityWrapper interfaces define the access to the AFVBActivityWrapper component. These interfaces support the following methods:
Store the VB activity name, the starting page for the activity and the reference to the application developer's VBActivity component to the AFVBActivityWrapper component.

-_~g~t~ age Return a string containing all parameters Sara ter to send to the next page. This string contains the names of all UI

fields of the page and the JavaScript code needed to retrieve their values. Due to non-su ort ,~ o class ~y PP

inheritance by the VB language, the VB
application developer must implement the getPageParameter logic .
supplied by superclass APActivity for Java . .:.:
applications. The VB developer copies the required logic from the VB Activity shell code file.

receive ~veiit Method called by the ReTA Session during an ASP

start page event to enable the architecture to capture user entry from previous web page. The ReTA Session component holds references to all registered listeners (Activity components). -Due to non-support of class inheritance-by the VB language, the VB
application developer must implement the receiveEvent logic-supplied by superclass AFActivity for Java applications. The VB developer copies the required logic from the VB Activity shell code file.

Start the activity. The application developer calls_tllis method from the ASP page.

~~''eld alue ' Return the business component value that is mapped to the specified UI field. Due to non-support of class inheritance by the VB language, the VB
application developer must implement the ulFieldValue logic . supplied by superclass AFActivity for ,lava applications. The YB developer copies the required logic from the VB Activity shell code file.

Release the activity and all its associated instances.
Calls the commit method. The application developer calls this method from the last ASP page for the business activity.

abo Gracefully abort the activity. Abort associated sub-activities. Remove all references to sub-activities, business components and stateful UI components.

~~rn'rm' .Declare that the current activity and all its sub-activities have completed their work and should be deactivated ' '' ~~when the currently executing method returns to the client. This method may call the setComplete method x.
of MTS. (See MTS portion of the present description for more information) r~ a 'v - ~ Retrieve a User Interface component instance x . Shane from the ~

UI context of the activity.

add~'T~ o ~ Add a User Interface component to the UI
:te a context of the activity.

exeevteS ~ Execute the sub-activity related to the b ct'i '~t current page for the Activity. Call the sub-activity precondition, execute and posfcondition methods.

'a ~U ' ~i If the ASP name-passed as a parameter is ' part of the activity, return tine. This method calls the AFTrackingManager component of the ReTA
Session framework in order to get the result.

~ ~ ec ' a I :~ ' Ask the tracking obj ect related:
~ - ~ ~~ . to the= activity to~'check ~ ~'w k the page authorization (uses the AFTrackingManager component of the ReTA Session framework).
If the user is allowed to-access this page, set=_the current_page of the activity with the page passed as parameter.

re . eveBO n Return requested business component from ~ sta ce the activity .:

business context.

~1d b ~b~ec Add a business object (held by the activity's "business object context" object).

~ry .
~~:~.

Geb~~b~ect Return the instance of the requested business object (held by the activity's "business object context"

:..

obj ect).

;IZe=~ ~~.'~~~bjectRemove the instance of the requested business object (held by the activity's "business object context"

obj ect).

m Con~t~a~insK- If the "label" of the requested business object exists (held by the activity's "business object context"

object), return true.

eY' -ys Return all business object "labels" (held by the activity's "business object context" object).

ven~t~ is ~ -nor ~e d Reference to the listener object. One listener object is associated with each registered Activity component.

IAFVBActivity Interface Methods The application developer implements the following interface methods in the VB
business activity component:

getPageParamet~r~ Call getParameter method of AFVBView class to >~ ~~~~~~ T' implement logic. The VB developer copies ~ this ~, m required logic from the VB Activity shell code file r ~~ p ,~.

~Precon'~ditiom' Pre-conditions required before executing the Activity.

~~
_~_w~; .
~.:w ~--_.~w_ ~, vostcondit~onm Post-conditions required after executing the Activity.

AFView (AFVBView) The AFView class provides a mapping between a User Interface and a set of Business Components (the view maps one web page form to one or more business components). When the user requests the next web page, the previous web page values are passed along with the URL
request. Upon starting the next web page, the Session framework invokes the receiveEvent method on the appropriate Activity component. The Activity component uses the View class to record, into the appropriate business component, the data entered by the user at the previous web page. Also, the View class obtains the current user interface field values for the next web page as requested by the application developer through ASP scripting logic.
Note:
Multiple views can exist for a single ASP. Since a view contains a collection of mapped field, one view can be defined for each form of an ASP.
MPthnr~e The following AFView class methods are important for the application developer to understand:
Create a new AFView instance for the ASP page passed as parameter. The application developer calls this method from the implemented views method of the business activity component.

G~ a dal a o Return the value for the UI field mapped "Weld to an instance of a business component contained in the activity context.

..~:.
If the business component instance is not part of the . ~ -~~ -~~-o activity, then return the default value ~ for the UI field.

.~x.e ,~~ From the ASP page, the application developer calls this method to initialize the UI field values before submitting the web page back to the client machine.
Note: for VB

~y~~.
,~j- activities, this method is called by the VB business activity component Acl . _ :'~'lvlo-aAdd a "UI field to business component = p':ng attribute mapping" object to the view. The application developer calls this method from the implemented views method of the business activity component.

~etParameter Return a string containing all parameters defined for this view to send to the next page. -This string contains the names of all UI fields for this view of the page and the JavaScript code needed to retrieve their values. Called by the getPageParameter method of the AFActivity component. Note: for YB activities, this method is called by the YB business activity component.

apiure Based on the parameters passed to the current Active Server Page, update the business components containing the values entered by the user from the previous page.

The Activity framework implements this logic for the application developer. Note: for VB activities, this method is called by the VB business activity component AFViewBOMapping (AFVBViewBOMapping) The AFViewBOMapping component defines the mapping between a user interface entry field and the business component instances containing the value to display. This class gets/sets an UI
field value by getting/setting the business component instance contained in the activity context.
Each mapped business component instance should implement the IAFEditable interface. This interface provides the setValue and getValue methods used to set and get values of the business component instance.
Methods The following AFViewBOMapping class methods are important for the application developer to understand:
AFViewRadioButtonBOMapping (AFVBViewRadioButtonBOMapping) The AFViewRadioButtonBOMapping component defines the mapping between a user interface radio button field and the business component instances containing the value to display. This class gets/sets an UI field value by getting/setting the business component instance contained in the activity context. Each mapped business component instance should implement the IAFEditable interface. This interface provides the setValue and getValue methods used to set and get values of the business component instance.
Methods The following AFViewRadioButtonBOMapping class methods are important for the application developer to understand:

Based on the parameter passed to the current Active Server Page, update the business components containing the value entered by the user from the previous page for the mapped UI field. The Activity framework implements this logic for the application developer.
AFViewDynamicBOMapping (AFVBViewDynamicBOMapping) The AFViewDynamicBOMapping component defines the mapping between a dynamically created user interface field and the business component instances containing the value to display.
This class gets/sets an UI field value by getting/setting the business component instance contained in the activity context. Each mapped business component instance should implement the IAFEditable interface. This interface provides the setValue and getValue methods used to set and get values of the business component instance.
Methods The following AFViewDynamicBOMapping class methods are important for the application developer to understand:
Create a new AFViewDynamicBOMapping instance defining a UI field to business component attribute mapping for an ASP page (parameters passed by the application developer). The application developer calls this method from the implemented views method of the business activity component.

Return a string containing the parameters defined for this "UI field to business component mapping" to send to the next page. This string contains the name of the UI field mapped to the business component attribute for this view of the page and the JavaScript code needed to retrieve its value. Called by the getParameter method of the AFView component. The Activity framework implements this logic for the application developer.
Based on the parameter passed to the current Active Server Page, update the business components containing the value entered by the user from the previous page for the mapped UI
fields 'The Activity framework implements this logic for the application developer.
AFViewTextAreaBOMapping (AFVBViewTextAreaBOMapping) The AFViewTextAreaBOMapping component defines the mapping between a user interface mufti-line entry field and the business component instances containing the value to display. This class gets/sets an UI field value by getting/setting the business component instance contained in the activity context. Each mapped business component instance should implement the IAFEditable interface. This interface provides the setValue and getValue methods used to set and get values of the business component instance.
Methods The following AFViewTextAreaBOMapping class methods are important for the application developer to understand:

AFViewDropDownBOMapping (AFVBViewDropDownBOMapping) The AFViewDropDownBOMapping component defines the mapping between a user interface drop down field and the business component instances containing the value to display. This class gets/sets an UI field value by getting/setting the business component instance contained in the activity context. Each mapped business component instance should implement the IAFEditable interface. This interface provides the setValue and getValue methods used to set and get values of the business component instance.

Methods The following AFViewDropDownBOMapping class methods are important for the application developer to understand:
AFViewUIListBOMapping (AFVBViewUIListBOMapping) The AFViewUIListBOMapping component defines the mapping between a user interface Selected List field and the AFCollectiomcomponent instance containing the values to display.
This class gets/sets an UI field value by getting/setting the AFCollection component instance contained in the activity context.
Meth~rlc The following AFViewSelectedListBOMapping class methods are important for the application developer to understand:

AFViewThumbNailBOMapping (AFVBViewThumblVailBOMapping) The AFViewThumbNailBOMapping component defines the mapping between a user interface ThumbNail (iconic pushbutton) field and the business component instances containing the value to display. This class gets/sets an UI field value by getting/setting the business component instance contained in the activity context. Each mapped business component instance should implement the IAFEditable interface. This interface provides the setValue and getValue methods used to set and get values of the business component instance.
Methnri~
The following AFViewThumbNailBOMapping class methods are important for the application developer to understand:

~'~~~ Based on the parameter passed to the current ro x ~~ , ~ Active Server Page, update the business components containing the value entered by the user from the previous page for the mapped UI field. The Activity framework implements this logic for the application developer.
SITE SERVER FRAMEWORK DESIGN
Figure 9 illustrates a method 900 for accessing services within a server without a need for knowledge of an application program interface of the server. A role container is first created in operation 902. In operation 904, a role class is defined and in operation 906 an attribute for the role class is generated which includes a default start page attribute. In the role container, a role object is made in the role class with the default start page attribute associated therewith in operation 908. A uniform resource locator is selected in operation 910 for the default start page attribute.
A plurality of attributes may be generated for the role container. Further, these attributes may include a default start page attribute, a user name attribute, a user identifier attribute, and/or a role name attribute.
A user may be assigned to the role object. Optionally, a plurality of role objects may be made in the role class with each role object having a unique default start page associated therewith. As another option, an operator role object and a customer role object may be made as well. The following material provides a more detailed description of the above-described method.
This portion of the present description details the ReTA Site Server framework design from the perspective of the application developer. The role of this framework is to provide components that allow one to integrate the ReTA custom frameworks with Site Server. This provides a user component connecting to Site Server, but does not require knowledge of the Site Server API
itself to integrate with Site Server.

Site Server Framework Execution Architecture To connect to Site Server a COM component (UserSS) is used to make calls to Site Server's API.
The ReTA UserSS component allows the developer to access Site Server's Personalization and Membership Services without any knowledge of Site Server's API.
Figure 9.1 illustrates Site Server Framework Architecture. This figure shows the different layers in the Site Server framework architecture. The UserSS COM component 930 connects to Site Server 932. The UserSS component uses Site Server's Personalization and Membership; UserSS
also performs security as well on a Commerce Site. The ReTA framework 934 uses the UserSS
layer to provide access to Site Server. The UserSS layer provides the following benefits:
~ It insulates the application developer from Site Server's API.
~ It provides functionality for using Site Server's Personalization and Membership Services.
Site Server Framework Development Architecture UserSS Interface Methods The UserSS component interfaces with the SiteServer personalization and membership services.
This component uses SiteServer to handle the user security, role and preferences.
Math nr~ c The IAFUser, IAFUserPreferences, and IAFUserRole interfaces define the access to the AFUserSS component. These interfaces support the following methods:

Site Server Personalization and Membership/ Directory Membership Manager This portion of the description describes the required settings in Site Server Commerce Edition used by the ReTA frameworks. This portion of the description also describes the steps involved in creating the required settings.
ReTA Reguired Settings The Membership Directory Manager is used to manage administration and access control for Membership Directory objects, including users and groups, and schema objects.
The Membership Directory stores objects used by all Site Server features.
The ReTA UserSS framework requires schema objects to be created. The schema objects required by the ReTA Frameworks are: Roles container 1000, RoleName attribute 1002, username attribute 1004, webUserId attribute, and a Role class. Figure 10 illustrates schema attributes and classes, with class "Role" and attribute "RoleName" shown.
Required Container, Class, and Attribute Setup Instructions Users may have different roles within the system. In Site Server ReTA takes advantage of this by creating a Container "Roles" that contains different "Roles" or different objects of the class "Role". These "Roles" have attributes such as a default start page. Therefore different "Roles"
(different objects of the class "Role") such as "Operator" or "Customer" may both have a default start page attribute that may point to different URL's.
The Site Server portion of the present description details how to setup a Container, Class, and Attributes. The following lists the steps involved to setup the required attributes for the ReTA
Frameworks to integrate with Site Server.
Using the Site Server Console, right click on the Membership Directory Manager folder.
~ Select New - Container, then type in Roles for the Container name.
~ Figure 11 illustrates the creating of Container "Roles". Right click on Membership Directory Manager 1100 and select New 1102 - Container 1104. After creating the Container "Roles", create the attribute "DefaultStartPage", "username", webUserId", and "RoleName" in the Schema. To create these attributes expand the Admin Container under the Membership Directory Manager.
~ Right click on the Schema folder 1200 and select New 1202 - Attribute 1204 (See Figure 12) ~ Define the class "Role" the same way by right clicking on Schema and selecting New -Class.
~ Select the "common-name" as a required attribute, also select the "DefaultStartPage" as an attribute but do not make it required.
~ Create the Roles for our Application, "Operator" and "Customer".
~ See Figure 13, which illustrates the adding of different Roles. Right click the Roles Container 1300 under the Membership Directory Manager folder 1302. Select New - Object 1306, select "Role" for the class of object to create, type the name of the object i.e. "Operator", add the attribute "DefaultStartPage" by clicking Add Attribute button and enter the URL.
~ Once these have been created, a member of the system can be assigned to a "Role" and the ReTA Framework required attributes can be added to the user. Figure 14 illustrates an example showing the attributes 1400 of member "Joe Bloggs" (Note RoleName).
EVENT HANDLER FRAMEWORK DESIGN
Figure 15 illustrates a method 1500 for handling events in a system. In operation 1502, an event which includes metadata is recognized. Next, in operation 1504, the metadata of the event is read and, in operation 1506 a table look-up is performed for information relating to the event based on the metadata. The information includes a severity of the event and further information such as a type of the event, and a location where the event occurred. In operation 1508, a message is displayed either in-line in a currently depicted display or in a separate display based on the severity of the event.
Optionally, the event may additionally be indicated to components of the system other than the component in which the event occurred. The type of the event may be a database error, an architecture error, a security error, and/or an application error. Further the location of the event may be at least one of a method and an object where the event occurred. Also, the information may further relate to a code associated with the event.
The message may include the information relating to the event. In additionally, the message may also include a time during which the event occurred. Further, the message may include a string altered based on a user profile. The following material provides a more detailed description of the above-described method.
This portion of the present description details the ReTA Event Handler framework design from the perspective of the application developer. The role of this framework is to provide services to manage the informational, warning and error events that an application may raise. These services include:

~ Presenting the user with an understandable event explanation.
~ Informing other Components when errors happen (for example to restore transactional data to a consistent state) using a Publish/Subscribe mechanism.
~ Logging informational, warning and error event messages.
The Event Handler uses an Event Reference meta-data database table to maintain information about the types of events in an application and the policy for dealing with them. This gives a flexible approach and the event messages, the severity and other policies for the events can be changed during operations.
Phase 2 - Event Handler Enhancements For phase 2, Event Handler consists of the following enhancements:
~ The Event Handler framework is componentized. It no longer maintains references to any of the other framework components. Internally, the Event Handler continues to use the persistence light framework to log events to the database.
~ As in phase 1, it can be used as a Session level component. As an enhancement for phase 2, the Event Handler framework can be used as a stateless page level component. This means that a new instance of the component is created at the beginning of each ASP page and is released at the end of each page.
~ The Event Handler framework no longer requires Event Collection components as parameters to implement event handling, which only allowed handling events at the page level. In phase 2, the new method "processSingleEvent" takes the parameters of a single event as its input, which enables handling events at the occurrence of the event.
~ As in phase 1, The Event Handler can format error descriptions in HTML. As an enhancement for phase 2, the Event Handler can return the error message as a string and enables the application to implement client specific formatting (HTML or other).
~ The process event method no longer calls the ASP redirect method. Instead, it returns the severity level code. On return, the application logic determines whether to redirect to the error page or display the error in-line in the current page.
~ The Translator is no longer a separate component. Instead, it is a Java class inside the Event Handler component.

Event Handler Framework Description With reference to Figure 15.1, the ReTA Event Handler Framework 1530 manages the informational, warning and error events that an application raises. The following describes the ReTA event handling sequence:
1) The events) occurs ~ When an event occurs the following event information is recorded:
o event type (defined in database Event Reference table), for example:
~ database error ~ security error ~ architecture error ~ application error o event location:
~ method and object name where the event occurred o event code (sub-type):
~ SQL error code, ~ application error code - mapped to a unique description in the database ~ architecture error code - mapped to a unique description in the database o event context:
~ Any relevant information about when the event occurred stored in a tagged ~ name value pair format. Eg. [OrderNumber=1][Description--"Repeat Order"]
If the event occurs within a Java class inside a COM object, use the Java exception mechanism by throwing an AFEventException. If the exception occurs elsewhere, call the add method on the Event Collection passing the event information.
~ Each method defining a COM component interface captures these event exceptions and either adds them to an Event Collection component or directly calls a method on the Event Handler component.
~ Events are processed from the ASP page by calling the process method of the Event Handler. Events can also processed from the point where the event occurred by calling the "processSingleEvent" method of the Event Handler.

2) The Event Handler processes the event(s):
~ For each event, set the user id and current page ~ For each event, retrieve the event severity from the event handler's "translator" class.
This class caches in memory all event descriptions and severity levels retrieved from the event reference database table.
~ Add the events to the Event Handler context.
~ Implement the persistence policy on the events - events are logged in a batch.
~ Return the severity of the most severe event to the caller. The caller is responsible for either redirecting to the error page or displaying the event in-line in the Current Page.
3) Display the event:
~ Use the Event Handler component to generate the error message. This message can contain context information describing when the event was created.
~ Create the HTML formatting and display the event message.
~ The Error Message is either displayed in-line in the current page or in a separate error page.
4) The Event Handler generates error display message:
~ Get the event with the highest severity level from its event context.
~ If the most severe event is "fatal", display the user description associated with the event.
Broadcast a SESSION ABORT message using the Publish/Subscribe mechanism. Any component that is interested in these events must implement the IAFEventListener interface and register with the Event Broadcaster component as interested. To do this they call the addListener method of the Event Handler component.
If the most severe event is "logical unit of work", display the user description associated with the event. Broadcast an ACTIVITY ABORT message using the Publish/Subscribe mechanism.
~ If the most severe event is "warning", display the user description associated with the event.
Note: The user event descriptions are retrieved from the database either on session start or on demand and are cached by the Translator class. When generating the event description page, this description is requested from the Translator. Event descriptions can have embedded context parameters. When generating the event description page, the event handler replaces these parameters with their values specified when creating the event.
Database Tables S
The Event Handler uses two database tables: The T AF EventReference 1534 is a static table that describes the Event meta-data, giving the policies for each event type.
The policies include:
~ The message that is displayed to the user. These messages can contain data from the Context that is included when the event is generated.
~ The severity of the event. The severity can be Information, Warning, Error and Fatal.
~ Whether to persist the event in the database event log.
The T AF_EventLog 1536 contains the log of the events that occurred. The following information is logged:
~ Event type and Code ~ The location where the event occurred. Le. ASP, Object name and Method Name.
~ The user that raised the event.
~ The datestamp.
~ The context information giving other information about what caused the event.
Services The Event Handler Framework provides the following services:

Components and Classes The Event Handler Framework implements these services through the following COM and Class obj ects:
These components and classes are described in detailed in the following sub-portions of the description.
AFEventHandler The AFEventHandler component 1538 handles the events generated by the system.
Depending on the severity level, the event handler may redirect the user to another ASP
page and may abort the activity or session. The event handler also determines whether and when to log an event.
Methods The IAFEventHandler interface defines the access to the AFEventHandler component. This interface supports the following methods:
Persist all the events stored by the event handler to the database.
Gather associated event information. Call the add method to persist the events in the event log. Return the event severity to the caller.
This method is called either from the ASP page or from a Java class where the Event was trapped.
Examine the events and gather associated event information. Call the add method to persist the events in the event log. Return the event severity of the most severe event to the caller. The application developer calls this method from an ASP page to check the events generated during the scripting logic execution.
Return generated HTML which describes the severity of the error, gives the target URL
(depending on the severity - previous: page, _ activity start page or home page) and an error log. The Eeent Handler page calls this method.
The application developer can invoke this method to load all event descriptions in memory (normally used to speed access during user session).
Return error message as a string, which describes the severity of the error. This allows the application to determine the HTML
formatting used to display an error.
- If the event handler contains at least one fatal error, returns true.

AFEventCollection The AFEventCollection component contains a collection of events.
Methods The IAFEventCollection interface defines the access to the AFEventCollection component. This interface supports the following methods:
AFResult The AFResult component defines the result return by a method execution.
Methods The IAFResult interface defines the access to the AFResult component. This interface supports the following methods:

AFTranslator The AFTranslator class returns event reference information (based on the event type and event code.
Methods The AFTranslator class has the following methods:
AFEventException The AFEventException class contains the event exception information and is added to the AFEventCollection component for processing by the AFEventHandler component.
Methods The following AFEventException class methods are important for the application developer to understand:

-uen~txce ~-t& ~n~' Create the event exception class and populate i n ~f ~_ = It Wlth event type:
database error Java error security error architecture error application error event location:
method and object name where the event occurred event code (sub-type):
SQL error code, Application error code - mapped to a unique description in the database Architecture error code - mapped to a unique description in the database event context:
value of specific object Add the current event to an event collection.
AFEventReference The AFEventReference component 1540 contains the event reference information that is defined by the application through database table T AF'-EventReference. The architecture reads the event reference data into memory on session start.

T AF EventReference:

~~S;we ity The event severity level:
eve -1 : Information 2 : Warning 3 : Abort the activity ~' ~ 4 : Fatal, close the session ~1''ersi~s~t 1: if the event should be persisted in the event log.

. 0 : if the event should not be persisted ,es~i~pt~io Event description showed to the operator . ''' ~s -rD~s~ '~ Event description shown to the user. This do description can contain contextual information, which is specified by adding tag like [ParameterName) in the description. These tags are replaced by the event framework when displaying the event to the user.

~u~a ~ a Language of the description. This may be used by the mufti-language framework when developed. At this time, set to 'English' : , ~nt - Event context default value.

AFPersistableEvent The AFPersistableEvent 1542 contains the event information captured during the application execution that is persisted to the database table T AF-EVENTLOG.

T AF EVENTLOG:

SubActuit~y Name of Sub Activity where event occurred.
a a ~tho p ~ ~ Name of class method where event occurred.
~ a a a ~~bj ec~a Name of class where event occurred.
. s a ._ :bra f~ ' '_~.~ Name of ASP page where event occurred.

~Co f to ~t, Event context default value.
'~
~"~d o",;

:~ ser ~ m of user logged in when event occurred.

~L,astkUpdate USER FRAMEWORK DESIGN
Figure 16 depicts a method 1600 for managing user information. A site server is provided in operation 1602. The side server has information stored on it including preferences, roles, and details relating to users. A database separate from the site server is provided in operation 1604.
The database has information stored thereon including preferences, roles, and details relating to the users. In operation 1606, an identity of one of the users is authenticated. A single interface is displayed in operation 1608, which provides the user access to both the site server and the database upon authentication of the identity of the user. In operation 1610, the user is allowed to view and change the information that is stored on the site server and the database and'that is associated with the user. The single interface is tailored in operation 1612 based on the information associated with the user.
The identity of the user may be authenticated by verifying a user name and a password, a secure sockets layer (SSL) certificate, and/or a log-in form. Further, the preferences relating to the users may include a currency in which monetary values are displayed and a language in which text is displayed. Also, the roles relating to the users may include a customer, a manager, and an employee. Additionally, the details of the users may include a user name and a legal name. The following material provides a more detailed description of the above-described method.
This portion of the present description details the ReTA User framework design from the perspective of the application developer. The primary role of this framework is to provide services that allow the application developer to maintain user preferences, roles and security.

In regards to security, the User framework provides User Authentication services through any of the standard Internet Information Server security methods:
~ Username/Password sent in clear text.
~ SSL Certificates ~ Windows NT Challenge/Response (Intranet only) ~ HTML Forms login (Site Server version only) Once the user has been authenticated, the User framework provides services for accessing:
~ User information - NT username, Real Name.
~ User Preference information - For example Language, Currency (These are configurable) ~ User Role information (e.g. Customer, Manager, Employee) ~ User Role Preference information 1 S There are two implementations of the User Component: One is database driven and the other interfaces with Site Server Personalization and Membership directory.
User Framework Description With reference to Figure 16.1, the User framework 1630 enables two approaches to maintaining , user information. The framework supports two approaches by exposing a single set of interfaces that can be used by either of the two user framework components. With the AFUserSS
component 1632, the framework interfaces with the Microsoft Site Server products Personalization and Membership Directory. For this user component, SiteServer holds and manages user information. With the AFUserDB component 1634, the framework interfaces with database tables. For this user component, database tables define the user information.
Services The User Framework provides the following services:

User Role User RoleName User Preferences User Role Preferences User Id User Name User RealName.
Components The User Framework implements these services through the following COM
objects:
These components are described in detailed in the following sub-portions of the description.
AFUserDB
The AFUserDB component holds the user role, preferences and details retrieved from the database. When created the user component retrieves the user NT login name, user details and constructs the user preference and user role objects.
Methods The IAFUser, IAFUserPreferences and IAFUserRole interfaces define the access to the AFUserDB component. These interfaces support the following methods:

AFUserSS
The UserSS component interfaces with the SiteServer personalization and membership services.
This component uses SiteServer to handle the user security, role and preferences.
Methods The IAFUser, IAFUserPreferences, and IAFUserRole interfaces define the access to the AFUserSS component. These interfaces support the following methods:

PERSISTENCE FRAMEWORK DESIGN
Figure 17 illustrates a method 1700 for managing business objects in a system that includes a plurality of sub-activities which each include sub-activity logic adapted to generate an output based on an input received from a user upon execution, and a plurality of activities which each execute the sub-activities in a unique manner upon being selected for accomplishing a goal associated with the activity. First, in operation 1702, an identifier and a reference to a business object are received from one of the sub-activities upon the execution thereof.
In operation 1704, a database is accessed and data from the database is retrieved based on the identifier. The business object is created and populated with the data retrieved from the database in operation 1706.
The data may be stored on the database in tables. Further, the created business object may replace an existing business object. Additionally, the identifier may identify a customer and the business object may be a customer object. Also, a business object referenced by one of the sub-activities may be removed upon the execution thereof.
The business object may be a Visual Basic business object. In another aspect of the present invention, the business object may be a Java business object. The following material provides a more detailed description of the above-described method.

This portion of the present description details the ReTA Persistence framework design from the perspective of the application developer. The role of this framework is to provide services that interact with application databases) to create, retrieve, update and delete business objects.
Persistence Framework Description The ReTA Persistence framework provides a transparent and flexible mapping of the business object attributes to relational database tables. To implement this "business object to database table" mapping, the framework is tightly integrated with all business objects.
The framework exposes abstract methods that the application developer implements in the business objects. In contrast with the other ReTA frameworks, the Persistence framework is not implemented as a separate component. The Persistence framework is a set of local language classes available in Java or Visual Basic. Figure 17.1 shows a SubActivity component 1730 using the Persistence framework 1732 to retrieve a Customer Object 1734 from the Database.
Services The Persistence Framework provides the following services:

Classes The Persistence Framework implements these services through the following Java or Visual Basic Classes:
These classes are described in detailed in the following sub-portions of the description.
AFPLPersistableObj The AFPLPersistableObj abstract class contains methods called by the application developer objects to manage attribute values common to all persistable business objects (user id and last update timestamp). In addition, the AFPLPersistableObj class represents the superclass of a persisted object. In order to persist a business class; the application developer extends AFPLPersistableObj and implements the AFPLPersistableObj abstract methods.
The AFPLPersistableObj defines the following methods:

Return the column names common to all persistable business objects (user id and last update timestamp). The application developer invokes this method from the constructor method of a business object.
Return attributes common to all persistable business objects (user id and last update timestamp). The application developer invokes this method from the getPersistedAttributes method of a business object.
Abstract method that all Business Objects must implement. If the passed in attribute is orie of the attributes common to all persistable business objects (user id and last update timestamp), compare the passed in value to the currently held attribute value. The application developer should also invoke the superclass isEqual=
Abstract method that all Business Objects must implement. Populate the Business Object using the result set passed as an attribute. The application developer should also invoke the superclass newFrom method to populate the UserId and lastUpdate attributes.
Abstract method that all Business Objects must implement. Return the value of the attribute passed as parameter Abstract method that all Business Objects must implement. Set the value of the attribute passed as parameter Set the user id value get~Llser ~l' ~ ' ~ ~ Return the user id value seti eSta . P Set the last update timestamp value ge 'T y e~.,tarnp Return the last update timestamp value.

sets ~ her ~ ~rne.-St Adds the last update timestamp value ~ . ~ . t~~bj and user ~._ s : w _.

p id to the passed in persistable business object.

The application developer invokes this method from the setUserIdTimeStamptoObj method of a business object.

get~o> > _ ~ _ ~ . Return the database table column ~ a~es names.

ge ' ersi~stedAt~ ~bu~Return all the attributes to persist.
es The application developer invokes the addPersistedAttribute method of the super class to add user id and last update timestamp attributes.

ge : ~y .. ~ a Return the primary key field name.--.e ~ eye t es Return all the primary key values.
- __ gets . ey a ibun - Return vector of all key attiibutes~
-ctQ _ .

et~ ' -a t~~ib ~ ~ ~s Return the array of all key attributes ~ _ Return the name of the database table associated with this business object=

co ~ ~= ~ a ~ Returns a comma-separated list of all columns corresponding with this class.

attrb F ~ ~e F : ~ ~ Returns a comma separated list of a attribute values for SQL insert command.

a 9 ' 'buttes 'or p Returns a comma separated list of t at attribute name = attribute value pairs for SQI; update command.

cond~t~~ ~~or p=d~a Returns the 'where' clause for SQL
e ' -a ~ e= update or remove command (both are equal).

AFPLExtent The AFPLExtent class provides the mapping between the business object and its associated database table. In addition, the AFPLExtent class represents the domain defined by the visible part of the database table for the specified user. This class holds the passed in database URL, username and password used during the access to the database. Lastly, the AFPLExtent class manages the database connection.
Methods The AFPLExtent class implements the following methods used by the application developer from business factory objects:
VBPersistObj The VBPersistObj interface class contains methods that need to be implemented on every VB
Business Object.
The application developer implements the following methods from their business object:

VBExtent The VBExtent class provides the mapping between the business object and its associated database table. In addition, the VBExtent class represents the domain defined by the visible part of the database table for the specified user. This class holds the passed in database URL, username and password used during the access to the database. Lastly, the VBExtent class manages the database connection.
Methods The VBExtent class implements the following methods used by the application developer from business factory objects:
SESSION FRAMEWORK DESIGN

Figure 18 illustrates a method 1800 for persisting information during a user session. First, in operation 1802, a session is initiated upon a user accessing a predetermined starting page. A
current page accessed by the user is then tracked in operation 1804 while browsing a plurality of pages during the session. In operation 1806, a record is maintained of a page previously accessed by the user during the session. Information is persisted in operation 1808.
This information is selected from a group of items such as user identifier, a time of a most recent user action during the session, activity components accessed during the session, and business components accessed during the session. During the session, the current page, previous page record, and information are provided to at least one activity component in operation 1810. Also in operation 1810, the activity component generates output based on input provided by the user via the plurality of pages.
In one embodiment of the present invention, the activity components to which the current page, previous page record, and information are provided may be selectively determined. In addition, the activity component may be provided an indication as to whether the user is permitted to access each of the pages. In such a case, the activity component may also be provided the indication as to whether the user is permitted to access each of the pages based on the previous page record.
In another embodiment of the present invention, the information may also include the user identifier. In such an embodiment, user preferences may be looked up based on the user identifier with the information including the user preferences. Also, in order to identify the persisted information, references to activity components, business components, a user component, a tracking manager component, a system preference component, and an event handler component may be employed. The following material provides a more detailed description of the above-described method.
This portion of the present description details the ReTA Session framework design from the perspective of the application developer. The primary role of this framework is to provide services to handle the stateless nature of Internet. By default, the Internet does not provide services for maintaining information between pages. Without these services, it would not be possible to implement most eCommerce functionality. For example, session level state is necessary to implement eCommerce functionality where a customer can select products on multiple product description pages and then submit a complete product order request from a confirm order page. The ReTA Session framework leverages the Internet Information Server /
Active Server Page (IIS/ASP) session object, which is automatically created when a user who has no open IIS sessions requests a Web page.
Session Framework Description Figure 18.1 illustrates a Session Flow Diagram - On Session Start. As shown, a Session framework 1830 operates in the MTS Runtime Environment 1832. Figure 19 illustrates a Session Flow Diagram - On Start ASP Page. Again, the Session framework 1900 operates in the MTS Runtime Environment 1902. The ReTA Session framework provides services required throughout a user session. The user creates the Session framework at log on and removes the Session framework at log off. During the lifetime of the user session, application and architecture components require certain data to persist. This framework provides services to store and retrieve all information needed for a particular user session. This information may persist throughout the user session. The Session framework also provides services to uniquely identify the user and enforce access rights.
The user information that the Session framework persists, in memory, between Active Server Page requests includes:
~ User id o Identifies session user ~ Last page o Last page accessed by the session user.
~ Current page o Current page accessed by the session user.
~ Last connection time:
o Session user's last connection time.
~ Current activity:
o Activity currently being executed by the session user (refer to activity framework design) ~ Activity Components o All activity components accessed during user session ~ Business Components o All business components accessed during user session required by multiple activity components.
Note:
This framework uses the Active Server Page's Session Object. Thus, the framework only works with browsers that accept cookies. For other browsers (or if cookies are disabled), a new ASP
Session Object may start for each web page.
Services The Session Framework provides the following services:

Components These components are described in detailed in the following sub-portions of the description.
AFSession The AFSession component maintains the user's session state information. To maintain the state information, this component holds references to activity components (logical units of work -application flow logic), business components (business logic required across activity components), user component (user information), tracking manager component (web page access security and web page flow control information), system preference component (system preference information) and event handler component (event handler) created during the user's session.
From the application developer's perspective, the state maintenance work performed by the AFSession component is transparent. The application developer leverages the session services through populating the database tables with the client specific information.
Methods The Session Framework implements these services through the following COM
objects:

The IAFSession, IAFEventBroadcaster and IAFContext interfaces define the access to the AFSession component. These interfaces support the following methods:
. . .

':Session St>art Start session - Called by ASP (global.asa _.u$

Session OnStart ).

S: pop Stop session - Called by ASP (global.asa Session OnStop).

Start a ~.e This method is called by ASP script logic ~ at the start of -;
each page. It is used to broadcast a pageStart event-to all the listeners (activity components) that have registered as interested in pageStart events. It also stores this page as the current page and moves the existing current page into the last page (information'-held by the session's "tracking" object).

a . , . ' cg This method is called by ASP script logic r at the end of each page. It is used to broadcast a pageEnd event- o all the listeners (activity components) that have registered as interested in pageEnd events. .

. r This method is-called when he session is to be aborted.

This method calls the abort-method on all activity:

components known to session (held by the session's "activity context" object):, SetCurrent~l'.'~ag-Sets the current Active Server Page (held by the session's "tracking"-object).

a ~Gu~ en ' Returns the current Active Server Page (held ag- in the' session's "tracking" object).

Gets-ast9' Returns the last Active Server Page accessed age in the session (held in the session's "tracking'-' object).

a etS.ess-i~ Update the sessionId attribute.
c1 -.~ r k G. tSession= Returns the current session Id.
d-~ ~

,.

Current~ct Sets the current activity Page (held in ~~~ty the session's a ~.~ ' "tracking" object).

GE a Cu eia~ Returns the instance of the current activity Ac ~ ' (held in the session's "tracking" object).

Get ~t~ ~' Returns the instance of the requested activity (held by the session's "activity context" object).

Is c=tivia y Ask session if it has a reference to the a ~ ontext requested activity (held by the session's "activity context"
object). If found, returns true, else returns false.

ddb ct~ viaty Add the requested activity (references held by the session's "activity context" object).
Set the requested activity to the current activity (held in the session's "tracking" object).

a e- ~ t' ~ Remove the current activity (held by the session's "activity context" object).

~efil a s ' age Returns-the next web page to access for the current activity.(information held by the "tracking manager"

component).

a se Returns the "user" component (information associated with the current logged in user).

'e :ser Sets the user for the current session.
Returns an integer indicating success or failure.

-t raclci3n~ Returns the "tracking manager" component.
: . =anager ' en = r ~nc~IerReturns the "event handler" component:

~: s emP sere Returns the "system preference" component.
. : : ce lOG

AFSystemPreferences The AFSystemPreferences component contains system preferences (held during the session).
This component uses the ReTA persistence framework to read the system preferences from the database ("system preferences" table).
Methods The IAFSystemPreferences interface defines the access to the AFSystemPreferences component.
This interface supports the following methods:
Reads and stores "system preference" data from "system preferences" table.

Returns the application's ASP root location (as defined in from "system preferences" table).
AFTrackingManager The AFTrackingManager component provides page sequence security, dialogue flow and activity flow functionality for the session framework.
Pie se9uence security The page sequence security is defined in the following tables:
Table "Authorized Destination Page " 1834:
Define for each page, the pages that are allowed to be accessed. If no authorized destination pages are defined, the page is authorized to access any page.
Table "Authorized Source Page" 1836:
1 S Define for each page, the pages that are allowed to access it. If no authorized source pages are defined, the page is authorized to be accessed by any page.
Dialogue flow The dialogue flow is defined in the following table:
Table "Destination For Action " 1838:

Define the action flow between the web pages (i.e., which ASP is open when a specified push button is clicked during a specified activity).

' ~~- ~' Unique id Cure ~ t~P~'"a~geName of the current page Action Name of the UI widget, which triggers the ..
~ action.

,::

~-1c~>'~t~y Name of the activity where m- the event is triggered ~ 8s ~~atkionPag.-Name of the page to open Activity flow The activity flow is defined in the following table:
Table "Page OfActivity" 1840:
Define the automated activity switching when the user jumps from one web page to another.
Methods The IAFTrackingManager interface 1904 defines the access to the AFTrackingManager component. This interface supports the following methods:
Determines if the previous page is in the list of allowable sources for this page (as defined in "Authorized Source Page" table). If access is allowed, returns true. Else, returns false.

AFBrowserInfo The AFBrowserInfo component contains the user's browser information.
Methods The IAFBrowserInfo and IAFEditable interfaces define the access to the AFBrowserlnfo component. These interfaces support the following methods:

USER INTERFACE FRAMEWORK DESIGN
Figure 20 illustrates a method 2000 for generating a graphical user interface.
A form is initially created in operation 2002. The form includes a plurality of attribute rules dictating a manner in which user interface objects are situated thereon. In operation 2004, a plurality of user interface objects are selected. A page is generated in operation 2006 with the selected user interface objects situated on the page in accordance with the attribute rules of the form. JavaScript actions are attached to the selected user interface objects in operation 2008. The JavaScript actions are capable of being executed upon detection of a user action involving one of the user interface obj ects.
The user interface objects may include one or more of the following: a push button, a text box, a text area, a radio button, a check box, a drop down, a blank item, a user interface list, and a static table. The user action may include at least one of clicking on one of the user interface objects, changing text in one of the interface objects, exiting a text box of one of the interface objects.
Further, the user action involving one of the user interface objects may cause a predetermined event. Optionally, the page may be an HTML page. The following material provides a more detailed description of the above-described method.
This portion of the present description details the ReTA User Interface (UI) framework design from the perspective of the application developer. The role of this framework is to provide services that generate the HTML code for UI widgets and attach Javascript actions to UI widgets.
The UI framework exposes these services through a set of Component Object Model (COM) objects. The application developer uses these UI COM objects and their services through scripting logic added to the application's Active Server Pages (ASP).
User Interface Framework The User Interface framework provides components for generating HTML. An HTML
page is generated from a combination of the various UI Components. Figure 20.1 shows the steps for generating a HTML page consisting of a form 2030 with a TextBox 2032, a DropDown list 2034 and a PushButton 2036.
The User Interface Framework provides the following services:
nera~te I.l IteriisForm -- -.

v Push Button m T ext Box (single-line entry field) Text Area (mufti-line entry field) Radio Button group Check Box Drop Down List Box Blank Item Static Table Single-Select List Box n~rate a~ i JavaScript - action shell JavaScript - data type validation -JavaScript - data range validation JavaScript - automatic navigation action - T

~ era 'age 'o mat Cascading Style Sheet ' Form (grid layout for form elements) The User Interface Framework implements these services through the following COM objects:

These components are described in detail in the following sub-portions of the description.
AFForm The AFForm component is used in conjunction with form element widgets to build complex user interfaces. Initially, the application creates an instance of the form component and sets its attributes. Following this activity, the application creates instances of the associated form element widgets and adds them to the form using the form's add method. As another service, the form component provides methods to help align all associated form element widgets properly on the page.
MPthnri c The IAFForm interface defines the access to the AFForm component. This interface supports the following methods, which the developer uses to create a form.

AFPushButton The AFPushbutton component can only be used in conjunction with a AFForm component (the form's generate method iterates through the generate method for all form element widgets to build the necessary HTML code). An action object can be attached to a AFPushButton component. (Refer to AFHardCodedASPAction and AFJScriptAction for details).
Methnc~~
The IAFPushbutton and IAFUIActionItem interfaces define the access to the AFPushbutton component. These interfaces support the following methods, which the developer uses to create a push button form element.

t Lefl~ Align the button left t ' ~ =t ~ Align the button right ~e E ~te ! Align the button centrally c~p.5i~ Strin.~ Set the text that may appear on the button.
The button may stretch its size to fit this text :: t name S~t~ing~Set the name of the button.

t se = s~' eset~B:uttox()Set the button to be the default HTML
reset button. When this method is called, clicking on the button causes the .~
values of all HTML form elements in the form to which rr this button belongs to be reset to their values when the page was initially loaded.

Resets the above method. The button returns to being a etg ot~' ~,se ~ normal Widget item.
: a ~ ~on~

t ad 8 ct,'o ~ Adds an action to the button.
ct'o~z~) AFTextBox The AFTextBox component can only be used in conjunction with a AFForm component (the form's generate method iterates through the generate method for all form element widgets to build the necessary HTML code). An action object can be attached to a AFTextBox component.
(Refer to AFHardCodedASPAction and AFJScriptAction for details).
Methods The IAFTextBox and IAFUIActionItem interfaces define the access to the AFTextBox component. These interfaces support the following methods, which the developer uses to create a Text Box form element.

mt .. ~a~c-~le~(i~nt); Set the maximum length of text in h the box i ... s~ e(~i~ri~t Set the visible size of the text box ~

B a de[ >~~l text Set the default text in the text box . 'ng E ~ data w alid~a~ Adds data validation to the onBlur event io . . -, of the text ~anag - order bo box.
~ t E d, ~ . per b~u~nd Data Type validation includes:

Numeric - DV TYPE ISNUMERIC, Alpha - DV TYPE ISAPLHA, or Date - DV TYPE ISDATE.

None - DV NONE

Range validation* includes all 8 permutations - <less than> through <(less than equal) and (greater than equal)>. _ DV RANGE LESSTHAN, DV_RANGE LESSTHANEQUAL, DV RANGE GREATERTHAN,- -DV RANGE GREATERTHANEQUAL, DV RANGE LESSTHAN GREATER'THAN,'== -DV-RANGE LESSTHANEQUAL GREATERTH

AN, .~. -;

DV RANGE LESSTHAN GREATERTHANEQU
r. _ - -DV RANGE LESSTHANEQUAL GREATERTH

ANEQUAL _ * Note: Range validation only occurs for.- "Numeric"

data type.

~

Int setTe~tBo~ f This method sets a private member variable ~ d~cator >'. = to an t integer value, this value indicates if the textbox may be the only textbox on the form that is to be generated.

IiitaddActio . ct~~oAdds an action to the onChange event : ) of the text ,~ ~ _~

box.

AFTextArea The AFTextArea component can only be used in conjunction with a AFForm component (the form's generate method iterates through the generate method for all form element widgets to build the necessary HTML code). An action object can be attached to a AFTextArea component.
(Refer to AFHardCodedASPAction and AFJScriptAction for details).
Methods The IAFTextArea and IAFUIActionItem interfaces define the access to the AFTextArea component. These interfaces support the following methods, which the developer uses to create a Text Area form element.

Adds data validation to the onBlur event of the text box.
Data Type validation includes:
Numeric - DV TYPE ISNLTMERIC, Alpha - DV_TYPE ISAPLHA, or Date - DV TYPE ISDATE.
None - DV NONE
Range validation* includes all 8 permutations - <less than> through <(less than equal) and (greater than equal)>.
DV-RANGE LESSTHAN, DV RANGE LESSTHANEQUAL, DV RANGE GREATERTHAN, DV RANGE GREATERTHANEQUAL, DV-TRANGE: LESSTHAN GREATERTHAN;-DV RANGE LESSTHANEQUAL GREATERTHAN, DV RANGE LESSTHAN GREATERTHANEQUAL, DV RANGE LESSTHANEQUAL GREATERTHAN
EQUAL
* Note.' Range validation only occurs for "Numeric "
data.type.
Set the name of the forcin onto which the textArea object is being added. This method is mandatory for the correct functioning of the method:-. - _ -Set the maximum size of text, which can be entered into the text area. When this value is exceeded, a pop up window may warn the user that they have exceeded the maximum size and that their entry may be truncated to the maximum value (which is set here). The default value is 500.
Add an action to the textarea.
AFRadioButton The AFRadioButton component can only be used in conjunction with a AFForm component (the form's generate method iterates through the generate method for all form element widgets to build the necessary HTML code). An action object can be attached to a AFRadioButton component. (Refer to AFHardCodedASPAction and AFJScriptAction for details).
Radio buttons are used in groups. Because of the complexity of the client side script required in conjunction with the radio button component, the application developer must call the generateRadioButtonScript () method on the AFScriptgenerator object on the page wherever radio buttons are used. This method takes as inputs:
~ The name of the form object to which the radio button has been added.
~ The name of the radio button group within the form ~ The default value the radio button group may pass to the page view if nothing is selected by the user.
~ The return value from this method is the generated HTML and Javascript which is written to the client browser within the <HEAD> </HEAD> tag of the page.
Methods The IAFRadioButton and IAFUIActionItem interfaces define the access to the AFRadioButton component. These interfaces support the following methods, which the developer uses to create a Radio Button form element.

Set the number within the group which this radio button is assigned Returns the group number of the Radio Button Add an action to the radio button.
AFCheckBox The AFCheckBox component can only be used in conjunction with a AFForm component (the form's generate method iterates through the generate method for all form element widgets to build the necessary HTML code). An action object can be attached to a AFCheckBox component. (Refer to AFHardCodedASPAction and AFJScriptAction for details).
I~iTPthnrlc The IAFCheckBox and IAFUIActionItem interfaces define the access to the AFCheckBox component. These interfaces support the following methods, which the developer uses to create a Check Box form element.
AFDropDown The AFDropDown component can only be used in conjunction with a AFForm component (the form's generate method iterates through the generate method for all form element widgets to build the necessary HTML code). An action object can be attached to a AFDropDown component. (Refer to AFHardCodedASPAction and AFJScriptAction for details).
Methods The IAFDropDown and IAFUIActionItem interfaces define the access to the AFDropDown component. These interfaces support the following methods, which the developer uses to create a Combo Box form element.
AFBIankItem The AFBIankItem component can only be used in conjunction with a AFForm component (the form's generate method iterates through the generate method for all form element widgets to build the necessary HTML code).
M athnr~ a The IAFBlankltem interface defines the access to the AFBIankItem component.
This interface supports the following methods, which the developer uses to create a blank item form element.
AFUIList The AFUIList component creates a sophisticated DHTML based single-select list box form widget. The list box widget consists of a fixed headings row and a scrollable set of data. rows.
The list box widget supports data entry through data row level associated check boxes and text boxes. In addition, action objects can be attached to the list box and are generated in the same way as described for other form components. (Refer to AFHardCodedASPAction and AFJScriptAction for details).
The list box widget refreshes itself by passing (as parameters) the selected item and the state of all check boxes and all text boxes. The AFUIList view captures the values and updates the state of the list box to reflect the user choice.
Note:

The sophisticated functionality provided by this widget requires DHTML
support. As of this portion of the present descriptions release date (Phase 2), only Internet Explorer 4.0 provides the necessary DHTML services. Therefore, this component is not cross-browser compatible.
Methods The IAFUIList interface defines the access to the AFUIList component. This interface supports the following methods, which the developer uses to create a single select list box.

AFThumbNailContainer The AFThumbNailContainer component generates a set of thumbnail images. The thumbnails are used as iconic pushbuttons. The application developer defines the single click and double click action destinations in the ASP page by coding the JavaScript functions referenced by the AFThumbNailContainer "generate" method.
Methods The IAFThumbNailContainer interface defines the access to the AFThumbNailContainer component. This interface supports the following methods, which the developer uses to create a Thumbnail container.

AFStaticTable The static table component creates a standard HTML table with the parameters set by the developer through scripting logic added to application's ASP.
Methods The IAFStaticTable interface defines the access to the AFStaticTable component. This interface supports the following methods, which the developer uses to create a static HTML table.
Adds a data element to the static table. The integer value passed as the-second parameter specifies the color to be applied to this cell of the table.
0 indicates that it should be white;
1 indicates the default highlighted color, 2 indicates the default AF Blue color, 3 indicates a gray color.
Set the number of data elements before an end of row is generated.
Returns the number of data elements in the table.
Set the width of the border, which may appear around the table. Valid values are 0 through 10.
Default is 0.

DEMANDE OU BREVET VOLUMINEUX
LA PRESENTE PARTIE DE CETTE DEMANDE OU CE BREVET COMPREND
PLUS D'UN TOME.

NOTE : Pour les tomes additionels, veuillez contacter 1e Bureau canadien des brevets JUMBO APPLICATIONS/PATENTS
THIS SECTION OF THE APPLICATION/PATENT CONTAINS MORE THAN ONE
VOLUME

NOTE: For additional volumes, please contact the Canadian Patent Office NOM DU FICHIER / FILE NAME
NOTE POUR LE TOME / VOLUME NOTE:

Claims (18)

What is claimed is:
1. A method for accessing services within a server without a need for knowledge of an application program interface of the server comprising the steps of:

(a) creating a role container;

(b) defining a role class;

(c) generating an attribute for the role class including a default start page attribute;

(d) in the role container, making a role object in the role class with the default start page attribute associated therewith; and (e) selecting a uniform resource locator for the default start page attribute.
2. A method as recited in claim 1, and further comprising the step of generating a plurality of attributes for the role container selected from the group of attributes consisting of a default start page attribute, a user name attribute, a user identifier attribute, and a role name attribute.
3. A method as recited in claim 1, and further comprising the step of generating a plurality of attributes for the role container including a default start page attribute, a user name attribute, a user identifier attribute, and a role name attribute.
4. A method as recited in claim 1, and further comprising the step of assigning a user to the role object.
5. A method as recited in claim 1, wherein a plurality of role objects are made in the role class each with a unique default start page associated therewith.
6. A method as recited in claim 5, wherein an operator role object and a customer role object are made.
7. A system for accessing services within a server without a need for knowledge of an application program interface of the server comprising:

(a) logic that creates a role container;

(b) logic that defines a role class;
(c) logic that generates an attribute for the role class including a default start page attribute;
(d) in the role container, logic that makes a role object in the role class with the default start page attribute associated therewith; and (e) logic that selects a uniform resource locator for the default start page attribute.
8. A system as recited in claim 7, and further comprising logic that generates a plurality of attributes for the role container selected from the group of attributes consisting of a default start page attribute, a user name attribute, a user identifier attribute, and a role name attribute.
9. A system as recited in claim 7, and further comprising logic that generates a plurality of attributes for the role container including a default start page attribute, a user name attribute, a user identifier attribute, and a role name attribute.
10. A system as recited in claim 7, and further comprising logic that assigns a user to the role object.
11. A system as recited in claim 7, wherein a plurality of role objects are made in the role class each with a unique default start page associated therewith.
12. A system as recited in claim 11, wherein an operator role object and a customer role object are made.
13. A computer program embodied on a computer readable medium for accessing services within a server without a need for knowledge of an application program interface of the server comprising:
(a) a code segment that creates a role container;
(b) a code segment that defines a role class;
(c) a code segment that generates an attribute for the role class including a default start page attribute;
(d) in the role container, a code segment that makes a role object in the role class wish the default start page attribute associated therewith; and (e) a code segment that selects a uniform resource locator for the default start page attribute.
14. A computer program as recited in claim 13, and further comprising a code segment that generates a plurality of attributes for the role container selected from the group of attributes consisting of a default start page attribute, a user name attribute, a user identifier attribute, and a role name attribute.
15. A computer program as recited in claim 13, and further comprising a code segment that generates a plurality of attributes for the role container including a default start page attribute, a user name attribute, a user identifier attribute, and a role name attribute.
16. A computer program as recited in claim 13, and further comprising a code segment that assigns a user to the role object.
17. A computer program as recited in claim 13, wherein a plurality of role objects are made in the role class each with a unique default start page associated therewith.
18. A computer program as recited in claim 17, wherein an operator role object and a customer role object are made.
CA002380641A 1999-07-30 2000-07-28 Application framework in an e-commerce architecture Abandoned CA2380641A1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US36473399A 1999-07-30 1999-07-30
US09/364,733 1999-07-30
PCT/US2000/020560 WO2001009752A2 (en) 1999-07-30 2000-07-28 A system, method and article of manufacture for a host framework design in an e-commerce architecture

Publications (1)

Publication Number Publication Date
CA2380641A1 true CA2380641A1 (en) 2001-02-08

Family

ID=23435833

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002380641A Abandoned CA2380641A1 (en) 1999-07-30 2000-07-28 Application framework in an e-commerce architecture

Country Status (4)

Country Link
EP (1) EP1210661A2 (en)
AU (1) AU6387200A (en)
CA (1) CA2380641A1 (en)
WO (1) WO2001009752A2 (en)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6718535B1 (en) 1999-07-30 2004-04-06 Accenture Llp System, method and article of manufacture for an activity framework design in an e-commerce based environment
US7100195B1 (en) 1999-07-30 2006-08-29 Accenture Llp Managing user information on an e-commerce system
US9400589B1 (en) 2002-05-30 2016-07-26 Consumerinfo.Com, Inc. Circular rotational interface for display of consumer credit information
US9710852B1 (en) 2002-05-30 2017-07-18 Consumerinfo.Com, Inc. Credit report timeline user interface
US8285656B1 (en) 2007-03-30 2012-10-09 Consumerinfo.Com, Inc. Systems and methods for data verification
US8127986B1 (en) 2007-12-14 2012-03-06 Consumerinfo.Com, Inc. Card registry systems and methods
US9990674B1 (en) 2007-12-14 2018-06-05 Consumerinfo.Com, Inc. Card registry systems and methods
US8312033B1 (en) 2008-06-26 2012-11-13 Experian Marketing Solutions, Inc. Systems and methods for providing an integrated identifier
US9256904B1 (en) 2008-08-14 2016-02-09 Experian Information Solutions, Inc. Multi-bureau credit file freeze and unfreeze
US8060424B2 (en) 2008-11-05 2011-11-15 Consumerinfo.Com, Inc. On-line method and system for monitoring and reporting unused available credit
US9147042B1 (en) 2010-11-22 2015-09-29 Experian Information Solutions, Inc. Systems and methods for data verification
US9607336B1 (en) 2011-06-16 2017-03-28 Consumerinfo.Com, Inc. Providing credit inquiry alerts
US9483606B1 (en) 2011-07-08 2016-11-01 Consumerinfo.Com, Inc. Lifescore
US9106691B1 (en) 2011-09-16 2015-08-11 Consumerinfo.Com, Inc. Systems and methods of identity protection and management
US8738516B1 (en) 2011-10-13 2014-05-27 Consumerinfo.Com, Inc. Debt services candidate locator
US9853959B1 (en) 2012-05-07 2017-12-26 Consumerinfo.Com, Inc. Storage and maintenance of personal data
US9654541B1 (en) 2012-11-12 2017-05-16 Consumerinfo.Com, Inc. Aggregating user web browsing data
US9916621B1 (en) 2012-11-30 2018-03-13 Consumerinfo.Com, Inc. Presentation of credit score factors
US10255598B1 (en) 2012-12-06 2019-04-09 Consumerinfo.Com, Inc. Credit card account data extraction
US9697263B1 (en) 2013-03-04 2017-07-04 Experian Information Solutions, Inc. Consumer data request fulfillment system
US9870589B1 (en) 2013-03-14 2018-01-16 Consumerinfo.Com, Inc. Credit utilization tracking and reporting
US10102570B1 (en) 2013-03-14 2018-10-16 Consumerinfo.Com, Inc. Account vulnerability alerts
US9406085B1 (en) 2013-03-14 2016-08-02 Consumerinfo.Com, Inc. System and methods for credit dispute processing, resolution, and reporting
US10664936B2 (en) 2013-03-15 2020-05-26 Csidentity Corporation Authentication systems and methods for on-demand products
US9633322B1 (en) 2013-03-15 2017-04-25 Consumerinfo.Com, Inc. Adjustment of knowledge-based authentication
US10685398B1 (en) 2013-04-23 2020-06-16 Consumerinfo.Com, Inc. Presenting credit score information
US9721147B1 (en) 2013-05-23 2017-08-01 Consumerinfo.Com, Inc. Digital identity
US9443268B1 (en) 2013-08-16 2016-09-13 Consumerinfo.Com, Inc. Bill payment and reporting
US10102536B1 (en) 2013-11-15 2018-10-16 Experian Information Solutions, Inc. Micro-geographic aggregation system
US10325314B1 (en) 2013-11-15 2019-06-18 Consumerinfo.Com, Inc. Payment reporting systems
US9477737B1 (en) 2013-11-20 2016-10-25 Consumerinfo.Com, Inc. Systems and user interfaces for dynamic access of multiple remote databases and synchronization of data based on user rules
US9529851B1 (en) 2013-12-02 2016-12-27 Experian Information Solutions, Inc. Server architecture for electronic data quality processing
US9390239B2 (en) 2013-12-20 2016-07-12 Sap Se Software system template protection
US10262362B1 (en) 2014-02-14 2019-04-16 Experian Information Solutions, Inc. Automatic generation of code for attributes
USD759690S1 (en) 2014-03-25 2016-06-21 Consumerinfo.Com, Inc. Display screen or portion thereof with graphical user interface
USD759689S1 (en) 2014-03-25 2016-06-21 Consumerinfo.Com, Inc. Display screen or portion thereof with graphical user interface
USD760256S1 (en) 2014-03-25 2016-06-28 Consumerinfo.Com, Inc. Display screen or portion thereof with graphical user interface
US9892457B1 (en) 2014-04-16 2018-02-13 Consumerinfo.Com, Inc. Providing credit data in search results
US10373240B1 (en) 2014-04-25 2019-08-06 Csidentity Corporation Systems, methods and computer-program products for eligibility verification
CA3050139A1 (en) 2017-01-31 2018-08-09 Experian Information Solutions, Inc. Massive scale heterogeneous data ingestion and user resolution
US10911234B2 (en) 2018-06-22 2021-02-02 Experian Information Solutions, Inc. System and method for a token gateway environment
WO2020008301A1 (en) * 2018-07-05 2020-01-09 Open Text Sa Ulc Systems and methods for communication flow modeling
US11257155B2 (en) * 2018-08-27 2022-02-22 Chicago Mercantile Exchange Inc. Apparatuses, methods and systems for a computationally efficient volatility index platform
US20200074100A1 (en) 2018-09-05 2020-03-05 Consumerinfo.Com, Inc. Estimating changes to user risk indicators based on modeling of similarly categorized users
US10963434B1 (en) 2018-09-07 2021-03-30 Experian Information Solutions, Inc. Data architecture for supporting multiple search models
US11315179B1 (en) 2018-11-16 2022-04-26 Consumerinfo.Com, Inc. Methods and apparatuses for customized card recommendations
US11238656B1 (en) 2019-02-22 2022-02-01 Consumerinfo.Com, Inc. System and method for an augmented reality experience via an artificial intelligence bot
US11941065B1 (en) 2019-09-13 2024-03-26 Experian Information Solutions, Inc. Single identifier platform for storing entity data
US11880377B1 (en) 2021-03-26 2024-01-23 Experian Information Solutions, Inc. Systems and methods for entity resolution
US12273310B2 (en) 2022-02-22 2025-04-08 Open Text Holdings, Inc. Systems and methods for intelligent delivery of communications
US11888793B2 (en) 2022-02-22 2024-01-30 Open Text Holdings, Inc. Systems and methods for intelligent delivery of communications

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692132A (en) * 1995-06-07 1997-11-25 Mastercard International, Inc. System and method for conducting cashless transactions on a computer network
US5815657A (en) * 1996-04-26 1998-09-29 Verifone, Inc. System, method and article of manufacture for network electronic authorization utilizing an authorization instrument
US20010054064A1 (en) * 1997-07-02 2001-12-20 Pallipuram V. Kannan Method system and computer program product for providing customer service over the world-wide web

Also Published As

Publication number Publication date
WO2001009752A3 (en) 2002-01-24
WO2001009752A2 (en) 2001-02-08
EP1210661A2 (en) 2002-06-05
AU6387200A (en) 2001-02-19

Similar Documents

Publication Publication Date Title
CA2380641A1 (en) Application framework in an e-commerce architecture
US6907546B1 (en) Language-driven interface for an automated testing framework
US6701514B1 (en) System, method, and article of manufacture for test maintenance in an automated scripting framework
US6502102B1 (en) System, method and article of manufacture for a table-driven automated scripting architecture
US7370335B1 (en) System and method for providing a public application program interface
US6792607B1 (en) Databinding using server-side control objects
US6163878A (en) Method and system for designing, generating and storing applications
US6714928B1 (en) Development system providing HTML database control object
US7146544B2 (en) Method and apparatus for supporting error handling in a web presentation architecture
US7454759B2 (en) Method, apparatus, and system for implementing a framework to support a web-based application
US7590972B2 (en) Role-oriented development environment
US7953760B2 (en) Computing system and method to implicitly commit unsaved data for a world wide web application
US8181152B2 (en) Portlet template based on a state design pattern
US7299274B2 (en) Method and system for management of multiple network resources
US7596523B2 (en) Method and apparatus for network-based portfolio management and risk-analysis
US7013306B1 (en) XML input definition table for transforming XML data to internal format
EP1269321B1 (en) Method and system for an automated scripting solution for enterprise testing
US7007266B1 (en) Method and software system for modularizing software components for business transaction applications
US20020174417A1 (en) Defining and creating custom data fields within process management software
WO2003029968A1 (en) Method, apparatus, and system for implementing view caching in a framework to support web-based applications
WO2007005378A2 (en) Business intelligence incorporated business process management system and method thereof
US20050086664A1 (en) Method and apparatus for transaction tracking in a web presentation architecture
US7158967B1 (en) XML output definition table for transferring internal data into XML document
US7885996B2 (en) Method, apparatus, and system for implementing notifications in a framework to support web-based applications
DuBois MySQL and Perl for the Web

Legal Events

Date Code Title Description
EEER Examination request
FZDE Dead

Effective date: 20151130