System and method for dynamically configuring a multiplatform computing environment

A system and associated method for dynamically configuring a multiplatform computing environment are disclosed. At least one service may form a workflow to be executed as an ordered group. A database contains configuration data, workflow control data, and workflow status data. A service configuration utility provides user interface to dynamically receive configuration data, to update the database, and to display contents of the database. A workflow entry process creates a workflow. A service monitor controls runtime behaviors of the system according to contents of the database. A service listener routes a workflow to associated services according to the configuration data in the database. A service executes a desired function, and then reports a result to the system monitor. The system monitor updates contents of the database to reflect the reported result.

FIELD OF THE INVENTION

The present invention discloses a system and associated method for dynamically configuring a multiplatform computing environment.

BACKGROUND OF THE INVENTION

Conventional static configuration systems of applications in a multiplatform environment require complicated manipulation to change the contents of configuration. Also, events cannot be grouped based on a service that an event provides.

To change configuration in a conventional multiplatform computing environment, users of such system need support from a system administrator who is skilled and authorized to reconfigure the system. Thus, users cannot efficiently utilize the system as they need. In cases of database manipulation, any portion of database manipulation requiring changes of the contents of system configuration must be handled by a system administrator as well. Also, in a conventional system using static configuration, it is impossible to group related events and process a group of events by one service.

Consequently, there is a need for a system and associated method to overcome at least one of the preceding disadvantages of current static configuration systems in a multiplatform environment.

SUMMARY OF THE INVENTION

The present invention provides a method for dynamically configuring a multiplatform computing system comprising at least one service, at least one workflow, a service configuration utility, a workflow entry process, a service monitor, at least one service listener, and a database, wherein at least one service, said at least one workflow, the service configuration utility, the workflow entry process, the service monitor, and said at least one service listener are executed on the multiplatform computing system, wherein the multiplatform computing system comprises at least one computer system, wherein the database is coupled to the multiplatform computing system, wherein the database comprises at least one service configuration record, at least one workflow configuration record, at least one workflow control record, and at least one workflow status record, the method comprising:

receiving a dynamic configuration request from a user through the service configuration utility, wherein said dynamic configuration request comprises a first data set to configure said at least one service and a second data set to configure said at least one workflow;

updating contents of the database pursuant to the first data set and the second data set of the received dynamic configuration request; and

processing said at least one workflow pursuant to the updated contents of the database,

wherein each service configuration record of said at least one service configuration record comprises a service identifier field and a service key field,

wherein each workflow configuration record of said at least one workflow configuration record comprises a workflow identifier field and a service field,

wherein each workflow control record of said at least one workflow control record comprises a workflow identifier field,

wherein each workflow status record of said at least one workflow status record comprises a workflow identifier field.

The present invention provides a computer program product, comprising a computer usable medium having a computer readable program code embodied therein, said computer readable program code containing instructions that when executed by a processor of a computer system implement a method for dynamically configuring a multiplatform computing system comprising at least one service, at least one workflow, a service configuration utility, a workflow entry process, a service monitor, at least one service listener, and a database, wherein at least one service, said at least one workflow, the service configuration utility, the workflow entry process, the service monitor, and said at least one service listener are executed on the multiplatform computing system, wherein the multiplatform computing system comprises at least one computer system, wherein the database is coupled to the multiplatform computing system, wherein the database comprises at least one service configuration record, at least one workflow configuration record, at least one workflow control record, and at least one workflow status record, the method comprising:

receiving a dynamic configuration request from a user through the service configuration utility, wherein said dynamic configuration request comprises a first data set to configure said at least one service and a second data set to configure said at least one workflow;

updating contents of the database pursuant to the first data set and the second data set of the received dynamic configuration request; and

processing said at least one workflow pursuant to the updated contents of the database,

wherein each service configuration record of said at least one service configuration record comprises a service identifier field and a service key field,

wherein each workflow configuration record of said at least one workflow configuration record comprises a workflow identifier field and a service field,

wherein each workflow control record of said at least one workflow control record comprises a workflow identifier field,

wherein each workflow status record of said at least one workflow status record comprises a workflow identifier field.

The present invention provides a computer system comprising a processor and a computer readable memory unit coupled to the processor, said memory unit containing instructions that when executed by the processor implement a method for dynamically configuring a multiplatform computing system comprising at least one service, at least one workflow, a service configuration utility, a workflow entry process, a service monitor, at least one service listener, and a database, wherein at least one service, said at least one workflow, the service configuration utility, the workflow entry process, the service monitor, and said at least one service listener are executed on the multiplatform computing system, wherein the multiplatform computing system comprises at least one computer system, wherein the database is coupled to the multiplatform computing system, wherein the database comprises at least one service configuration record, at least one workflow configuration record, at least one workflow control record, and at least one workflow status record, the method comprising:

receiving a dynamic configuration request from a user through the service configuration utility, wherein said dynamic configuration request comprises a first data set to configure said at least one service and a second data set to configure said at least one workflow;

updating contents of the database pursuant to the first data set and the second data set of the received dynamic configuration request; and

processing said at least one workflow pursuant to the updated contents of the database,

wherein each service configuration record of said at least one service configuration record comprises a service identifier field and a service key field,

wherein each workflow configuration record of said at least one workflow configuration record comprises a workflow identifier field and a service field,

wherein each workflow control record of said at least one workflow control record comprises a workflow identifier field,

wherein each workflow status record of said at least one workflow status record comprises a workflow identifier field.

The present invention provides a process for supporting computer infrastructure, said process comprising providing at least one support service for at least one of creating, integrating, hosting, maintaining, and deploying computer-readable code in a computing system, wherein the code in combination with the computing system is capable of performing a method for dynamically configuring a multiplatform computing system comprising at least one service, at least one workflow, a service configuration utility, a workflow entry process, a service monitor, at least one service listener, and a database, wherein at least one service, said at least one workflow, the service configuration utility, the workflow entry process, the service monitor, and said at least one service listener are executed on the multiplatform computing system, wherein the multiplatform computing system comprises at least one computer system, wherein the database is coupled to the multiplatform computing system, wherein the database comprises at least one service configuration record, at least one workflow configuration record, at least one workflow control record, and at least one workflow status record, the method comprising:

receiving a dynamic configuration request from a user through the service configuration utility, wherein said dynamic configuration request comprises a first data set to configure said at least one service and a second data set to configure said at least one workflow;

updating contents of the database pursuant to the first data set and the second data set of the received dynamic configuration request; and processing said at least one workflow pursuant to the updated contents of the database,

wherein each service configuration record of said at least one service configuration record comprises a service identifier field and a service key field,

wherein each workflow configuration record of said at least one workflow configuration record comprises a workflow identifier field and a service field,

wherein each workflow control record of said at least one workflow control record comprises a workflow identifier field,

wherein each workflow status record of said at least one workflow status record comprises a workflow identifier field.

The present invention provides a method and system that overcomes at least one of the current disadvantages of conventional method and system for configuring a multiplatform computing environment.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1illustrates a dynamic service configuration system1for creating, managing, monitoring, and terminating a series of at least one event, in accordance with embodiments of the present invention.

Conventional solutions for multiplatform computing environments have limited monitoring functionality of particular events, without facilitating active management. Conventional solutions also provides simplistic database manipulation functions by enabling users to define a triggering event to invoke database manipulation, but such function is limited because the setup of triggering event is complex and because such operation requires supports from system administrator to actively manipulate database requiring reconfiguration of the system. One of the conventional solutions called dynamic message routing solution partially solves problems of static configuration. An example of dynamic message routing solutions is WebSphere Enterprise Service Bus (ESB) solution by International Business Machines (IBM). However, even in this system, it is impossible to group related events and process a group of events by one service.

To overcome disadvantages of conventional systems, the system and associated methods of the present invention enable users of multiplatform computing environment to dynamically configure the system, and to group related events based on a desired service, and to process grouped events as a single service. The present invention also enables users to actively manage, to track, and to monitor events within the system with a single interface. The present invention enables users to manage various applications spread across multiple platforms. The present invention facilitates dynamic database manipulations upon predefined triggering events without requiring administrative intervention to reconfigure the system. The present invention also enables users to manage and monitor errors occurring from the execution of external application providing the functions invoked by events in the system. The present invention also enables dynamic load balancing.

The dynamic service configuration system1of the present invention comprises at least one service100, at least one workflow200, a service configuration utility300, a service monitor400, a workflow entry process500, at least one service listener600, a database700, and at least one external application800.

A service100executes the desired external application event for the workflow. The service communicates the results to the service monitor which updates the contents of the database. The service also may refer to an interface mechanism between the system of the present invention and external applications executing a published external application. A service is a specific type of event which can be grouped together to form a workflow200. In the system of the present invention, runtime behaviors of a service may be controlled by manipulating the context of the service configuration. A service can communicate with external applications using standard Extensive Markup Language (XML) data formats.

The term event, in programming context, refers to a software message that indicates something has happened, such as a keystroke or mouse click. Also, in the context of process control, an event is an occurrence that has happened and has been registered. The term event also interchangeably refers to a single step of operation in a sequential process flow.

The term service generally refers to a discretely defined set of contiguous and autonomous business or technical functionality, in the context of enterprise architecture, service-orientation, and service-oriented architecture (SOA). The definition of service as “a mechanism to enable access to one or more capabilities, where the access is provided using a prescribed interface and is exercised consistent with constraints and policies as specified by the service description” by the Organization for the Advancement of Structured Information Standards (OASIS) is recognized in the field of the technology. In the present invention, the specific definition of service aforementioned includes the general definition of the term service.

The workflow200is an instance of a workflow that is created by the workflow entry process500. The workflow200emulates a thread of execution to be performed by a desired set of services. A workflow in the present invention can be dynamically configured. A workflow event means one step within a workflow.

The service configuration utility300is a user interface to the system of the present invention. The service configuration utility enables users to configure the system, to manipulate the database, to control workflows, to monitor results of execution, and to display the current status of the workflows in the database.

A service monitor400will manage each workflow, dynamically introducing additional service jobs based on service configuration and system resources. Each service utilizes a standard XML interface for communication to and from the external applications. As the workflows progress, the apparatus captures the completion results for workflow inquiries and error management.

A service monitor400initiates and terminates a workflows based on workflow configuration data and service configuration data associated with the workflow. The service monitor400dynamically manages loads on a service by adding or reducing service listeners. The service monitor400uses service configuration data and workflow configuration data stored in the database to send a workflow request to an appropriate service.

The service monitor400determines how to dynamically balance loads based on the service configuration data. The service configuration data structure comprises data fields indicating appropriate range for a number of service threads that should be active at any given time. See description inFIG. 2a, infra, for details. A user can manipulate the service configuration record to maintain proper load balance.

A workflow entry process500creates a workflow upon a request by a user received through the service configuration utility300. The workflow entry process500uses the workflow configuration data structure in the database to initialize the workflow in the workflow control data structure in the database.

A service listener600is a mechanism used to connect a workflow event to a service. The service listener600can be controlled by users through the service monitor400. The service listener600waits for a service request or a service listener request that directs to increase or to decrease the number of service listeners for a service from the service monitor300.

The database700is illustrated inFIGS. 2aand2b, infra, of the present invention. The term data structure and the term record are interchangeably used in describing the database700.

At least one external application800is an application program resides beyond the system of the present invention. The external application communicates with at least one service of the system of the present invention through the standard XML interface, and provides a specific function desired in a service.

FIG. 2adepicts a service configuration data structure SERVICE_CONFIG710and a workflow configuration data structure WORKFLOW_CONFIG730within the database700of the dynamic service configuration system1, in accordance with embodiments of the present invention.

At least one set of service configuration data values is stored in the database700of the dynamic service configuration system. The service configuration data structure SERVICE_CONFIG710comprises a service identifier field SC_SERVICE711, a service key field SC_SERVICE_KEY712, an enablement field SC_ENABLED713, a minimum number of service threads field SC_MIN_SRVC714, and a maximum number of service threads field SC_MAX_SRVC715.

The service identifier field SC_SERVICE711holds a value that indicates the name of a service.

The service key field SC_SERVICE_KEY712holds a service key value that indicates a runtime environment to execute a service identified in the SC_SERVICE711of same service configuration record. A workflow uses the service key value to group services. The service key is one of runtime characteristics of a service. The service key triggers a service to be performed, and a service is set up to perform a particular action based on the service key. The service sends the service key to external applications through the standard XML interface. When an external application which had received the service key finishes its execution, the external application notifies the service monitor400of the dynamic configuration system1the result of the execution using the same service key as the service key that had triggered the external application. Based on the result notified, the service monitor determines whether to proceed with the next workflow event or to retry the same workflow event within the workflow in case of errors. The service key field SC_SERVICE_KEY712is initialized when the services are added to the service configuration record SERVICE_CONFIG710by the service configuration utility300. A value of the service key field SC_SERVICE_KEY712must be uniquely identifiable within the system of the present invention so that the value may dictate services with the value the way how to execute a requested function.

In a first embodiment of the present invention, the service configuration data structure SERVICE_CONFIG710has five service configuration record instances in the database. Each service identifier field of said five service configuration record instances is: AUDIT—1, AUDIT—2, CREATE_ORDER, SEND_ORDER, and SEND_INVOICE, respectively. In the service key field SC_SERVICE_KEY field712of each service, AUDIT—1 and AUDIT—2 services have ITEM service key value, CREATE_ORDER service has ITEM_ENTITY service key value, and SEND_ORDER and SEND_INVOICE services have ORDER service key value, respectively. The ITEM value in the service key field in the service configuration records for the AUDIT—1 and AUDIT—2 services means that the services are configured to run based on the ITEM service key. These services having ITEM service key value may have, inter alia, a function to validate that the item exists in an inventory, to validate expenses required for the item, or to validate there is enough inventory to cover an order.

The enablement field SC_ENABLED713holds a value that indicates whether the service is currently enabled or not. When the service is not enabled, any workflow requiring such disabled service will be pending without being processed until the service is enabled.

The minimum number of service threads field SC_MIN_SRVC714holds a value indicating the minimum number of service threads that should be simultaneously running. Similarly, the maximum number of service threads field SC_MAX_SRVC715holds the maximum number of service threads that can be simultaneously running for the service. If the value of the SC_MAX_SRVC715is numeric one, the service is a single threaded service.

A workflow configuration data structure WORKFLOW_CONFIG730comprises a workflow identifier field WC_WORKFLOW731, a service identifier field WC_SERVICE732, a running sequence field WC_SEQUENCE733, a next running sequence field WC_NEXT_SEQUENCE734, a retry running sequence field WC_RETRY_SEQUENCE735, and a duration of delay field WC_DELAY736.

The workflow identifier field WC_WORKFLOW731holds a value identifying a workflow.

The service identifier field WC_SERVICE732holds a value identifying a service that is grouped into the workflow identified by WC_WORKFLOW731.

The running sequence field WC_SEQUENCE733indicates a time order of executing the workflow.

The next running sequence field WC_NEXT_SEQUENCE734indicates a time order of executing the next step within the workflow.

The retry running sequence field WC_RETRY_SEQUENCE735indicates a time order of executing the workflow to retry after an error occurred while executing the workflow.

The duration of delay field WC_DELAY736holds the value indicating the number of seconds to delay after an occurrence of an error before retrying the sequence again. The service monitor uses the delay field to determine the period in checking the contents of the workflow control table.

FIG. 2bdepicts a workflow control data structure WORKFLOW_CONTROL750and a workflow status data structure WORKFLOW_STATUS770within the database700of the dynamic service configuration system1, in accordance with embodiments of the present invention.

The workflow control data structure WORKFLOW_CONTROL750comprises a workflow identifier field WT_WORKFLOW751, at least one service key field WT_SERVICE_KEY_K752-K defined in the service configuration data structure, a sequence field WT_SEQUENCE753, a status field WT_STATUS754, and a last modified time field WT_LAST_MOD_T755.

The workflow identifier field WT_WORKFLOW751holds an instance of a workflow identifier. Each service key field WT_SERVICE_KEY_K752-K is defined by an instance of the service key SC_SERVICE_KEY712in the service configuration record SERVICE_CONFIG710.

In one embodiment of the present invention, when the service configuration data structure SERVICE_CONFIG710has database entries having three different instances ITEM, ITEM_ENTITY, and ORDER for the service key field SC_SERVICE_KEY712, the workflow control data structure WORKFLOW_CONTROL750will have one field for each service key value, resulting in three fields of ITEM_KEY, ITEM_ENTITY_KEY, and ORDER_KEY as WT_SERVICE_KEY—1, WT_SERVICE_KEY—2, and WT_SERVICE_KEY—3, respectively.

The sequence field WT_SEQUENCE753holds the current sequence of the workflow.

The status field WT_STATUS754holds the status of the current sequence of the workflow. The status field WT_STATUS754may hold one value from the group consisting of null, S, E, and D. The null value means that the workflow event has not started yet. The S value means that the workflow event has started and is currently being executed. The E value means that the workflow event has erred. The D value means that the workflow event has successfully done.

The last modified time field WT_LAST_MOD_T755holds a date and time value when the workflow control record was last modified.

The workflow status data structure WORKFLOW_STATUS770comprises a workflow identifier field WS_WORKFLOW771, a service field WS_SERVICE772, a service key field WS_SERVICE_KEY773, a sequence field WS_SEQUENCE774, a status field WS_STATUS775, a start time field WS_START_T776, and an end time field WS_END_T777.

The workflow identifier field WS_WORKFLOW771holds an instance of a workflow identifier which has been executed. The service field WS_SERVICE772holds an instance of a service identifier that has been executed. The service key field WS_SERVICE_KEY773holds an instance of a service key designating a runtime environment in which the service was executed. The sequence field WS_SEQUENCE774holds the sequence of the workflow to be executed. The status field WS_STATUS775indicates whether the sequence of the workflow was successfully executed or failed. The start time field WS_START_T776holds the date and time when the service had started. The end time field WS_END_T777holds the date and time when the service had ended.

FIG. 3adepicts how a user can manipulate the database through a service configuration utility300, for service configuration data SERVICE_CONFIG710, workflow configuration record WORKFLOW_CONFIG730, and workflow control record WORKFLOW_CONTROL750, in accordance with the embodiments of the present invention.

The service configuration utility300provides a user interface through which a user may configure the dynamic service configuration system of the present invention. Through the service configuration utility300, the user may update the contents of an entry of the service configuration data structure SERVICE_CONFIG710and an entry of the workflow configuration data structure WORKFLOW_CONFIG730. Also, the service configuration utility300provides to the user a display of the contents of the service configuration record SERVICE_CONFIG710and the workflow configuration record WORKFLOW_CONFIG730. The service configuration utility300may update the contents of workflow control records WORKFLOW_CONTROL750.

FIG. 3bdepicts a flow of data in which the dynamic service configuration system1creates a workflow, in accordance with the embodiments of the present invention.

The workflow entry process500retrieves records from the service configuration data structure SERVICE_CONFIG710and the workflow configuration data structure WORKFLOW_CONFIG730to create a new workflow200. Once the workflow200has been created, the workflow entry process500registers the workflow200in the workflow control data structure WORKFLOW_CONTROL750for further processing by the service monitor400. SeeFIG. 6, infra, for the flowchart of the workflow entry process500.

FIG. 3cdepicts a flow of data in which the dynamic service configuration system1uses the workflow200created inFIG. 3b, supra, to achieve a desired service100, in accordance with the embodiments of the present invention.

The service monitor400connects a workflow200to a corresponding service100through a service listener600. The service monitor400controls the execution of the workflow200by manipulating the workflow control record WORKFLOW_CONTROL750. Once the service100completes the execution of a corresponding external application800, the service100reports the resulting status of the workflow to the service monitor400. The service monitor400records the execution result information by updating the contents of the workflow status records WORKFLOW_STATUS770. According to the service configuration record SERVICE_CONFIG710and the workflow configuration record WORKFLOW_CONFIG730, the service monitor400determines further processing and reports to the service configuration utility300. SeeFIGS. 5,5a,5b, and5c, infra, for the flowchart of the service monitor400.

FIG. 4is a flowchart of the service configuration utility300of the dynamic service configuration system1, in accordance with embodiments of the present invention.

The service configuration utility300enables users of the system to configure the service monitor400, individual workflows200and services100by creating service configuration record SERVICE_CONFIG710and workflow configuration record WORKFLOW_CONFIG730in the database700. The service configuration utility300also provides a user interface which may display workflow control record WORKFLOW_CONTROL750and workflow status record WORKFLOW_STATUS770, stop and start service listeners600and workflows200, and manage service errors by sending request to service listener to retry a workflow event.

In step301, the service configuration utility300receives a user request for configuring a service or a workflow.

In step302, the service configuration utility300receives service configuration record and workflow configuration record from a user to configure new service or workflow requested. Each service must have a service configuration record before being integrated within a workflow configuration.

In step303, the service configuration utility300stores received service configuration record and workflow configuration record to database700. Each service must have a service configuration record before being integrated within a workflow configuration.

In step304, the service configuration utility300checks service configuration record SERVICE_CONFIG710for a new value in the service key field SC_SERVICE_KEY712in the service configuration record SERVICE_CONFIG710.

In step305, the service configuration utility300determines whether a new value for the SC_SERVICE_KEY field712in the service configuration record SERVICE_CONFIG710has been found. If the service configuration utility300determines that a new value for the service key field SC_SERVICE_KEY712in the service configuration record SERVICE_CONFIG710has been found, then in step306, the service configuration utility300adds a new service key field WT_SERVICE_KEY_K752-K to the workflow control record WORKFLOW_CONTROL750, and then loops back to step301to wait for another user request. If the service configuration utility determines that a new value for the service key field SC_SERVICE_KEY712in the service configuration record SERVICE_CONFIG710has not been found, the service configuration utility loops back to step301to wait for another user request.

FIG. 5is a flowchart of a service monitor400of the dynamic service configuration system1, in accordance with embodiments of the present invention.

After the service configuration utility300initializes the workflow control record WORKFLOW_CONTROL750and the workflow status record WORKFLOW_STATUS770, the service monitor400operates the workflow control record WORKFLOW_CONTROL750when processing the actual workflows.

In step401, the service monitor400waits for an event to occur, and determines the type of an event that has occurred. If the service monitor400determines that a service listener request has occurred, the service monitor branches to step410to process the service listener request. SeeFIG. 5a, infra, for details of step410. If the service monitor400determines that a workflow request has occurred, the service monitor400branches to step420to process the workflow request. SeeFIG. 5b, infra, for details of step420. If the service monitor400determines that the event occurred is a service result report, the service monitor400branches to step430to process the service result report. SeeFIG. 5c, infra, for details of step430. If the service monitor400determines that no event has occurred, in step401, the service monitor waits for an event to occur. After processing any one of steps410,420, and430, the service monitor400loops back to step401to proceed with another event.

FIG. 5ais a detailed flowchart for step410ofFIG. 5, supra, describing the service monitor400that processes a service listener request, in accordance with embodiments of the present invention.

The service listener request refers to a request to increase or decrease a total number of services in the at least one service running in the dynamic configuration system1. In step410A, the service monitor400reads the service configuration record SERVICE_CONFIG710to determine how many service threads can be simultaneously active for the service identified in the service listener request by reading the minimum number of service threads field SC_MIN_SRVC714, and the maximum number of service threads field SC_MAX_SRVC715for the current service identified in the service identifier field of the service configuration record SC_SERVICE711.

In step410B, the service monitor400determines whether to increase or to decrease the total number of said at least one service. If the service monitor400determines that more service thread is required, the service monitor400branches to step410C. In step410C, the service monitor400starts at least one new service listener in step410C. If the service monitor400determines that there are too many service threads for the service, the service monitor branches to step410D. In step410D, the service monitor400stops at least one existing service listener.

FIG. 5bis a detailed flowchart for step420ofFIG. 5, supra, describing the service monitor400that processes a workflow request, in accordance with embodiments of the present invention.

In step420A, the service monitor400audits a workflow control record WORKFLOW_CONTROL750corresponding to the workflow request received in step401.

In step420B, the service monitor400determines a service routing using the service configuration record SERVICE_CONFIG710and the workflow configuration record WORKFLOW_CONFIG730. The service routing means identifying at least one service request comprising workflow request received and determining the order of execution of identified services. The service routing is determined based on the values of at least one sequence field of workflow configuration record and the values of at least one service key field of service configuration record comprising the workflow identified in the workflow request.

In step420C, the service monitor400sends at least one service request to a corresponding service listener determined in step420B by updating the contents of the workflow control record WORKFLOW_CONTROL750. The service listener that receives the service request will invoke a service for the workflow. When a service is invoked by a service listener, the service monitor400initializes the status field WT_STATUS754in the workflow control record WORKFLOW_CONTROL750to S to indicate that the service has started.

FIG. 5cis a detailed flowchart for step430ofFIG. 5, supra, describing the service monitor400that processes a service result report, in accordance with embodiments of the present invention.

In step430A, the service monitor400receives a service result report from a service invoked by a service listener in step420C after execution of an external application.

In step430B, the service monitor400updates the workflow control record WORKFLOW_CONTROL750corresponding to the result of the service execution.

If a service that sends the service result report to the service monitor400had successfully completed the execution, the service monitor400updates the sequence field WT_SEQUENCE753in the workflow control record WORKFLOW_CONTROL750and creates and/or updates the sequence field WS_SEQUENCE774in the workflow status record WORKFLOW_STATUS770. The service monitor400also clears the status field WT_STATUS754of the workflow control record WORKFLOW_CONTROL750to proceed with the next service within the workflow based upon the workflow configuration record WORKFLOW_CONFIG730. The sequence field WT_SEQUENCE753is set to the value of the next sequence field WC_NEXT_SEQUENCE734of the workflow configuration record WORKFLOW_CONFIG730.

If the service failed to successfully complete the execution, the service monitor400will set the status_field WT_STATUS754of the workflow control record WORKFLOW_CONTROL750and the status field WS_STATUS775of the workflow status record WORKFLOW_STATUS770to E to indicate that the service has erred. However, the service monitor400does not change the sequence field WT_SEQUENCE753of the workflow control record WORKFLOW_CONTROL750.

The service monitor400checks only the services with the status field WT_STATUS754of the workflow control record WORKFLOW_CONTROL750with null value, which indicates that the workflow has not started yet. A service request may be issued only for those services with null value for the status field WT_STATUS754of the workflow control record WORKFLOW_CONTROL750.

Similarly, the service configuration utility300may set retry option by providing a proper value in the retry sequence field WC_RETRY_SEQUENCE735only for services in an E status indicating that the service has erred.

In step430C, the service monitor400records the status by updating the workflow status record WORKFLOW_STATUS770with a message indicating success or failure for all services for the workflow. The service monitor400determines whether to proceed with the next service within the workflow or to retry the same service within the workflow in case of the service having failed. SeeFIG. 2b, supra, for the contents of messages from a service in the description of the status field WT_STATUS754of the workflow control record WORKFLOW_CONTROL750.

FIG. 6is a flowchart of a work entry process500of the dynamic service configuration system1, in accordance with embodiments of the present invention.

In step501, the workflow entry process500waits for and receives a workflow creation request to create a new workflow through the service configuration utility300.

In step502, the workflow entry process500retrieves a workflow configuration record WORKFLOW_CONFIG730and a service configuration record SERVICE_CONFIG710from the database700according to the workflow creation request.

In step503, the workflow entry process500creates a new workflow and adds a new workflow control record WORKFLOW_CONTROL750in database700.

After step503, the workflow entry process500loops back to step501to process another workflow creation request.

FIG. 7illustrates instances in relevant fields within records of the database700, in accordance with embodiments of the present invention.

In the first embodiment of the present invention described inFIG. 2a, supra, the service configuration data structure has five database entries comprising five services: AUDIT—1 service, AUDIT—2 service, CREATE_ORDER service, SEND_ORDER service, and SEND_INVOICE service. In SC_SERVICE_KEY field712of each service, AUDIT—1 and AUDIT—2 services have ITEM service key value, CREATE_ORDER service has ITEM_ENTITY service key value, and SEND_ORDER and SEND_INVOICE services have ORDER service key value. The CREATE_ORDER service is configured to run based on ITEM_ENTITY service key, which means a workflow performing CREATE_ORDER service will group all workflow entries that has ITEM_ENTITY service key at the CREATE_ORDER service. The service monitor400must wait for all the workflow entries in the ITEM_ENTITY group to arrive at the CREATE_ORDER sequence, which is configured as20in the workflow configuration record730inFIG. 7, before invoking the CREATE_ORDER service. This validates a fact that both AUDIT—1 service and AUDIT—2 service have successfully executed before creating an order for any of the items on the order, ensuring a successful order creation.

FIG. 8illustrates a computer system90used for dynamically configuring a multiplatform environment, in accordance with embodiments of the present invention.

The computer system90comprises a processor91, an input device92coupled to the processor91, an output device93coupled to the processor91, and memory devices94and95each coupled to the processor91. The input device92may be, inter alia, a keyboard, a mouse, a keypad, a touchscreen, a voice recognition device, a network interface card (NIC), a Voice/video over Internet Protocol (VOIP) adapter, a wireless adapter, a telephone adapter, a dedicated circuit adapter, etc. The output device93may be, inter alia, a printer, a plotter, a computer screen, a magnetic tape, a removable hard disk, a floppy disk, a NIC, a VOIP adapter, a wireless adapter, a telephone adapter, a dedicated circuit adapter, etc. The memory devices94and95may be, inter alia, a cache, a dynamic random access memory (DRAM), a read-only memory (ROM), a hard disk, a floppy disk, a magnetic tape, an optical storage such as a compact disc (CD) or a digital video disc (DVD), etc. The memory device95includes a computer code97which is a computer program that comprises computer-executable instructions. The computer code97includes, inter alia, an algorithm used for dynamically configuring a multiplatform environment according to the present invention. The processor91executes the computer code97. The memory device94includes input data96. The input data96includes input required by the computer code97. The output device93displays output from the computer code97. Either or both memory devices94and95(or one or more additional memory devices not shown inFIG. 4) may be used as a computer usable medium (or a computer readable medium or a program storage device) having a computer readable program embodied therein and/or having other data stored therein, wherein the computer readable program comprises the computer code97. Generally, a computer program product (or, alternatively, an article of manufacture) of the computer system90may comprise said computer usable medium (or said program storage device).

Any of the components of the present invention can be deployed, managed, serviced, etc. by a service provider that offers to deploy or integrate computing infrastructure with respect to a process for dynamically configuring a multiplatform computing environment of the present invention. Thus, the present invention discloses a process for supporting computer infrastructure, comprising creating, integrating, hosting, maintaining, and deploying computer-readable code into a computing system (e.g., computing system90), wherein the code in combination with the computing system is capable of performing a method for dynamically configuring a multiplatform environment.