1. Field of the Invention
The present invention relates generally to software processing, and more particularly, to methods and systems for intelligently and automatically selecting and utilizing networked computer resources to collectively execute process-flow-based computing operations.
2. Description of the Related Art
In today's fast paced computing world, more and more businesses use the World Wide Web (Web) to provide web services to consumers all over the world. In a simple scenario, a web service provider advertises the service provider's web services by registering the service provider's data with a web registry. In turn, a consumer of the web services (i.e., a client), communicates with the web registry, requesting the web registry to provide the client with information about a service provider satisfying a specific criteria transmitted by the client. The web registry then processes the request so as to locate the service provider that satisfies the particular criteria requested by the client. The registry then provides the client with the Uniform Resource Locater (URL) of the located service provider. Thereafter, if the client finds web services provided by the service provider satisfaction, the client communicates with the selected service provider. This simple scenario, however, rarely occurs.
In reality, web services are offered over the web by multiple service providers registered with several web registries for use by numerous clients. To make matters more complicated, each service provider may be implemented using different technologies (e.g., a net compatible server), each web registry may be implemented using different types of web registry documents (e.g., web service description language (WSDL), and each client can be based on different types of technologies (e.g., Java™ application based client). Further complicating the problems is that each of the service providers, web registries, and clients, may be implemented on different platforms. Accordingly, interactions between each combination of web registry, service provider, and client are rather complex as it may involve communications being based on different technologies and operating systems.
Additionally, communication between the web registries, service providers, and clients are synchronized. For instance, a service provider must ensure that the registry is up and running prior to service provider publishing the service provider's services on the web registry. In a like manner, a client must ensure that the registry is up and running prior to communicating a request for a web service. A client must further be sure that the service provider is running prior to communicating a request to the service provider. Thus far, however, such synchronization requirements have not been addressed, causing premature termination of communications between service providers, registries, and clients. In such scenarios, interactions must be restarted and the web services be re-dispatched. Additionally, the failed service provider, registry, or client must be restarted manually, requiring human intervention.
As the web services are being widespreadly used, to avoid such scenarios, the interactions between different service providers, registries, and clients are tested. Particularly, each combination of interaction between the web registries, service providers, and clients are tested to ensure the reliability of the web services as well as the web registries, service providers, and clients. This is important, as different service providers, registries, and clients can be implemented on diverse platforms using different technologies. Additionally, properly testing the interactions between the web registries, service providers, and clients must further ensure synchronization problems associated with the prior art.
Thus far, interactions between the web registries, service providers, and clients are typically performed by stand-alone computers or a network of computer resources. When using a stand-alone computer system, separate stand-alone computers are manually programmed to run tests selected by a user. Comparatively, if a network of computer resources is used, the user allocates a number of computer resources to test a particular interaction. Predominantly, the user manually selects a group of selected computer resources or adds and deletes computer resources to the network, programs the master computer system and the server, initiates the running of the user-selected test, and runs the test on the group of dedicated computer systems coupled to the server.
In either scenario, a heavy user interface is required to test the interactions, schedule the running of specific tests on the system resources, add and delete the system resources, keep track of the system resources and their respective hardware and software configurations, and maintain the system resources. Additionally, in either case, interactions are tested by dedicated system resources, designed to solely be used for testing the interactions between the registries, service providers, and clients.
By way of example, to test interactions scheduled to be performed synchronously, a test developer is required to manually initiate the testing process on a plurality of system resources following a particular menu. The menu provides the user the order in which specific tests are required to be run (e.g., synchronously, in parallel, or sequentially). Thus, testing a certain interaction requires the presence of a test developer at all times so that different tests can be initiated in accordance to the schedule set in the menu.
Furthermore, if an exception occurs during testing of an interaction between the registries, service providers, and clients, the testing process is halted. For instance, if an exception is occurred during testing an interaction between the registry and the client, the interaction is terminated, requiring that the client and the registry to be restarted. If restarting of the client and the web registry does not resolve the exception, the test developer on duty must communicate with the software programmer in charge of developing the test source code so as to resolve the exception.
Additionally, currently, if a system resource crashes or a response has not been received from a system resource during testing a particular interaction, testing the particular interaction continues indefinitely. In certain situations, to avoid such problems, testing the interaction is interrupted manually by the test developer present.
One significant limitation of the current state of testing the web services and interactions between the registries, service providers, and clients is the extent of human intervention and significant role of humans. Requiring the presence of test developers to manually initiate, schedule, and interrupt the testing is very costly, is a of waste of resources, not to mention, very time consuming. At times, human error further exacerbates this limitation. Another limitation involves wasting of computer resources, as the computer resources are solely dedicated to testing the web services and the interactions between the web registries, service providers, and clients.
In view of the foregoing, there is a need for a flexible methodology and system capable of selecting and utilizing dynamic, cross-platform computer resources to process multiple process-flow-based computer software processes using diverse technologies and platforms with minimal human intervention.