FIELD OF THE INVENTION The present invention relates generally to the field of Workflow Management Systems (WFMSs), and relates, in particular, to controlling the order of activity execution in a WFMS based upon resource requirements and impact to the business.
BACKGROUND OF THE INVENTION A workflow process (called a “process” herein) is a directed, acyclic graph of activities to be performed. In general, an activity is a unit of work to be performed by, for instance, a human or a software agent; a block of activities which can be repeated until some condition is reached; or another process. Between activities are links, possibly conditional, which are evaluated at runtime to determine an execution path. Data can also be passed between activities or made globally available to all activities.
Because a process is a graph of activities to be conditionally performed, a process is considered to be a model (i.e., a template) for the execution of the activities. An execution of a process is referred to as a process instance. The representation of an activity within a process is performed by an activity instance. If and in what order the activity instances within a process instance are readied for execution is determined by the links between activity instances in the process model. An activity instance which is ready to be executed can be queued in one or more work lists, each of which is associated with a human or software agent which can perform the activity, and is commonly referred to as a work item. In the scheduling domain, a job is equivalent to a process instance, and a task is equivalent to an activity instance or a work item.
A Workflow Management System (WFMS) enables the modeling and execution of processes. A WFMS facilitates codification, automation, composition, and lifecycle management of business system support (BSS) and operations system support (OSS) processes. IBM WebSphere MQ Workflow is an example of a WFMS. Workflow management is also emerging as an important application execution management technology, particularly in the area of grid and utility computing, where planned application execution sequences are essentially managed and composed as automated workflows. The ability to manage the execution of processes is valuable across the many domains where workflow is employed. Some examples of processes which can benefit from process execution management are semi-automated loan approval workflows, Information Technology (IT) operations management workflows (e.g., provisioning of servers), and software application job execution workflows.
Illustratively, consider a business which offers its customers a number of services with guaranteed levels of service level and associated refund and rewards. For example, the business may offer a storage service with a service level guarantee that, over the course of a month, 97 percent of customer requests for additional storage will be provisioned within two hours. If the business fails to meet this commitment, a penalty, which is a percentage of the monthly service fee, will be refunded to the customer. The penalty could be defined as a step function which increases as the percentage of customer requests completed within the threshold of two hours decreases. The business offers several different classes of storage (e.g., economy, fast, and super-fast) with different service level guarantees (e.g., in terms of target percentage and threshold time) at appropriate prices with different refunds and rewards. The refunds and rewards which the business offers to its customer represent an actual financial impact to the business as well as an objective measure of value to the customer.
The business has an obligation to meet its commitments and needs to do so in a cost effective and efficient manner if it is to remain viable and competitive. Therefore, when the business executes its processes (e.g., responding to customer requests for additional storage), the business needs to manage its resources (e.g., people and computing servers) in a manner consistent with the business commitments (e.g., service quality defined as service levels) and cost and efficiency objectives of the business (e.g., to minimize penalties). Current WFMSs ready activity instances for execution based on conditions and navigation defined by the processes, but no explicit consideration is given to objectives or commitments of businesses.
What is needed then are techniques for enabling an organization to manage process execution in a manner which meets its commitments while also meeting its cost and efficiency objectives.
SUMMARY OF THE INVENTION The present invention provides techniques for managing the execution of processes. Using the present invention allows an organization to meet its commitments while also meeting its cost and efficiency objectives.
In an exemplary aspect of the invention, techniques are presented for managing execution of processes on a data processing system. The data processing system comprises one or more process instances that are each an execution of a corresponding process. Each process instance comprises one or more activity instances. In this exemplary aspect, one or more business impacts are determined for the one or more process instances, the one or more activity instances, or both the one or more process instances and the one or more activity instances. The order of execution of the activity instances is managed by allocating resources to activity instances in order to achieve an objective defined in terms of the one or more business impacts.
In another exemplary aspect of the invention, techniques are presented for managing requests for execution of one or more processes on a data processing system. One or more requests are received for the execution of the one or more processes. For at least a given one of the one or more requests, one or more of the operations of assigning, updating, aggregating, and weighting of one or more first business impacts associated with the given request are performed to create one or more second business impacts associated with the given request. The given request is for execution of a given process. A given request is modified to create a modified request. The modified request is for execution of the given process or another process. Unmodified requests and any modified requests are managed in order to execute processes corresponding to the unmodified and modified requests.
A more complete understanding of the present invention, as well as further features and advantages of the present invention, will be obtained by reference to the following detailed description and drawings.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is a representation of a data processing system in which the present invention may be implemented;
FIG. 2 is a block diagram is shown of a data processing system in which the present invention may be implemented;
FIG. 3 is an illustrative high level block diagram of an exemplary process execution manager within an organization;
FIG. 4 is a high level block diagram of an exemplary process execution manager but in a cross organizational environment;
FIG. 5 is a block diagram of more detailed view of an exemplary process execution manager;
FIG. 6 is a use case diagram depicting potential uses of a process execution manager controller of an exemplary embodiment of the present invention;
FIG. 7 is a class diagram for an illustrative framework suitable for implementing a process execution manager in accordance with an exemplary embodiment of the present invention;
FIG. 8 is a flowchart of a method for the initialization of a module illustratively referred to as the ProcessExecutionManagerController, in accordance with an exemplary embodiment of the present invention;
FIG. 9 is a flowchart of a method for importing a process, in accordance with an exemplary embodiment of the present invention;
FIG. 10 is a flowchart of a method for suspending a resource in accordance with an exemplary embodiment of the present invention;
FIG. 11 is a flowchart of a method for resuming a resource in accordance with an exemplary embodiment of the present invention;
FIG. 12 is a flowchart of a method for updating the business impacts for a process instance and its activity instances, in accordance with an exemplary embodiment of the present invention;
FIG. 13 is a flowchart of a method for starting a process instance, in accordance with an exemplary embodiment of the present invention;
FIG. 14 is a flowchart of a method for canceling a process instance in accordance with an exemplary embodiment of the present invention;
FIG. 15 is a flowchart of a method for suspending an activity instance in accordance with an exemplary embodiment of the present invention;
FIG. 16 is a flowchart of a method for resuming an activity instance, in accordance with an exemplary embodiment of the present invention;
FIG. 17 is a flowchart of a method for querying a process instance, in accordance with an exemplary embodiment of the present invention;
FIG. 18 is a flowchart of a method for requesting a restart of a scheduling system, in accordance with an exemplary embodiment of the present invention;
FIG. 19 is a flowchart of a method for querying resource information in accordance with an exemplary embodiment of the present invention;
FIG. 20 is a flowchart of a method for starting a task, in accordance with an exemplary embodiment of the present invention;
FIG. 21 is a flowchart of a method for updating resource information in accordance with an exemplary embodiment of the present invention;
FIG. 22 is a flowchart of a method for requesting a refresh of the resource information, in accordance with an exemplary embodiment of the present invention;
FIG. 23 is a flowchart of a method for handling an override to a schedule, in accordance with an exemplary embodiment of the present invention; and
FIG. 24 is a flowchart of a method for requesting handling of a workflow event in accordance with an exemplary embodiment of the present invention.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS In conventional Workflow Management Systems (WFMSs), a single resource (generally a person or a software agent) is required to perform an activity instance. The WFMS may assign an activity instance to any number of resources which can perform the activity. Eventually, one resource will execute the activity instance using implementation code associated with the activity. At any point in time, a resource may have multiple activity instances which are deemed “ready to execute” assigned to the resource Which of the ready activity instances and in which order the resource executes these activity instances is generally not dictated by conventional WFMSs. The order is rather left to human intuition or experience, a static priority scheme, or first-come-first-served queuing. Also, if any additional resources (e.g., a software license) are required for execution of an activity instance, it is the responsibility of the activity implementation code, and not the responsibility of the WFMS, to discover, reserve, and obtain those resources.
The present invention can solve these problems by, in an exemplary embodiment, managing the order of activity execution by assigning constrained resources required for execution based on an overall objective defined in terms of one or more business impacts. This is accomplished by, illustratively, integrating one or more WFMSs or equivalents, one or more scheduling systems, and one or more resource managers using a process execution manager controller and one or more business impact integrators. Additionally, requirements for multiple resources per activity instance can be managed. The scheduling system determines when an activity instance requiring constrained resources and deemed “ready to execute” by the WFMS should start and which resources will be assigned to the activity instance. This managing action of starting a task is made, in an exemplary embodiment, in a just-in-time manner so that the scheduling system can accommodate dynamic changes in the system (e.g., newly arriving jobs or changes in business impact for an existing process instance). As a result, a resource (e.g., a human or software agent) typically has only one assignment at a given time (i.e., only one work item in its work list).
A business impact is associated with the execution of a process instance or activity instance or both. A business impact is a measure of relative importance (e.g., defined through a value) that timely execution of an instance (e.g., process or activity instance) will have on the organization. For example, a business may want to execute its processes in a manner which minimizes penalties associated with failure to meet a guaranteed level of service. Thus, the business impact could be the values (e.g., defined as a step function) for penalties associated with not meeting guaranteed levels of service. The overall objective in this scenario is to minimize penalties. The business impact can also include an objective function or pointer to an objective function which could be used by the scheduling system controller when the scheduling system performs an objective optimization.
A business impact can be pre-defined or obtained dynamically at runtime. The business impact can be, but is not limited to, one or more of a simple priority, a utility function, or a cost function over time. Additionally, the business impact can be modified over the duration of the process instance, activity instance, or both process and activity instances.
In certain embodiments of the present invention, a resource is an entity (such as a person, a software agent, hardware, or a software license) required for an activity to be performed. In general, exemplary embodiments of present invention enable an organization to ensure that jobs with a high business impact and a tight deadline will be allocated resources in preference to those jobs with a lower business impact, a more flexible deadline, or both a lower business impact and a more flexible deadline.
Certain embodiments of the present invention are able to address process models ranging from simple task lists to complex task graphs. Illustratively, a process can be fully automated or be partially automated (i.e., contain manual tasks performed by humans). Embodiments of the present invention can also be applied to processes which cross organization boundaries, that is, processes which contain activities which are performed by another organization. The extent to which one can manage resources outside of an organization will depend on the ability to monitor those resources, the extent of control allowed by the owning organization, or both.
For sake of clarity, it is assumed that the term “instance” relates to a process instance or an activity instance. It is also assumed that a “business” is any entity using a WFMS or equivalent, and the terms “organization” and “business” are interchangeable.
Exemplary embodiments of the present invention enable an organization, through a data processing system having a process execution manager, to perform one or more of the following:
(1) associate business impact with instances, where the business impact can be modified throughout the duration of the instances;
(2) capture metadata about processes, where the metadata can be used for scheduling purposes;
(3) manage the order of execution of instances based on the assignment of constrained resources to instances using one or more of the following (although typically all would be used) which could reside on different data processing systems: (A) one or more WFMSs or systems with comparable functions to define the process models and execute the process instances, (B) one or more scheduling systems to order execution of instances by assigning resources to instances in a manner which achieves an objective defined in terms of the business impacts associated with the instances, and (C) one or more resource managers to provide resource information required by the scheduling system or systems selected;
(4) integrate existing WFMSs, scheduling systems, and resource managers via adapters;
(5) extend the definitions of key data (e.g., business impact, resource, override, and task duration) and the functions provided in order to support the requirements of a given environment (e.g., the organization and the selected scheduling systems, workflow systems, and resource managers);
(6) override resource assignments made by the scheduling system(s) as needed;
(7) transform, if possible, a workflow model of a WFMS to one supported by one or more selected scheduling systems;
(8) assign default business impacts, including objective functions, as needed and weight business impacts as required by the organization;
(9) combine individual “related” requests with associated business impacts into a single request with an aggregated business impact; and
(10) modify (e.g., alter or combine) requests for process execution, the modification performed for cost and efficiency purposes, the cost and efficiency determined by one or more criteria set by the organization.
An exemplary embodiment of the present invention describes a method for managing the execution of process instances in one or more existing WFMSs or systems with comparable functionality. Those skilled in the art will recognize that much of the functionality of this invention could also be incorporated into the design of future WFMSs.
According to various exemplary embodiments of the present invention, and as previously described, techniques are provided to manage requests for process execution and to order the execution of activity instances in the process instances in one or more WFMSs. An exemplary goal of the present invention is to achieve some objective defined by the organization in terms of the business impacts associated with the execution of instances. For example, an organization can associate a penalty function with the completion of each process instance and use a scheduling system which would assign resources such that the overall penalty incurred is minimized.
Design elements of an exemplary framework, which can be used to implement an illustrative embodiment of the present invention, can include one or more of the following:
(1) the framework should support multiple and arbitrary WFMSs provided the WFMSs offer the ability to monitor progress at the activity instance level and control the start of an activity instance;
(2) the framework should support multiple and arbitrary scheduling systems;
(3) the framework should support multiple and arbitrary resource managers;
(4) the framework should support multiple business impact integrators;
(5) the framework should, to the extent possible, support transformation of a workflow model to one supported by a particular scheduling system;
(6) the framework should provide core functionality generally supported by WFMSs and extensible functionality for those functions likely to vary by environment;
(7) an assumption may be made that the WFMSs will maintain the current state and history of workflow executions, that the resource managers will maintain the availability and required skill information, and that the scheduling system maintains no persistent data;
(8) the framework can use a store associated with each business impact integrator for maintaining information about the process requests, possible aggregations of requests, possible modifications of requests, and their associated business impacts and aggregations; and
(9) the framework can use a store for maintaining information on business impacts associated with process instances, process model information, and override information.
With reference now to the figures and in particular with reference toFIG. 1, a pictorial representation of acomputer system100 in which the present invention may be implemented is depicted in accordance with an exemplary embodiment of the present invention. Acomputer system100 is depicted which includessystem unit102,video display terminal104,keyboard106,storage devices108, which may include floppy drives and other types of permanent and removable storage media, andmouse110. Additional input devices may be included withcomputer system100, such as, for example, a joystick, touchpad, touch screen, trackball, microphone, and the like.Computer system100 can be implemented using any suitable computer. Although the depicted representation shows a computer, other embodiments of the present invention may be implemented in other types of data processing systems, such as a network computer.Computer system100 also preferably includes a graphical user interface (GUI) that may be implemented by means of systems software residing in computer readable media in operation withincomputer system100.
With reference now toFIG. 2, a block diagram of adata processing system200 is shown in which embodiments of present invention may be implemented.Data processing system200 is an example of a computer system, such ascomputer system100 inFIG. 1, in which code or instructions implementing the processes of the present invention may be located.Data processing system200 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.Processor202 andmain memory204 are connected to PCI local bus206 throughPCI bridge208.PCI bridge208 also may include an integrated memory controller and cache memory forprocessor202. Additional connections to PCI local bus206 may be made through direct component interconnection or through add-in boards.
In the depicted example, Local Area Network (LAN)adapter210, small computer system interface SCSIhost bus adapter212, andexpansion bus interface214 are connected to PCI local bus206 by direct component connection. In contrast,audio adapter216,graphics adapter218, and audio/video adapter219 are connected to PCI local bus206 by add-in boards inserted into expansion slots.Expansion bus interface214 provides a connection for a keyboard andmouse adapter220,modem222, andadditional memory224. SCSIhost bus adapter212 provides a connection forhard disk drive226,tape drive228, and CD-ROM drive230. Typical PCI local bus implementations will support three or four PCI expansion slots or add-in connectors.
An operating system (not shown) runs onprocessor202 and is used to coordinate and provide control of various components withindata processing system200 inFIG. 2. 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 provides calls to the operating system from Java programs or applications executing ondata processing system200. “Java” is a trademark of Sun Microsystems, Inc. Instructions (e.g., computer-readable code) for the operating system, the object-oriented programming system, and applications or programs are located on storage devices, such ashard disk drive226, and may be loaded intomain memory204 for execution byprocessor202.
As is known in the art, the methods and apparatus described herein may be distributed as an article of manufacture that itself comprises a computer-readable medium having computer readable program code means embodied thereon. For instance, the computer-readable medium could bedisk226,tape228, or CD-ROM230. The computer readable program code means is operable, in conjunction withdata processing system200, to carry out all or some of the steps to perform the methods or create the apparatuses discussed herein.
Further, those of ordinary skill in the art will appreciate that the hardware inFIG. 2 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 inFIG. 2. Also, the processes of the present invention may be applied to a multiprocessor data processing system.
For example,data processing system200, if optionally configured as a network computer, may not include SCSIhost bus adapter212,hard disk drive226,tape drive228, and CD-ROM230. In that case, the computer, to be properly called a client computer, includes some type of network communication interface, such asLAN adapter210,modem222, or the like. As another example,data processing system200 may be a stand-alone system configured to be bootable without relying on some type of network communication interface, whether or notdata processing system200 comprises some type of network communication interface. As a further example,data processing system200 may be a personal digital assistant (PDA), which is configured with non-volatile memory, such as flash ROM, to provide for storing operating system files, user-generated data, or both.
The depicted example inFIG. 2 and above-described examples are not meant to imply architectural limitations. For example,data processing system200 also may be a notebook computer or hand held computer in addition to taking the form of a PDA.Data processing system200 also may be a kiosk or a Web appliance. The processes of the present invention are performed byprocessor202 using computer implemented instructions, which may be located in a memory such as, for example,main memory204,memory224, or in one or more peripheral devices226-230.
An exemplary embodiment of the present invention is represented in the high level block diagram ofFIG. 3, which depicts aprocess execution manager390. It should be noted that aprocess execution manager390 can be implemented on a distributed computer system comprised on many data processing systems. Theprocess execution manager390 depicts the processexecution manager controller307 interacting with one ormore scheduling systems305,resource managers306, andWFMSs308.FIG. 3 also shows thatrequests300 for execution of processes can be sent to abusiness impact integrator301 which, in an exemplary embodiment, can (1) assign a default business impact; (2) weight the business impact; (3) combine relatedrequests300 and aggregate, weight, or both their business impacts; (4) alter individual or combinedrequests300; or (5) perform a combination of (1)-(4) to improve cost and efficiency of the execution of instances, which should improve cost and efficiency for the business. The improvement in cost and efficiency of execution of instances may be determined by one or more criteria set by the organization. In other words, the organization itself typically determines how “cost” and “efficiency” are defined, such as faster response time or lower cost. It should be noted that not allrequests300 need have an associated business impact. Nonetheless, the capability to combinerelated requests300 is useful for those environments wheremultiple requests300 for the same process execution are received and should be filtered.
For example,several requests300 to start a server can be satisfied with a single process execution. Thebusiness impact integrator301 should implement one or more procedures (e.g., algorithms, methods, or functions) for determining if two requests are related and how they should be combined. An organization typically defines the one or more procedures used to combinerequests300. The capability to alter requests is useful for cost and efficiency purposes (e.g., defined by an organization and can include cost or time). For example, arequest300 for executing a process may be altered to use another process which will accomplish the same goal more efficiently. Thebusiness impact integrator301 could also combine and alterrequests300 for process execution. For example, thebusiness impact integrator301 may receivemultiple requests300 for additional storage, where the multiple requests could be combined into anotherrequest300, with an aggregated business impact, where theother request300 would perform (e.g., through execution of a corresponding process) all the additions for storage in a more cost effective manner. The cost effectiveness can be determined in any number of ways, including execution time of the process. Thebusiness impact integrator301 should have the data and methods implemented to provide this combining function. It should be noted that a givenrequest300 will have associated with the request300 a goal.
In an exemplary embodiment of the present invention, as depicted inFIG. 3, there can be multiplebusiness impact integrators301. Aprocess execution request302 along with an associated business impact can be sent to one of the business impact integrators. Alternatively, theprocess execution request302 can be sent directly to the processexecution manager controller307. In addition, arequest304 to execute process instances can be sent to theWFMS308 directly. In this case, the associatedbusiness impact303 for the process instance should be sent to or otherwise obtained or determined by the processexecution manager controller307.
The processexecution manager controller307 is used to allow embodiments of the present invention to manage process execution through resource allocation based on business impacts. Thebusiness impact integrator301 may be used to allow embodiments of the present invention to manage requests for process execution and their associated business impacts. The processexecution manager controller307, in particular, interacts with and provides a framework for thescheduling systems305,resource managers306, and theWFMSs308 to manage process execution. The techniques and data stores for thebusiness impact integrator301 and the processexecution manager controller307 can be implemented in other entities, such as aWFMS308.
A role of thescheduling system305 is to determine which tasks (i.e., activity instances) of those that have been deemed “ready to execute” by theWFMS308 to start in order to use the required constrained resources in a manner which optimizes the objective function, defined in terms of business impact, of the organization. The processexecution manager controller307 provides thescheduling systems305 with information on resources (e.g., availability, cost, and capability), process model information, current process execution status, and business impact associated with specific process and activity instances. A conventional scheduling system might assign resources in such a manner as to maximize throughput. By contrast, a scheduling system in an exemplary embodiment of the present invention would use itsobjective optimizer312 to assign resources in a manner which achieves a business objective defined in terms of business impact (e.g. minimize penalty) and in a just-in-time fashion so as to take into account any dynamic changes in the system (e.g., a newly arrived job, updates to business impact of an existing jobs, etc.).
FIG. 4 illustrates an example of how theprocess execution manager400 as depicted inFIG. 3 can be used to manageprocess instances401 which cross the organization's boundaries. Theprocess execution manager400 can use information collected either from monitoring the external resources, e.g.,Application C1402 executing inexternal Organization C403 orApplication B3404 executing inexternal Organization B405, or obtained (e.g., possibly dynamically) from the organization owning the external resource, e.g.,external Organization C403 orexternal Organization B405. Such information can be used by the framework to control the assignment of activities to external resources, where the external resource is to perform the activity. In the example ofFIG. 4,application402 is owned byOrganization C403, butOrganization C403 does not own the process execution manager400 (e.g., a data processing system that implements the process execution manager400).
FIG. 5 is a block diagram of a more detailed view of an exemplaryprocess execution manager590. Theprocess execution manager590 comprises one ormore scheduling systems500, one ormore resource managers504, one or morebusiness impact integrators508, a process execution manager controller510, and one ormore WFMSs515. Eachscheduling system500 comprises amodel transformer503 which interacts with ascheduling system adapter502 which in turn interacts with ascheduling system controller501. Thescheduling system controller501 comprises anobjective optimizer582 which is used to assign resources to activity instances in a manner which optimizes an objective. The process execution manager controller510 interacts with themodel transformer503 for ascheduling system500. Amodel transformer503 may be used as an interface between ascheduling system500 and another part of theprocess execution manager590. For example, theWFMS515 might support complex process models but thescheduling system500 support simple process models. Themodel transformer503 could then, to the extent possible, transform information about the complex process models into information suitable for use by thescheduling system500.
For eachresource manager504, the process execution manager controller510 interacts with aresource adapter507 which in turn interacts with aresource manager controller505. Similarly, for eachWFMS515, the process execution manager controller510 interacts with aworkflow system adapter516 which in turn interacts with aWFMS controller517. The process execution manager controller510 also creates amonitor513 for eachWFMS515 for tracking progress of process instances in theWFMS515. The Application Programming Interface (API)methods521,526,531,541,546,551,556,561,566, and571 are defined for each of theinteractions520,525,530,540,545,550,555,560,565, and570, respectively.
Requests regarding process instances (e.g., startProcesslnstance in API521) can be sent to the process execution manager controller510 directly or through thebusiness impact integrator508. As previously described, thebusiness impact integrator508 can be used to add a default business impact or can weight or otherwise modify the business impacts associated with a process instance request. Additionally, thebusiness impact integrator508 can combine related process instance requests into a single request and aggregate, weight, or both associated business impacts into a single business impact. Thebusiness impact integrator508 can also alter the process requested to a process which is more efficient (e.g., cost effective or timely) for an organization. Thebusiness impact integrator508 can also combine and alter process instance requests into a single request for execution of another process, where the other process is more efficient for the business. Thebusiness impact integrator508 maintains astore509 of process requests, associated business impacts, and any combinations and alterations made.
The resource manager504 (note that there may be multiple resource managers504) is expected to maintain resource information required for scheduling (e.g., skills and schedules) in astore506. The WFMS517 (note that there may be multiple WMFSs517) is expected to maintain information of processes and process instances instores518 and519. The process execution manager controller510 maintains astore512 for information forconfiguration512, astore511 for process instances and their associated business impacts, and astore514 for processes and scheduling overrides514. A scheduling override overrides an assignment for a resource. For example, a manager may have a reason for wanting a particular employee to perform an activity for a particular process instance and therefore may choose to override the assignment by the scheduling system of that activity to another employee.
Use cases for a processexecution manager controller601, such as the process execution manager controller510 inFIG. 5, are illustrated inFIG. 6. The actors (e.g., humans, systems, and software agents) and their associated tasks are as follows:
(1) System administrator605: initializes the process execution manager (step606-1); imports a process template (step606-2); suspends an activity instance (step606-3); and resumes an activity instance (step606-4).
(2) Activity assignee610: suspends assignments to himself or herself (step611-1); and resumes assignments to himself or herself (step611-2).
(3) Business impact assigner615: associates or updates a business impact with an instance (step616).
(4) Business impact requester plus a business impact assigner (e.g., a business impact integrator)620: associates or updates a business impact with a process instance (step616); queries status of a process instance (step621-1); creates or starts the execution of a process (step621-2); and cancels a process instance (step621-3).
(5) Process Requestor625: creates and starts, cancels, and suspends a process instance (step626) directly in theWFMS630.
(6) Scheduling system640: requests a refresh of all required information (step641-1); queries about some or all resources (step641-2); starts a task by assigning resource(s) to the task (e.g., possibly preempting other assignments) (step641-3): and updates information about selected resource(s) (step641-4).
(7) Resource manager635: refreshes information for some or all resources (step636-1); and overrides an assignment of resource(s) by a scheduling system to a task (step636-2).
(8) WFMS630: updates the progress of an instance (step631).
FIG. 7 illustrates an exemplary class diagram700 for a framework suitable for implementing a process execution manager including a processexecution manager controller307,510, or601 and abusiness impact aggregator301 or506. The main class is theProcessExecutionManagerController705. An instance of the ProcessExecutionManagerController is a process execution manager controller and contains a list of:
(1) resource managers (resManagers707, instances of ResourceManager716);
(2) WFMSs managers (wfSystems708, instances of WFSystem717);
(3) scheduling systems managers (schedulers709, instances of SchSystem718);
(4) processes (processes710, instances of Process715);
(5) unique mappings between the process instance identifications (IDs) in the WFMSs and job IDs in the scheduling system (jobMap712, instances of JobIDMap720); and
(6) unique mappings between the workflow resource IDs in the workflow systems and the resource IDs in the scheduling systems (resMap711, instances of ResIDMap719).
Aprocess715 contains a list of activities (activities721, instances of Activity722) and a list of links (links724, an instance of Link725) between activities. Each activity instance contains a duration (Duration723). An impact (Impact726) can be associated with a process instance or an activity instance. Each ResourceManager (resManagers707, instances of ResourceManager716) contains a resource adapter (adapter727, an instance of ResAdapter728) which implements theResourceManagerAdapter interface752 and is used by theProcessExecutionManagerController705 to interact with the resource manager (ResourceManager716). Each workflow system manager instance (wfSystems708, instances of WFSystem717) contains the name of a workflow adapter (adapter730, and instance of WFAdapter731) which implements theWFSystemAdapter interface753 and is used by theProcessExecutionManagerController705 to interact with the workflow system manager and a monitor (monitor732, an instance of Monitor733) which is used to monitor progress in the WFMS (e.g.,708).
Each scheduling system manager (schedulers709, instances of SchSystem718) contains the name of a model transformer (modelTransformer735, an instance of ModelTransformer736) and a scheduling system adapter (adapter750, an instance of SchAdapter751). TheProcessExecutionManagerController705 interacts with the model transformer (e.g.,736) which in turn interacts with the scheduling system adapter (e.g.,751). TheSchedulingSystemAdapter class760 defines a programming interface which should be supported by any scheduling system adapter integrated with the ProcessExecutionManager framework700. TheWFModelTransformer class780 defines a programming interface which should be supported by any model transformer integrated with the ProcessExecutionManager framework700.
Each scheduling system manager (schedulers709, instances of SchSystem718) also contains a list of jobs (jobs737, instantiated from Job738), resources (res743, instantiated from Resource744), overrides (overrides741, instantiated from Override742), commonalities (commonalities745, instantiated from Commonality746), and simultaneities (simultaneities739, instantiated from Simultaneity740) which the scheduling system manager (schedulers709, instances of SchSystem718) uses for scheduling purposes. Eachjob738 may contain a business impact (Impact766), a list of tasks (tasks761, instantiated from Task762), and a list of links between tasks (links763, instantiated from Link764). Each task (Task762) contains a duration (Duration765) and optionally a business impact (Impact766).
The framework700 also contains a class for abusiness impact integrator770 which is used to aggregate related requests for the execution of a process into a single request and to aggregate, weight, or both associated business impacts for the similar requests into a single business impact (e.g., associated then with the single request). Thebusiness impact integrator770 can also be used to assign default business impacts to requests for the execution of a process or to weight requests for some business purpose (e.g., to give preference to a certain types of requests or to requests from particular customers). Additionally, abusiness impact integrator770 can be used to alter request for process execution, individual or combined, to a request for another process with aggregated business impact for cost and efficiency purposes.
Classes are also specified for aResourceEvent776, aWorkflowEvent777 and ageneralized Event775. These are used to inform theProcessExecutionManagerController705 andSchSystem718 of events (e.g., Event775) regarding resource changes (e.g., ResourceEvent776) or workflow progress (WorkflowEvent705).
FIGS. 8-24 are high level flow diagrams for each of the use cases inFIG. 6. Each figure shows a method and each method has an illustrative assigned name in pseudocode. During the description ofFIGS. 8-24, please refer toFIGS. 5 and 7 also.
With reference toFIG. 8, the initialization of a module illustratively referred to as the ProcessExecutionManagerController (e.g.,ProcessExecutionManagerController705, which will be assumed during the upcoming description) is shown in accordance with an exemplary embodiment of the present invention. Themethod890 shown inFIG. 8 may be illustratively named, in pseudocode, as PEMC.init( ). When initialized, theProcessExecutionManagerController705 will read configuration data in the persistent store (e.g.,configuration store512 ofFIG. 5). This occurs instep800. Instep801, theProcessExecutionManagerController705 will create a list of scheduling systems (e.g., schedulers709) to be supported including the adapter (e.g., adapter730) and model transformer (e.g., modelTransformer735) to be used for each scheduling system. Instep802, a list of WFMSs (e.g., wfSystems708) is created including the appropriate adapter to be used for each workflow system. In step803, a list of resource managers (e.g., resManagers707) is created including the adapter to be used for each resource manager. Instep804, an empty list of processes (e.g., processes710) currently being managed is created. A map (e.g., jobMap712) of scheduling system job IDs to workflow system job IDs is created from information in the store (e.g., Process Instances+Impacts store511 ofFIG. 5). This occurs instep805.
In steps806-812, a list of resource IDs along with an associated scheduler IDs and workflow resource IDs which are to be managed by each scheduling system is determined from the resource manager (e.g., resManagers707). Step806 (“for each resource manager resManagers[i]”) begins a loop that ends instep812. Instep807, the list of resource IDs, associated scheduler ID and workflow resource ID information is added to the resource map (e.g., ResMap711) maintained by theProcessExecutionManagerController705. Instep807, the pseudocode for determining a list of resources associated with schedulers and workflow resource IDs is res=resManagers[i].adapter.getResources. Instep808, the resource IDs are added toresMap711 along with a matching ID in the WFMS. The resource information is added to each of the appropriate schedulers in steps809-811. Step809 starts a loop (“for each scheduler, schedulers[j]”) that ends instep811. Instep810, resources in res which are scheduled by the currently selected scheduler (e.g., schedulers709) are added to schedulers[j].res.
Step813 starts a loop ended instep826. For each WFMS (e.g., “for each wf system wfSystems[i]” in step813) steps814-825 are performed. Instep814, a timestamp is determined for a last event recorded in an audit trail (e.g., “get end date of recorded audit trail, auditDate=wfSystem[i].adapter.getAuditAsOf( )” in step814). Instep815, a list is determined of currently active jobs process instances (e.g., “get info on running jobs, jobs=wfSystem[i].adapter.getStatus(auditDate)” in step815).
Instep816, a map (e.g., jobMap712) is updated as needed, where the map is of scheduling system job IDs to workflow system process instance IDs. Instep817, any newly encountered processes are added to the list of processes (e.g., processes710). Step818 starts a loop for each job, jobs[j], and this loop ends instep823. Step819 starts a loop for each scheduler, schedulers[j], and this loop ends instep822. Thus, for each job in steps818-823 and each scheduler in steps819-822, if the job requires resources managed by the scheduler (step820, written as “jobs[j] uses resources in scheduler[i].res?” inFIG. 8), information on the job is added to the scheduler (step821, written as “add jobs[j], to schedulers[i]jobs” inFIG. 8).
Instep824, a monitor for this WFMS (e.g., “create a monitor wfSystem[i].adapter.mon”), and progress is monitored in step825 (e.g., “Start monitoringwfSystem[i].adapter.mon.monitorProgress( )”. Finally, step827 starts a loop performed for each scheduler, schedulers[i], that ends instep830. For each scheduler, get a list of overrides from the store (e.g.,store514 ofFIG. 5) for resources and jobs managed by this scheduler (step828). Additionally, the scheduler is initialized with the jobs, resources, and override information, written in pseudocode as the following: schedulers[i].modelTransformer.init (schedulers[i].jobs, schedulers[i].res, scheduler[i].overrides)”).Method890 ends afterstep830.
With reference toFIG. 9, amethod990 for importing a process is illustrated in accordance with an exemplary embodiment of the present invention. In pseudocode, themethod890 shown inFIG. 9 may be illustratively named PEMC.importProcess (wfs, pID, validFrom, inputClass). The input parameters specify the WFMS, the process ID, the “valid from” date (e.g., used to differentiate versions of a process), and the name of a class which is used to prepare input for the execution of this process (e.g., defined by the process ID).Method990 is used to import process information required by theProcessExecutionManagerController705 as well as metadata required by one or more schedulers into the store for (e.g., Processesstore514 ofFIG. 5).
The first step (step900) ofmethod990 is to match the WFMS specified with one of those supported (shown as “determine wfSystems[i] for specified workflow system wfs” instep900 ofFIG. 9). Instep901, the workflow adapter for this WFMS is invoked to load the basic process information needed by theProcessExecutionManagerController705. This is described as “invoke wfSystems[i].adapter.importProcess (pID, validFrom) to get process details from wfs or elsewhere if necessary” instep901 ofFIG. 9. Metadata about the new process is stored in a store (e.g.,store514 ofFIG. 5) instep502, written as “record information about the new process wfs, pid, validFrom, inputClass, etc. in permanent store.” Instep903, a zero (e.g., successful) or one (e.g., unsuccessful) is returned to a requester if the update was successful or was not successful, respectively.Method990 ends afterstep903.
With reference toFIG. 10, amethod1090 for suspending a resource is illustrated in accordance with an exemplary embodiment of the present invention. Themethod1090 shown inFIG. 10 may be illustratively named in pseudocode as PEMC.suspendResource (wfs, wfRresID, duration, flag). The input parameters specify the WFMS, the workflow resource ID, a duration during which the resource will not be available and a flag indicating how the current assignment, if any, is to be handled (e.g., allow resource to complete the current assignment before beginning suspension, re-assign the current assignment to another resource, or hold this assignment for this resource). Themethod1090 is intended to allow a human resource to inform the scheduler of an unscheduled period of unavailability.
The first step (step1000) inmethod1090 is to match the WFMS specified with of those supported, which is a step of determining a wfSystems[i] for a specified WFMS, wfs. Instep1001, the appropriate resource ID is obtained for the specified workflow resource ID (e.g., “get resID for this wfs and wfResID”).Step1002 starts a loop performed for each scheduler (schedulers[i]), and the loop ends instep1005. Instep1003, it is determined if this resource is managed by the scheduler (shown as “resIDscheduler[i].res?” inFIG. 10). If not (step1003=No), themethod1090 continues instep1005. If so (step1003 =Yes),step1004 is performed and the handleEvent method of a model transformer and adapter is used to send a “suspend event” for this resource to the scheduler. Pseudocode for informing a scheduler is written as the following in step1004: schedulers[i].modelTransformer. handleEvent (“suspend”, resID, duration, flag). Instep1006, a zero (e.g., successful) or one (e.g., unsuccessful) is returned to a requestor if the suspend resource was successful or was not successful, respectively.Method1090 ends afterstep1006.
With reference toFIG. 11, amethod1190 for resuming a resource is illustrated in accordance with an exemplary embodiment of the present invention. The method190 shown inFIG. 11 may be illustratively named as PEMC.resumeResource (wfs, wfRresID). The input parameters specify the WFMS and the workflow resource ID. This method is intended to allow a resource to inform the scheduler of his or her availability after an unscheduled period of unavailability.
The first step (step1100) is to match the WFMS specified with one that is supported, e.g., determining a wfSystems[i] for a specified workflow system, wfs. Instep1101, the appropriate resource ID, resID, is obtained for the specified workflow resource ID, wfResID.Step1102 begins a loop performed for each scheduler, schedulers[i], and the loop ends instep1105. For each scheduler in steps1102-1105, if this resource is managed by the scheduler (step1103, written in pseudocode as “resID scheduler[i].res?”), the handleEvent method of the model transformer and adapter is used to send a “resume event” for this resource to the scheduler instep1104. Informing the scheduler in pseudocode is written as the following: schedulers[i].modelTransformer.handleEvent (“suspend”, resID, duration, flag). Instep1106, a zero (e.g., successful) or one (e.g., unsuccessful) is returned to a requestor if the resume resource was successful or was not successful, respectively.Method1190 ends afterstep1106.
Turning now toFIG. 12, amethod1290 for updating impact for a process instance is illustrated in accordance with an exemplary embodiment of the present invention. Themethod1290 ofFIG. 12 may be illustratively named PEMC.updateImpact (wfs, piID, impact). The input parameters specify the WFMS, the process instance ID, and the business impact.Method1190 allows the association of a business impact with a process instance not started by theProcessExecutionManagerController705, the update of a business impact for any process instance, or both.
Themethod1290 begins instep1200, when the WFMS ID, wfs, is matched with one of those supported, e.g., determining wfSystems[i] for specified WFMS, wfs. Instep1201, a unique job ID, jobID, assigned to this process instance is determined based on the wfs and reqID. The business impact and job ID are stored instep1202 in a store (e.g.,store511 ofFIG. 5).Step1203 begins a loop for each scheduler, sch[i], and the loop ends instep1207. Thus, for each scheduler in steps1203-1207, check if this job is being managed by the scheduler in step1204 (in pseudocode, “jobID in schedulers[i].jobs?”). If the job is not being managed by the scheduler (step1204=No), select another scheduler (step1207). If the job is being managed by the scheduler (step1204=Yes), then update the information (e.g., including business impact) in the list of schedulers (e.g., schedulers[i]jobs) for that scheduler instep1205. Instep1206, the updateImpact method of the model transformer is performed to inform that scheduler of the update via the scheduling system adapter, shown in pseudocode as “schedulers[i].modelTransformer.updateImpact (jobID, impact)”. Instep1208, a zero (e.g., successful) or one (e.g., unsuccessful) is returned to a requestor if the update to the business impact was successful or was not successful, respectively.Method1290 ends afterstep1208.
With reference toFIG. 13, amethod1390 for starting a process instance is illustrated in accordance with an exemplary embodiment of the present invention. Themethod1390 shown inFIG. 13 may be illustratively named in pseudocode as PEMC.startProcessInstance (wfs, pID, input, impact). The input parameters specify the WFMS, the process ID, the input for the process, and a business impact.Method1390 is used to request that theProcessExecutionManagerController705 start an instance of a specified process with given input and associate a business impact with that process instance.
The first step (step1300) inmethod1390 is to match the WFMS specified with of those supported, which is a step of determining a wfSystems[i] for a specified WFMS, wfs. Instep1301, it is determined which class prepares the input for the execution of the process (e.g., defined by the pID) and the class (e.g., prep) is loaded, if necessary. Instep1302, the class is invoked with the specified input to prepare the input for the workflow system execution. In pseudocode, this is shown as pi_input=wfSystems[i].adapter.prep (input).
Instep1303, a unique process instance ID, piID is created for the process ID, pID. Instep1304, a unique job ID, jobID, is also created for the process ID. Instep1305, information (e.g., wfs, pID, piID, jobID, input, impact) is recorded about this process instance in a store such asstore511 ofFIG. 5. The next step (step1306) is to invoke the startProcessInstance method of the workflow adapter to start the process instance with the prepared input data. In pseudocode, this is wfSystems[i].adapter.startProcessInstance (pID, pi_input, piID). Next, the store (e.g.,store511 inFIG. 5) is updated with a status of “started” for this process instance (defined by wfs and piID). The process instance ID is returned to the requester instep1308 if the starting of the process instance was successful. If the starting of the process instance was not successful, “FAILURE” is returned to the requester instep1308.
With reference toFIG. 14, amethod1490 for canceling a process instance is illustrated in accordance with an exemplary embodiment of the present invention. Themethod1490 may be illustratively named in pseudocode as PEMC.cancelProcessInstance (wfs, piID). The input parameters specify the WFMS and a unique process instance ID.Method1490 is used to request that theProcessExecutionManagerController705 cancel the specified process instance (e.g., defined by the piID) in the specified workflow system (e.g., defined by wfs).
The first step (step1400) inmethod1490 is to match the WFMS specified with of those supported WFMSs, which is a step of determining a wfSystems[i] for a specified WFMS, wfs. Instep1401, a cancelProcessInstance method is used for the workflow adapter for the specified WFMS. In pseudocode, this may be written as wfSystems[i].adapter.cancelProcessInstance (piID). Instep1402, a store (e.g., store511) is updated for the specified process instance ID (e.g., piID) in the specified workflow with a status of “cancelled.” Instep1403, a zero (e.g., successful) or one (e.g., unsuccessful) is returned to a requestor if the canceling of the process instance was successful or was not successful, respectively.Method1490 ends afterstep1403.
Turning now toFIG. 15, amethod1590 for suspending an activity instance is illustrated in accordance with an exemplary embodiment of the present invention. Themethod1590 may be illustratively named in pseudocode as PEMC.suspendActivityInstance (wfs, piID, actID). The input parameters specify the WFMS, a unique process instance ID, and an activity ID.Method1590 is used to request that theProcessExecutionManagerController705 suspend the specified activity instance (e.g., defined by the piID and the actID) in the specified WFMS (e.g., defined by wfs).
The first step (step1500) inmethod1590 is to match the WFMS specified with one of those supported WFMSs, which is a step of determining a wfSystems[i] for a specified WFMS, wfs. The next step (step1501) is to invoke the suspendActivityInstance (indicated as “suspendAI” inFIG. 15) method of the workflow adapter with the activity instance information. In pseudocode, this may be written as wfSystems[i].adapter.suspendActivityInstance (piId, actID, flag). Instep1502, a zero (e.g., successful) or one (e.g., unsuccessful) is returned to a requestor if suspension of the activity instance was successful or not.Method1590 ends afterstep1502.
With reference toFIG. 16, amethod1690 for resuming an activity instance is illustrated in accordance with an exemplary embodiment of the present invention. Themethod1690 may be illustratively named in pseudocode as PEMC.resumeActivityInstance (wfs, piID, actID). The input parameters specify the WFMS, a unique process instance ID, and an activity ID.Method1690 is used to request that theProcessExecutionManagerController705 resume the specified activity instance (e.g., defined by the piID and the actID) in the specified WFMS (e.g., defined by the wfs).
Instep1600, the specified WFMS is matched with one of those WFMSs supported, which is a step of determining a wfSystems[i] for a specified WFMS, wfs. Instep1601, a check is made to see if the activity is actually suspended. If not (step1601=No), an error (e.g., a zero) is returned to the requestor instep1603. Otherwise (step1601=Yes), a resumeActivityInstance method (indicated as “resumeAI” inFIG. 16) of a workflow adapter is invoked with the information about the activity instance. This occurs instep1602 and may be written in pseudocode as wfSystem.adapter.resumeActivityInstance (piId, actID). Instep1603, a zero (e.g., successful) or one (e.g., unsuccessful) is returned to a requestor if resumption of the process instance was successful or was not successful, respectively.Method1690 ends afterstep1603.
Turning now toFIG. 17, amethod1790 for querying a process instance is illustrated in accordance with an exemplary embodiment of the present invention. Themethod1790 may be illustratively named in pseudocode as PEMC.query (wfs, piID). The input parameters specify the WFMS and a unique process instance ID.Method1790 is used to query theProcessExecutionManagerController705 for the current status of the specified process instance in the specified WFMS.
Instep1700, a job ID is determined for the specified WFMS (e.g., defined by wfs) and process instance ID.Step1701 begins a loop that examines each scheduler (scheduler[i]) and that ends instep1704. Thus, for each scheduler, check if the jobID corresponds to one of the managed jobs (schedulers[i].jobs) instep1702. If yes (step1702=Yes), the state is returned for this job instep1703 and themethod1790 ends. If the process instance is not one of the active jobs (step1702=No), continue loop1701-1704 checking other schedulers. If all schedulers are checked and the job is not found in any of them, then look up status of the job in the store (e.g.,store511 ofFIG. 5) instep1705. The state of the job found in the store or an error if the job was not found in the store is returned (step1706) to the requestor.Method1790 ends afterstep1706.
With reference toFIG. 18, amethod1890 for restarting a scheduler is illustrated in accordance with an exemplary embodiment of the present invention. Themethod1890 may be illustratively named in pseudocode as PEMC.restartScheduler (sch). The input parameter specifies the scheduler.Method1890 is used by a scheduling system (e.g., schedulers709) to request that theProcessExecutionManagerController705 send all the information (e.g., information on jobs and resources) required by the scheduler to reinitialize.
The first step (step1800) inmethod1890 is to match the WFMS specified with one of those supported WFMSs, which is a step of determining a wfSystems[i] for a specified WFMS, wfs. Instep1801, the init method of the scheduler model transformer and adapter is invoked and passed the required information. In pseudocode, this may be written as schedulers[i].modelTransformer.init (schedulers[i] jobs, schedulers[i].res, commonalities, simultaneities, overrides). Instep1802, a zero (e.g., successful) or one (e.g., unsuccessful) is returned to the requester if starting of the scheduler, sch, was successful or was not successful, respectively.Method1890 ends afterstep1802.
With reference toFIG. 19, amethod1990 for querying resource information is illustrated in accordance with an exemplary embodiment of the present invention. Themethod1990 may be illustratively named in pseudocode as PEMC.queryResources (res[]) : res[]. The input parameter specifies one or more resources.Method1990 is used by a scheduling system (e.g., schedulers709) to request that theProcessExecutionManagerController705 obtain information on specified resources.Step1900 begins a loop performed for each resource (e.g., res[i]) and that ends instep1902. For each of the specified resources, theProcessExecutionManagerController705 invokes the queryResource method of the associated resource manager adapter instep1901. In pseudocode, this may be written as res[i].rm.adapter.queryResources (res[i]). The results are returned to the requestor instep1903 andmethod1990 ends afterstep1903.
Turning toFIG. 20, amethod2090 for performing starting a task is illustrated in accordance with an exemplary embodiment of the present invention. Themethod2090 may be illustratively named in pseudocode as PEMC.startTask (jobID, taskID, res[], preempt). The input parameters specify the job ID, the task ID, one or more resources, and a parameter indicating whether or not current assignments should be preempted.Method2090 is used by a scheduling system (e.g., schedulers709) to request that theProcessExecutionManagerController705 assign the specified one or more resources to the specified process activity instance (optionally, preempting previous assignments).
The first step is to match the scheduling system with one of those supported and get the process instance ID and activity instance ID for the specified job ID and task ID. This occurs instep2000. The next step is to convert the resource ID or resource IDs used by the scheduler to those used by the WFMS, wfResID[], which occurs instep2001. Instep2002, theProcessExecutionManagerController705 invokes a startActivityInstance method (indicated as “startAI” inFIG. 20) of the associated workflow system adapter to start the activity. This may be written in pseudocode as wfSys[i].adapter.startActivityInstance (piID, actID, wfRresID[], preempt). Instep2003, a zero (e.g., successful) or one (e.g., unsuccessful) is returned to the requestor if the one or more resources were or were not assigned, respectively, to the activity instance for the process.Method2090 ends afterstep2003.
With reference toFIG. 21, amethod2190 for updating resource information is illustrated in accordance with an illustrative embodiment of the present invention. Themethod2190 may be illustratively named in pseudocode as PEMC.updateResources (res[]). The input parameter specifies one or more resources to be updated.Method2090 is used by a scheduling system (e.g., scheduler709) to send resource update information that theProcessExecutionManagerController705 obtains on the specified one or more resources.
Step2100 begins a loop performed for each resource, res[i], and the loop ends instep2102. For each of the specified resources, instep2101, theProcessExecutionManagerController705 invokes the updateResource method of the associated resource manager adapter with the resource information. In pseudocode, this may be written as res[i].rm.adapter.updateResources (res[i]). Instep2103, a zero (e.g., successful) or one (e.g., unsuccessful) is returned to the requestor if updating the resources was successful or was not successful, respectively.Method2190 ends afterstep2103.
With reference toFIG. 22, amethod2290 for performing a refresh resources request is illustrated in accordance with an exemplary embodiment of the present invention. Themethod2290 may be illustratively named in pseudocode as PEMC.refreshResources (rm, res[], all). The input parameters specify the resource manager to use, one or more resources to be refreshed, and a value indicating whether or not all resources are being refreshed.Method2290 is used by a resource manager (e.g., resManager707) to refresh resource information.
The first step (step2200) is to match the resource manager (e.g., rm) with one of those resource managers that are supported (e.g., resManagers[i]).Step2201 starts a loop performed for each scheduler (e.g., schedulers[i]), and this loop ends instep2217. Thus, for each of the schedulers, steps2201-2217 are performed. Instep2202, an empty list (saveRes) of resources is created.Step2203 starts a loop performed for each resource, res[j], and the loop ends instep2206. Instep2204, it is determined if the resources are managed by this scheduler, in pseudocode this may be written as “res[j].scheduler=schedulers[i]?”. If not (step2204=No), the loop2203-2206 continue with the next resource, if any. If yes (step2204=Yes), the resource is added to the list saveRes.
Instep2207, it is checked if all resources are being refreshed. If yes (step2207=Yes), then delete all resources for this resource manager in this schedulers list of resources instep2214. In pseudocode, this may be written as delete all resources in schedulers[i].res, where schedulers[i].rm=rm. Then, add the new resource information to the scheduler instep2215. In pseudocode,step2215 can be written as “add saveRes to schedulers[i].res.” Finally, instep2216, the refreshResources method of the associated scheduling system model transformer and adapter is invoked with the list of resources for this scheduler and a value of TRUE. In pseudocode, this may be written as schedulers[i].modelTransformer.refreshResources (schedulers[i].res, TRUE).
If no instep2207, then step2208 starts a loop performed for each resource managed by this scheduler, and the loop ends instep2212. Instep2209, it is determined if this resource is already in the list of resources managed by this scheduler. In pseudocode, this can be written as saveRes[i] in schedulers[i].res. If it is (step2209=Yes), then the resource information is updated instep2211. Otherwise (step2209=No), add the resource information to the list kept by the scheduler instep2210. Finally, instep2213, the refreshResources method of the associated scheduling system model transformer and adapter is invoked with the list of resources for this scheduler and a value of FALSE. In pseudocode, this may be written as schedulers[i].adapter.refreshResources (schedulers[i].saveRes, FALSE).
Once steps2201-2217 have been completed for all schedulers supported, the resource map (e.g., resMap711) for all the resources is regenerated. This occurs instep2218. Instep2219, a zero (e.g., successful) or one (e.g., unsuccessful) is returned to the resource refresh did complete or did not complete, respectively.Method2290 ends afterstep2219.
With reference toFIG. 23, amethod2390 for requesting to override a schedule is illustrated in accordance with an exemplary embodiment of the present invention. Themethod2390 may be illustratively named in pseudocode as overrideSchedule (sch, override[]). The input parameters specify a scheduler and one or more overrides.Method2390 is used by a resource manager (e.g., resManagers707) to request that theProcessExecutionManagerController705 override resource assignment or resource assignments made by the scheduler.
The first step (step2300) is to match the scheduling system, sch, with one of a number of supported schedulers, schedulers[i]. The next step (step2301) is to record the override information in a store such asstore514 inFIG. 5. Instep2302, theProcessExecutionManagerController705 invokes the overrideSchedule method of the associated scheduling system model transformer and adapter with the override information. In pseudocode, this may be written as schedulers[i].modelTransformer.overrideSchedule (override).Method2390 ends afterstep2302.
Turning now toFIG. 24, amethod2490 for requesting handling of an event is illustrated in accordance with an illustrative embodiment of the present invention. Themethod2490 may be illustratively named in pseudocode as wfSystems[i].adapter.mon.handleEvent (wfEvent). The input parameter specifies an event to be handled.Method2490 is used by a WFMS (illustratively, a workflow adapter) to inform the appropriate monitor inProcessExecutionManagerController705 of progress in the execution of process instances.
The first step (2400) is to determine the job ID, jobID, corresponding to the specified process instance ID, wfEvent.piID.Step2401 begins a loop performed for each scheduler, sch[i], and the loop ends instep2405. Steps2401-2405 are therefore performed for each scheduler. Instep2402, it is determined if this job, jobID, is being scheduled by this scheduler. In pseudocode, this may be written as “jobID in schedulers[i] jobs?”.
If yes (step2402=Yes), the status is updated in step2403 (e.g., schedulers[i]jobs(jobID)=wfEvent.status). Instep2404, the handleEvent method of the appropriate scheduler model transformer and adapter is invoked with the details of the event. This may be written in pseudocode as the following: schedulers[i].modelTransformer.handleEvent (wfEvent). Ifstep2402 is No, another scheduler is selected instep2405 and themethod2490 continues instep2402.
Once all schedulers have been examined, instep2405 it is determined if the event indicated the end of a process instance. If not (step2406=No), themethod2490 ends. If so (step2406=Yes), a store such asstore511 inFIG. 5 would be updated with the status (e.g., “complete”) of this process instance (defined by, e.g., piID) instep2407. Instep2408, it is determined if the ProcessExecutionManagerController705 (e.g., PEMC) initiated this process instance. If yes (step2408=Yes), instep2409, the requester is informed of the end of the process instance and any output, if necessary, is communicated to the requester. If not (step2408=No),method2490 ends.
It is to be understood that the embodiments and variations shown and described herein are merely illustrative of the principles of this invention and that various modifications may be implemented by those skilled in the art without departing from the scope and spirit of the invention.