Embodiments generally relate to computer software and systems, and more particularly to methods and systems for implementation of a process based on a user-defined sub-task sequence.
A business process may include a plurality of sub-tasks that are to be processed for implementing the process. For example, SAP® software provides a set of workflow templates for implementing the business process. Each of these templates depicts a variant of how the business process is to be implemented.
At present, when a customer wants to implement the business process, he/she has to accept a pre-defined sequence for processing the plurality of sub-tasks. The pre-defined sequence can be “sequential”, i.e., when the sub-tasks are to be processed in a sequence one after the other. In another example, the predefined sequence can be “parallel”, i.e., when all the sub-tasks of the process are to be processed at the same time. For each of these sequences, a corresponding workflow template is created to implement the process.
There are limitations in both the “sequential” and the “parallel” sequences. In the “sequential” sequence each sub-task is to be processed one by one so it may waste a lot of time in case the process involves a large number of sub-tasks. On the other hand, the “parallel” sequence doesn't make sense when one sub-task's output is another sub-task's input.
Further, the present day systems do not allow the customer to configure the process at run-time, i.e., these systems do not allow the customer to assign the sub-task to different testers for processing at run time.
Therefore, a method that provides a flexible way to configure sub-tasks sequence for implementing the process is desired. Also, a method is desired that allows the process configuration at run time.
Various embodiments of systems and methods for implementation of a process based on a user-defined sub-task sequence are described herein. In one aspect, a fore-task associated with the set of sub-tasks is received, the fore-task including a sub-task from the set of sub-tasks whose processing is a prerequisite for processing a child sub-task from the set of sub-tasks. The fore-task defines a sequence of the set of sub-tasks for processing the set of sub-tasks. In another aspect, the workflow template is triggered for implementing the process. The triggering of the workflow template is triggered based on the sequence of the set of sub-tasks.
In a further aspect, the triggering of the workflow template includes forwarding the sub-task uploaded in the return sub-task list for processing. A child sub-task is retrieved from the sequence that has as its fore-task the sub-task forwarded for processing. The child sub-tasks is retrieved when the sub-task forwarded for processing has been processed. The workflow template is triggered for executing the retrieved child sub-task.
These and other benefits and features of embodiments of the invention will be apparent upon consideration of the following detailed description of preferred embodiments thereof, presented in connection with the following drawings.
The claims set forth the embodiments of the invention with particularity. The invention is illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. The embodiments of the invention, together with its advantages, may be best understood from the following detailed description taken in conjunction with the accompanying drawings.
Embodiments of techniques for implementing a process including a set of sub-tasks are described herein. In the following description, numerous specific details are set forth to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention can be practiced without one or more of the specific details, or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention.
Reference throughout this specification to “one embodiment”, “this embodiment” and similar phrases, means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearances of these phrases in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
Initially at block 102, a fore-task associated with each sub-task in the set of sub-tasks is received. In one embodiment, the fore-task includes a sub-task from the set of sub-tasks whose processing is a prerequisite for the processing of a child sub-task from the set of sub-tasks. In one embodiment the fore-task defines the sequence of the set of sub-tasks for processing the set of sub-tasks.
Consider an example of a process having two sub-tasks A and B (set of sub-tasks). The fore-task received for sub-task B is sub-task A. In this case, sub-task B is the child sub-task and can be processed only after sub-task A has been processed. As shown, the sequence of the set of sub-tasks for processing the set of sub-tasks (A and B) (i.e., sub-task A has to be processed before sub-task B) is defined based on the fore-task.
In one embodiment, the fore-task is received from a plan owner. In one embodiment, a request is sent to the plan owner for setting the fore-task for each sub-task in the set of sub-tasks. In one embodiment, the plan owner receives the request via an E-Mail. In one embodiment, the fore-task received from the plan owner is stored in a database. In one embodiment, the fore-task is set manually by the plan owner for each sub-task in the set of sub-tasks. In one embodiment, the plan owner sets the fore-task via the user interface.
In one embodiment, the fore-task is set as initial for a sub-task which is initial in the sequence of the set of sub-tasks. The fore-task for the sub-task is set as initial when the sub-task is not a child sub-task, i.e., when the processing of the sub-task is not dependent on the processing of another sub-task from the set of sub-tasks. In the example mentioned above, the fore-task for the sub-task A would be set as initial since the processing of sub-task A is not dependent on the processing of any other sub-task.
In one embodiment, tester information may be received. In one embodiment, the tester information is received from the plan owner. In one embodiment, the tester information includes information of a tester who will process the sub-task from the set of sub-tasks. In one embodiment, the tester information includes whether the sub-tasks are to be processed by one or more than one tester.
In one embodiment, the sub-task is forwarded to the tester for processing based on the tester information. In one embodiment, the sub-task is processed manually by the tester. In one embodiment, the processed sub-task is received from the tester. In one embodiment, the processed sub-task is stored in the database.
Next at block 104, a workflow template is triggered for implementing the process. In one embodiment, the workflow template is implemented based on the sequence of the set of sub-tasks defined by the fore-task in block 102. In one embodiment, the workflow template includes a set of steps. In one embodiment, triggering the workflow template includes performing the set of steps in the workflow template for processing each sub-task in the set of sub-tasks. In one embodiment, the set of steps in the workflow template are performed recursively for processing each sub-task in the set of sub-tasks based on the sequence of the set of sub-tasks received in block 102. In one embodiment, when the set of sub-tasks are completely processed the process is implemented.
In one embodiment, the workflow template is designed at design time. In one embodiment, the workflow template is a software code. In one embodiment, the fore-task associated with the set of sub-tasks and the tester information is received at run-time, i.e., after the workflow template has been designed and stored, and the set of sub-tasks have been received by the plan owner.
Initially when the workflow template 200 is triggered, a determination is made whether the return sub-task list is set as initial (block 202). In one embodiment, the return sub-task is set as initial when a return sub-task list is empty. In one embodiment, the return sub-task list includes the sub-task from the set of tub-tasks that is to be processed. In one embodiment, the return sub-task list is initially empty (i.e., does not include a sub-task) and is set as initial.
In one embodiment, when the workflow template 200 is triggered for the first time there would be no sub-task available for processing (i.e., the return sub-task list would be set as initial) and the condition in block 202 would be true. In this case, a sub-task that has the fore-task set as initial is retrieved from the set of sub-tasks (block 206,
In case, the return sub-task list is not set as initial (i.e., the return sub-task list has a sub-task) the condition in block 202 is false and the sub-task uploaded in the return sub-task list is processed (block 204).
In one embodiment, the sub-task is processed by forwarding the sub-task to the tester based on the tester information. In one embodiment, the tester receives the sub-task to be processed via an E-Mail. In one embodiment, the tester processes the sub-task manually. In one embodiment, the tester processes the sub-task and submits the processed sub-task.
After the sub-task is processed (block 204) the child sub-task of the sub-task processed in block 204 is retrieved (block 206). In the example discussed above, if the sub-task processed in block 204 is sub-task A then sub-task B (child sub-task) would be retrieved in block 206, as the fore-task of sub-task B is sub-task A that has been processed. In one embodiment, a check is performed whether the sub-task has been processed in block 204 before retrieving the child sub-task. In one embodiment, the sub-task retrieved is uploaded to the return sub-task list in block 206. In one embodiment, a flag is raised after the sub-task has been processed, the flag indicative that the child sub-task of the sub-task is to be retrieved.
Next, the child sub-task is uploaded to the return sub-task list, which includes the sub-task to be processed (block 208).
Next after the retrieved sub-task (child sub-task or the sub-task that has fore-task set as initial) is uploaded to the return sub-task list (block 208) a determination is made whether all the sub-tasks in the set of sub-tasks have been processed (block 210). In one embodiment, the determination is made by checking whether the return sub-task list includes a sub-task. In one embodiment, the return sub-task list would not include a sub-task after all the sub-tasks in the set of sub-tasks has been processed. In one embodiment, the process (that includes the set of sub-tasks) is implemented when all the sub-tasks in the set of sub-tasks has been processed. As shown, when all the sub-tasks in the set of sub-tasks have been processed the process ends. In the above example, after the sub-task B is processed (which is the last sub-task to be processed in the set of sub-tasks) no sub-task would be retrieved at block 206 (as there is no child sub-task of sub-task B). Therefore, the return sub-task list would not include a sub-task. In one embodiment, the process is implemented after the process ends as all the sub-tasks in the set of sub-tasks have been processed.
In case, all the sub-tasks in the set of sub-tasks have not been processed (i.e., the condition in block 210 is false) the workflow template 200 is triggered again. In one embodiment, the workflow template 200 is triggered again for the sub-task retrieved (at block 206) and uploaded to the return sub-task list (at block 208). In one embodiment, triggering the workflow template 200 again includes repeating the steps in blocks 202-210 for the sub-task (child sub-task or sub-task that has fore-task set as initial) retrieved at block 206 and uploaded to the return sub-task list at block 208. In the above example, the workflow template would be triggered for the first time for sub-task A that has the fore-task set as initial and for the second time for sub-task B that is a child sub-task dependent on the processing of sub-task A.
As shown, the workflow template 200 is triggered recursively for processing the set of sub-tasks in the process. In one embodiment, the process is implemented by traversing the workflow template 200 for each sub-task in the set of sub-tasks based on the sequence of the set of sub-tasks defined at block 102 of
The database layer 302 includes four tables that are provided to store data related to the set of sub-tasks (sub-task A-F). The four tables include a TASLIST table 308, TASKDTL table 310, TASKRELA table 312, and TASKAGENT table 314.
TASKLIST table 308 is used for the storage of the set of sub-tasks (sub-task A-F), the workflow template 200 (
TASKDTL table 310 is defined for the tester to update sub-task information (for example, the processed sub-task) and is used to store sub-task's detail information.
TASKRELA table 312 is defined for the plan owner to store the sequence of the set of sub-tasks for processing the set of sub-tasks by setting the sub-tasks' fore-tasks.
TASKAGENT table 314 is defined for the plan owner to maintain the tester information.
A series of steps 1-9 are performed by the system 300 for implementing the process. As shown initially at step 1, the set of sub-tasks A-F, of the process, stored in the TASKLIST table 308 is retrieved by a Task Source Handler 316. The set of sub-tasks retrieved by the Task Source Handler 316 is then presented to a plan owner 318 (step 2).
In one embodiment, the set of sub-tasks are presented to the plan owner 318 on a user interface. In one embodiment, the plan owner 318 receives the set of sub-tasks via an E-Mail. Next at step 3, the plan owner 318 configures a fore-task associated with the set of sub-tasks. In one embodiment, the fore-task defines the sequence of the set of sub-tasks for processing the set of sub-tasks. In one embodiment, the plan owner configures tester information. In one embodiment, the plan owner configures the fore-task and the tester information at run time, i.e., after the system 300 has provided the set of sub-tasks to the plan owner 318. In one embodiment, the plan owner 318 configures the fore-task and the tester information manually.
The fore-task 406 for sub-task D is set as #1, i.e., the processing of sub-task A is a prerequisite for processing of sub-task D. Next, the fore-task 406 for sub-task E is set as #2, i.e., the processing of the sub-task B is a pre-requisite for processing the sub-task E. The fore-task 406 for sub-task F is set as #3, i.e., the processing of sub-task C is a pre-requisite for processing the sub-task F.
The tester 408 is set for each sub-task from the set of sub-tasks A-F by the plan owner 318. Sub-Task A is assigned to Tester A, sub-task B is assigned to Tester B, sub-task C is assigned to Tester C1 and C2, sub-task D is assigned to Tester D, sub-task E is assigned to Tester E, and sub-task F is assigned to Tester F1 and Tester F2.
The tester mode 410 defines whether the sub-task would be performed by one or more testers. As shown, the tester mode for sub-task A, sub-task B, sub-task D, and sub-task E is set as initial as each sub-task is assigned to a single tester, Tester A, Tester B, Tester D, and Tester E, respectively for processing these sub-tasks. The tester mode for sub-task C is set as “one of them”, i.e., the sub-task C can be performed by either one of the testers C1 or C2. In one embodiment, the sub-task C is received by both tester C1 and C2. In one embodiment, the sub-task C is received by the tester C1 and C2 via E-Mail. In one embodiment, only one of the testers C1 and C2 who open the sub-task first is able to process the sub-task C. The tester mode for sub-task F is set as “all of them”, i.e., the sub-task F is to be processed by both the testers F1 and F2.
Next at step 4 and step 5 (
In one embodiment, the system 300 includes an Extensible User Defined (EUD) model 320. In one embodiment, the workflow template 200 (
As shown in step 5 (
Next at step 6 (
Next a check is performed whether all the sub-tasks in the set of sub-tasks have been processed (block 210,
When the workflow template 200 is triggered again, a check is performed whether the return sub-task list is set as initial (block 202,
As shown in
Next after the tester has processed the sub-task (step 7) the tester submits the processed sub-task that is stored in the TASKDTL table 310 through a result handler 322 (step 8-9). The tester A and B after completing the processing of sub-task A and B, respectively submit the processed sub-task A and sub-task B, respectively (step 8). The processed sub-task A and the processed sub-task B are stored in the TASKDTL register 310 (step 9). As shown, the tester A submits the processed sub-task A (by updating the result column 602 in the table 600 with result A (processed sub-task A)) that is stored in the TASKDTL register 310.
In one embodiment, when the tester submits the processed sub-task (step 8) a flag is raised to informs the EUD model 320 that the sub-task has been processed. In one embodiment, the flag is indicative that the workflow template 200 is to be triggered again for the child sub-task whose processing depends on the processing of the processed sub-task. In one embodiment, a check is performed whether the sub-task has been processed before triggering the workflow template 200 again for the child sub-task.
Consider an example when tester A submits the result (processed sub-task A) before tester B submits the result (processed sub-task B). The child sub-tasks for sub-task A are sub-task C and sub-task D whose processing is dependent on the processing of sub-task A. However as shown in
Next a check is performed whether all the sub-tasks in the set of sub-tasks have been processed (block 210,
When the workflow template 200 is triggered again, a check is performed whether the return sub-task list is set as initial (block 202,
Next after the tester B submits the processed sub-task B (block 204,
Next a check is performed whether all the sub-tasks in the set of sub-tasks have been processed (block 210,
When the workflow template 200 is triggered again, a check is performed whether the return sub-task list is set as initial (block 202,
The sub-task E is forwarded from the return sub-task list to the Tester E who processes the sub-task E (step 7). The tester E submits the processed sub-task E (step 8) which is stored in the TASKDTL register 310.
After the processed sub-task C is submitted the child sub-task F whose fore-task is sub-task C is retrieved from the TASKLIST 308 (block 206,
Next a check is performed whether all the sub-tasks in the set of sub-tasks have been processed (block 210,
When the workflow template 200 is triggered again, a check is performed whether the return sub-task list is set as initial (block 202,
Next a sub-task whose fore-task is same as the processed sub-task F is to be retrieved (block 206,
Finally a check is performed whether all the sub-tasks in the set of sub-tasks have been processed (block 210,
Some embodiments of the invention may include the above-described methods being written as one or more software components. These components, and the functionality associated with each, may be used by client, server, distributed, or peer computer systems. These components may be written in a computer language corresponding to one or more programming languages such as, functional, declarative, procedural, object-oriented, lower level languages and the like. They may be linked to other components via various application programming interfaces and then compiled into one complete application for a server or a client. Alternatively, the components maybe implemented in server and client applications. Further, these components may be linked together via various distributed programming protocols. Some example embodiments of the invention may include remote procedure calls being used to implement one or more of these components across a distributed programming environment. For example, a logic level may reside on a first computer system that is remotely located from a second computer system containing an interface level (e.g., a graphical user interface). These first and second computer systems can be configured in a server-client, peer-to-peer, or some other configuration. The clients can vary in complexity from mobile and handheld devices, to thin clients and on to thick clients or even other servers.
The above-illustrated software components are tangibly stored on a computer readable storage medium as instructions. The term “computer readable storage medium” should be taken to include a single medium or multiple media that stores one or more sets of instructions. The term “computer readable storage medium” should be taken to include any physical article that is capable of undergoing a set of physical changes to physically store, encode, or otherwise carry a set of instructions for execution by a computer system which causes the computer system to perform any of the methods or process steps described, represented, or illustrated herein. Examples of computer readable storage media include, but are not limited to: magnetic media, such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs, DVDs and holographic devices; magneto-optical media; and hardware devices that are specially configured to store and execute, such as application-specific integrated circuits (“ASICs”), programmable logic devices (“PLDs”) and ROM and RAM devices. Examples of computer readable instructions include machine code, such as produced by a compiler, and files containing higher-level code that are executed by a computer using an interpreter. For example, an embodiment of the invention may be implemented using Java, C++, or other object-oriented programming language and development tools. Another embodiment of the invention may be implemented in hard-wired circuitry in place of, or in combination with machine readable software instructions.
A data source is an information resource. Data sources include sources of data that enable data storage and retrieval. Data sources may include databases, such as, relational, transactional, hierarchical, multi-dimensional (e.g., OLAP), object oriented databases, and the like. Further data sources include tabular data (e.g., spreadsheets, delimited text files), data tagged with a markup language (e.g., XML data), transactional data, unstructured data (e.g., text files, screen scrapings), hierarchical data (e.g., data in a file system, XML data), files, a plurality of reports, and any other data source accessible through an established protocol, such as, Open DataBase Connectivity (ODBC), produced by an underlying software system (e.g., ERP system), and the like. Data sources may also include a data source where the data is not tangibly stored or otherwise ephemeral such as data streams, broadcast data, and the like. These data sources can include associated data foundations, semantic layers, management systems, security systems and so on.
In the above description, numerous specific details are set forth to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however that the invention can be practiced without one or more of the specific details or with other methods, components, techniques, etc. In other instances, well-known operations or structures are not shown or described in details to avoid obscuring aspects of the invention.
Although the processes illustrated and described herein include series of steps, it will be appreciated that the different embodiments of the present invention are not limited by the illustrated ordering of steps, as some steps may occur in different orders, some concurrently with other steps apart from that shown and described herein. In addition, not all illustrated steps may be required to implement a methodology in accordance with the present invention. Moreover, it will be appreciated that the processes may be implemented in association with the apparatus and systems illustrated and described herein as well as in association with other systems not illustrated.
The above descriptions and illustrations of embodiments of the invention, including what is described in the Abstract, is not intended to be exhaustive or to limit the invention to the precise forms disclosed. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. These modifications can be made to the invention in light of the above detailed description. Rather, the scope of the invention is to be determined by the following claims, which are to be interpreted in accordance with established doctrines of claim construction.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/CN10/79524 | 12/7/2010 | WO | 00 | 12/27/2010 |