The present invention is in the field of methods, systems, and computer program products for clustering based resource planning, work assignment, and cross-skill training planning in services management.
In service areas or businesses, firms have an available pool of several skill-types. That is, there are resources (typically human resources) with different types of skills. Firms have the option of cross-training a chosen number of resources from any primary skill type into secondary skills, tertiary skills, and so on. They also have the option of further hiring and increasing the system availability of any chosen skill type. In addition, they also have the option of contracting out a required amount of any chosen skill type.
An embodiment of the invention provides a method for service management, wherein levels of similarity between categories are determined with a computer processor. This includes identifying resources that have performed tasks in at least two of a first category, a second category, and at least one additional category. The lowest number of tasks performed between the first and second categories is determined for each of the identified resources that have performed tasks in the first and second categories; and, a first sum is calculated by summing the lowest number of tasks performed between the first and second categories for all of the identified resources. The lowest number of tasks performed between the first and additional categories is determined for each of the identified resources that have performed tasks in the first and additional categories; and, a second sum is calculated by summing the lowest number of tasks performed between the first and additional categories for all of the identified resources. The lowest number of tasks performed between the second and additional categories is determined for each of the identified resources that have performed tasks in the second and additional categories; and, a third sum is calculated by summing the lowest number of tasks performed between the second and additional categories for all of the identified resources.
A first product is calculated by multiplying the first sum by the number of resources that have performed tasks in the first and second categories; a second product is calculated by multiplying the second sum by the number of resources that have performed tasks in the first and additional categories; and, a third product is calculated by multiplying the third sum by the number of resources that have performed tasks in the second and additional categories. First, second and third quotients are calculated by dividing each of the first, second and third products by a sum of the first, second, and third sums. The categories are grouped into a number of clusters with a clustering module based on the first, second and third quotients using an agglomerative clustering approach. Resources are associated with the clusters based on task performance history of the resources.
Another embodiment of the invention provides a method for service management, wherein resources that have performed tasks in at least two of a first category, a second category, and at least one additional category are identified. A plurality of correlation sums are determined where the correlation sum includes at least two categories. The correlation sums are added together to produce a correlation value; and, a correlation product is calculated for each correlation sum based on the respective correlation sum and the number of tasks used to determine the respective correlation sum. A quotient is calculated for each correlation sum based on the respective correlation product and the correlation value. The categories are grouped into clusters with a clustering module based on the quotients; and, resources are associated with the clusters with the clustering module based on task performance history of the resources.
Yet another embodiment of the invention determines degrees of similarity between categories by determining minimum ticket volumes between a first and second category for each resource that has performed tasks in at least two of the first category, the second category, and at least one additional category. A first sum is calculated by summing the minimum ticket volumes between the first and second categories. Minimum ticket volumes are determined between the first and additional category for each resource; and, a second sum is calculated by summing the minimum ticket volumes between the first and additional categories. Minimum ticket volumes are determined between the second and additional category for each resource; and, a third sum is calculated by summing the minimum ticket volumes between the second and additional categories.
The first, second, and third sums are normalized with a computer processor by calculating a total sum by summing the first, second, and third sums. The first sum is multiplied by the number of resources that have performed tasks in the first and second categories; the second sum is multiplied by the number of resources that have performed tasks in the first and additional categories; and, the third sum is multiplied by the number of resources that have performed tasks in the second and additional categories. Products of the multiplying are divided by the total sum. The categories are grouped into clusters with a clustering module based on the normalizing of the first, second, and third sums; and, resources are associated with the clusters with the clustering module based on task performance history of the resources.
Still another embodiment of the invention provides a method for service management, wherein degrees of similarity between categories are determined by identifying resources that have performed tasks in at least two of a first category, a second category, and at least one additional category with a task identifier. The similarities between the first category and the second category are determined by, for each of the identified resources that have performed tasks in the first category and the second category, determining the number of tasks in the first category that the resource has performed with the task identifier. The task identifier determines the number of tasks in the second category that the resource has performed, and identifies the lowest value between the number of tasks in the first category the resource has performed and the number of tasks in the second category that the resource has performed. A computer processor calculates a first sum of the lowest values of the number of tasks in the first category the resource has performed and the number of tasks in the second category that the resource has performed for all of the identified resources that have performed tasks in the first category and the second category.
The similarities between the first category and the at least one additional category are determined by, for each of the identified resources that have performed tasks in the first category and the at least one additional category, determining the number of tasks in the at least one additional category that the resource has performed with the task identifier. The task identifier identifies the lowest value between the number of tasks in the first category the resource has performed and the number of tasks in the at least one additional category that the resource has performed. The computer processor calculates a second sum of the lowest values of the number of tasks in the first category the resource has performed and the number of tasks in the at least one additional category that the resource has performed for all of the identified resources that have performed tasks in the first category and the at least one additional category.
The similarities between the second category and the at least one additional category are determined by, for each of the identified resources that have performed tasks in the second category and the at least one additional category, identifying the lowest value between the number of tasks in the second category the resource has performed and the number of tasks in the at least one additional category that the resource has performed with the task identifier. The computer processor calculate a third sum of the lowest values of the number of tasks in the second category the resource has performed and the number of tasks in the at least one additional category that the resource has performed for all of the identified resources that have performed tasks in the second category and the at least one additional category with the computer processor.
The computer processor calculates a first product of the first sum multiplied by the number of resources that have performed tasks in the first and second categories, a second product of the second sum multiplied by the number of resources that have performed tasks in the first and additional categories, a third product of the third sum multiplied by the number of resources that have performed tasks in the second and additional categories, and a fourth sum of the first sum, the second sum, and the third sum. The computer processor calculates a first quotient of the first product divided by the fourth sum, a second quotient of the second product divided by the fourth sum, and a third quotient of the third product divided by the fourth sum. The first quotient is the similarity between the first category and the second category, the second quotient is the similarity between the first category and the at least one additional category, and the third quotient is the similarity between the second category and the at least one additional category. The categories are grouped into clusters with a clustering module based on the first quotient, the second quotient, and the third quotient. Resources are associated with the clusters with the clustering module based on task performance history of the resources.
At least one embodiment of the invention provides system for service management, wherein the system includes a computer processor connected to a task identifier. The task identifier identifies resources that have performed tasks in at least two of a first category, a second category, and at least one additional category. The task identifier further identifies: a lowest number of tasks performed between the first and second categories for each of the identified resources that have performed tasks in the first and second categories, a lowest number of tasks performed between the first and additional categories for each of the identified resources that have performed tasks in the first and additional categories, and a lowest number of tasks performed between the second and additional categories for each of the identified resources that have performed tasks in the second and additional categories.
The computer processor calculates: a first sum by summing the lowest number of tasks performed between the first and second categories for all of the identified resources, a second sum by summing the lowest number of tasks performed between the first and additional categories for all of the identified resources, and a third sum by summing the lowest number of tasks performed between the second and additional categories for all of the identified resources. The computer processor also calculates a first product by multiplying the first sum by a number of resources that have performed tasks in the first and second categories, a second product by multiplying the second sum by a number of resources that have performed tasks in the first and additional categories, and a third product by multiplying the third sum by a number of resources that have performed tasks in the second and additional categories.
First, second and third quotients are calculated by the computer processor by dividing each of the first, second and third products by a sum of the first, second, and third sums. The system further includes a clustering module connected to the computer processor, wherein the clustering module groups the categories into a number of clusters based on the first, second and third quotients using an agglomerative clustering approach. The clustering module associates resources with the clusters based on task performance history of the resources.
Another embodiment of the invention provides a service management including a task identifier for identifying resources that have performed tasks in at least two of a first category, a second category, and at least one additional category. A computer processor is connected to the task identifier, wherein the computer processor determines a plurality of correlation sums where the correlation sum includes at least two categories, and wherein the correlation sums together are added together by the computer processor to produce a correlation value. The computer processor calculates a correlation product for each correlation sum based on the respective correlation sum and a number of tasks used to determine the respective correlation sum. A quotient for each correlation sum is calculated by the computer processor based on the respective correlation product and the correlation value. A clustering module connected to the computer processor groups the categories into clusters based on the quotients and associates resources with the clusters based on task performance history of the resources.
Yet another embodiment of the invention provides a system including a task identifier for identifying resources that have performed tasks in at least two of a first category, a second category, and at least one additional category. The task identifier further identifies, for each of the identified resources, a number of tasks in the first category that the resource has performed, a number of tasks in the second category that the resource has performed, and a number of tasks in the at least one additional category that the resource has performed. For each of the identified resources that have performed tasks in the first category and the second category, the task identifier identifies a lowest value between the number of tasks in the first category the resource has performed and the number of tasks in the second category that the resource has performed. For each of the identified resources that have performed tasks in the first category and the at least one additional category, the task identifier identifies a lowest value between the number of tasks in the first category the resource has performed and the number of tasks in the at least one additional category that the resource has performed. For each of the identified resources that have performed tasks in the second category and the at least one additional category, the task identifier identifies a lowest value between the number of tasks in the second category the resource has performed and the number of tasks in the at least one additional category that the resource has performed.
A computer processor connected to the task identifier calculates a first sum of the lowest values of the number of tasks in the first category the resource has performed and the number of tasks in the second category that the resource has performed for all of the identified resources that have performed tasks in the first category and the second category. A second sum of the lowest values of the number of tasks in the first category the resource has performed and the number of tasks in the at least one additional category that the resource has performed for all of the identified resources that have performed tasks in the first category and the at least one additional category is calculated by the computer processor. A third sum of the lowest values of the number of tasks in the second category the resource has performed and the number of tasks in the at least one additional category that the resource has performed for all of the identified resources that have performed tasks in the second category and the at least one additional category is also calculated by the computer processor.
The computer processor calculates a first product of the first sum multiplied by the number of resources that have performed tasks in the first and second categories, a second product of the second sum multiplied by the number of resources that have performed tasks in the first and additional categories, and a third product of the third sum multiplied by the number of resources that have performed tasks in the second and additional categories. A fourth sum of the first sum, the second sum, and the third sum is calculated by the computer processor. The computer processor calculates a first, second, and third quotient, wherein the first quotient is the first product divided by the fourth sum, and wherein the first quotient is the similarity between the first category and the second category. The second quotient is the second product divided by the fourth sum, wherein the second quotient is the similarity between the first category and the at least one additional category; and, the third quotient is the third product divided by the fourth sum, wherein the third quotient is the similarity between the second category and the at least one additional category.
A clustering module connected to the computer processor groups the categories into clusters based on the first quotient, the second quotient, and the third quotient. Resources are associated with the clusters with the clustering module based on task performance history of the resources.
The present invention is described with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements.
Exemplary, non-limiting, embodiments of the present invention are discussed in detail below. While specific configurations are discussed to provide a clear understanding, it should be understood that the disclosed configurations are provided for illustration purposes only. A person of ordinary skill in the art will recognize that other configurations may be used without departing from the spirit and scope of the invention.
At least one embodiment of the invention provides methods and systems for clustering based resource planning, work assignment, and cross-skill training planning in services management. Ticket categories that require similar or related skills to handle are clustered together, and subsequently, consultants that have similar skills will be grouped together to achieve the benefit of resource pooling. Since often times, the actual skill data is insufficient, does not exist, or is intentionally ignored (e.g., for validation purpose), the category is used to indicate the related skill. Clusters can also be used to determine which employees are good candidates for cross-skill training and used to improve ticket/work routing or assignment.
A task identifier identifies resources that have performed tasks (also referred to herein as “tickets”, “service requests”, or “work items”) in at least two of the first category, the second category, and the third category (also referred to herein as the “additional category” or the “at least one additional category”) 120. In other words, the task identifier identifies resources that have performed tasks in categories 1 and 2, categories 1 and 3, or categories 2 and 3. Although the example illustrated in
The similarities between the first category and the second category are determined 130. As illustrated in the embodiment depicted in
The task identifier identifies the lowest value between the number of tasks in the first category the resource has performed and the number of tasks in the second category that the resource has performed 136. In the example illustrated in
The computer processor calculates a first sum of the values identified in item 136 (i.e., the lowest values of the number of tasks in the first category the resource has performed and the number of tasks in the second category that the resource has performed for all of the identified resources that have performed tasks in the first category and the second category) 138 (e.g., 10 (for resource A)+10 (for resource B)+14 (for resource C)=34). In other words, the lowest values identified in item 136 are added together to calculate the first sum.
The similarities between the first category and the at least one additional category (also referred to herein as the “third category” or the “additional category”) are also determined 140. As illustrated in the embodiment depicted in
The task identifier (or computer processor) identifies the lowest value between the number of tasks in the first category the resource has performed and the number of tasks in the additional category that the resource has performed 144. In the example above, the lowest value that the resource A has performed between category 1 (i.e., 10) and the additional category (i.e., 36) is 10; and, the lowest value that the resource B has performed between category 1 (i.e., 42) and the additional category (i.e., 24) is 24. Resource C is not included in the calculations involving the additional category because resource C has not performed any tasks in the additional category. The computer processor also calculates a second sum of the lowest values between the number of tasks in the first category the resource has performed and the number of tasks in the additional category that the resource has performed for all of the identified resources that have performed tasks in the first and additional categories 146 (e.g., 10 (for resource A)+24 (for resource B)=34). In other words, the lowest values identified in item 144 are added together to calculate the second sum.
The similarities between the second category and the additional category are determined 150. As illustrated in the embodiment depicted in
The computer processor calculates a third sum of the lowest values of the number of tasks in the second category the resource has performed and the number of tasks in the additional category that the resource has performed for all of the identified resources that have performed tasks in the second and additional categories 154 (e.g., 20 (for resource A)+10 (for resource B)=30). In other words, the lowest values identified in item 152 are added together to calculate the third sum.
The computer processor also calculates a set of correlation products. Continuing with the above example, the correlation products would include a first product of the first correlation sum multiplied by the number of resources that have performed tasks in the first and second categories (e.g., 34×3=102), a second correlation product of the second correlation sum multiplied by the number of resources that have performed tasks in the first and additional categories (e.g., 34×2=68), and a third correlation product of the third correlation sum multiplied by the number of resources that have performed tasks in the second and additional categories (e.g., 30×2=60) 160.
Furthermore, the computer processor calculates a correlation value (also referred to herein as the “fourth sum”) of the first sum, the second sum, and the third sum (e.g., 34+34+30=98) 170. Based on this disclosure, it should be understood that the correlation value would add together all of the correlation sums to produce a correlation value.
In addition, the computer processor calculates a first quotient of the first product divided by the fourth sum (e.g., 102/98=1.04), a second quotient of the second product divided by the fourth sum (e.g., 68/98=0.69), and a third quotient of the third product divided by the fourth sum (e.g., 60/98=0.61) 180. The first quotient indicates the similarity between the first category and the second category. The second quotient indicates the similarity between the first category and the additional category; and, the third quotient indicates the similarity between the second category and the additional category. The higher the value of the quotient, the more similar the categories are in terms of the skills needed to handle them.
A clustering module groups the categories into clusters based on the degrees of similarity between the categories (i.e., the first quotient, the second quotient, and the third quotient) 190. The clustering module also associates resources with the clusters based on task performance history of the resources 192. The task performance history of the resources can include, for each of the identified resources, the number of tasks in the first category that the resource has performed, the number of tasks in the second category that the resource has performed, and the number of tasks in the additional category that the resource has performed. As used herein, the term “clustering module” includes a computer hardware component connected to the computer processor and/or task identifier that groups categories into clusters and/or associates resources with clusters.
The clustering results can be used to automate the task assignment process, as shown below.
In at least one embodiment of the invention, a cluster analyzer determines the level of compatibility (also referred to herein as “belongingness”) of a resource to a cluster based on the number of tasks the resource has performed in all categories within the cluster and the number of tasks the resource has performed in other categories of other clusters. The cluster analyzer can also determine a resource's level of experience to a category within a cluster based on the number of tasks the resource has performed in the category. A resource's level of experience to a cluster can also be determined based on the number of tasks the resource has performed in all categories within the cluster and/or the total number of tasks that belong to the categories within the cluster. As used herein, the term “cluster analyzer” includes a computer hardware component connected to the task identifier, computer processor, and/or clustering module.
In at least one embodiment, a resource analyzer generates a ranked list of resources that have the capability to perform a new task related to a category within the cluster, wherein the ranked list is based on experiences of the resources to categories within the cluster. In one embodiment, a cluster that contains the category that the new task belongs to is identified; and, resources in the cluster are ranked based on the belongingness, availability, and experience of the resources to the cluster. The resource on the top of the ranked list would be the best candidate to perform the new task; as such, the new task can be assigned to the resource on the top of the ranked list. As used herein, the term “resource analyzer” includes a computer hardware component connected to the task identifier, computer processor, clustering module, and/or cluster analyzer. As illustrated in
In addition, the resource analyzer can identify one or more categories in a cluster that a resource lacks skill and/or experience in (i.e., has little or no experience handling tickets in the category). In one embodiment, the resource analyzer identifies a category in a cluster that a resource belongs to at a certain belongingness level, in which he lacks experience, and recommends the category to the resource for cross-skill training.
In at least one embodiment, the clustering module applies a variation coefficient analysis to determine the optimal number of clusters.
It is assumed that each clustering arrangement consists of N clusters. In at least one embodiment, for each cluster i (i=1, . . . , N), the number of categories that it contains is denoted by M, i.e., C1i . . . CMi. The variation coefficient VCji is measured for each category Cji (j=1, . . . , M) in terms of the ticket volume of a predefined time frequency (such as weekly) 630. Specifically, for example, the weekly volumes of Cji are calculated over a predefined time window, and their mean and standard deviation are measured. VCji is calculated as the ratio between the standard deviation and the absolute value of mean. Variation coefficient is a normalized measure of dispersion of a probability distribution. In this example embodiment, the variation coefficient is used to characterize the smoothness of a weekly ticket load of a particular group or unit. In general, the smaller the variation coefficient, the smoother the load.
VCji (j=1, . . . , M) is summed up for cluster i and their average is calculated as
The gain of variation coefficient VCgi for cluster i is measured as:
660. A positive value of VCgi indicates that the overall load of cluster i has become smoother after all of its categories (C1i . . . CMi) are grouped together. The average of VCgi for all cluster (i=1, . . . , N) is denoted as VCg. In this example, VCg indicates the average gain of variation coefficient for a specific clustering arrangement.
For all clustering arrangements obtained earlier, their average gain of variation coefficient VCg is calculated and the value changes among these arrangements are observed 670. The optimal number of clusters is determined by identifying the clustering arrangement that yields the largest gain of variation coefficient 680. As an example,
The task identifier identifies the lowest number of tasks performed between the first and additional categories for each of the identified resources that have performed tasks in the first and additional categories 818. Thus, in the example above, the lowest number of tasks performed between the first and additional categories for resource A is 10, and the lowest number of tasks for resource B is 24. The computer processor calculates a second sum by summing the lowest number of tasks performed between the first and additional categories for all of the identified resources 820 (e.g., 10+24=34).
The task identifier identifies the lowest number of tasks performed between the second and additional categories for each of the identified resources that have performed tasks in the second and additional categories 822. In the example above, the lowest number of tasks performed between the second and additional categories for resource A is 20, and the lowest number of tasks for resource B is 10. The computer processor calculates a third sum by summing the lowest number of tasks performed between the second and additional categories for all of the identified resources 824 (e.g., 20+10=30).
The computer processor also calculates: a first product by multiplying the first sum by the number of resources that have performed tasks in the first and second categories 826 (e.g., 34×3=102), a second product by multiplying the second sum by the number of resources that have performed tasks in the first and additional categories 828 (e.g., 34×2=68), and a third product by multiplying the third sum by the number of resources that have performed tasks in the second and additional categories 830 (e.g., 30×2=60). Furthermore, the computer processor calculates first, second and third quotients by dividing each of the first, second and third products by a sum of the first, second, and third sums 832 (e.g., 102/(34+34+30)=1.04), (e.g., 68/(34+34+30)=0.69), (e.g., 60/(34+34+30)=0.61).
A clustering module groups the categories into a number of clusters based on the first, second and third quotients using an agglomerative clustering approach 840. The clustering module also associates resources with the clusters based on task performance history of the resources 850.
A task identifier identifies the minimum ticket volumes between the first and additional category for each resource 916. In the example above, the minimum ticket volumes between the first and additional categories is 10 for resource A and 24 for resource B. The computer processor calculates a second sum by summing the minimum ticket volumes between the first and additional categories 918 (e.g., 10+24=34).
The task identifier identifies the minimum ticket volumes between the second and additional category for each resource 920. In the above example, the minimum ticket volumes between the second and additional categories is 20 for resource A and 10 for resource B. The computer processor calculates a third sum by summing the minimum ticket volumes between the second and additional categories 922 (e.g., 20+10=30).
The computer processor also normalizing the first, second, and third sums 924 by calculating a total sum by summing the first, second, and third sums 926 (e.g., 34+34+30=98). Furthermore, the first sum is multiplied by the number of resources that have performed tasks in the first and second categories 928 (e.g., 34×3=102). Similarly, the second sum is multiplied by the number of resources that have performed tasks in the first and additional categories 930 (e.g., 34×2=68); and, the third sum is multiplied by the number of resources that have performed tasks in the second and additional categories 932 (e.g., 30×2=60). The products of the multiplying are divided by the total sum 934 (e.g., 102/98=1.04), (e.g., 68/98=0.69), (e.g., 60/98=0.61).
A clustering module groups the categories into clusters based on the normalizing of the first, second, and third sums 940. The clustering module also associates resources with the clusters based on task performance history of the resources 950.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute with the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
Referring now to
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the root terms “include” and/or “have”, when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The corresponding structures, materials, acts, and equivalents of all means plus function elements in the claims below are intended to include any structure, or material, for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.