The present invention relates to computer software and, more particularly, to managing a process or workflow.
A process in general contains a sequence of steps, tasks, or activities that convert an input to a desired output. The sequence of activities in a process begins with an input, which can be in a variety of forms such as investment capital, knowledge, physical materials, or software source code. The process can add value to the input by changing it or using it to produce a desired output, such as a product or service of desired value. A process produces a desired product or service by applying resources such as computing power, time, and manpower. The input process may be anything from billing customers, to prosecuting a patent application, to developing and testing a software product. An efficient process enables things to be done faster, cheaper, and/or outputs a better product or service. An efficient process may also use resources more efficiently and effectively.
Among various processes, some processes include a plurality of actions that are to be performed sequentially. For example, a software testing process may include sequential actions such as submitting source code to be tested, reviewing the submitted source code, performing various tests on the submitted source code, and checking the tested source code into a source code control system that controls and tracks changes to files.
For a process including sequential actions, it is desirable to divide the process into a sequence of stages, each of which includes one or more sequential actions in the process. The stages are then executed sequentially. It is also desirable that each stage is assigned to an owner, who is then held accountable for the proper performance of the stage. Further, it is desirable to keep track of the progression of the process by identifying the execution status of each stage in the process. Furthermore, it is desirable that each stage in a process is capable of being customized according to specific requirements, such as a user's specific need in performing the process.
Therefore, there exists a need for a mechanism that divides a process into a plurality of stages to be performed sequentially, wherein each stage involves one or more actions of the process. There also exists a need to be able to customize individual stages of the process according to specific requirements of the process. There further exists a need to keep track of the progression of the process by identifying the status of each stage in the process at a given moment.
The invention addresses the above-identified needs by providing a generic automation framework for any process flow. A process is divided into a sequence of stages. The stages in the process depend on each other, and the dependency dictates the flow of the process. Each stage in the process may be customized according to specific requirements for the process. Preferably, a user interface is provided for creating and defining a plurality of stages in a process. The user interface displays information concerning each stage separately. The user interface may also graphically display the stages in the process and indicate the current status of each stage in the process.
In accordance with one aspect of the invention, a process is divided into a sequence of stages, wherein an execution of the stages takes the process from start to finish. Each stage in the process may depend on other stages in the process. The dependency dictates the flow of the process. A stage is dependent on another stage if the stage can be executed only after another stage has completed. A stage that does not depend on any other stage is the initial stage of the process. An execution of the process starts from the initial stage of the process. The successful execution of the initial stage leads to the activation of its immediate dependent stage(s), the successful execution of which leads to the activation of their immediate dependent stage(s). If any of the stages in the process fails to perform properly, the process is re-executed.
Another aspect of the invention predefines one or more stage types, each of which provides a general definition of a stage. A stage in a process is an instance of a specific stage type. Preferably, a stage, i.e., an instance of a stage type, may be customized to meet specific requirements for a process. Preferably, the stage type of a stage includes one or more properties that provide information about customization of a stage, such as the name and the location of the customization files.
In accordance with yet another aspect of the invention, a stage is associated with one or more properties such as status, owner, and an escalation policy. The status property identifies the status of the stage, which can be “active,” “waiting,” “resolved,” or “closed.” The owner property identifies the individual or group of individuals who are responsible for the proper execution of the stage. The escalation policy indicates what to do upon the occurrence of a particular event in the stage. For example, dependent stages of the stage may be notified upon the status of the stage being transitioned to “closed.”
A further aspect of the invention provides a user interface for creating and managing a plurality of stages in a process. The user interface allows a user to edit information concerning each stage in a process in a separate portion of the user interface. Each such separate portion of the user interface supplies information concerning properties of a stage, the dependency relationships between the stage and other stages in the process, plug-ins that customize the stage, the escalation policy of the stage, etc. Preferably, the user interface also graphically indicates the status of each stage in a process at a given moment, wherein the stages may be displayed in different colors according to their statuses. The user interface may also display a custom UI control that pre-defines a plurality of stages for a process.
In summary, the invention provides a generic automation framework for any process including sequential actions. The generic automation framework defines a plurality of stages for the process and automatically executes the plurality of stages sequentially. The generic automation framework thus eliminates possible manual interventions of a process. The generic automation framework also provides accountability by assigning owners to stages in a process and tracking the status of each stage during progression of the process.
The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
Embodiments of the invention divide a process including sequential actions into a plurality of stages. These stages take the process from start to finish. The stages in the process may depend on each other, and this dependency dictates the flow of the process. Preferably, a stage in the process may be an instance of a predefined stage type, which provides a general definition of a stage. A stage may be customized to meet specific requirements of the process by using custom plug-ins. Preferably, a user interface is provided to define and manage a plurality of stages for a process. The user interface may separately display information concerning each stage in the process. The user interface may also graphically indicate the dependency relationships and the status of each stage in the process at a given moment.
In embodiments of the invention, a process is a collective term referring to a series of activities required to obtain a desired result. A process can be anything from creating an encyclopedia, to prosecuting a patent application, to testing a software program. In the following text, the invention will primarily be described in the context of a software testing process. However, those skilled in the relevant art and others will appreciate that the invention is also applicable to any process or workflow that can be divided into a sequence of stages. Such a process or workflow includes, for example, a software development process, a document management process, a business decision-making process, etc.
The following text will first describe a stage and multiple exemplary properties associated with the stage. The following text then describes a schema for customizing a stage, which may be an instance of a predefined stage type. The following text further describes a computer-implemented method for managing a process including sequential actions. The computer-implemented method divides a process into a plurality of stages and defines the dependencies among the plurality of stages. The method adjusts the status of each stage according to the progression of the process. Finally, the following text describes an exemplary user interface for defining a plurality of stages in a process.
Section 1: Stages
Embodiments of the invention divide a process including sequential actions into a plurality of stages, each of which may contain one or more sequential actions in the process. For example,
A stage of a process may depend on other stages of the process. A stage is dependent on another stage if the stage can be activated only after another stage completes. For example, as shown in
In exemplary embodiments of the invention, a stage may have a plurality of properties. For example, as shown in
In an exemplary embodiment of the invention, a stage may be in an “active” status, a “waiting” status, or a “closed” status. A stage may transition to the “active” status when the one or more stages that the stage depends on have just transitioned to the “closed” status. A stage has a “closed” status when the stage is completed. Once a stage is closed, its dependent stages in the process flow will be activated. In particular, when a new process is created, the initial stage will have the “active” status while the rest of the stages in the process will have the “waiting” status. When the initial stage of the process transitions to the “closed” status, the immediate next stage will have the “active” status and all the other stages will have the “waiting” status. A stage is in the “waiting” status when at least one of the stages it depends on is not in the “closed” status.
In some embodiments of the invention, a stage may have additional statuses. For example, when a stage is about resolving one or more issues in a process, the stage may have an additional status named “resolved,” which comes in between the “active” status and the “closed” status of the stage. When each issue in the stage is resolved, the stage changes from the “active” status to the “resolved” status. While in the “resolved” status, the resolved issue(s) in the stage are verified. When the issue(s) successfully pass the verification, the stage goes into the “closed” status.
Each stage may be assigned to an owner. An owner performs the one or more sequential actions in the stage, and is held accountable for the proper execution of the stage. In embodiments of the invention, a stage can be assigned to more than one owner. In such a situation, multiple instances of the same stage are created so each owner is associated with one instance of the stage. When multiple instances of a stage are created, stages depending on the stage will be in the “waiting” status until all instances of the stage are closed. For example, as shown in
Each stage may also be associated with a notification property, which in essence is an escalation policy. The escalation policy defines the behavior of the stage upon occurrence of a specific event. For example, when the status of a stage is changed to “closed,” stages depending on the stage will be notified.
In embodiments of the invention, the status of a stage in a process changes according to the progression of the process.
As shown in
As noted above, each stage is assigned to an owner who is responsible for the proper execution of the stage. While the owner of a stage is performing actions in the stage, the stage has an “active” status, and stages depending on the stage have a “waiting” status. In particular, when the initial stage of a process is in the “active” status, all other stages in the process have the “waiting” status. For example, as shown in
As noted above, in exemplary embodiments of the invention, according to the specification in the escalation policy associated with a stage, the stage notifies its dependent stages upon the occurrence of a particular event. Such an event can be that the stage has transitioned into the “closed” status. For example, as shown in
The owner of the code review stage 204 reviews the submitted source code and signs off upon completing the code review. Consequently, as illustrated in
In an exemplary embodiment of the invention, an action named “Pushback” occurs when a stage cannot be executed properly. A Pushback action resets the failed stage and reactivates the initial stage of the process. For example, as shown in
Section 2: Customization of a Stage
Exemplary embodiments of the invention allow a stage in a process to be customized according to the needs of the process. One such embodiment of the invention defines various stage types. A stage type provides a generic definition of a stage. Each specific instance of a stage type is called a stage or a stage instance. For example, the code submission stage 202 (
In an exemplary embodiment of the invention, a definition of a stage type includes a field called IsDynamicSubObject. The IsDynamicSubObject field is used to identify if an instance of the stage type includes any dynamic sub-objects. If the IsDynamicSubObject is set to be TRUE for a stage, then it means that the stage does include a dynamic sub-object. The definition of a stage type may also include a field called NameSpace, whose value identifies where the dynamic sub-object and its sub-object classes are located for an instance of the stage type. The definition of a stage type may also include a property called DynamicSubObject, through which an instance of the stage type loads the corresponding dynamic sub-object files from the location identified by the NameSpace field. In an exemplary embodiment of the invention, each dynamic sub-object includes an identifier that can be used by an instance of a stage type to reference the dynamic sub-object.
Section 3: Routines for Managing a Process Including Sequential Actions
After executing the subroutine 602, the routine 600 enters a “for loop” that is defined between the looping block 604 and the looping block 614. The “for loop” processes each stage in the process. At looping block 604, the above-mentioned “for loop” is commenced to iterate through each stage in the process. As such, the first stage, i.e., the initial stage of the process, is selected. The routine 600 processes the selected stage. See block 606. Here, the sequential actions contained in the stage are executed. For example, for the testing process 200 illustrated in
As noted above,
At looping block 704, the above-mentioned “for loop” is commenced to iterate through each stage in the process. For each stage, the subroutine 602 first identifies a predefined stage type and instantiates the stage type for the selected stage. See block 706. As noted above, a stage type provides a general definition for a stage. As also noted above, a stage of a particular stage type can be customized by using custom plug-ins such as dynamic sub-objects. Therefore, the subroutine 602 proceeds to determine whether to customize the selected stage. See decision block 708. If the answer is NO, the subroutine 602 proceeds to block 712 to identify stages that are dependent on the selected stage. If the answer to decision block 708 is YES, the subroutine 602 proceeds to identify the custom plug-ins. See block 710. As noted above, properties associated with the selected stage may specify the name of the custom plug-in and the location of the custom plug-in file. From block 710, the subroutine 602 proceeds to block 712 to identify each stage that depends on the selected stage. See block 712. A stage is dependent on the selected stage if the stage can be activated only after the selected stage is completed. The subroutine 602 then proceeds to specify an escalation policy for the selected stage. See block 714. As noted above, the escalation policy may specify when and how to notify dependent stages of the selected stage. The subroutine 602 then proceeds to the looping block 716, where the end of the “for loop” is reached. At looping block 716, the subroutine 602 either selects another stage in the process, if there is another stage to be processed, thereby returning to the start of the “for loop,” i.e., the looping block 704, or continues execution outside of the loop. In this case, continuing beyond the “for loop” means that subroutine 602 has completed its purpose, and the exemplary subroutine terminates.
Section 4: User Interface for Defining a Plurality of Stages for a Process
Embodiments of the invention may also provide a user interface, through which a user can create and manage a plurality of stages for a process. The user interface displays definitions for each individual stage in a separate section. The user interface also graphically indicates the status of each stage in a process at a given moment.
In embodiments of the invention, the user interface 800 for each stage also includes multiple UI sections for further configuring a stage. For example, as shown in
In embodiments of the invention, the user interface 800 may also include an “overall status” section 926. The “overall status” section 926 graphically illustrates the stage being edited relative to other stages in the process that the stage being edited is in.
While the preferred embodiment of the invention has been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the invention.
Number | Name | Date | Kind |
---|---|---|---|
5581691 | Hsu et al. | Dec 1996 | A |
5745901 | Entner et al. | Apr 1998 | A |
5799297 | Goodridge et al. | Aug 1998 | A |
5867824 | Saito et al. | Feb 1999 | A |
6041306 | Du et al. | Mar 2000 | A |
6167316 | Gloudeman et al. | Dec 2000 | A |
20040260407 | Wimsatt | Dec 2004 | A1 |
20050149342 | Chao et al. | Jul 2005 | A1 |
Number | Date | Country | |
---|---|---|---|
20060195210 A1 | Aug 2006 | US |