Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
6718535
Underwood
April 6, 2004
Title
System, method and article of manufacture for an activity framework design in an e-commerce based environment
Abstract
A system and method are provided for providing an activity framework. First, 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. Second, a plurality of activities are defined which each 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 by receiving user indicia. 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.
Inventors:
Underwood; Roy Aaron
(Long Grove,
IL
)
Assignee:
Accenture LLP
(Palo Alto,
CA
)
Appl. No.:
364164
Filed:
July 30, 1999
Current U.S. Class:
717/101
717/120
Current International Class:
G06F 9/44 (20060101)
Field of Search:
717/116,100,101,102,108,165,120,223
U.S. Patent Documents
4370707
January 1983
Phillips et al.
5333302
July 1994
Hensley et al.
5371852
December 1994
Attanasio et al.
5423032
June 1995
Byrd et al.
5437027
July 1995
Bannon et al.
5440719
August 1995
Hanes et al.
5530829
June 1996
Beardsley et al.
5623601
April 1997
Vu
5630069
May 1997
Flores et al.
5630131
May 1997
Palevich et al.
5659735
August 1997
Parrish et al.
5666502
September 1997
Capps
5673386
September 1997
Batra
5673387
September 1997
Chen et al.
5677997
October 1997
Talatik
5692132
November 1997
Hogan
5694540
December 1997
Humelsine et al.
5710884
January 1998
Dedrick
5724521
March 1998
Dedrick
5740427
April 1998
Stoller
5754173
May 1998
Hiura et al.
5754938
May 1998
Herz et al.
5754939
May 1998
Herz et al.
5758062
May 1998
McMahon et al.
5758074
May 1998
Marlin et al.
5764897
June 1998
Khalidi
5778169
July 1998
Reinhardt
5784553
July 1998
Kolawa et al.
5812669
September 1998
Jenkins et al.
5815657
September 1998
Bipinkumar et al.
5819265
October 1998
Ravin et al.
5819281
October 1998
Cummins
5819295
October 1998
Nakagawa et al.
5835087
November 1998
Herz et al.
5835911
November 1998
Nakagawa et al.
5844508
December 1998
Murashita et al.
5872973
February 1999
Mitchell et al.
5878432
March 1999
Misheski
5889520
March 1999
Glaser
5890161
March 1999
Helland et al.
5890175
March 1999
Wong et al.
5892898
April 1999
Fujii et al.
5930512
July 1999
Boden et al.
5937165
August 1999
Schwaller et al.
5949419
September 1999
Domine et al.
5956732
September 1999
Tsuchida
5956736
September 1999
Hanson et al.
5960200
September 1999
Eager et al.
5995114
November 1999
Wegman et al.
6014669
January 2000
Slaughter et al.
6016495
January 2000
Mckeehan et al.
6029178
February 2000
Martin et al.
6029195
February 2000
Herz et al.
6035323
March 2000
Narayen et al.
6044368
March 2000
Powers
6055538
April 2000
Kessenich et al.
6058260
May 2000
Brokel et al.
6058379
May 2000
Odom et al.
6061643
May 2000
Walker et al.
6101503
August 2000
Cooper et al.
6108670
August 2000
Weida et al.
6112228
August 2000
Earl et al.
6112240
August 2000
Pogue et al.
6115544
September 2000
Mueller
6137869
October 2000
Voit et al.
6141010
October 2000
Hoyle
6141647
October 2000
Meijer et al.
6151600
November 2000
Derick
6151610
November 2000
Senn et al.
6167564
December 2000
Fontana et al.
6182226
January 2001
Reid et al.
6185625
February 2001
Tso et al.
6195794
February 2001
Buxton
6199068
March 2001
Carpenter
6199079
March 2001
Gupta et al.
6202051
March 2001
Woolston
6208345
March 2001
Sheard et al.
6209000
March 2001
Klien et al.
6209033
March 2001
Datta et al.
6222535
April 2001
Hurd, II
6223221
April 2001
Kunz
6230160
May 2001
Chan et al.
6230194
May 2001
Frailong et al.
6230309
May 2001
Turner et al.
6233584
May 2001
Purcell
6237114
May 2001
Wookey et al.
6246410
June 2001
Bergeron et al.
6249905
June 2001
Yoshida et al.
6256659
July 2001
McLain et al.
6256678
July 2001
Traughber et al.
6260068
July 2001
Zalewski et al.
6266666
July 2001
Ireland et al.
6272673
August 2001
Dale et al.
6272678
August 2001
Imachi et al.
6282605
August 2001
Moore
6286028
September 2001
Cohen et al.
6301601
October 2001
Heller et al.
6304893
October 2001
Gish
6308188
October 2001
Bernardo et al.
6313835
November 2001
Gever et al.
6314434
November 2001
Shigemi et al.
6327677
December 2001
Garg et al.
6336118
January 2002
Hammond et al.
6401085
June 2002
Gershman et al.
6430556
August 2002
Goldberg et al.
6438514
August 2002
Hill et al.
6442620
August 2002
Thatte et al.
6473794
October 2002
Guheen et al.
Foreign Patent Documents
0398646
Nov., 1990
EP
0587394
Mar., 1994
EP
0643359
Mar., 1995
EP
WO 01/09752
Feb., 2001
WO
WO 01/10082
Feb., 2001
WO
WO 98/35297
Aug., 1998
WO
WO 98/35469
Aug., 1998
WO
WO 99/01826
Jan., 1999
WO
Other References
Akerley, J., Li N., Parlavecchia A., Programming with VisualAge for Java Version 2, IBM Redbooks, Nov. 1998, pp. 53, 57, 112, 122 295-326. .
Anonymous. Optimal Networks Partners With Shomiti Systems to Deliver Extended Application Analysis, press release dated Jul. 14, 1997, three-page text download from. .
Behroozi-Toosi et al., "Modeling of Computer Networks and Systems Using SES/Workbench," Proceedings of the Midwest Symposium on Circuits and Systems, May 1991, vol. SYMP. 34, pp. 992-996. .
Beta, M., Active Data Objects & ASP, Dr. Dobb's Journal, U.S. M&T Publ., May 1998, vol. 23, No. 5, pp. 88-91, 111-112. .
Conradi et al., "Version Models for Software Configuration Management," ACM, pp. 232-282, Jun. 1998. .
Dart, S., "Concepts in Configuration Management Systems," ACM, pp. 1-18, 1991. .
Dror, A., R. Lafore, "OS/2 Presentation Manager Programming Primer," 1990. McGraw Hill, Berkeley California. Chapter 7, pp. 165-192. .
Katzela, Modeling and Simulating Communication Networks: A Hands-O Approach Using OPNET, Mar. 1998, pp. 63-90. .
Knutson, "Building the Model Network," Byte, Oct. 1996, vol. 21, No. 10, pp. 101-102, 104. .
Law et al., "Stimulation Software for Communications Networks: The State of the Art," IEEE Communications Magazine, Mar. 1994, vol. 32, No. 3, pp. 44-50. .
Limprecht, R., "Microsoft Transaction Server," IEEE, Feb. 25, 1997. .
Lin et al., "Configuration Management with Logical Structures," ACM, pp. 298-307, 1996. .
MIL 3 Inc., "OPNET Tool Operations Manual," 1998, pp. ii-viii, 21Nt-48Nt, 127Pb-143Pb. .
Mishra et al., "Effect of Connection Rerouting on Application Performance in Mobile Networks," IEEE Transactions on Computers, vol. 47, No. 4, pp. 371-390. Apr. 1998. .
Muller, "Design and Conquer," Byte, Oct. 1996, vol. 21, No. 10, pp. 93-94, 96, 98. .
Van Norman, "WAN Design Tools: The New Generation Today's Wide-area Network Design Tools, with Enhanced Tariff Information, Analysis Capabilities and Functions, are Better Than Ever," Data Communications, Oct. 1990, vol. 19, No. 13, pp. 105-106, 108-110, 112. .
O'Conner, J., "Internationalization: Localization with ResourceBundles," Java Developer Connection, Online!, Oct. 1998. .
Rosove, "Training Requirements for Computer Programmers in Relation to System Development Phases," ACM, Proceedings of the Seventh Annual SIGCPR Conference, pp. 65-76, 1969. .
Spitzer, "Tiers Without Tears," DBMS Online, Jan. 12, 1998, pp. 1-5. .
Sun Microsystems: "I18N Resource Manager" Sun Documentation, Online!, Apr. 17, 1998, pp. 1-17. .
Template Software Inc., Web Componect Foundation Template, Using the Web Component (WEB), 1997, Version 8, Chapters 1-3. .
Template Software Inc., Workflow Template Process Template Developing a WFT Workflow System (WFT), 1997, Version 8, Chapters 1-10. .
Template Software Inc., "SNAP Foundation Template, Using the SNAP Developement Environment (SNAP DEV)." 1997, Version 8, Chapters 1-11. .
Vinoski, "Corba: Integrating Diverse Applications Within Distributed Heterogeneous Environments," IEEE Communications Magazine, Feb. 1997, pp. 46-55..~
Primary Examiner:
Nguyen-Ba; Hoang-Vu Anthony
Attorney, Agent or Firm:
Edwards; W. Glenn Oppenheimer Wolff & Donnelly LLP
Claims
What is claimed is:
1. A method for providing an activity framework comprising the steps of: (a) creating a plurality of sub-activities, wherein each of the plurality of sub-activities contains and executes business logic, the business logic being adapted to generate an output based on a logical unit of processing received by the plurality of sub-activities; (b) defining an activity, the activity including a plurality of web pages, such that the activity executes the sub-activities in a unique manner upon being selected for accomplishing a goal associated with the activity in response to receiving input from a user, wherein the activity provides the logical unit of processing for each of the plurality of sub-activities; (c) allowing selection of one of the activities by receiving user indicia; and (d) depicting an interface for allowing receipt of the input and display of the output during execution of the sub-activities associated with the selected activity.
2. A method as recited in claim 1, wherein the business logic is further adapted for verifying that all required input been received prior to generating the output.
3. A method as recited in claim 1, wherein the interface includes a plurality of displays that are each displayed during the execution of a corresponding one of the sub-activities.
4. A method as recited in claim 1, wherein the sub-activities each include at least one business component.
5. A method as recited in claim 1, wherein the activity includes creating a service order.
6. A method as recited in claim 1, and further comprising the step of allowing access to the input received from the user by each of the sub-activities of the activities.
7. A system for providing an activity framework comprising: (a) logic that creates a plurality of sub-activities, wherein each of the plurality of sub-activities contains and executes business logic, the business logic being adapted to generate an output based on a logical unit of processing received by the plurality of sub-activities; (b) logic that defines an activity, the activity including a plurality of web pages, such that the activity executes the sub-activities in a unique manner upon being selected for accomplishing a goal associated with the activity in response to receiving input from a user, wherein the activity provides the logical unit of processing for each of the plurality of sub-activities; (c) logic that allows selection of one of the activities by receiving user indicia; and (d) logic that depicts an interface for allowing receipt of the input and display of the output during execution of the sub-activities associated with the selected activity.
8. A system as recited in claim 7, wherein the business logic is further adapted for verifying that all required input been received prior to generating the output.
9. A system as recited in claim 7, wherein the interface includes a plurality of displays that are each displayed during the execution of a corresponding one of the sub-activities.
10. A system as recited in claim 7, wherein the sub-activities each include at least one business component.
11. A system as recited in claim 7, wherein the activity includes creating a service order.
12. A system as recited in claim 7, and further comprising logic that allows access to the input received from the user by each of the sub-activities of the activities.
13. A computer program embodied on a computer readable medium for providing an activity framework comprising: (a) a code segment that creates a plurality of sub-activities, wherein each of the plurality of sub-activities contains and executes business logic, the business logic being adapted to generate an output based on a logical unit of processing received by the plurality of sub-activities; (b) a code segment that defines an activity, the activity including a plurality of web pages, such that the activity executes the sub-activities in a unique manner upon being selected for accomplishing a goal associated with the activity in response to receiving input from a user, wherein the activity provides the logical unit of processing for each of the plurality of sub-activities; (c) a code segment that allows selection of one of the activities by receiving user indicia; and (d) a code segment that depicts an interface for allowing receipt of the input and display of the output during execution of the sub-activities associated with the selected activity.
14. A computer program as recited in claim 13, wherein the business logic is further adapted for verifying that all required input been received prior to generating the output.
15. A computer program as recited in claim 13, wherein the interface includes a plurality of displays that are each displayed during the execution of a corresponding one of the sub-activities.
16. A computer program as recited in claim 13, wherein the sub-activities each include at least one business component.
17. A computer program as recited in claim 13, wherein the activity includes creating a service order.
18. A computer program as recited in claim 13, and further comprising a code segment that allows access to the input received from the user by each of the sub-activities of the activities.
19. A computer system for providing services that support a model view controller, comprising: (a) a web page including a user interface for receiving input from a user and transmitting a request based on the input received; (b) an activity component for receiving the request from the web page and performing high-level functions based thereon, wherein the activity component provides a context for a plurality of business functions based on the request, and wherein the activity component does not contain any business logic and the activity component does not perform any business processes; (c) a plurality of business components, wherein the plurality of business components contain business logic such that each of the plurality of business components performs a subset of the business functions necessary to respond to the request, and wherein the plurality of business components are executed in response to receipt of a call from the activity component and the plurality of business components return values upon completion of execution; and (d) a view for maintaining a mapping between the user interface and the plurality of business components that return the values, wherein the values are displayed on the web page.
20. A computer system as recited in claim 19, wherein the user interface includes a plurality of displays that are each displayed during the execution of a corresponding one of the business components.
21. A computer system as recited in claim 19, wherein one of the plurality of business components contains business logic for creating a service order.
22. A computer system as recited in claim 19, wherein each of the plurality of business components is granted access to the input received from the user.
23. A computer system as recited in claim 19, wherein the activity component is accessible by a plurality of web pages.
24. A computer system as recited in claim 23, wherein the activity component maintains information shared between the plurality of web pages.
Description
FIELD OF THE INVENTION
The present invention relates to software framework designs and more particularly to an activity framework that allows efficient reuse of sub-activities.
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 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 and method for providing an activity framework. First, 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. Second, a plurality of activities are defined which each 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 by receiving user indicia. 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.
In one aspect of the present invention, 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.
In yet another aspect of the present invention, the activity may include creating a service order. Further, the sub-activities each may additionally include at least one business component.
In another aspect of the present invention, the interface may include a plurality of displays that are each displayed during the execution of a corresponding one of the sub-activities.
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:
FIG. 1A illustrates an exemplary hardware implementation of one embodiment of the present invention;
FIG. 1B 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;
FIG. 1C is a flowchart depicting a method for providing an interface between a first server and a second server with a proxy component situated therebetween;
FIG. 1D shows the execution architecture for components that make up the SAP Framework Execution Architecture according to an embodiment of the present invention;
FIG. 1E is a flowchart illustrating a method for sharing context objects among a plurality of components executed on a transaction server;
FIG. 2 illustrates the create component instances method according to an embodiment of the present invention;
FIG. 3 illustrates multiple components in the same transaction context according to an embodiment of the present invention;
FIG. 4 illustrates the forcing of a component's database operations to use a separate transaction according to an embodiment of the present invention;
FIG. 5 illustrates the compose work form multiple activities in the same transaction according to an embodiment of the present invention;
FIG. 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;
FIG. 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;
FIG. 8A is a flowchart depicting a method for providing an activity framework;
FIG. 8B is an illustration of the MTS runtime environment according to an embodiment of the present invention;
FIG. 9A 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;
FIG. 9B illustrates the different layers in a Site Server framework architecture according to an embodiment of the present invention;
FIG. 10 illustrates schema attributes and classes, with class "Role" and attribute "RoleName" shown;
FIG. 11 illustrates the creating of Container "Roles" according to an embodiment of the present invention;
FIG. 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 invention;
FIG. 13 illustrates the adding of different Roles according to an embodiment of the present invention;
FIG. 14 illustrates an example of the graphic display showing the attributes of member "Joe Bloggs" according to an embodiment of the present invention;
FIG. 15A is a flowchart that illustrates a method for handling events in a system;
FIG. 15B 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 invention;
FIG. 16A is a flowchart depicting a method for managing user information;
FIG. 16B illustrates a User framework which enables two approaches to maintaining user information according to an embodiment of the present invention;
FIG. 17A 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;
FIG. 17B shows a SubActivity component using the Persistence framework to retrieve a Customer Object from the Database according to an embodiment of the present invention;
FIG. 18A is a flow chart depicting a method for persisting information during a user session;
FIG. 18B illustrates a Session Flow Diagram-On Session Start according to an embodiment of the present invention;
FIG. 19 illustrates a Session Flow Diagram-On Start ASP Page according to an embodiment of the present invention;
FIG. 20A is a flow chart illustrating a method for generating a graphical user interface;
FIG. 20B 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;
FIG. 21A is a flow chart depicting a method for software configuration management
FIG. 21B is an illustration of an IDEA framework on which the ReTA Development Architecture Design is based according to an embodiment of the present invention;
FIG. 22 illustrates the Configuration Management Life Cycle according to an embodiment of the present invention;
FIG. 23 illustrates the change control `pipeline` and each phase within the pipeline according to an embodiment of the present invention;
FIG. 24 depicts the application of Roles within the Microsoft Transaction Server (MTS) management console according to an embodiment of the present invention;
FIG. 25 illustrates an environment migration process that guides development within ReTA engagement environments according to an embodiment of the present invention;
FIG. 26 is an illustration of a Development/Unit test for existing applications according to an embodiment of the present invention;
FIG. 27 illustrates an assembly test for existing applications according to an embodiment of the present invention;
FIG. 28 illustrates a system test for existing applications according to an embodiment of the present invention;
FIG. 29 is a flowchart for production of existing applications according to an embodiment of the present invention;
FIG. 30 illustrates a graphic display of Visual Source Safe according to an embodiment of the present invention;
FIG. 31 illustrates a frame of PVCS Version Manager I-Net Client according to an embodiment of the present invention;
FIG. 32 is an illustration of a Build Source Control Model according to an embodiment of the present invention;
FIG. 33 illustrates an Assembly Test phase control mode according to an embodiment of the present invention;
FIG. 34 illustrates a Microsoft Visual SourceSafe `Labels` dialog box according to an embodiment of the present invention;
FIG. 35 illustrates a Database Diagram within Visual Studio according to an embodiment of the present invention;
FIG. 36 illustrates Object Modeling within Rational Rose according to an embodiment of the present invention;
FIG. 37 illustrates directly calling a wrapped CICS component according to an embodiment of the present invention;
FIG. 38 illustrates indirectly calling a wrapped CICS component according to an embodiment of the present invention;
FIG. 39 illustrates RSW eTest Automated Testing Tool according to an embodiment of the present invention;
FIG. 40 is an illustration which describes the physical configuration necessary for ReTA development according to an embodiment of the present invention;
FIG. 41 illustrates the application & architecture configuration for a typical ReTA Build environment according to an embodiment of the present invention;
FIG. 42 illustrates the application & architecture configuration for a typical ReTA Build environment according to an embodiment of the present invention;
FIG. 43 illustrates an IDEA Framework with components in scope ReTA Phase 1 according to an embodiment of the present invention;
FIG. 44 illustrates a NCAF Framework with the shaded components in scope for Phase 1 according to an embodiment of the present invention;
FIG. 45 illustrates a MODEnc Framework according to an embodiment of the present invention;
FIG. 46 illustrates a NCAF Framework according to an embodiment of the present invention;
FIG. 47 illustrates the components that comprise the ReTA execution architecture and their physical location according to an embodiment of the present invention;
FIG. 48 illustrates a MODEnc Framework for Operations Architecture according to an embodiment of the present invention;
FIG. 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;
FIG. 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;
FIG. 51 illustrates event management in a net-centric environment according to an embodiment of the present invention;
FIG. 52 illustrates event management in an Intranet-based net-centric model according to an embodiment of the present invention;
FIG. 53 illustrates event management when using an Extranet-based net-centric model according to an embodiment of the present invention;
FIG. 54 illustrates the tables and relationships required for the ReTA Phase 1 Architecture Frameworks according to an embodiment of the present invention;
FIG. 55 illustrates tables and relationships required for the ReTA Phase 1 validation application according to an embodiment of the present invention;
FIG. 56 illustrates the physical configuration of a possible ReTA-engagement development environment according to an embodiment of the present invention;
FIG. 57 illustrates the physical configuration of possible ReTA-based Assembly, Product and Performance testing environments according to an embodiment of the present invention;
FIG. 58 illustrates Separate Web and Application Servers according to an embodiment of the present invention;
FIG. 59 illustrates a Single Web and Application Server according to an embodiment of the present invention;
FIG. 60 illustrates a Commerce Membership Server [Membership Authentication] properties view according to an embodiment of the present invention;
FIG. 61 illustrates a Membership Directory Manager Properties Dialog according to an embodiment of the present invention;
FIG. 62 is an illustration of a Membership Server Mapping Property according to an embodiment of the present invention;
FIG. 63 is an illustration of a Create New Site Foundation Wizard according to an embodiment of the present invention;
FIG. 64 illustrates the web application being placed under the "Member" directory of "cm" in Windows Explorer according to an embodiment of the present invention;
FIG. 65 depicts a typical ReTA engagement development environment according to an embodiment of the present invention;
FIG. 66 illustrates the development environment configuration for a ReTA Phase 1 engagement according to an embodiment of the present invention;
FIG. 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;
FIG. 68 shows a Visual J++ Build Environment according to an embodiment of the present invention;
FIG. 69 shows an interface for attaching to the MTS Process for debugging according to an embodiment of the present invention;
FIG. 70 shows an interface for debugging an Active Server Page (example global.asa file) according to an embodiment of the present invention;
FIG. 71 illustrates an example of Rose generated java file and javadoc comments according to an embodiment of the present invention;
FIG. 72A is a flowchart illustrating a method for testing a technical architecture;
FIG. 72B illustrates the application & architecture configuration for a typical ReTA Build environment according to an embodiment of the present invention;
FIG. 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;
FIG. 74 illustrates the application & architecture configuration for a typical ReTA Build environment according to an embodiment of the present invention;
FIG. 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;
FIG. 76A is a flow chart depicting a method for managing change requests in an e-commerce environment;
FIG. 76B illustrates a framework associated with the change tracker according to an embodiment of the present invention;
FIG. 77 illustrates the Change Tracker Main Window according to an embodiment of the present invention;
FIG. 78 illustrates the Change Request Detail Screen according to an embodiment of the present invention;
FIG. 79 illustrates a History of Changes Window according to an embodiment of the present invention;
FIG. 80 illustrates the Ad-Hoc Reporting Window according to an embodiment of the present invention;
FIG. 81 illustrates the Manager Reporting Window according to an embodiment of the present invention;
FIG. 82 illustrates the Migration Checklist Window according to an embodiment of the present invention;
FIG. 83A is a flow chart illustrating a method for managing issues in an e-commerce environment;
FIG. 83B illustrates the Issue Tracker Main Screen according to an embodiment of the present invention;
FIG. 84 illustrates the New Issue Screen according to an embodiment of the present invention;
FIG. 85 illustrates the Modify Issue Screen according to an embodiment of the present invention;
FIG. 86 illustrates the Report Selection Screen according to an embodiment of the present invention;
FIG. 87A is a flow chart depicting a method for network performance modeling;
FIG. 87B illustrates the end to end process associated with Performance Modeling according to an embodiment of the present invention;
FIG. 88 illustrates the Effective Network Performance Management according to an embodiment of the present invention;
FIG. 89 illustrates an example of overhead introduced at lower layers according to an embodiment of the present invention;
FIG. 90 illustrates a graph depicting a Network Usage Profile according to an embodiment of the present invention;
FIG. 91 illustrates a Network Layout according to an embodiment of the present invention;
FIG. 92 illustrates how the four tool categories relate to each other according to an embodiment of the present invention;
FIG. 93A is a flow chart depicting a method for managing software modules during development;
FIG. 93B illustrates the PVCS Migration Flow according to an embodiment of the present invention;
FIG. 94 illustrates SCM Planning according to an embodiment of the present invention;
FIG. 95 illustrates an Identify CM Units & Baselines Process Flow according to an embodiment of the present invention;
FIG. 96 illustrates a manner in which CM Repositories and Practices Process Flow are established according to an embodiment of the present invention;
FIG. 97 illustrates the Establish Change Control Process according to an embodiment of the present invention;
FIG. 98 illustrates Collect Metrics and Identify CI Activities according to an embodiment of the present invention;
FIG. 99 illustrates the Review/Establish Project Security according to an embodiment of the present invention;
FIG. 100 illustrates the Determine Training Requirements according to an embodiment of the present invention;
FIG. 101 illustrates the Create Project CM Plan according to an embodiment of the present invention;
FIG. 102 shows the Manage CM Repository Process Flow according to an embodiment of the present invention;
FIG. 103A is a flow chart illustrating a method for providing a system investigation report workbench;
FIG. 103B 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;
FIG. 104 illustrates New SIR window displayed upon select the New button on the Main Window according to an embodiment of the present invention;
FIG. 105 illustrates a window for reviewing and modifying existing SIRs according to an embodiment of the present invention;
FIG. 106 illustrates the Change Control Details Window according to an embodiment of the present invention;
FIG. 107 illustrates a Report Selection Screen upon selection the Report button from the main menu according to an embodiment of the present invention;
FIG. 108 illustrates a graphic display of SourceSafe Administrator according to an embodiment of the present invention;
FIG. 109A illustrates a configuration of a project tree within Visual SourceSafe Explorer according to an embodiment of the present invention;
FIG. 109B illustrates a dialog box of the projection tree in FIG. 109A designed to allow developers to quickly located and retrieve desired projects and/or files according to an embodiment of the present invention;
FIG. 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;
FIG. 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;
FIG. 112 illustrates a History window displayed upon selection of View History menu item according to an embodiment of the present invention;
FIG. 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;
FIG. 114 illustrates Check In from within the VSS Explorer according to an embodiment of the present invention;
FIG. 115 illustrates the prompting for Check In details according to an embodiment of the present invention;
FIG. 116 illustrates a label creation dialog box according to an embodiment of the present invention;
FIG. 117 illustrates a History of Project dialog box according to an embodiment of the present invention;
FIG. 118 illustrates a History Details dialog according to an embodiment of the present invention;
FIG. 119 illustrates the end to end evaluation process of an Internet firewall for ReTA according to an embodiment of the present invention;
FIG. 120 is a chart of Firewall Products according to an embodiment of the present invention;
FIG. 121 depicts the two firewall vendors selected for the product evaluation stage according to an embodiment of the present invention;
FIG. 122 is a diagram of the Activity Framework classes with the VBActivityWrapper according to an embodiment of the present invention;
FIG. 123 illustrates the relationships IVB Activity interface according to an embodiment of the present invention;
FIG. 124A is a flow chart depicting a method for providing a global internetworking gateway architecture in an e-commerce environment;
FIG. 124B illustrates a simple high level internetworking gateway architecture according to an embodiment of the present invention;
FIG. 125 illustrates an Internetworking Gateway with a Specialized Proxy/Cache Server according to an embodiment of the present invention;
FIG. 126 illustrates a high level global internetworking gateway architecture according to an embodiment of the present invention;
FIG. 127 shows an illustrative West Coast internetworking gateway architecture according to an embodiment of the present invention;
FIG. 128 shows a Remote Access Internetworking Gateway architecture according to an embodiment of the present invention;
FIG. 129 illustrates an Internetworking Gateway with Partner collaboration on Internet Development according to an embodiment of the present invention;
FIG. 130 illustrates a persistable business object extending Persistence. RetaPersistableObj. According to an embodiment of the present invention;
FIG. 131 illustrates layers of a shared property group manager according to an embodiment of the present invention;
FIG. 132A is a flow chart depicting a method for initializing a database used with an issue tracker;
FIG. 132B illustrates configuring of an issue tracker tool for normal operation according to an embodiment of the present invention;
FIG. 133 illustrates a dialog box prompting to confirm the removal of linked tables within a database;
FIG. 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;
FIG. 135 illustrates a prompting by Access for selecting tables to link according to an embodiment of the present invention;
FIG. 136 illustrates a dialog box indicating linked tables according to an embodiment of the present invention;
FIG. 137 illustrates a `Welcome Form` window according to an embodiment of the present invention;
FIG. 138 illustrates a `Issue Form` window according to an embodiment of the present invention;
FIG. 139 illustrates a window which permits modification of the available reports within the Issue tool according to an embodiment of the present invention;
FIG. 140 illustrates a window displayed permitting modification of desired report elements to the new project name according to an embodiment of the present invention;
FIG. 141 illustrates a Team Code Table window which allows adding and deleting of project locations according to an embodiment of the present invention;
FIG. 142 illustrates a Team Membership Table window which allows adding and deleting of team members according to an embodiment of the present invention;
FIG. 143 illustrates a Project Phases Table window which allows changing of project phases according to an embodiment of the present invention;
FIG. 144 illustrates a Startup window which allows changing of the title of a database according to an embodiment of the present invention;
FIG. 145A is a flowchart depicting a method for generating software based on business components;
FIG. 145B illustrates a relationship between business components and partitioned business components according to an embodiment of the present invention;
FIG. 146 illustrates how a Billing Business Component may create an invoice according to an embodiment of the present invention;
FIG. 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;
FIG. 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;
FIG. 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;
FIG. 150 illustrates what makes up a Partitioned Business Component according to an embodiment of the present invention;
FIG. 151 illustrates the role of patterns and frameworks according to an embodiment of the present invention;
FIG. 152 illustrates a Business Component Identifying Methodology according to an embodiment of the present invention;
FIG. 153 is a flow chart depicting an exemplary embodiment of a resources e-commerce technical architecture;
FIG. 154 is a flow chart illustrating a second exemplary embodiment of a method for maintaining data in an e-commerce based technical architecture;
FIG. 155 is a flow chart illustrating an exemplary embodiment of a method for providing a resources e-commerce technical architecture;
FIG. 156 illustrates another exemplary embodiment of a method for providing a resources e-commerce technical architecture; and
FIG. 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 present invention may be enabled using a hardware implementation such as that illustrated in FIG. 1A. 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 FIG. 1A, 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 FIG. 1A 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 112 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 overrides 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 of matter. 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 carries 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" (November 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 interoperate 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 Microsystem's 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, off loading 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 FIG. 1B, 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 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 carried 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 decode(s) 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:
Service Detail Retrieve from Codes Table Retrieve single decode value Retrieve all decode values Maintain Codes Table 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:
Component Service AFRetrieval Retrieve decode(s) from the codes table. AFMaintenance Maintain the codes table.
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:
Method Description setTableName Retrieve the requested codes table into local memory and store the table name for subsequent retrieval requests (instead of retrieving from MTS shared memory). getDecode Search through the currently identified local codes table and return the `decode` associated with the `code`. Refer to setTableName method. getNumRows Return the number of code/decode pairs contained in the currently identified local codes table. Refer to setTableName method. getCodesTable Return all the codes and decodes for the specified codes table.
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:
Method Description setTableName Store the name of local codes table to be accessed for subsequent maintenance requests. setCodeDecode Dynamically add a code/decode pair to the currently identified local codes table. Refer to setTableName method. Add Replace all code/decode pairs of currently identified local codes table with the passed in code/decode pairs. Refer to setTableName method. Append Append the passed in code/decode pairs to the currently identified local codes table. Refer to setTableName method. setCodeDecodeByTable Return fully populated codes table directly from the database. delCodeDecode Remove specified code/decode pair from currently identified local codes table. Refer to setTableName method. DelCodesTable Remove the currently identified local codes table from local memory. Refer to setTableName method.
SAP Framework Design
FIG. 1C 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 50D.
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. FIG. 1D shows the execution architecture for components that make up the SAP Framework Execution Architecture 160.
Referring again to FIG. 1D, 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
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).
Call 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
FIG. 1E 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
FIG. 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 FIG. 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 FIG. 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 FIG. 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
(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 Design
Create accounts for account packages. Group components under the appropriate credentials and 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.CreateInstance("progid")
Implication on Application Design
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 CustomerInterface of the Customer component.
Set objlCustomer=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 CustomerInterface and invokes the creation of the interface.
MTS 600 intercepts the Customer creation request 602, starts a process for the Customer package containing Customer component 604, creates the ContextObject 606 and returns a reference to the client. See FIG. 6.
The client application requests an operation on the CustomerInterface.
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. FIG. 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 objlCustomer=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.
CreateObject
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.
CreateInstance
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 CreateInstance 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 MT