US20040060054A1 - Composition service for autonomic computing - Google Patents

Composition service for autonomic computing Download PDF

Info

Publication number
US20040060054A1
US20040060054A1 US10/252,324 US25232402A US2004060054A1 US 20040060054 A1 US20040060054 A1 US 20040060054A1 US 25232402 A US25232402 A US 25232402A US 2004060054 A1 US2004060054 A1 US 2004060054A1
Authority
US
United States
Prior art keywords
client
components
computer
combinations
data processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US10/252,324
Inventor
Rajarshi Das
Ian Whalley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US10/252,324 priority Critical patent/US20040060054A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DAS, RAJARSHI, WHALLEY, IAN NICHOLAS
Priority to TW092119801A priority patent/TWI237474B/en
Priority to JP2004537265A priority patent/JP2006500650A/en
Priority to PCT/GB2003/003943 priority patent/WO2004027661A2/en
Priority to AU2003263353A priority patent/AU2003263353A1/en
Priority to CN038222612A priority patent/CN1689298B/en
Publication of US20040060054A1 publication Critical patent/US20040060054A1/en
Priority to US11/845,508 priority patent/US7950015B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4541Directories for service discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Definitions

  • the present invention is related to the following applications entitled: “Method and Apparatus for Publishing and Monitoring Entities Providing Services in a Distributed Data Processing System”, Ser. No. ______, attorney docket no. YOR920020173US1; “Method and Apparatus for Automatic Updating and Testing of Software”, Ser. No. ______, attorney docket no. YOR920020174US1; “Self-Managing Computing System”, Ser. No. ______, attorney docket no. YOR920020181US1; and “Adaptive Problem Determination and Recovery in a Computer System”, Ser. No. ______, attorney docket no. YOR920020194US1; all filed even date hereof, assigned to the same assignee, and incorporated herein by reference.
  • the present invention relates generally to an improved data processing system, and in particular, to a method and apparatus for managing hardware and software components. Still more particularly, the present invention provides a method and apparatus for automatically identifying and combining components to achieve functionality requirements.
  • the Internet is a set of computer networks, possibly dissimilar, joined together by means of gateways that handle data transfer and the conversion of messages from a protocol of the sending network to a protocol used by the receiving network.
  • Internet refers to the collection of networks and gateways that use the TCP/IP suite of protocols.
  • the most commonly employed method of transferring data over the Internet is to employ the World Wide Web environment, also called simply “the Web”.
  • Other Internet resources exist for transferring information, such as File Transfer Protocol (FTP) and Gopher, but have not achieved the popularity of the Web.
  • FTP File Transfer Protocol
  • Gopher Gopher
  • HTTP Hypertext Transfer Protocol
  • data files e.g., text, still graphic images, audio; motion video, etc.
  • HTML Hypertext Markup Language
  • the Internet also is widely used to transfer applications to users using browsers. Often times, users of may search for and obtain software packages through the Internet.
  • a next block towards “autonomic” computing involves identifying and installing/downloading necessary hardware and software components without requiring user intervention.
  • an autonomic configuration utility would install components in response to the detection of a need for particular functionality.
  • the present invention is directed toward a method, computer program product, and data processing system for providing an improved directory service for storing information about hardware and software components.
  • the directory service stores not only the information that other components require to locate, and make use of, the components listed in the directory, but is also able to dynamically construct ‘meta services’ that fulfill a client's functionality requirements.
  • the directory service determines a set of hardware and/or software components to provide the needed functionality.
  • the components in the set are then combined and configured to achieve the necessary functionality via logical deduction from domain knowledge.
  • a history mechanism allows for already derived configurations of hardware or software components to be recalled immediately.
  • FIG. 1 is a diagram of a networked data processing system in which the present invention may be implemented
  • FIG. 2 is a block diagram of a server system within the networked data processing system of FIG. 1;
  • FIG. 3 is a block diagram of a client system within the networked data processing system of FIG. 1;
  • FIG. 4 is a diagram depicting an overall view of an autonomic composition broker system in accordance with a preferred embodiment of the present invention
  • FIG. 5 is a flowchart representation of a process of fulfilling a request for a hardware or software component in a preferred embodiment of the present invention
  • FIG. 6 is a diagram providing a legend for symbols in E-R (entity-relationship diagrams) as used in this document;
  • FIG. 7 is an exemplary E-R diagram representing a database system for use in a preferred embodiment of the present invention.
  • FIG. 8 is a flowchart representation of a process followed by a control logic in accordance with a preferred embodiment of the present invention.
  • FIG. 9 is a diagram depicting an architectural variation on the present invention in which a remote meta-service provider is used to provide the derived meta-service.
  • FIG. 10 is a diagram depicting an architectural variation on the present invention in which remote meta-service capability is incorporated into a composition service.
  • FIG. 1 depicts a pictorial representation of a network of data processing systems in which the present invention may be implemented.
  • Network data processing system 100 is a network of computers in which the present invention may be implemented.
  • Network data processing system 100 contains a network 102 , which is the medium used to provide communications links between various devices and computers connected together within network data processing system 100 .
  • Network 102 may include connections, such as wire, wireless communication links, or fiber optic cables.
  • server 104 is connected to network 102 along with storage unit 106 .
  • clients 108 , 110 , and 112 are connected to network 102 .
  • These clients 108 , 110 , and 112 may be, for example, personal computers or network computers.
  • server 104 provides data, such as boot files, operating system images, and applications to clients 108 - 112 .
  • Clients 108 , 110 , and 112 are clients to server 104 .
  • Network data processing system 100 may include additional servers, clients, and other devices not shown.
  • network data processing system 100 is the Internet with network 102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another.
  • TCP/IP Transmission Control Protocol/Internet Protocol
  • At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, government, educational and other computer systems that route data and messages.
  • network data processing system 100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN).
  • FIG. 1 is intended as an example, and not as an architectural limitation for the present invention.
  • Data processing system 200 may be a symmetric multiprocessor (SMP) system including a plurality of processors 202 and 204 connected to system bus 206 . Alternatively, a single processor system may be employed. Also connected to system bus 206 is memory controller/cache 208 , which provides an interface to local memory 209 . I/O bus bridge 210 is connected to system bus 206 and provides an interface to I/O bus 212 . Memory controller/cache 208 and I/O bus bridge 210 may be integrated as depicted.
  • SMP symmetric multiprocessor
  • Peripheral component interconnect (PCI) bus bridge 214 connected to I/O bus 212 provides an interface to PCI local bus 216 .
  • PCI Peripheral component interconnect
  • a number of modems may be connected to PCI local bus 216 .
  • Typical PCI bus implementations will support four PCI expansion slots or add-in connectors.
  • Communications links to clients 108 - 112 in FIG. 1 may be provided through modem 218 and network adapter 220 connected to PCI local bus 216 through add-in boards.
  • Additional PCI bus bridges 222 and 224 provide interfaces for additional PCI local buses 226 and 228 , from which additional modems or network adapters may be supported. In this manner, data processing system 200 allows connections to multiple network computers.
  • a memory-mapped graphics adapter 230 and hard disk 232 may also be connected to I/O bus 212 as depicted, either directly or indirectly.
  • FIG. 2 may vary.
  • other peripheral devices such as optical disk drives and the like, also may be used in addition to or in place of the hardware depicted.
  • the depicted example is not meant to imply architectural limitations with respect to the present invention.
  • the data processing system depicted in FIG. 2 may be, for example, an IBM eServer pSeries system, a product of International Business Machines Corporation in Armonk, N.Y., running the Advanced Interactive Executive (AIX) operating system or LINUX operating system.
  • AIX Advanced Interactive Executive
  • Data processing system 300 is an example of a client computer.
  • Data processing system 300 employs a peripheral component interconnect (PCI) local bus architecture.
  • PCI peripheral component interconnect
  • AGP Accelerated Graphics Port
  • ISA Industry Standard Architecture
  • Processor 302 and main memory 304 are connected to PCI local bus 306 through PCI bridge 308 .
  • PCI bridge 308 also may include an integrated memory controller and cache memory for processor 302 . Additional connections to PCI local bus 306 may be made through direct component interconnection or through add-in boards.
  • local area network (LAN) adapter 310 SCSI host bus adapter 312 , and expansion bus interface 314 are connected to PCI local bus 306 by direct component connection.
  • audio adapter 316 graphics adapter 318 , and audio/video adapter 319 are connected to PCI local bus 306 by add-in boards inserted into expansion slots.
  • Expansion bus interface 314 provides a connection for a keyboard and mouse adapter 320 , modem 322 , and additional memory 324 .
  • Small computer system interface (SCSI) host bus adapter 312 provides a connection for hard disk drive 326 , tape drive 328 , and CD-ROM drive 330 .
  • Typical PCI local bus implementations will support three or four PCI expansion slots or add-in connectors.
  • An operating system runs on processor 302 and is used to coordinate and provide control of various components within data processing system 300 in FIG. 3.
  • the operating system may be a commercially available operating system, such as Windows XP, which is available from Microsoft Corporation.
  • An object oriented programming system such as Java may run in conjunction with the operating system and provide calls to the operating system from Java programs or applications executing on data processing system 300 . “Java” is a trademark of Sun Microsystems, Inc. Instructions for the operating system, the object-oriented operating system, and applications or programs are located on storage devices, such as hard disk drive 326 , and may be loaded into main memory 304 for execution by processor 302 .
  • FIG. 3 may vary depending on the implementation.
  • Other internal hardware or peripheral devices such as flash read-only memory (ROM), equivalent nonvolatile memory, or optical disk drives and the like, may be used in addition to or in place of the hardware depicted in FIG. 3.
  • the processes of the present invention may be applied to a multiprocessor data processing system.
  • data processing system 300 may be a stand-alone system configured to be bootable without relying on some type of network communication interfaces
  • data processing system 300 may be a personal digital assistant (PDA) device, which is configured with ROM and/or flash ROM in order to provide non-volatile memory for storing operating system files and/or user-generated data.
  • PDA personal digital assistant
  • data processing system 300 also may be a notebook computer or hand held computer in addition to taking the form of a PDA.
  • data processing system 300 also may be a kiosk or a Web appliance.
  • the present invention is directed toward an improved directory service for storing information about hardware and software components.
  • service is used to described both hardware and software components.
  • services may be procured and combined (bound) dynamically according to functional requirements.
  • hardware and software components in an autonomic computing environment are referred to as “services” to emphasize the fact that in autonomic computing, the system components are deployed for current functional requirements only.
  • an autonomic computing system is not statically constructed at build time from a fixed and unchanging set of components, but rather dynamically utilizes available “services” as required.
  • the directory service stores not only the information that other components require to locate, and make use of, the services listed in the directory, but is also able to dynamically construct “meta-services” that fulfill a client's request.
  • the improved directory service has the capability to derive (or to cause another software entity to derive), either based on pre-programmed knowledge or on-the-fly deduction, a mechanism by which components available in the directory may be combined in order to obtain functionality equivalent to that of the services originally sought by the requesting client.
  • a requesting service e.g., a software component
  • PB Packetabyte
  • the directory service can then return a response to the requesting service indicating that if the requesting service combined the ten services, it would obtain the equivalent of the service that was originally requested.
  • FIG. 4 is a diagram depicting an overall view of a directory and composition service in accordance with a preferred embodiment of the present invention.
  • a requesting service 400 requests a service meeting particular functionality requirements from directory service 401 , which is itself a service (hardware or software component).
  • Directory service 401 consults available services database 406 to locate a service (hardware or software component) providing the necessary functionality. Should no such single service be available, directory service 401 may utilize composition service 402 (which is also a hardware or software component) to combine individual services into a “meta-service” to provide the necessary functionality.
  • composition service 402 which is also a hardware or software component
  • directory service 401 may provide directory services through the use of standardized directory service schemes such as Web Services Description Language (WSDL) and systems such as Universal Description, Discovery, and Integration (UDDI), which allow a program to locate entities that offer particular services and to automatically determine how to communicate and conduct transactions with those services.
  • WSDL Web Services Description Language
  • UDDI Universal Description, Discovery, and Integration
  • WSDL is a proposed standard being considered by the WorldWide Web Consortium, authored by representatives of companies, such as International Business Machines Corporation, Ariba, Inc., and Microsoft Corporation.
  • UDDI version 3 is the current specification being used for Web service applications and services. Future development and changes to UDDI will be handled by the Organization for the Advancement of Structured Information Standards (OASIS).
  • OASIS Organization for the Advancement of Structured Information Standards
  • Composition service 402 will first try to fulfill the request via history database 405 , which stores the results of previously-derived combinations of services. If no applicable previously-derived combination is available, composition logic 403 will be employed to derive a new combination of available services that satisfies the functional requirements of the request.
  • Composition logic 403 is, in a preferred embodiment, software that utilizes information about components in available services database 406 information regarding the combinability of components from combination hints 404 to derive a combination of components meeting the functional requirements of requesting service 400 's original request.
  • FIG. 5 is a flowchart representation of a process for fulfilling requests for services in accordance with a preferred embodiment of the present invention.
  • FIG. 5 is divided into two portions.
  • Directory service portion 500 includes blocks involving identifying and locating individual services (e.g., by directory service 401 in FIG. 4), and composition service portion 512 includes blocks involving the combination of individual services to form meta-services.
  • This division of blocks may coincide with different software processes (e.g., the blocks in directory service portion 500 are performed by one software process, while the block in composition service 512 are performed by a different software process), or they may not (e.g., one process executes all blocks, or multiple processes execute differently grouped blocks).
  • FIG. 1 is a flowchart representation of a process for fulfilling requests for services in accordance with a preferred embodiment of the present invention.
  • FIG. 5 is divided into two portions.
  • Directory service portion 500 includes blocks involving identifying and locating individual services (e.g., by directory service 401 in FIG. 4)
  • the process begins with a request being received from a client (i.e., a service or component requests additional functionality) (block 501 ).
  • a determination is made as to whether the request can be met from available services (i.e., available services database 406 ) (block 502 ). If so (block 502 :Yes), an appropriate response providing instructions regarding the usage of an appropriate service is retrieved from available services database 406 (block 503 ). This response is then returned to the client to allow the client to make use of the chosen service (block 504 ).
  • composition service 402 receives the request (block 506 ) and determines whether the request can be satisfied from history database 405 (block 507 ). If so (block 507 :Yes), a response from history database 405 is returned (block 509 ). If not (block 507 :No), composition logic 403 is used to derive a combination providing the necessary functionality (block 510 ). This new combination is entered into history database 405 (block 508 ), and a response returned (block 509 ). Directory service 401 then receives composition services 402 's response (block 511 ) and returns the response to the client (block 504 ).
  • FIGS. 4 and 5 describe one possible database schema that may be employed to store directory, combination, and history information in a preferred embodiment of the present invention.
  • One of ordinary skill in the art will recognize that many variations on and substitutions for the schema described herein are also applicable without departing from the scope and spirit of the present invention.
  • the database schema depicted in the following Figures is included for illustrative purposes only.
  • the E-R (entity-relationship) approach to database modeling provides a semantics for the conceptual design of databases.
  • database information is represented in terms of entities, attributes of entities, and relationships between entities, where the following definitions apply.
  • the modeling semantics corresponding to each definition is illustrated in FIG. 6.
  • FIG. 6 is adapted from Elmasri and Navathe, Fundamentals of Database Systems, 3rd Ed., Addison Wesley (2000), pp. 41-66, which contains additional material regarding E-R diagrams and is hereby incorporated by reference.
  • Entity An entity is a principal object about which information is collected. For example, in a database containing information about personnel of a company, an entity might be “Employee.” In E-R modeling, an entity is represented with a box. An entity may be termed weak or strong, relating its dependence on another entity. A strong entity exhibits no dependence on another entity, i.e. its existence does not require the existence of another Entity. As shown in FIG. 6, a strong entity is represented with a single unshaded box. A weak entity derives its existence from another entity. For example, an entity “Work Time Schedule” derives its existence from an entity “Employee” if a work time schedule can only exist if it is associated with an employee. As shown in FIG. 6, a weak entity is represented by concentric boxes.
  • Attribute An attribute is a label that gives a descriptive property to an entity (e.g., name, color, etc.). Two types of attributes exist. Key attributes distinguish among occurrences of an entity. For example, in the United States, a Social Security number is a key attribute that distinguishes between individuals. Descriptor attributes merely describe an entity occurrence (e.g., gender, weight). As shown in FIG. 6, in E-R modeling, an attribute is represented with an oval tied to the entity (box) to which it pertains. In some cases, an attribute may have multiple values. For example, an entity representing a business may have a multivalued attribute “locations.” If the business has multiple locations, the attribute “locations” will have multiple values. A multivalued attribute is represented by concentric ovals, as shown in FIG. 6.
  • Relationships A relationship is a connectivity exhibited between entity occurrences. Relationships may be one to one, one to many, and many to many, and participation in a relationship by an entity may be optional or mandatory. For example, in the database containing information about personnel of a company, a relation “married to” among employee entity occurrences is one to one (if it is stated that an employee has at most one spouse). Further, participation in the relation is optional as there may exist unmarried employees. As a second example, if company policy dictates that every employee have exactly one manager, then the relationship “managed by” among employee entity occurrences is many to one (many employees may have the same manager), and mandatory (every employee must have a manager).
  • FIG. 7 is an entity-relationship (E-R) diagram of an exemplary database schema that may be applied to a preferred embodiment of the present invention.
  • the schema depicted in FIG. 7 is divided into portions according to the architecture depicted in FIG. 4, namely directory service portion 700 , history database portion 702 , and combination hints portion 704 .
  • directory service portion 700 a directory service portion
  • history database portion 702 a database portion that may be applied to a preferred embodiment of the present invention.
  • combination hints portion 704 combination hints portion
  • the “base” entity in FIG. 7 is component entity 706 , representing a basic “atomic” service, meaning an individual component (service) that is not a composition of other components (services).
  • Each component may have multiple requirements, such as certain minimum hardware requirements or dependencies on other services, represented by multi-valued attribute “requirement” 708 .
  • Ternary relationship “provides1” 710 relates each component ( 706 ) with one or more base functionalities ( 714 ) under a particular usage ( 712 ).
  • Temary relationship “provides1” 710 denotes that a particular component ( 706 ), when used in a certain way ( 712 ), provides one or more base functionalities ( 714 ).
  • Ternary relationship “synthesize” 716 relates one or more base functionalities ( 714 ) with a combination method (combination method entity 718 ) and a corresponding derived functionality (derived functionalities entity 720 ).
  • Temary relationship “synthesize” 716 denotes that one or more base functionalities ( 714 ) may be combined in a certain manner ( 718 ) to achieve a derived functionality ( 720 ). For example, converting a graphics file from a “BMP” (bitmap) file to “TIFF” (tagged image file format) file might be a base functionality and converting a TIFF file to a “GIF” (graphics interchange format) may be yet another base functionality.
  • ternary relationship “synthesize” 716 relates functionalities, not components.
  • ternary relationship “synthesize” 716 would indicate that any BMP-to-TIFF conversion service may be combined with any TIFF-to-GIF conversion service to yield a BMP-to-GIF conversion meta-service; no indication is made in ternary relationship “synthesize” 716 as to which specific BMP-to-TIFF conversion service should be used.
  • “Combinable” relationship 722 relates a combination method ( 718 ) with one or more components ( 706 ). “Combinable” relationship 722 denotes that a particular group of components may be combined according to a particular combination method ( 718 ). Thus, in the case of the aforementioned graphics file format conversions, “combinable” relationship 722 would store an indication that two particular conversion services could be combined by feed the output of one into the input of the other. Thus, if a certain functionality must be derived from base functionalities, “combinable” relationship 722 may be consulted to ensure that a particular group of components may be combined in the way necessary to achieve the desired derived functionality.
  • a combination of components ( 706 ) combining a set of base functionalities ( 714 ) into a derived functionality ( 720 ) is a combination, represented by “combination” entity 724 , which is related to entities 706 , 714 , and 720 via relationships 722 , 728 , and 730 .
  • “Combination scheme” attribute 726 of “combination” entity 724 represents information for forming or using the combination.
  • Combination entity 724 provides a history mechanism for storing already-derived combinations.
  • “Combination scheme” attribute 726 may contain, for example, combination method information (e.g., from “combination method” entity 718 ), or any other pertinent information for using or forming a combination (such as instructions for forming the combination from individual components or a copy of a combined software component incorporating the code from individual components).
  • a database schema such as the schema described in FIG. 7 may be implemented using a database management system, such as a relational, object-oriented, object-relational, or deductive database management system.
  • a database management system such as a relational, object-oriented, object-relational, or deductive database management system.
  • Other data storage paradigms are also possible within a preferred embodiment of the present invention as are available in the art.
  • a database schema such as is described in FIG. 7 is combined with control logic (e.g., such as is provided by directory service 401 , composition service 402 , and composition logic 403 in FIG. 4) to allow available services to be selected and/or combined in satisfaction of functional requirements.
  • FIG. 8 depicts in flowchart form one possible embodiment of a control logic that may be used in an embodiment of the present invention. The control logic described in FIG. 8 is based on the database schema of FIG. 7 and combines functionalities of directory service 401 , composition service 402 , and composition logic 403 , as described with respect to FIG. 4. As was stated in conjunction with FIG.
  • composition service 402 no rigid separation of directory service 401 , composition service 402 , and composition logic 403 is required by the present invention.
  • process depicted in FIG. 8 is merely intended to serve as an example of how a control logic may function and is not intended to be limiting.
  • the process depicted in FIG. 8 begins with calling a subroutine to find the components and constraints associated with the specified functional requirements (block 800 ).
  • the subroutine called in block 800 is a recursive subroutine to find and/or combine components in satisfaction of each functional requirement specified.
  • the subroutine is invoked recursively to incorporate additional components and/or combinations in satisfaction of the remaining requirements.
  • the full list of functional requirements and two empty lists, representing the components and constraints in the solution so far may be passed into the subroutine as parameters.
  • components and constraints are added to the two lists representing the solution so far and functional requirements that have been satisfied by the solution so far are removed from the list of functional requirements.
  • block 802 If any functional requirements do remain (block 802 :Yes), a determination is made as to whether any components have been selected for inclusion in the solution so far (block 806 ). If so (block 806 :Yes), then a determination is made as to whether any of the remaining requirements can be met by components already selected for inclusion in the solution (block 808 ). If not (block 808 :No) or if no components have been selected so far, the process continues to block 812 .
  • usage information i.e., information that instructs a client on how to use the component in question to achieve the desired functionality
  • usage information i.e., information that instructs a client on how to use the component in question to achieve the desired functionality
  • a recursive call is then made to address any remaining functional requirements (block 811 ).
  • block 812 a determination is made as to whether there is a requirement that may be met by a single component that has not yet been selected for inclusion in the solution so far. If so (block 812 :Yes), the component is added to the list of components in the solution so far (block 814 ), usage information for that component is added to the solution so far (block 810 ), and the subroutine is recursively called to handle any remaining functional requirements (block 811 ).
  • the combination derived is stored in the history database (block 820 ).
  • a history database may be implemented using conventional database storage techniques or by making modifications to program logic in a language that supports tabled logic programming or self-modifying code, such as Prolog, or through any other appropriate means, not limited to a simple database representation.
  • FIG. 9 depicts an embodiment of the present invention utilizing a remote meta-service provider 912 .
  • Remote meta-service provider 912 allows the actual combination of services to be performed remotely from client 900 .
  • client 900 issues a request 902 to directory service 904 , which if a combination of services is necessary relays request 906 to composition service 908 .
  • Composition service 908 then forwards combination instructions 910 to remote meta-service provider 912 .
  • Directory service 904 then responds ( 914 , not shown) to client 900 to notify client 900 that remote meta-service provider 912 is now available to provide the requested functionality.
  • Client 900 may then utilize remote meta-service provider 912 as if it were an individual service providing the requested functionality.
  • Remote meta-service provider 912 serves as an interface to the combination of services making up the “meta-service” according to combination instructions 910 .
  • FIG. 10 depicts yet another architectural variation of the present invention in which the remote meta-service provider is incorporated into the composition service used for deriving combinations.
  • Client 1000 issues a request 1002 to directory service 1004 , which if a combination of services is necessary relays request 1006 to composition service 1008 , which then provides the derived meta-service to client 1000 as would remote meta-service provider 912 in FIG. 9.
  • Directory service 1004 then responds ( 1010 , not shown) to client 1000 to notify client 1000 that composition service 1008 is now available to provide the requested functionality.
  • a variation on the architecture in FIG. 10 would be for directory service 1004 to provide the derived meta-service, rather than composition service 1008 .
  • the process of deriving combinations may be done in a distributed fashion, so that multiple solutions are returned from a plurality of composition services operating concurrently and a best solution is chosen from the returned solutions.
  • Another variation is to offer two or more possible combinations to the requesting client, possibly with additional information to be used as selection criteria, and allowing the client to choose one of the possible combinations presented.
  • Another way in which multiple solutions may be supported is for the composition service (or directory service) to query the client for preferences that would aid in choosing a derived combination from a plurality of candidates, so that the composition service (or directory service) could then offer one or more solutions that best fit the client's preferences. For example, the client could be asked whether speed or reliability is a greater concern, and solutions could be offered in which the speed/reliability tradeoff is handled in accordance with the client's needs.
  • the computer readable media may take the form of coded formats that are decoded for actual use in a particular data processing system.
  • Functional descriptive material is information that imparts functionality to a machine.
  • Functional descriptive material includes, but is not limited to, computer programs, instructions, rules, facts, definitions of computable functions, objects, and data structures.

Abstract

A method, computer program product, and data processing system for providing an improved directory service for storing information about hardware and software components is disclosed. The directory service stores not only the information that other hardware and software components require to locate, and make use of, the components listed in the directory, but is also able to dynamically construct ‘meta services’ that fulfill a client's functionality requirements.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • The present invention is related to the following applications entitled: “Method and Apparatus for Publishing and Monitoring Entities Providing Services in a Distributed Data Processing System”, Ser. No. ______, attorney docket no. YOR920020173US1; “Method and Apparatus for Automatic Updating and Testing of Software”, Ser. No. ______, attorney docket no. YOR920020174US1; “Self-Managing Computing System”, Ser. No. ______, attorney docket no. YOR920020181US1; and “Adaptive Problem Determination and Recovery in a Computer System”, Ser. No. ______, attorney docket no. YOR920020194US1; all filed even date hereof, assigned to the same assignee, and incorporated herein by reference.[0001]
  • BACKGROUND OF THE INVENTION
  • 1. Technical Field [0002]
  • The present invention relates generally to an improved data processing system, and in particular, to a method and apparatus for managing hardware and software components. Still more particularly, the present invention provides a method and apparatus for automatically identifying and combining components to achieve functionality requirements. [0003]
  • 2. Description of Related Art [0004]
  • Modern computing technology has resulted in immensely complicated and ever-changing environments. One such environment is the Internet, which is also referred to as an “internetwork.” The Internet is a set of computer networks, possibly dissimilar, joined together by means of gateways that handle data transfer and the conversion of messages from a protocol of the sending network to a protocol used by the receiving network. When capitalized, the term “Internet” refers to the collection of networks and gateways that use the TCP/IP suite of protocols. Currently, the most commonly employed method of transferring data over the Internet is to employ the World Wide Web environment, also called simply “the Web”. Other Internet resources exist for transferring information, such as File Transfer Protocol (FTP) and Gopher, but have not achieved the popularity of the Web. In the Web environment, servers and clients effect data transaction using the Hypertext Transfer Protocol (HTTP), a known protocol for handling the transfer of various data files (e.g., text, still graphic images, audio; motion video, etc.). The information in various data files is formatted for presentation to a user by a standard page description language, the Hypertext Markup Language (HTML). The Internet also is widely used to transfer applications to users using browsers. Often times, users of may search for and obtain software packages through the Internet. [0005]
  • Other types of complex network data processing systems include those created for facilitating work in large corporations. In many cases, these networks may span across regions in various worldwide locations. These complex networks also may use the Internet as part of a virtual product network for conducting business. These networks are further complicated by the need to manage and update software used within the network. [0006]
  • As software evolves to become increasingly ‘autonomic’, the task of installing and configuring software will, more and more, be performed by the computers themselves, as opposed to being performed by administrators. The current installing and configuring mechanisms are moving towards an “autonomic” process. For example, many operating systems and software packages will automatically look for particular software components based on user-specified requirements. These installation and update mechanisms often connect to the Internet at a preselected location to see whether an update or a needed component is present. If the update or other component is present, the message is presented to the user in which the message asks the user whether to download and install the component. An example of such a system is the package management program “dselect” that is part of the open-source Debian GNU/Linux operating system. [0007]
  • A next block towards “autonomic” computing involves identifying and installing/downloading necessary hardware and software components without requiring user intervention. In such a next generation system, an autonomic configuration utility would install components in response to the detection of a need for particular functionality. In such a circumstance, there may not be a single hardware or software component for providing the needed functionality. Thus, it would be desirable for there to be a scheme whereby needed functionality may be obtained in the absence of a single component for providing the necessary functionality. [0008]
  • SUMMARY OF THE INVENTION
  • The present invention is directed toward a method, computer program product, and data processing system for providing an improved directory service for storing information about hardware and software components. The directory service stores not only the information that other components require to locate, and make use of, the components listed in the directory, but is also able to dynamically construct ‘meta services’ that fulfill a client's functionality requirements. [0009]
  • In response to a request from the client for particular functional requirements, the directory service determines a set of hardware and/or software components to provide the needed functionality. The components in the set are then combined and configured to achieve the necessary functionality via logical deduction from domain knowledge. A history mechanism allows for already derived configurations of hardware or software components to be recalled immediately. [0010]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein: [0011]
  • FIG. 1 is a diagram of a networked data processing system in which the present invention may be implemented; [0012]
  • FIG. 2 is a block diagram of a server system within the networked data processing system of FIG. 1; [0013]
  • FIG. 3 is a block diagram of a client system within the networked data processing system of FIG. 1; [0014]
  • FIG. 4 is a diagram depicting an overall view of an autonomic composition broker system in accordance with a preferred embodiment of the present invention; [0015]
  • FIG. 5 is a flowchart representation of a process of fulfilling a request for a hardware or software component in a preferred embodiment of the present invention; [0016]
  • FIG. 6 is a diagram providing a legend for symbols in E-R (entity-relationship diagrams) as used in this document; [0017]
  • FIG. 7 is an exemplary E-R diagram representing a database system for use in a preferred embodiment of the present invention; [0018]
  • FIG. 8 is a flowchart representation of a process followed by a control logic in accordance with a preferred embodiment of the present invention; and [0019]
  • FIG. 9 is a diagram depicting an architectural variation on the present invention in which a remote meta-service provider is used to provide the derived meta-service; and [0020]
  • FIG. 10 is a diagram depicting an architectural variation on the present invention in which remote meta-service capability is incorporated into a composition service. [0021]
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
  • With reference now to the figures, FIG. 1 depicts a pictorial representation of a network of data processing systems in which the present invention may be implemented. Network [0022] data processing system 100 is a network of computers in which the present invention may be implemented. Network data processing system 100 contains a network 102, which is the medium used to provide communications links between various devices and computers connected together within network data processing system 100. Network 102 may include connections, such as wire, wireless communication links, or fiber optic cables.
  • In the depicted example, [0023] server 104 is connected to network 102 along with storage unit 106. In addition, clients 108, 110, and 112 are connected to network 102. These clients 108, 110, and 112 may be, for example, personal computers or network computers. In the depicted example, server 104 provides data, such as boot files, operating system images, and applications to clients 108-112. Clients 108, 110, and 112 are clients to server 104. Network data processing system 100 may include additional servers, clients, and other devices not shown. In the depicted example, network data processing system 100 is the Internet with network 102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, government, educational and other computer systems that route data and messages. Of course, network data processing system 100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN). FIG. 1 is intended as an example, and not as an architectural limitation for the present invention.
  • Referring to FIG. 2, a block diagram of a data processing system that may be implemented as a server, such as [0024] server 104 in FIG. 1, is depicted in accordance with a preferred embodiment of the present invention. Data processing system 200 may be a symmetric multiprocessor (SMP) system including a plurality of processors 202 and 204 connected to system bus 206. Alternatively, a single processor system may be employed. Also connected to system bus 206 is memory controller/cache 208, which provides an interface to local memory 209. I/O bus bridge 210 is connected to system bus 206 and provides an interface to I/O bus 212. Memory controller/cache 208 and I/O bus bridge 210 may be integrated as depicted.
  • Peripheral component interconnect (PCI) bus bridge [0025] 214 connected to I/O bus 212 provides an interface to PCI local bus 216. A number of modems may be connected to PCI local bus 216. Typical PCI bus implementations will support four PCI expansion slots or add-in connectors. Communications links to clients 108-112 in FIG. 1 may be provided through modem 218 and network adapter 220 connected to PCI local bus 216 through add-in boards.
  • Additional PCI bus bridges [0026] 222 and 224 provide interfaces for additional PCI local buses 226 and 228, from which additional modems or network adapters may be supported. In this manner, data processing system 200 allows connections to multiple network computers. A memory-mapped graphics adapter 230 and hard disk 232 may also be connected to I/O bus 212 as depicted, either directly or indirectly.
  • Those of ordinary skill in the art will appreciate that the hardware depicted in FIG. 2 may vary. For example, other peripheral devices, such as optical disk drives and the like, also may be used in addition to or in place of the hardware depicted. The depicted example is not meant to imply architectural limitations with respect to the present invention. [0027]
  • The data processing system depicted in FIG. 2 may be, for example, an IBM eServer pSeries system, a product of International Business Machines Corporation in Armonk, N.Y., running the Advanced Interactive Executive (AIX) operating system or LINUX operating system. [0028]
  • With reference now to FIG. 3, a block diagram illustrating a data processing system is depicted in which the present invention may be implemented. [0029] Data processing system 300 is an example of a client computer. Data processing system 300 employs a peripheral component interconnect (PCI) local bus architecture. Although the depicted example employs a PCI bus, other bus architectures such as Accelerated Graphics Port (AGP) and Industry Standard Architecture (ISA) may be used. Processor 302 and main memory 304 are connected to PCI local bus 306 through PCI bridge 308. PCI bridge 308 also may include an integrated memory controller and cache memory for processor 302. Additional connections to PCI local bus 306 may be made through direct component interconnection or through add-in boards. In the depicted example, local area network (LAN) adapter 310, SCSI host bus adapter 312, and expansion bus interface 314 are connected to PCI local bus 306 by direct component connection. In contrast, audio adapter 316, graphics adapter 318, and audio/video adapter 319 are connected to PCI local bus 306 by add-in boards inserted into expansion slots. Expansion bus interface 314 provides a connection for a keyboard and mouse adapter 320, modem 322, and additional memory 324. Small computer system interface (SCSI) host bus adapter 312 provides a connection for hard disk drive 326, tape drive 328, and CD-ROM drive 330. Typical PCI local bus implementations will support three or four PCI expansion slots or add-in connectors.
  • An operating system runs on [0030] processor 302 and is used to coordinate and provide control of various components within data processing system 300 in FIG. 3. The operating system may be a commercially available operating system, such as Windows XP, which is available from Microsoft Corporation. An object oriented programming system such as Java may run in conjunction with the operating system and provide calls to the operating system from Java programs or applications executing on data processing system 300. “Java” is a trademark of Sun Microsystems, Inc. Instructions for the operating system, the object-oriented operating system, and applications or programs are located on storage devices, such as hard disk drive 326, and may be loaded into main memory 304 for execution by processor 302.
  • Those of ordinary skill in the art will appreciate that the hardware in FIG. 3 may vary depending on the implementation. Other internal hardware or peripheral devices, such as flash read-only memory (ROM), equivalent nonvolatile memory, or optical disk drives and the like, may be used in addition to or in place of the hardware depicted in FIG. 3. Also, the processes of the present invention may be applied to a multiprocessor data processing system. [0031]
  • As another example, [0032] data processing system 300 may be a stand-alone system configured to be bootable without relying on some type of network communication interfaces As a further example, data processing system 300 may be a personal digital assistant (PDA) device, which is configured with ROM and/or flash ROM in order to provide non-volatile memory for storing operating system files and/or user-generated data.
  • The depicted example in FIG. 3 and above-described examples are not meant to imply architectural limitations. For example, [0033] data processing system 300 also may be a notebook computer or hand held computer in addition to taking the form of a PDA. Data processing system 300 also may be a kiosk or a Web appliance.
  • The present invention is directed toward an improved directory service for storing information about hardware and software components. Throughout this document, the term “service” is used to described both hardware and software components. In an autonomic computing paradigm, services may be procured and combined (bound) dynamically according to functional requirements. Thus, hardware and software components in an autonomic computing environment are referred to as “services” to emphasize the fact that in autonomic computing, the system components are deployed for current functional requirements only. Thus, an autonomic computing system is not statically constructed at build time from a fixed and unchanging set of components, but rather dynamically utilizes available “services” as required. [0034]
  • Sometimes the functionality required of an autonomic computing system cannot be provided by a single service alone. In such cases, the required functionality may be achieved by combining a number of services together. Thus, the directory service provided by the present invention stores not only the information that other components require to locate, and make use of, the services listed in the directory, but is also able to dynamically construct “meta-services” that fulfill a client's request. [0035]
  • For example, if a client asks the directory to provide details for a certain type of service (including, but not limited to, the location or identity of that service) that is not available in the directory, then a simple directory service would simply respond that no such services were available. However, the improved directory service has the capability to derive (or to cause another software entity to derive), either based on pre-programmed knowledge or on-the-fly deduction, a mechanism by which components available in the directory may be combined in order to obtain functionality equivalent to that of the services originally sought by the requesting client. [0036]
  • Consider, for example, a situation where a requesting service (e.g., a software component) asks the directory for information about available services that can provide 1 PB (Petabyte) of direct-access storage space. In the case where the directory does not contain information about any such services, but does contain information about ten services, each of which can provide 100 TB (Terabytes) of direct-access storage space, the directory service can then return a response to the requesting service indicating that if the requesting service combined the ten services, it would obtain the equivalent of the service that was originally requested. [0037]
  • FIG. 4 is a diagram depicting an overall view of a directory and composition service in accordance with a preferred embodiment of the present invention. A requesting [0038] service 400 requests a service meeting particular functionality requirements from directory service 401, which is itself a service (hardware or software component). Directory service 401 consults available services database 406 to locate a service (hardware or software component) providing the necessary functionality. Should no such single service be available, directory service 401 may utilize composition service 402 (which is also a hardware or software component) to combine individual services into a “meta-service” to provide the necessary functionality.
  • In a preferred embodiment, directory service [0039] 401 may provide directory services through the use of standardized directory service schemes such as Web Services Description Language (WSDL) and systems such as Universal Description, Discovery, and Integration (UDDI), which allow a program to locate entities that offer particular services and to automatically determine how to communicate and conduct transactions with those services. WSDL is a proposed standard being considered by the WorldWide Web Consortium, authored by representatives of companies, such as International Business Machines Corporation, Ariba, Inc., and Microsoft Corporation. UDDI version 3 is the current specification being used for Web service applications and services. Future development and changes to UDDI will be handled by the Organization for the Advancement of Structured Information Standards (OASIS).
  • [0040] Composition service 402 will first try to fulfill the request via history database 405, which stores the results of previously-derived combinations of services. If no applicable previously-derived combination is available, composition logic 403 will be employed to derive a new combination of available services that satisfies the functional requirements of the request. Composition logic 403 is, in a preferred embodiment, software that utilizes information about components in available services database 406 information regarding the combinability of components from combination hints 404 to derive a combination of components meeting the functional requirements of requesting service 400's original request.
  • FIG. 5 is a flowchart representation of a process for fulfilling requests for services in accordance with a preferred embodiment of the present invention. FIG. 5 is divided into two portions. [0041] Directory service portion 500 includes blocks involving identifying and locating individual services (e.g., by directory service 401 in FIG. 4), and composition service portion 512 includes blocks involving the combination of individual services to form meta-services. One of ordinary skill in the art will recognize that this division of blocks may coincide with different software processes (e.g., the blocks in directory service portion 500 are performed by one software process, while the block in composition service 512 are performed by a different software process), or they may not (e.g., one process executes all blocks, or multiple processes execute differently grouped blocks). FIG. 5 assumes that two separate organizational units of software (e.g., processes, threads, functions, subroutines, etc.) are used (i.e., directory service 401 and composition service 402), although, as stated above, no such division is necessary in practice.
  • Turning now to the process flow represented by FIG. 5, the process begins with a request being received from a client (i.e., a service or component requests additional functionality) (block [0042] 501). Next, a determination is made as to whether the request can be met from available services (i.e., available services database 406) (block 502). If so (block 502:Yes), an appropriate response providing instructions regarding the usage of an appropriate service is retrieved from available services database 406 (block 503). This response is then returned to the client to allow the client to make use of the chosen service (block 504).
  • If the request cannot be met from available services (block [0043] 502:No), the request is forwarded to composition service 402 (block 505). Composition service 402 receives the request (block 506) and determines whether the request can be satisfied from history database 405 (block 507). If so (block 507:Yes), a response from history database 405 is returned (block 509). If not (block 507:No), composition logic 403 is used to derive a combination providing the necessary functionality (block 510). This new combination is entered into history database 405 (block 508), and a response returned (block 509). Directory service 401 then receives composition services 402's response (block 511) and returns the response to the client (block 504).
  • As can be seen from FIGS. 4 and 5, the task of identifying and/or combining services in response to a request involves retrieving data from one or more databases and applying logic to the data (e.g., composition logic [0044] 403) to derive an appropriate response. FIGS. 6 and 7 describe one possible database schema that may be employed to store directory, combination, and history information in a preferred embodiment of the present invention. One of ordinary skill in the art will recognize that many variations on and substitutions for the schema described herein are also applicable without departing from the scope and spirit of the present invention. The database schema depicted in the following Figures is included for illustrative purposes only.
  • The E-R (entity-relationship) approach to database modeling provides a semantics for the conceptual design of databases. With the E-R approach, database information is represented in terms of entities, attributes of entities, and relationships between entities, where the following definitions apply. The modeling semantics corresponding to each definition is illustrated in FIG. 6. FIG. 6 is adapted from Elmasri and Navathe, [0045] Fundamentals of Database Systems, 3rd Ed., Addison Wesley (2000), pp. 41-66, which contains additional material regarding E-R diagrams and is hereby incorporated by reference.
  • Entity: An entity is a principal object about which information is collected. For example, in a database containing information about personnel of a company, an entity might be “Employee.” In E-R modeling, an entity is represented with a box. An entity may be termed weak or strong, relating its dependence on another entity. A strong entity exhibits no dependence on another entity, i.e. its existence does not require the existence of another Entity. As shown in FIG. 6, a strong entity is represented with a single unshaded box. A weak entity derives its existence from another entity. For example, an entity “Work Time Schedule” derives its existence from an entity “Employee” if a work time schedule can only exist if it is associated with an employee. As shown in FIG. 6, a weak entity is represented by concentric boxes. [0046]
  • Attribute: An attribute is a label that gives a descriptive property to an entity (e.g., name, color, etc.). Two types of attributes exist. Key attributes distinguish among occurrences of an entity. For example, in the United States, a Social Security number is a key attribute that distinguishes between individuals. Descriptor attributes merely describe an entity occurrence (e.g., gender, weight). As shown in FIG. 6, in E-R modeling, an attribute is represented with an oval tied to the entity (box) to which it pertains. In some cases, an attribute may have multiple values. For example, an entity representing a business may have a multivalued attribute “locations.” If the business has multiple locations, the attribute “locations” will have multiple values. A multivalued attribute is represented by concentric ovals, as shown in FIG. 6. [0047]
  • Relationships: A relationship is a connectivity exhibited between entity occurrences. Relationships may be one to one, one to many, and many to many, and participation in a relationship by an entity may be optional or mandatory. For example, in the database containing information about personnel of a company, a relation “married to” among employee entity occurrences is one to one (if it is stated that an employee has at most one spouse). Further, participation in the relation is optional as there may exist unmarried employees. As a second example, if company policy dictates that every employee have exactly one manager, then the relationship “managed by” among employee entity occurrences is many to one (many employees may have the same manager), and mandatory (every employee must have a manager). [0048]
  • As shown in FIG. 6, in E-R modeling a relationship is represented with a diamond if it relates one or two entities, and is represented with an n-sided polygon if it relates more than two entities. The cardinality ratio (one-to-one, one-to-many, etc.) in a relationship is denoted by the use of the characters “1” and “N” to show 1:1 or 1:N cardinality ratios, or through the use of explicit structural constraints, as shown in FIG. 6. When all instances of an entity participate in the relationship, the entity box is connected to the relationship diamond by a double line; otherwise, a single line connects the entity with the relationship, as in FIG. 6. [0049]
  • FIG. 7 is an entity-relationship (E-R) diagram of an exemplary database schema that may be applied to a preferred embodiment of the present invention. The schema depicted in FIG. 7 is divided into portions according to the architecture depicted in FIG. 4, namely [0050] directory service portion 700, history database portion 702, and combination hints portion 704. One of ordinary skill in the art will recognize that such division is merely conceptual and is not intended to mandate any physical separation of the information in the different portions from each other.
  • The “base” entity in FIG. 7 is [0051] component entity 706, representing a basic “atomic” service, meaning an individual component (service) that is not a composition of other components (services). Each component may have multiple requirements, such as certain minimum hardware requirements or dependencies on other services, represented by multi-valued attribute “requirement” 708.
  • Ternary relationship “provides1” [0052] 710 relates each component (706) with one or more base functionalities (714) under a particular usage (712). Temary relationship “provides1” 710 denotes that a particular component (706), when used in a certain way (712), provides one or more base functionalities (714).
  • Ternary relationship “synthesize” [0053] 716 relates one or more base functionalities (714) with a combination method (combination method entity 718) and a corresponding derived functionality (derived functionalities entity 720). Temary relationship “synthesize” 716 denotes that one or more base functionalities (714) may be combined in a certain manner (718) to achieve a derived functionality (720). For example, converting a graphics file from a “BMP” (bitmap) file to “TIFF” (tagged image file format) file might be a base functionality and converting a TIFF file to a “GIF” (graphics interchange format) may be yet another base functionality. Converting from BMP to GIF format would then be a derived functionality achievable by applying the combination method of feeding the output from a BMP-to-TIFF conversion service into a TIFF-to-GIF conversion service. It should be noted that in FIG. 7 ternary relationship “synthesize” 716 relates functionalities, not components. For example, ternary relationship “synthesize” 716 would indicate that any BMP-to-TIFF conversion service may be combined with any TIFF-to-GIF conversion service to yield a BMP-to-GIF conversion meta-service; no indication is made in ternary relationship “synthesize” 716 as to which specific BMP-to-TIFF conversion service should be used.
  • “Combinable” [0054] relationship 722 relates a combination method (718) with one or more components (706). “Combinable” relationship 722 denotes that a particular group of components may be combined according to a particular combination method (718). Thus, in the case of the aforementioned graphics file format conversions, “combinable” relationship 722 would store an indication that two particular conversion services could be combined by feed the output of one into the input of the other. Thus, if a certain functionality must be derived from base functionalities, “combinable” relationship 722 may be consulted to ensure that a particular group of components may be combined in the way necessary to achieve the desired derived functionality.
  • A combination of components ([0055] 706) combining a set of base functionalities (714) into a derived functionality (720) is a combination, represented by “combination” entity 724, which is related to entities 706, 714, and 720 via relationships 722, 728, and 730. “Combination scheme” attribute 726 of “combination” entity 724 represents information for forming or using the combination. Combination entity 724 provides a history mechanism for storing already-derived combinations. “Combination scheme” attribute 726 may contain, for example, combination method information (e.g., from “combination method” entity 718), or any other pertinent information for using or forming a combination (such as instructions for forming the combination from individual components or a copy of a combined software component incorporating the code from individual components).
  • A database schema such as the schema described in FIG. 7 may be implemented using a database management system, such as a relational, object-oriented, object-relational, or deductive database management system. Other data storage paradigms are also possible within a preferred embodiment of the present invention as are available in the art. [0056]
  • In accordance with a preferred embodiment of the present invention, a database schema such as is described in FIG. 7 is combined with control logic (e.g., such as is provided by directory service [0057] 401, composition service 402, and composition logic 403 in FIG. 4) to allow available services to be selected and/or combined in satisfaction of functional requirements. FIG. 8 depicts in flowchart form one possible embodiment of a control logic that may be used in an embodiment of the present invention. The control logic described in FIG. 8 is based on the database schema of FIG. 7 and combines functionalities of directory service 401, composition service 402, and composition logic 403, as described with respect to FIG. 4. As was stated in conjunction with FIG. 4, no rigid separation of directory service 401, composition service 402, and composition logic 403 is required by the present invention. As with the database schema in FIG. 7, the process depicted in FIG. 8 is merely intended to serve as an example of how a control logic may function and is not intended to be limiting.
  • The process depicted in FIG. 8 begins with calling a subroutine to find the components and constraints associated with the specified functional requirements (block [0058] 800). The subroutine called in block 800 is a recursive subroutine to find and/or combine components in satisfaction of each functional requirement specified. As components are incorporated into the solution for each functional requirement, the subroutine is invoked recursively to incorporate additional components and/or combinations in satisfaction of the remaining requirements. When the subroutine is initially invoked, the full list of functional requirements and two empty lists, representing the components and constraints in the solution so far, may be passed into the subroutine as parameters. As the subroutine is repeatedly recursively called, components and constraints are added to the two lists representing the solution so far and functional requirements that have been satisfied by the solution so far are removed from the list of functional requirements.
  • Each time the subroutine is invoked, a determination is made as to whether any functional requirements remain to be addressed (block [0059] 802). If no additional functional requirements remain (block 802:No), the solution so far should be returned as the result (block 804).
  • If any functional requirements do remain (block [0060] 802:Yes), a determination is made as to whether any components have been selected for inclusion in the solution so far (block 806). If so (block 806:Yes), then a determination is made as to whether any of the remaining requirements can be met by components already selected for inclusion in the solution (block 808). If not (block 808:No) or if no components have been selected so far, the process continues to block 812.
  • If there is a requirement that is met by an already selected component (block [0061] 808:Yes), then usage information (i.e., information that instructs a client on how to use the component in question to achieve the desired functionality) is added to the list of constraints in the solution so far (block 810). A recursive call is then made to address any remaining functional requirements (block 811).
  • In [0062] block 812, a determination is made as to whether there is a requirement that may be met by a single component that has not yet been selected for inclusion in the solution so far. If so (block 812:Yes), the component is added to the list of components in the solution so far (block 814), usage information for that component is added to the solution so far (block 810), and the subroutine is recursively called to handle any remaining functional requirements (block 811).
  • If none of the functional requirements may be satisfied by a single component (block [0063] 812:No), a determination is made as to whether a functional requirement may be met with a combination of functions (block 816). If so (block 816:Yes), the subroutine is called recursively to find a set of components meeting the functional requirements needed to achieve the necessary derived functional requirement (block 818). The result of the recursive subroutine call is then checked to see if the components returned by the subroutine may be combined in the necessary way (block 819). If not (block 819:No), the process makes additional subroutine calls to find combinable components (block 818). If a properly combinable set of components is found (block 819:Yes), the components are added to the solution so far (block 814), usage information specifying how to combine and use the components is added to the solution so far (block 810), and the subroutine is called recursively to address any remaining functional requirements (block 811).
  • Once a solution is returned by the subroutine, the combination derived is stored in the history database (block [0064] 820). One of ordinary skill in the art will recognize that a history database may be implemented using conventional database storage techniques or by making modifications to program logic in a language that supports tabled logic programming or self-modifying code, such as Prolog, or through any other appropriate means, not limited to a simple database representation.
  • While the preferred embodiment depicted in FIGS. [0065] 4-8 assumes that the a directory service or combined directory and composition service will return a response comprising instructions or other information to allow a client to combine and use services (components), a number of other architectural arrangements are also possible. FIG. 9 depicts an embodiment of the present invention utilizing a remote meta-service provider 912. Remote meta-service provider 912 allows the actual combination of services to be performed remotely from client 900. Specifically, client 900 issues a request 902 to directory service 904, which if a combination of services is necessary relays request 906 to composition service 908. Composition service 908 then forwards combination instructions 910 to remote meta-service provider 912. Directory service 904 then responds (914, not shown) to client 900 to notify client 900 that remote meta-service provider 912 is now available to provide the requested functionality. Client 900 may then utilize remote meta-service provider 912 as if it were an individual service providing the requested functionality. Remote meta-service provider 912, however, in actuality serves as an interface to the combination of services making up the “meta-service” according to combination instructions 910.
  • FIG. 10 depicts yet another architectural variation of the present invention in which the remote meta-service provider is incorporated into the composition service used for deriving combinations. [0066] Client 1000 issues a request 1002 to directory service 1004, which if a combination of services is necessary relays request 1006 to composition service 1008, which then provides the derived meta-service to client 1000 as would remote meta-service provider 912 in FIG. 9. Directory service 1004 then responds (1010, not shown) to client 1000 to notify client 1000 that composition service 1008 is now available to provide the requested functionality. A variation on the architecture in FIG. 10 would be for directory service 1004 to provide the derived meta-service, rather than composition service 1008.
  • Additional variations on the present invention are possible. For example, the process of deriving combinations may be done in a distributed fashion, so that multiple solutions are returned from a plurality of composition services operating concurrently and a best solution is chosen from the returned solutions. Another variation is to offer two or more possible combinations to the requesting client, possibly with additional information to be used as selection criteria, and allowing the client to choose one of the possible combinations presented. Another way in which multiple solutions may be supported is for the composition service (or directory service) to query the client for preferences that would aid in choosing a derived combination from a plurality of candidates, so that the composition service (or directory service) could then offer one or more solutions that best fit the client's preferences. For example, the client could be asked whether speed or reliability is a greater concern, and solutions could be offered in which the speed/reliability tradeoff is handled in accordance with the client's needs. [0067]
  • It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions or other functional descriptive material and in a variety of other forms and that the present invention is equally applicable regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer readable media may take the form of coded formats that are decoded for actual use in a particular data processing system. Functional descriptive material is information that imparts functionality to a machine. Functional descriptive material includes, but is not limited to, computer programs, instructions, rules, facts, definitions of computable functions, objects, and data structures. [0068]
  • The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated. [0069]

Claims (36)

What is claimed is:
1. A computer-implemented process for storing information about hardware and software components comprising:
receiving a request containing a functional requirement;
consulting a directory to determine if a single component exists that satisfies the functional requirement;
in response to a determination that a single component that satisfies the functional requirements does not exist, identifying a plurality of functionalities that, when combined according to a combination method, would satisfy the functional requirement; and
identifying a plurality of components satisfying the plurality of functionalities.
2. The process of claim 1, further comprising:
verifying that the plurality of components is combinable.
3. The process of claim 1, further comprising:
deriving instructions for combining the plurality of components according to the combination method to achieve the functional requirement.
4. The process of claim 3, wherein the request is made by a client and the process further comprises:
returning the instructions to the client,
whereby the client may utilize the plurality of components to achieve the functional requirement.
5. The process of claim 3, wherein the request is made by a client and the process further comprises:
providing the instructions to a remote meta-service provider so that the remote meta-service provider may provide functionality satisfying the functional requirement to the client by combining the plurality of components into a meta-service.
6. The process of claim 1, further comprising:
registering the plurality of components with a history database for future use without reidentifying the plurality of components.
7. The process of claim 1, further comprising:
registering an identification of the plurality of components with the directory for future use without reidentifying the plurality of components.
8. The process of claim 1, further comprising:
registering an identification of the plurality of components with a plurality of directories for future use from multiple sources without reidentifying the plurality of components.
9. The process of claim 1, wherein the request is made by a client and the process further comprises:
making an identification of the plurality of components available to services other than the client.
10. The process of claim 1, wherein the request is made by a client and the process further comprises:
identifying a plurality of combinations of components satisfying the plurality of functionalities; and
offering the client a choice of a combination from the plurality of combinations.
11. The process of claim 10, wherein offering the client a choice of a combinations from the plurality of combinations further includes:
providing additional information regarding each of the plurality of combinations such that the client may utilize the additional information as selection criteria for choosing a combination from the plurality of combinations.
12. The process of claim 1, wherein the request is made by a client and the process further comprises:
identifying a plurality of combinations of components satisfying the plurality of functionalities;
querying the client to determine additional preferences; and
choosing, based on the additional preferences, at least one combination from the plurality of combinations to offer to the client.
13. A computer program product in a computer-readable medium comprising functional descriptive material that, when executed by a computer, enables the computer to perform acts including:
receiving a request containing a functional requirement;
consulting a directory to determine if a single component exists that satisfies the functional requirement;
in response to a determination that a single component that satisfies the functional requirements does not exist, identifying a plurality of functionalities that, when combined according to a combination method, would satisfy the functional requirement; and
identifying a plurality of components satisfying the plurality of functionalities.
14. The computer program product of claim 13, comprising additional functional descriptive material that, when executed by the computer, enables the computer to perform additional acts including:
verifying that the plurality of components is combinable.
15. The computer program product of claim 13, comprising additional functional descriptive material that, when executed by the computer, enables the computer to perform additional acts including:
deriving instructions for combining the plurality of components according to the combination method to achieve the functional requirement.
16. The computer program product of claim 15, wherein the request is made by a client and the computer program product comprises additional functional descriptive material that, when executed by the computer, enables the computer to perform additional acts including:
returning the instructions to the client,
whereby the client may utilize the plurality of components to achieve the functional requirement.
17. The computer program product of claim 15, wherein the request is made by a client and the computer program product comprises additional functional descriptive material that, when executed by the computer, enables the computer to perform additional acts including:
providing the instructions to a remote meta-service provider so that the remote meta-service provider may provide functionality satisfying the functional requirement to the client by combining the plurality of components into a meta-service.
18. The computer program product of claim 13, comprising additional functional descriptive material that, when executed by the computer, enables the computer to perform additional acts including:
registering the plurality of components with a history database for future use without reidentifying the plurality of components.
19. The computer program product of claim 13, comprising additional functional descriptive material that, when executed by the computer, enables the computer to perform additional acts including:
registering an identification of the plurality of components with the directory for future use without reidentifying the plurality of components.
20. The computer program product of claim 13, comprising additional functional descriptive material that, when executed by the computer, enables the computer to perform additional acts including:
registering an identification of the plurality of components with a plurality of directories for future use from multiple sources without reidentifying the plurality of components.
21. The computer program product of claim 13, wherein the request is made by a client and the computer program product comprises additional functional descriptive material that, when executed by the computer, enables the computer to perform additional acts including:
making an identification of the plurality of components available to services other than the client.
22. The computer program product of claim 13, wherein the request is made by a client and the computer program product comprises additional functional descriptive material that, when executed by the computer, enables the computer to perform additional acts including:
identifying a plurality of combinations of components satisfying the plurality of functionalities; and
offering the client a choice of a combination from the plurality of combinations.
23. The computer program product of claim 22, wherein offering the client a choice of a combinations from the plurality of combinations further includes:
providing additional information regarding each of the plurality of combinations such that the client may utilize the additional information as selection criteria for choosing a combination from the plurality of combinations.
24. The computer program product of claim 13, wherein the request is made by a client and the computer program product comprises additional functional descriptive material that, when executed by the computer, enables the computer to perform additional acts including:
identifying a plurality of combinations of components satisfying the plurality of functionalities;
querying the client to determine additional preferences; and
choosing, based on the additional preferences, at least one combination from the plurality of combinations to offer to the client.
25. A data processing system comprising:
means for receiving a request containing a functional requirement;
means for consulting a directory to determine if a single component exists that satisfies the functional requirement;
means, responsive to a determination that a single component that satisfies the functional requirements does not exist, for identifying a plurality of functionalities that, when combined according to a combination method, would satisfy the functional requirement; and
means for identifying a plurality of components satisfying the plurality of functionalities.
26. The data processing system of claim 25, further comprising:
means for verifying that the plurality of components is combinable.
27. The data processing system of claim 25, further comprising:
means for deriving instructions for combining the plurality of components according to the combination method to achieve the functional requirement.
28. The data processing system of claim 27, wherein the request is made by a client and the data processing system further comprises:
means for returning the instructions to the client,
whereby the client may utilize the plurality of components to achieve the functional requirement.
29. The data processing system of claim 27, wherein the request is made by a client and the data processing system further comprises:
means for providing the instructions to a remote meta-service provider so that the remote meta-service provider may provide functionality satisfying the functional requirement to the client by combining the plurality of components into a meta-service.
30. The data processing system of claim 25, further comprising:
means for registering the plurality of components with a history database for future use without reidentifying the plurality of components.
31. The data processing system of claim 25, further comprising:
means for registering an identification of the plurality of components with the directory for future use without reidentifying the plurality of components.
32. The data processing system of claim 25, further comprising:
means for registering an identification of the plurality of components with a plurality of directories for future use from multiple sources without reidentifying the plurality of components.
33. The data processing system of claim 25, wherein the request is made by a client and the data processing system further comprises:
means for making an identification of the plurality of components available to services other than the client.
34. The data processing system of claim 25, wherein the request is made by a client and the data processing system further comprises:
means for identifying a plurality of combinations of components satisfying the plurality of functionalities; and
means for offering the client a choice of a combination from the plurality of combinations.
35. The data processing system of claim 34, wherein offering the client a choice of a combinations from the plurality of combinations further includes:
means for providing additional information regarding each of the plurality of combinations such that the client may utilize the additional information as selection criteria for choosing a combination from the plurality of combinations.
36. The data processing system of claim 25, wherein the request is made by a client and the data processing system further comprises:
means for identifying a plurality of combinations of components satisfying the plurality of functionalities;
means for querying the client to determine additional preferences; and
means for choosing, based on the additional preferences, at least one combination from the plurality of combinations to offer to the client.
US10/252,324 2002-09-20 2002-09-20 Composition service for autonomic computing Abandoned US20040060054A1 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
US10/252,324 US20040060054A1 (en) 2002-09-20 2002-09-20 Composition service for autonomic computing
TW092119801A TWI237474B (en) 2002-09-20 2003-07-21 A method, computer program product, and data processing system for storing information about hardware and software components
JP2004537265A JP2006500650A (en) 2002-09-20 2003-09-11 Configuration services for autonomous computation
PCT/GB2003/003943 WO2004027661A2 (en) 2002-09-20 2003-09-11 Composition of services for autonomic computing
AU2003263353A AU2003263353A1 (en) 2002-09-20 2003-09-11 Composition of services for autonomic computing
CN038222612A CN1689298B (en) 2002-09-20 2003-09-11 Composition service for autonomic computing
US11/845,508 US7950015B2 (en) 2002-09-20 2007-08-27 System and method for combining services to satisfy request requirement

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/252,324 US20040060054A1 (en) 2002-09-20 2002-09-20 Composition service for autonomic computing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/845,508 Continuation US7950015B2 (en) 2002-09-20 2007-08-27 System and method for combining services to satisfy request requirement

Publications (1)

Publication Number Publication Date
US20040060054A1 true US20040060054A1 (en) 2004-03-25

Family

ID=31992935

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/252,324 Abandoned US20040060054A1 (en) 2002-09-20 2002-09-20 Composition service for autonomic computing
US11/845,508 Expired - Fee Related US7950015B2 (en) 2002-09-20 2007-08-27 System and method for combining services to satisfy request requirement

Family Applications After (1)

Application Number Title Priority Date Filing Date
US11/845,508 Expired - Fee Related US7950015B2 (en) 2002-09-20 2007-08-27 System and method for combining services to satisfy request requirement

Country Status (6)

Country Link
US (2) US20040060054A1 (en)
JP (1) JP2006500650A (en)
CN (1) CN1689298B (en)
AU (1) AU2003263353A1 (en)
TW (1) TWI237474B (en)
WO (1) WO2004027661A2 (en)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040148138A1 (en) * 2002-03-09 2004-07-29 Katrina Garnett System, method and model for autonomic management of enterprise applications
US20040205765A1 (en) * 2003-02-28 2004-10-14 Dorothea Beringer System and methods for defining a binding for web-services
US20070078969A1 (en) * 2005-10-04 2007-04-05 Ngo Chuong N Composite communication service management
EP1879358A1 (en) * 2006-07-12 2008-01-16 Hewlett-Packard Development Company, L.P. Method of providing composite services in a network and corresponding network element
US20080168424A1 (en) * 2006-06-15 2008-07-10 Ajay Mohindra Management of composite software services
US20080209397A1 (en) * 2006-06-15 2008-08-28 Ajay Mohindra Method and apparatus for on-demand composition and teardown of service infrastructure
US20080275935A1 (en) * 2006-06-15 2008-11-06 Ajay Mohindra Method and apparatus for middleware assisted system integration in a federated environment
US7490095B2 (en) 2006-05-19 2009-02-10 International Business Machines Corporation Scope and distribution of knowledge in an autonomic computing system
WO2010139368A1 (en) 2009-06-05 2010-12-09 Telefonaktiebolaget L M Ericsson (Publ) A method for invoking a constituent service provided in a telecommunication network and an application server for providing a composite service
US7873614B2 (en) 2001-05-29 2011-01-18 Oracle America, Inc. Method and system for creating and utilizing managed roles in a directory system
EP2727314A1 (en) * 2011-06-30 2014-05-07 Telefonaktiebolaget L M Ericsson (publ) Flexible data communication

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956422B2 (en) 2012-12-05 2021-03-23 Oracle International Corporation Integrating event processing with map-reduce
JP5678222B2 (en) * 2014-03-19 2015-02-25 株式会社日立製作所 Management apparatus and method, and computer system
US9344843B2 (en) 2014-10-17 2016-05-17 Sap Se Providing context sensitive service bundles
US9672082B2 (en) * 2015-10-21 2017-06-06 Oracle International Corporation Guaranteeing the event order for multi-stage processing in distributed systems
US11657056B2 (en) 2016-09-15 2023-05-23 Oracle International Corporation Data serialization in a distributed event processing system
EP3513322B1 (en) 2016-09-15 2021-07-21 Oracle International Corporation Managing snapshots and state with micro-batching
WO2018169430A1 (en) 2017-03-17 2018-09-20 Oracle International Corporation Integrating logic in micro batch based event processing systems
WO2018169429A1 (en) 2017-03-17 2018-09-20 Oracle International Corporation Framework for the deployment of event-based applications

Citations (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5638494A (en) * 1994-03-15 1997-06-10 Mitel Corporation Adaptive communication system
US5701400A (en) * 1995-03-08 1997-12-23 Amado; Carlos Armando Method and apparatus for applying if-then-else rules to data sets in a relational data base and generating from the results of application of said rules a database of diagnostics linked to said data sets to aid executive analysis of financial data
US5790789A (en) * 1996-08-02 1998-08-04 Suarez; Larry Method and architecture for the creation, control and deployment of services within a distributed computer environment
US5805776A (en) * 1993-02-17 1998-09-08 Daimler Benz Aktiengesellschaft Device for automatic generation of a knowledge base for a diagnostic expert system
US5832467A (en) * 1995-09-27 1998-11-03 U.S. Philips Corporation Behavior prediction for rule-based data processing apparatus
US5909544A (en) * 1995-08-23 1999-06-01 Novell Inc. Automated test harness
US5978911A (en) * 1997-09-10 1999-11-02 International Business Machines Corp. Automatic error recovery in data processing systems
US6023586A (en) * 1998-02-10 2000-02-08 Novell, Inc. Integrity verifying and correcting software
US6026374A (en) * 1996-05-30 2000-02-15 International Business Machines Corporation System and method for generating trusted descriptions of information products
US6055562A (en) * 1997-05-01 2000-04-25 International Business Machines Corporation Dynamic mobile agents
US6199204B1 (en) * 1998-01-28 2001-03-06 International Business Machines Corporation Distribution of software updates via a computer network
US6216173B1 (en) * 1998-02-03 2001-04-10 Redbox Technologies Limited Method and apparatus for content processing and routing
US6256771B1 (en) * 1997-10-16 2001-07-03 At&T Corp. Method and apparatus for providing a dynamic service composition software architecture
US20020100036A1 (en) * 2000-09-22 2002-07-25 Patchlink.Com Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US20020143819A1 (en) * 2000-05-31 2002-10-03 Cheng Han Web service syndication system
US6463584B1 (en) * 1998-03-12 2002-10-08 Telefonaktiebolaget Lm Ericsson State copying method for software update
US20020183866A1 (en) * 1999-04-02 2002-12-05 Dean Jason Arthur Method and system for diagnosing machine malfunctions
US6567957B1 (en) * 1998-09-30 2003-05-20 Cadence Design Systems, Inc. Block based design methodology
US6584455B1 (en) * 1999-12-14 2003-06-24 International Business Machines Corporation System and method for predicting design errors in integrated circuits
US6631367B2 (en) * 2000-12-28 2003-10-07 Intel Corporation Method and apparatus to search for information
US20030200293A1 (en) * 2002-04-18 2003-10-23 International Business Machines Corporation Graphics for end to end component mapping and problem - solving in a network environment
US20030235158A1 (en) * 2001-03-09 2003-12-25 Chung-Chieh Lee Protocol for a self-organizing network using a logical spanning tree backbone
US6751608B1 (en) * 1998-06-26 2004-06-15 At&T Corp. Method and apparatus for improving end to end performance of a data network
US20040236843A1 (en) * 2001-11-15 2004-11-25 Robert Wing Online diagnosing of computer hardware and software
US6912532B2 (en) * 2000-05-22 2005-06-28 Benjamin H. Andersen Multi-level multiplexor system for networked browser
US6970869B1 (en) * 2000-05-09 2005-11-29 Sun Microsystems, Inc. Method and apparatus to discover services and negotiate capabilities
US7185342B1 (en) * 2001-07-24 2007-02-27 Oracle International Corporation Distributed service aggregation and composition

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9508283D0 (en) 1995-02-07 1995-06-14 British Telecomm Information services provision and management
US6031990A (en) 1997-04-15 2000-02-29 Compuware Corporation Computer software testing management
US5935264A (en) 1997-06-10 1999-08-10 Micron Technology, Inc. Method and apparatus for determining a set of tests for integrated circuit testing
JPH1115849A (en) * 1997-06-26 1999-01-22 Fujitsu Ltd Method for controlling server cooperation
US6125359A (en) 1997-09-23 2000-09-26 Unisys Corporation Method and apparatus for identifying the coverage of a test sequence in a rules-based expert system
US6286131B1 (en) 1997-12-03 2001-09-04 Microsoft Corporation Debugging tool for linguistic applications
US6360331B2 (en) 1998-04-17 2002-03-19 Microsoft Corporation Method and system for transparently failing over application configuration information in a server cluster
US6182245B1 (en) 1998-08-31 2001-01-30 Lsi Logic Corporation Software test case client/server system and method
US6622157B1 (en) 1998-09-28 2003-09-16 Certeon, Inc. Extending network services using mobile agents
US6145000A (en) * 1998-10-06 2000-11-07 Ameritech Corporation System and method for creating and navigating a linear hypermedia resource program
US6851115B1 (en) 1999-01-05 2005-02-01 Sri International Software-based architecture for communication and cooperation among distributed electronic agents
US6353897B1 (en) 1999-01-06 2002-03-05 International Business Machines Corporation Object oriented apparatus and method for testing object oriented software
US6473794B1 (en) 1999-05-27 2002-10-29 Accenture Llp System for establishing plan to test components of web based framework by displaying pictorial representation and conveying indicia coded components of existing network framework
US7472349B1 (en) 1999-06-01 2008-12-30 Oracle International Corporation Dynamic services infrastructure for allowing programmatic access to internet and other resources
US6529950B1 (en) 1999-06-17 2003-03-04 International Business Machines Corporation Policy-based multivariate application-level QoS negotiation for multimedia services
US6467088B1 (en) 1999-06-30 2002-10-15 Koninklijke Philips Electronics N.V. Reconfiguration manager for controlling upgrades of electronic devices
US7103647B2 (en) 1999-08-23 2006-09-05 Terraspring, Inc. Symbolic definition of a computer system
US6779016B1 (en) 1999-08-23 2004-08-17 Terraspring, Inc. Extensible computing system
US6834341B1 (en) 2000-02-22 2004-12-21 Microsoft Corporation Authentication methods and systems for accessing networks, authentication methods and systems for accessing the internet
US6691244B1 (en) 2000-03-14 2004-02-10 Sun Microsystems, Inc. System and method for comprehensive availability management in a high-availability computer system
US20030046615A1 (en) 2000-12-22 2003-03-06 Alan Stone System and method for adaptive reliability balancing in distributed programming networks
US20020087668A1 (en) 2000-12-29 2002-07-04 San Martin Raul S. Automatic upgrade of live network devices
US6804709B2 (en) 2001-02-20 2004-10-12 Microsoft Corporation System uses test controller to match different combination configuration capabilities of servers and clients and assign test cases for implementing distributed testing
US6957393B2 (en) * 2001-03-19 2005-10-18 Accenture Llp Mobile valet
US7249100B2 (en) 2001-05-15 2007-07-24 Nokia Corporation Service discovery access to user location
JP3828379B2 (en) 2001-05-17 2006-10-04 富士通株式会社 Test specification generation support apparatus, method, program, and recording medium
US20030023710A1 (en) 2001-05-24 2003-01-30 Andrew Corlett Network metric system
JP4192446B2 (en) * 2001-06-29 2008-12-10 株式会社日立製作所 Communication service transaction method and communication system
US7165074B2 (en) 2002-05-08 2007-01-16 Sun Microsystems, Inc. Software development test case analyzer and optimizer

Patent Citations (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805776A (en) * 1993-02-17 1998-09-08 Daimler Benz Aktiengesellschaft Device for automatic generation of a knowledge base for a diagnostic expert system
US5638494A (en) * 1994-03-15 1997-06-10 Mitel Corporation Adaptive communication system
US5701400A (en) * 1995-03-08 1997-12-23 Amado; Carlos Armando Method and apparatus for applying if-then-else rules to data sets in a relational data base and generating from the results of application of said rules a database of diagnostics linked to said data sets to aid executive analysis of financial data
US5909544A (en) * 1995-08-23 1999-06-01 Novell Inc. Automated test harness
US5832467A (en) * 1995-09-27 1998-11-03 U.S. Philips Corporation Behavior prediction for rule-based data processing apparatus
US6026374A (en) * 1996-05-30 2000-02-15 International Business Machines Corporation System and method for generating trusted descriptions of information products
US5790789A (en) * 1996-08-02 1998-08-04 Suarez; Larry Method and architecture for the creation, control and deployment of services within a distributed computer environment
US6055562A (en) * 1997-05-01 2000-04-25 International Business Machines Corporation Dynamic mobile agents
US5978911A (en) * 1997-09-10 1999-11-02 International Business Machines Corp. Automatic error recovery in data processing systems
US6256771B1 (en) * 1997-10-16 2001-07-03 At&T Corp. Method and apparatus for providing a dynamic service composition software architecture
US6199204B1 (en) * 1998-01-28 2001-03-06 International Business Machines Corporation Distribution of software updates via a computer network
US6216173B1 (en) * 1998-02-03 2001-04-10 Redbox Technologies Limited Method and apparatus for content processing and routing
US6023586A (en) * 1998-02-10 2000-02-08 Novell, Inc. Integrity verifying and correcting software
US6463584B1 (en) * 1998-03-12 2002-10-08 Telefonaktiebolaget Lm Ericsson State copying method for software update
US6751608B1 (en) * 1998-06-26 2004-06-15 At&T Corp. Method and apparatus for improving end to end performance of a data network
US6567957B1 (en) * 1998-09-30 2003-05-20 Cadence Design Systems, Inc. Block based design methodology
US20020183866A1 (en) * 1999-04-02 2002-12-05 Dean Jason Arthur Method and system for diagnosing machine malfunctions
US6584455B1 (en) * 1999-12-14 2003-06-24 International Business Machines Corporation System and method for predicting design errors in integrated circuits
US6970869B1 (en) * 2000-05-09 2005-11-29 Sun Microsystems, Inc. Method and apparatus to discover services and negotiate capabilities
US6912532B2 (en) * 2000-05-22 2005-06-28 Benjamin H. Andersen Multi-level multiplexor system for networked browser
US20020143819A1 (en) * 2000-05-31 2002-10-03 Cheng Han Web service syndication system
US20020100036A1 (en) * 2000-09-22 2002-07-25 Patchlink.Com Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US6631367B2 (en) * 2000-12-28 2003-10-07 Intel Corporation Method and apparatus to search for information
US20030235158A1 (en) * 2001-03-09 2003-12-25 Chung-Chieh Lee Protocol for a self-organizing network using a logical spanning tree backbone
US7185342B1 (en) * 2001-07-24 2007-02-27 Oracle International Corporation Distributed service aggregation and composition
US20040236843A1 (en) * 2001-11-15 2004-11-25 Robert Wing Online diagnosing of computer hardware and software
US20030200293A1 (en) * 2002-04-18 2003-10-23 International Business Machines Corporation Graphics for end to end component mapping and problem - solving in a network environment

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7873614B2 (en) 2001-05-29 2011-01-18 Oracle America, Inc. Method and system for creating and utilizing managed roles in a directory system
US6856942B2 (en) * 2002-03-09 2005-02-15 Katrina Garnett System, method and model for autonomic management of enterprise applications
US20040148138A1 (en) * 2002-03-09 2004-07-29 Katrina Garnett System, method and model for autonomic management of enterprise applications
US20040205765A1 (en) * 2003-02-28 2004-10-14 Dorothea Beringer System and methods for defining a binding for web-services
US7577964B2 (en) * 2003-02-28 2009-08-18 Hewlett-Packard Development Company, L.P. System and methods for defining a binding for web-services
US20070078969A1 (en) * 2005-10-04 2007-04-05 Ngo Chuong N Composite communication service management
WO2007054825A2 (en) * 2005-10-04 2007-05-18 Alcatel Composite communication service management
WO2007054825A3 (en) * 2005-10-04 2008-04-17 Cit Alcatel Composite communication service management
US7490095B2 (en) 2006-05-19 2009-02-10 International Business Machines Corporation Scope and distribution of knowledge in an autonomic computing system
US9230209B2 (en) 2006-05-19 2016-01-05 International Business Machines Corporation Scope and distribution of knowledge in an autonomic computing system
US20090150334A1 (en) * 2006-05-19 2009-06-11 Eric Labadie Scope and distribution of knowledge in an autonomic computing system
EP2035925A2 (en) * 2006-06-15 2009-03-18 International Business Machines Corporation Method and apparatus for on-demand composition and teardown of service infrastructure
US7945671B2 (en) 2006-06-15 2011-05-17 International Business Machines Corporation Method and apparatus for middleware assisted system integration in a federated environment
US20080209397A1 (en) * 2006-06-15 2008-08-28 Ajay Mohindra Method and apparatus for on-demand composition and teardown of service infrastructure
US20080168424A1 (en) * 2006-06-15 2008-07-10 Ajay Mohindra Management of composite software services
US20080275935A1 (en) * 2006-06-15 2008-11-06 Ajay Mohindra Method and apparatus for middleware assisted system integration in a federated environment
EP2035925A4 (en) * 2006-06-15 2010-11-03 Ibm Method and apparatus for on-demand composition and teardown of service infrastructure
US8677318B2 (en) 2006-06-15 2014-03-18 International Business Machines Corporation Management of composite software services
US8191043B2 (en) 2006-06-15 2012-05-29 International Business Machines Corporation On-demand composition and teardown of service infrastructure
US20090210534A1 (en) * 2006-07-12 2009-08-20 Hewlett-Packard Development Company L.P. Method of Providing Services in a Network, Network Element and Computer Program Product
WO2008006837A1 (en) * 2006-07-12 2008-01-17 Hewlett-Packard Development Company, L.P. Method of providing services in a network, network element
US9043465B2 (en) 2006-07-12 2015-05-26 Hewlett-Packard Development Company, L.P. Method of providing services in a network, network element and computer program product
EP1879358A1 (en) * 2006-07-12 2008-01-16 Hewlett-Packard Development Company, L.P. Method of providing composite services in a network and corresponding network element
WO2010139368A1 (en) 2009-06-05 2010-12-09 Telefonaktiebolaget L M Ericsson (Publ) A method for invoking a constituent service provided in a telecommunication network and an application server for providing a composite service
US9491244B2 (en) 2009-06-05 2016-11-08 Telefonaktiebolaget Lm Ericsson (Publ) Method for invoking a constituent service provided in a telecommunication network and an application server for providing a composite service
EP2727314A1 (en) * 2011-06-30 2014-05-07 Telefonaktiebolaget L M Ericsson (publ) Flexible data communication
US10536508B2 (en) 2011-06-30 2020-01-14 Telefonaktiebolaget Lm Ericsson (Publ) Flexible data communication

Also Published As

Publication number Publication date
US20070294386A1 (en) 2007-12-20
TWI237474B (en) 2005-08-01
CN1689298A (en) 2005-10-26
CN1689298B (en) 2010-07-28
JP2006500650A (en) 2006-01-05
WO2004027661A3 (en) 2004-07-29
AU2003263353A8 (en) 2004-04-08
WO2004027661A2 (en) 2004-04-01
AU2003263353A1 (en) 2004-04-08
TW200406103A (en) 2004-04-16
US7950015B2 (en) 2011-05-24

Similar Documents

Publication Publication Date Title
US7950015B2 (en) System and method for combining services to satisfy request requirement
US8006240B2 (en) Support continuous availability by allowing the use of multiple concurrent versions of shared artifact libraries, with proper bind-drain semantics, for long-lived process application consumers
US7340446B2 (en) Method and system for query-based management of multiple network resources
US8112424B2 (en) Flexible and resilient information collaboration management infrastructure
US6895586B1 (en) Enterprise management system and method which includes a common enterprise-wide namespace and prototype-based hierarchical inheritance
US7177862B2 (en) Method and structure for federated web service discovery search over multiple registries with result aggregation
US7634728B2 (en) System and method for providing a runtime environment for active web based document resources
US8056091B2 (en) Systems and methods for using application services
Zhang et al. XML-based advanced UDDI search mechanism for B2B integration
US20020087374A1 (en) Apparatus and method for verifying categorization of services using canonical service description tests
US20040083274A1 (en) Publish-subscribe architecture using information objects in a computer network
US7055134B2 (en) Service provider integration framework in object oriented programming environment
US7702687B2 (en) Method and system of typing resources in a distributed system
US20040059704A1 (en) Self-managing computing system
US20020194171A1 (en) Method and system for integrated service administration via a directory service
US20030115243A1 (en) Distributed process execution system and method
JP2993434B2 (en) Distributed hypermedia system
US20060265387A1 (en) Method and apparatus for loading artifacts
US20020198908A1 (en) Method and apparatus for delivery of external data from a centralized repository in a network data processing system
US7784047B2 (en) Common management model for distributed server network
Gal et al. Toward Web-based application management systems
US20030005098A1 (en) Method and apparatus for using dynamic grouping data to group attributes relating to computer systems
Rolland et al. A framework for encapsulating best business practices for electricity supply industry into generic patterns
US20020087340A1 (en) Apparatus and method for categorizing services using canonical service descriptions
Künzl Development of a Workflow-based Infrastructure for Managing and Executing Web Services

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DAS, RAJARSHI;WHALLEY, IAN NICHOLAS;REEL/FRAME:013326/0015

Effective date: 20020913

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION