Abstract:
Various arrangements for manipulating multiple elements of a Gantt chart are presented. The Gantt chart may be generated comprising a plurality of elements distributed across a plurality of groups. A selection of a subset of elements from the plurality of elements may be received, wherein the subset of elements of the Gantt chart comprises elements from at least a first group and a second group of the plurality of groups of the Gantt chart. An application programming interface may be executed to retrieve an element identifier for each element of the subset of elements of the Gantt chart, wherein each element identifier corresponds to only one element of the Gantt chart.

Description:
CROSS REFERENCES 
       [0001]    This application claims priority to Pat. Appl. No. 61/493,757, filed Jun. 6, 2011 in the United States, Attorney Dkt. No.: 88325-807538 (109901US), entitled “Retrieving Selections in Gantt Charts.” This provisional application is incorporated in its entirety for all purposes. This application is related to patent application Ser. No. 13/193,924, filed Jul. 29, 2011 in the United States, Attorney Dkt. No. 88325-806025 entitled “Presentation of Dependencies in Gantt Charts.” This application is also incorporated in its entirety for all purposes. 
     
    
     BACKGROUND 
       [0002]    Gantt charts may be used to illustrate schedules and resource utilization. For example, pertaining to a schedule, a Gantt chart can illustrate the start and finish dates of various tasks of a project. A resource utilization Gantt chart can present time buckets that illustrate the utilization of a resource for a period of time. A user interacting with a Gantt chart may desire to select an element (e.g., a time bucket or task) to view and/or modify the element&#39;s characteristics. If the end-user desires to view and/or modify multiple elements, the end-user may need to interact with each element individually. Such interaction with individual elements of a Gantt chart may be time consuming. Similarly, application developers who create Gantt chart-related software may not have the framework available that allows multiple elements of a Gantt chart to be interacted with concurrently. 
       SUMMARY 
       [0003]    Various systems, methods, and computer program products for manipulating multiple elements of a Gantt chart are presented. A method for manipulating multiple elements of a Gantt chart may be presented. The method may include generating the Gantt chart comprising a plurality of elements distributed across a plurality of groups. The method may include receiving a selection of a subset of elements from the plurality of elements. The subset of elements of the Gantt chart may comprise elements from at least a first group and a second group of the plurality of groups of the Gantt chart. The method may include executing a first application programming interface to retrieve an element identifier for each element of the subset of elements of the Gantt chart, wherein each element identifier corresponds to only one element of the Gantt chart. 
         [0004]    Embodiments may include one or more of the following: The method may include receiving a modification to be applied to each element of the subset of elements. The method may include executing a second application programming interface using the element identifiers of the subset of elements to apply the modification to each element of the subset of elements. The plurality of elements may be a plurality of tasks. The modification may comprise altering a date for each of the subset of elements. The method may include executing a second application programming interface using the element identifiers of the subset of elements to retrieve information about the subset of elements. Each group of the plurality of groups of the Gantt chart may be a row of the Gantt chart. The first group may comprise at least one element of the plurality of elements that is not selected. The plurality of elements may be a plurality of time buckets. 
         [0005]    In some embodiments, a computer program product residing on a non-transitory processor-readable medium and comprising processor-readable instructions is presented. The processor-readable instructions may comprise instructions configured to cause a Gantt chart comprising a plurality of elements distributed across a plurality of groups to be generated. The processor-readable instructions may comprise instructions configured to cause the processor to receive a selection of a subset of elements from the plurality of elements. The subset of elements of the Gantt chart may comprise elements from at least a first group and a second group of the plurality of groups of the Gantt chart. The processor-readable instructions may comprise instructions configured to cause the processor to execute a first application programming interface to retrieve an element identifier for each element of the subset of elements of the Gantt chart, wherein each element identifier corresponds to only one element of the Gantt chart. 
         [0006]    In some embodiments, a system for manipulating multiple elements of a Gantt chart is presented. The system may include a processor. The system may also include a memory communicatively coupled with and readable by the processor and having stored therein a series of processor-readable instructions. The instructions, when executed by the processor, cause the processor to cause the Gantt chart comprising a plurality of elements distributed across a plurality of groups to be generated. The instructions, when executed by the processor, cause the processor to receive a selection of a subset of elements from the plurality of elements. The subset of elements of the Gantt chart may comprise elements from at least a first group and a second group of the plurality of groups of the Gantt chart. The instructions, when executed by the processor, cause the processor to execute a first application programming interface to retrieve an element identifier for each element of the subset of elements of the Gantt chart, wherein each element identifier corresponds to only one element of the Gantt chart. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0007]    A further understanding of the nature and advantages of various embodiments may be realized by reference to the following figures. In the appended figures, similar components or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label. 
           [0008]      FIG. 1  illustrates an embodiment of a system configured to permit multiple Gantt chart elements to be interrogated concurrently. 
           [0009]      FIG. 2  illustrates an embodiment of an interface displaying a scheduling Gantt chart having no tasks selected. 
           [0010]      FIG. 3  illustrates an embodiment of an interface displaying a scheduling Gantt chart having multiple tasks selected. 
           [0011]      FIG. 4  illustrates an embodiment of an interface displaying a resource utilization Gantt chart having no time buckets selected. 
           [0012]      FIG. 5  illustrates an embodiment of an interface displaying a resource utilization Gantt chart having multiple time buckets selected. 
           [0013]      FIG. 6  illustrates an embodiment of method for retrieving identifiers for multiple elements of a Gantt chart. 
           [0014]      FIG. 7  illustrates an embodiment of method for retrieving an element of a Gantt chart using an identifier. 
           [0015]      FIG. 8  illustrates an embodiment of method for selecting multiple elements of a Gantt chart using identifiers. 
           [0016]      FIG. 9  illustrates an embodiment of method for modifying multiple elements of a Gantt chart concurrently. 
           [0017]      FIG. 10  illustrates an embodiment of a computer system. 
       
    
    
     DETAILED DESCRIPTION 
       [0018]    When viewing and/or modifying elements in a Gantt chart, typically only a single element (e.g., a single task or a single time bucket) or entire group (e.g., a row in a scheduling Gantt chart) can be selected and interrogated at one time. Referring to a scheduling Gantt chart, each row may contain elements, referred to as tasks, that indicate an allocation of a resource for a length of time. For example, each row in a scheduling Gantt chart may represent a schedule for an employee of a company. Various tasks assigned to that employee may occupy portions of the employee&#39;s row. A resource utilization Gantt chart may include time buckets that summarize the utilization of a particular resource for a period of time. Each time bucket may represent a summary of utilization data for a period of time, such as a week. For example, in a resource utilization Gantt chart, each row may correspond to a particular employee of a company, with each column corresponding to a particular day. A time bucket may exist for each employee for each day. Each time bucket may present the utilization of the employee for the given day. 
         [0019]    Typically, multiple elements of a scheduling or resource allocation Gantt chart may not be interrogated concurrently. Only interrogation (e.g., selection and modification) of each element individually, rather than interrogation of a selected group as a whole, is possible. Such interrogation of each element separately may be more time consuming and less efficient than interacting with the desired group of elements as a whole. For example, a developer may desire for end-users to be able to modify a same characteristic of multiple elements displayed on a Gantt chart concurrently; however, without application programming interfaces available to allow for interrogation of multiple elements of the Gantt chart at the same time, developers may not be able to implement features that require interaction with multiple elements concurrently. Concurrent interaction with multiple elements may be defined as invoking an API that is configured to accept multiple elements as an input to the API or that is configured to return data related to multiple elements of a Gantt chart as output from the API. 
         [0020]    Various embodiments described herein allow for multiple elements of a Gantt chart to be interrogated concurrently. The selection of multiple elements may allow for information about the selected elements to be viewed together. The selection of multiple elements may also allow for one or more characteristics of each of the selected elements to be modified similarly. In order to allow multiple elements of a Gantt chart to be selected concurrently, each element in the Gantt chart may need to be individually identifiable. As such, identifiers that correspond to particular elements of the Gantt chart may be used. Each element&#39;s identifier may be unique from identifiers corresponding to other elements of the same Gantt chart. As such, an identifier may be used to identify a particular element in a Gantt chart. Such an identifier may be referred to as a row-key. 
         [0021]    Based on a selection of elements of a Gantt chart, one or more application programming interfaces (APIs) may be used to allow an end-user to manipulate multiple elements. Such API&#39;s may be made available to software developers through a development framework used to develop enterprise-level software products, such as the Oracle Application Development Framework (ADF). A first API may allow for the retrieval of multiple row-keys associated with the selected elements of a Gantt chart. A second API may allow for characteristics of an element to be retrieved using the row-key. A third API may allow for the row-key of the most recently selected element to be retrieved. A fourth API may allow multiple elements to be selected based on a set of provided row-keys. 
         [0022]      FIG. 1  illustrates an embodiment of a system  100  configured to permit multiple Gantt chart elements to be interrogated concurrently. System  100  includes: ERP computer system  110 , end-user computer systems  120 , developer computer system  130 , networks  140 , and databases  150 . ERP computer system  110  may include one or more computer servers that execute software capable of viewing, creating, and/or modifying Gantt charts. ERP computer system  110  may be used to execute one or more enterprise-level applications, which may be accessed by end-users via one or more end-user computer systems  120 .  FIG. 1  illustrates ERP computer system  110  executing Gantt chart software  112 , however it should be understood that additional enterprise software applications may also be executed by ERP computer system  110 . Further, while  FIG. 1  illustrates ERP computer system  110  executing Gantt chart software  112 , it should be understood that in some embodiments Gantt chart software  112  may be fully or partially executed locally by end-user computer systems  120 . Gantt chart software  112  may be created or modified by a software developer. Multi-element API&#39;s described herein may be used in conjunction with Gantt chart software  112  to permit multiple elements to be interrogated concurrently (that is, interrogated via a single command from an end-user and not require a command to be reiterated by the end-user for each element). 
         [0023]    ERP computer system  110  may be in communication with one or more local and/or remote databases. In the illustrated embodiment of system  100 , ERP computer system  110  is in communication with remote databases  150 . Information stored in databases  150  may be related to the operations of the entity (e.g., the company) on whose behalf ERP computer system  110  is operated. Information from databases  150  may be used to populate some or all of the elements of Gantt charts displayed using Gantt chart software  112 . 
         [0024]    One or more end-user computer systems  120  may be in communication with ERP computer system  110 . From each end-user computer system of end-user computer systems  120 , an end-user may be able to interact with Gantt chart software  112  executed by ERP computer system  110 . In some embodiments, Gantt chart software  112  may be fully or partially executed locally by end-user computer systems  120 . In such embodiments, end-user computer systems  120  may communicate with ERP computer system  110  to access databases  150 . The illustrated embodiment of system  100  contains three end-user computer systems ( 120 - 1 ,  120 - 2 , and  120 -N). More or fewer end-user computer systems  120  may be in communication with ERP computer system  110 . 
         [0025]    Also in communication with ERP computer system  110  may be developer computer system  130 . Developer computer system  130  may be operated by a developer and/or system administrator. The developer (who may be a user of ERP computer system  110 ) may write code that provides certain functionality for end-users. For example, a developer, using developer computer system  130 , may create, configure, and/or modify Gantt chart software  112 . A developer can create, configure, or modify Gantt chart software  112  that uses various multi-element API&#39;s  114  to interrogate elements of the Gantt chart. In some embodiments, rather than developer computer system  130  being in communication with ERP computer system  110 , software modified or created by the developer may be loaded onto ERP computer system  110  and/or end-user computer systems  120 . 
         [0026]    One or more multi-element API&#39;s  114  may be part of, or be used by, Gantt chart software  112 . Multi-element API&#39;s  114  may permit Gantt chart software  112  to interrogate multiple elements at the same time. For example, an element displayed on a Gantt chart may be linked with a data entry in databases  150 . This data entry (which may be a row) may have one or more fields, such as: a task identifier, a name, a start date, an end date, and a resource. When a change is made to the element of the Gantt chart, the data entries in databases  150  may be updated. Multi-element API&#39;s  114  may be used to interrogate multiple elements of the Gantt chart, and allow viewing and/or modification of the corresponding data entries within databases  150 . Multi-element API&#39;s  114  may use an identifier that is unique to a particular element of the Gantt chart from other elements of the Gantt chart. As such, by using the identifier, which may be referred to as a row-key, a particular element of the Gantt chart can be identified. Similarly, if a particular element of the Gantt chart is selected, a particular row-key that corresponds to that element can be retrieved. 
         [0027]    Developer computer system  130  may communicate with ERP computer system  110  via network  140 - 1 . Network  140 - 1  may represent one or more public and/or private networks. For example, a public network may be the Internet. An example of a private network is a corporate intranet. Similarly, end-user computer systems  120  communicate with ERP computer system  110  via network  140 - 2 . Network  140 - 2  may represent the same network or a different network from network  140 - 1 . ERP computer system  110  may communicate with one or more databases that are local and/or remote. In the illustrated embodiment of system  100 , databases  150  are remote from ERP computer system  110  and communicate with ERP computer system  110  via network  140 - 3 . Network  140 - 3  may represent the same network or a different network from network  140 - 1  and network  140 - 2 . 
         [0028]    The illustrated embodiment of system  100  illustrates end-user computer systems  120  and developer computer system  130  as distinct from each other. It should be understood that end-user computer systems  120  and the developer computer system  130  may be similar. The difference between end-user computer systems  120  and developer computer system  130  may be that end-users (that use end-user computer systems  120 ) use pre-developed software while a developer (that uses developer computer system  130 ) creates and/or modifies the functionality of software related to Gantt charts. As such, whether a user of ERP computer system  110  is considered a developer or an end-user (and whether the user&#39;s computer is designated an end-user computer system or a developer computer system) may be based on the computer system&#39;s operator. 
         [0029]      FIG. 2  illustrates an embodiment of an interface  200  displaying a scheduling Gantt chart without any elements selected. Referring back to  FIG. 1 , interface  200  may be displayed via one of end-user computer systems  120 . Some or all of the processing to create the Gantt chart may be performed by the end-user computer system. In some embodiments, some or all of the processing may be performed by the ERP computer system  110 . Gantt chart software  112  may be executed by an end-user computer system of end-user computer systems  120 , ERP computer system  110 , or partially by both computer systems. Data for elements appearing in the Gantt chart created by Gantt chart software  112  may be retrieved from databases  150 . In some embodiments, interface  200  may be created by a system other than system  100  of  FIG. 1 . 
         [0030]    Interface  200  displays a scheduling Gantt chart having eight elements. In each row of the Gantt chart of interface  200 , elements, which are tasks, are present. Each row of the Gantt chart corresponds to a particular employee. As such, each employee may be responsible for tasks occurring in the employee&#39;s row in the Gantt chart. Element  210  is an example of an element appearing in the Gantt chart of interface  200 . Element  210  is assigned to employee Jimmy James. Element  220  is another example of an element. The shading of element  220  may represent the portion of the task that is complete. For example, element  220  is approximately 80% shaded. This may represent that the task is approximately 80% complete. The data used to create each of these elements on the Gantt chart, such as the start time and date, end time and date, the employee to which the tasks are assigned and the percentage complete, may be retrieved from databases  150 . 
         [0031]    Each element within the Gantt chart of interface  200  may be linked with one or more database entries. By a user selecting an element, such as element  210 , the user may be able to view and/or modify various properties of the element and its associated database entry. For example, by a user selecting element  210 , such as by clicking on it, the end-user may be presented with additional properties of element  210  and/or may be presented with the opportunity to modify element  210 . Characteristics of element  210  that may be modified include characteristics such as the start time and/or date of the element, the end time and/or date of the element (collectively referred to as the dates of the element), and the employee to which element  210  is assigned. Referring to element  220 , a characteristic which may be changed could be the percentage complete. 
         [0032]    Elements  230  represent two elements present in the same row. Previously, it may not have been possible to select only one of these elements along with one or more additional elements from another row concurrently. As an example of a reason for which one element of elements  230  and an element from another row, such as element  210 , may be desired to be selected concurrently, an end-user may desire to reassign such two elements to another employee. Therefore, referring to interface  200 , an element formerly assigned to Lingle Adam and an element formerly assigned to Jimmy James could be concurrently selected and have their characteristics edited such that both these tasks are assigned to a new employee. The API&#39;s described herein may allow an end-user performing the reassignment to only need to specify the new employee once for both tasks, rather than twice (once for each task). 
         [0033]      FIG. 3  illustrates an embodiment of an interface  300  displaying a scheduling Gantt chart having three elements selected to be retrieved. Interface  300  may display the same Gantt chart as interface  200  of  FIG. 2 , with three elements selected. 
         [0034]    In interface  300 , three elements are selected, as indicated by the bold outlining of each selected element in selected group  310 . To create such a selection, an end-user may click on each element in selected group  310 . In order for each element of selected group  310  to remain selected, the user may hold down a key, such as control, on the end-user computer system being operated by the end-user while making the selection. It should be understood by those with skill in the art that other ways of an end-user providing input to an end-user computer system to specify which elements of the Gantt chart are to be selected are possible. 
         [0035]    Each element within the Gantt chart of interface  300  may be assigned an identifier different from identifiers assigned to other elements of the same Gantt chart. As such, based on an identifier, a particular element can be identified. Similarly, when a particular element is selected, a corresponding identifier can be identified. This identifier may, in some embodiments, be referred to as a row-key. 
         [0036]    Various application programming interfaces (APIs) may be used in conjunction with Gantt chart software to allow for the interrogation of multiple elements of a Gantt chart concurrently. Such API&#39;s may be available via a framework used for creating software. One API may be referred to as “getSelectedTaskRow-keys( )” This API may return a set of identifiers of the selected tasks in a scheduling Gantt chart. As such, executing this API when the elements of selected group  310  are selected may result in a set of the identifiers (e.g., row-keys) corresponding to the selected elements being returned. 
         [0037]    Another API may be referred to as “getTaskData(row-key).” Based on a row-key, or other identifier, of the selected task, the corresponding task can be retrieved. In some embodiments, a resource associated with the selected task can be retrieved by calling ((JUCtrlHierNodeBinding)selectedObj).getParent( ) The resource, in the illustrated embodiment of interface  300  may be the employee. In some embodiments, the resource is an employee performing the task. The resource may also be a computer system that is performing the task. 
         [0038]    Another API may be referred to as “getTaskRow-key( )” This API may return the identifier (or row-key) of the most recently selected task. For example, referring to  FIG. 3 , if an end-user selects element  330 , then element  320 , and then element  330 , getTaskRow-key( ) would return the row-key (or other identifier) of element  330 . 
         [0039]    Another API may be referred to as setSelectedTaskRow-keys(Row-keySet). This API may allow an application to provide a set of identifiers such that the corresponding tasks in the scheduling Gantt chart are selected. 
         [0040]    The detailed API&#39;s represent exemplary API&#39;s that may be implemented in ORACLE&#39;s ADF (Application Development Framework). It should be understood that similar API&#39;s may be implemented in other development frameworks that could allow developers to interrogate multiple elements of a Gantt chart concurrently. 
         [0041]    In the illustrated embodiment of interface  300 , three elements appearing in different rows are selected in selected group  310 . Remaining elements within these rows are not selected. Element  320  and element  330 , despite being in rows containing selected elements, are not selected. The selected elements can be interrogated, without affecting the unselected elements present in the same rows as the selected elements of selected group  310 , and/or elements present in other rows. For example, the API&#39;s may permit a particular characteristic of each element of selected group  310  to be modified concurrently by the end-user. If the end-user modifies the start time and/or date for selected group  310 , the start time and/or date for each element may be updated to the new start time and/or date provided by the end-user. Similarly, an end-user may modify the end time and/or date for elements of selected group  310 . As another example, the API&#39;s may permit an end-user to reassign each element of selected group  310  to a particular employee. The end-user may also be permitted to view characteristics of each element of selected group  310  concurrently. In some embodiments, when the end-user indicates to display characteristics of elements within selected group  310 , only characteristics that are in common to all elements within the group may be presented to the end-user. 
         [0042]    Selections of multiple elements may also be applied to a resource utilization Gantt chart. Embodiments described herein detail API&#39;s that allow for multiple elements, such as time buckets, in different rows to be selected and retrieved without an end-user having to provide input to retrieve each time bucket individually.  FIG. 4  illustrates an embodiment of an interface  400  displaying a resource utilization Gantt chart having no elements selected. Referring to  FIG. 1 , interface  400  may be displayed via one of end-user computer systems  120 . Some or all of the processing to create the Gantt chart may be performed by one of end-user computer systems  120 . In some embodiments, some or all of the processing may be performed by the ERP computer system  110 . Gantt chart software  112  may be executed by one of end-user computer systems  120 , ERP computer system  110 , or partially by both computer systems. Data for elements appearing in the Gantt chart created by Gantt chart software  112  may be retrieved from databases  150 . In some embodiments, interface  400  may be created by a system other than system  100  of  FIG. 1 . 
         [0043]    In the Gantt chart of interface  400 , no elements are selected. Two rows of the Gantt chart are illustrated. Each row is directed to a particular resource, which, in this embodiment, are employees. Each column within the resource utilization Gantt chart corresponds to a particular day. An element (referred to as a time bucket in a resource utilization Gantt chart) corresponding to a day and an employee reflects the utilization of the employee on that day. Typically, either a single element or an entire row of a resource utilization Gantt chart may be selected at one time. Embodiments described herein allow for multiple time buckets within the same row or in different rows to be selected and interrogated concurrently. 
         [0044]      FIG. 5  illustrates an embodiment of an interface  500  displaying a resource utilization Gantt chart having multiple time buckets selected. The Gantt chart of  FIG. 5  may be the same Gantt chart of interface  400  of  FIG. 4  with selections made by an end-user. In this embodiment, three elements are selected: element  510 , element  520 , and element  530 . Collectively, these three elements are referred to as selected group  540 . The elements besides elements  510 ,  520 , and  530  (including those within the same rows and/or columns) can remain unselected. 
         [0045]    In interface  500 , three elements are selected to be retrieved, as indicated by the bold outlining of each selected element in selected group  540 . To perform such a selection, an end-user may click on each element in selected group  540 . In order for each element of selected group  540  to remain selected while the end-user is inputting the selections, the end-user may hold down a key, such as control, on the end-user computer system being operated by the end-user while inputting the selection. It should be understood by those with skill in the art that other ways of an end-user providing input to an end-user computer system to specify which elements of the Gantt chart are to be selected are also possible. 
         [0046]    Each element within the resource allocation Gantt chart of interface  500  may be assigned an identifier different from identifiers assigned to other elements of the same Gantt chart. As such, based on an identifier, a particular element can be identified. Similarly, when a particular element is selected, a corresponding identifier can be identified. This identifier may, in some embodiments, be referred to as a row-key. 
         [0047]    Various application programming interfaces (APIs), similar to those discussed in relation to scheduling Gantt charts, may be used in conjunction with Gantt chart software to allow for the interrogation of multiple elements of a resource allocation Gantt chart concurrently. One API may be referred to as “getSelectedTimeBucketRow-keys( )” This API may return an identifier set (e.g., a set of row-keys) of the selected time buckets in a resource utilization Gantt chart. As such, executing this API when the elements of selected group  540  are selected may result in a set of the identifiers corresponding to the selected time buckets being returned. 
         [0048]    Another API may be referred to as “getTimeBucketData(row-key).” Based on a row-key (or other identifier) of the selected task, characteristics of the corresponding time bucket can be retrieved. In some embodiments, a resource associated with the selected time bucket can be retrieved efficiently by calling ((JUCtrlHierNodeBinding)selectedObj).getParent( ) The resource, in the illustrated embodiment of interface  500  may be the employee. In some embodiments, the resource is an employee. In some embodiments, the resource may be a computer system. 
         [0049]    Another API may be referred to as “getTimeBucketRow-key( )” This API may return the identifier (or row-key) of the most recently selected task to the application executing the API. For example, referring to  FIG. 3 , if an end-user selects element  510 , then element  520 , and then element  530 , getTimeBucketRow-key( ) would return the identifier (or row-key) of element  530 . 
         [0050]    Another API may be referred to as “setSelectedTimeBucketRow-keys(Row-keySet).” This API allows an application to set a Row-keySet of tasks in a resource utilization Gantt chart to select them. 
         [0051]    System  100  of  FIG. 1  may be used to interrogate various elements presented to an end-user via the interfaces of  FIGS. 2-5 . System  100  of  FIG. 1  may be used to perform various methods for interacting with multiple elements of a Gantt chart concurrently.  FIG. 6  illustrates an embodiment of method  600  for retrieving identifiers for multiple elements of a Gantt chart concurrently. Method  600  may be performed using system  100  of  FIG. 1 . Each step of method  600  may be performed by a computer system. Referring to system  100  of  FIG. 1 , each step of method  600  may be performed by an end-user computer system of end-user computer systems  120 , ERP computer system  110 , or by some combination thereof. Method  600  may also be performed using some other system capable of interrogating multiple elements of a Gantt chart concurrently. Method  600  may be performed on a scheduling Gantt chart or a resource utilization Gantt. 
         [0052]    At step  610 , a Gantt chart may be displayed to an end-user via an electronic display. The Gantt chart may be displayed using an end-user computer system. The display of the Gantt chart may appear similar to the scheduling Gantt chart of interface  200  of  FIG. 2  or may appear similar to the resource allocation Gantt chart of interface  400  of  FIG. 4 . The Gantt chart displayed at step  610  may also be some other form of Gantt chart. Display of the Gantt chart may allow an end-user to interact with various elements of the Gantt chart. 
         [0053]    At step  620 , input may be received from the end-user that selects multiple elements (e.g., time buckets or tasks) of the Gantt chart. Some or all of the selected elements may be in the same or different rows. Once selected, the elements selected at step  620  may appear highlighted to the end-user, such as the selected elements appearing bolded. 
         [0054]    At step  630 , an identifier may be retrieved for each of these selected elements. Each identifier may be a row-key. In order to retrieve the row keys corresponding to the selected elements, an API may be called. Referring to the previously described API&#39;s, an API called “getSelectedTaskRow-keys( )” may be executed in order to return a set of identifiers corresponding to the selected elements. As should be understood, API “getSelectedTaskRow-keys( )” represents an exemplary embodiment of an API for returning identifiers of selected Gantt chart identifiers, other embodiments of an API that returns identifiers corresponding to selected elements of a Gantt chart may also be used. 
         [0055]      FIG. 7  illustrates an embodiment of method  700  for retrieving an element of a Gantt chart using an identifier. Method  700  may be performed using system  100  of  FIG. 1 . Each step of method  700  may be performed by a computer system. Referring to system  100  of  FIG. 1 , each step of method  700  may be performed by an end-user computer system of end-user computer systems  120 , ERP computer system  110 , or by some combination thereof. Method  700  may also be performed using some other system capable of retrieving an element of a Gantt chart using an identifier. Method  700  may be performed on a scheduling Gantt chart or a resource utilization Gantt. 
         [0056]    At step  710 , the request may be received to retrieve a selected element. Retrieving a selected element may involve various characteristics about the element being retrieved, such as from one or more databases. Referring to  FIG. 1 , such characteristics may be retrieved from databases  150 . The request may be received from an end-user. The end-user may have provided input, such as by clicking on an element, that indicates the element is to be retrieved and presented to the end-user, such as via an end-user computer. 
         [0057]    At step  720 , the element may be retrieved using an identifier, such as a row-key. The retrieval of the element may involve an application, such as Gantt chart software, using an API to retrieve the element. An identifier (e.g., row-key) may be provided to an API such as getTaskData(row-key) or getTimeBucketData(row-key) in order to retrieve the element along with the element&#39;s characteristics. 
         [0058]    At step  730 , the element and its characteristics retrieved at step  720  may be presented to the end-user. The end-user may be able to view and/or modify characteristics of the element. Changes made to the element by the end-user may be updated in appropriate databases and may involve the use of one or more other API&#39;s. 
         [0059]      FIG. 8  illustrates an embodiment of method  800  for selecting multiple elements of a Gantt chart using identifiers. Method  800  may be performed using system  100  of  FIG. 1 . Each step of method  800  may be performed by a computer system. Referring to system  100  of  FIG. 1 , each step of method  800  may be performed by an end-user computer system of end-user computer systems  120 , ERP computer system  110 , or by some combination thereof. Method  800  may also be performed using some other system capable of selecting multiple elements of a Gantt chart using identifiers. Method  800  may be performed on a scheduling Gantt chart or a resource utilization Gantt. 
         [0060]    At step  810 , one or more search terms may be received from an end-user. These search terms may be provided by the end-user in order to identify various elements of a Gantt chart that meet various qualifications. For example, a search may be performed for all elements that pertain to “material orders.” 
         [0061]    At step  820 , elements satisfying the search terms received at step  810  may be selected. In order to select various elements as satisfying the search, an API such as setSelectedTaskRow-keys(Row-keySet) or setSelectedTimeBucketRow-keys(Row-keySet) may be used. An application may provide a set of row-keys or other identifiers to the API. The API may then select the elements corresponding to the provided row-keys. At step  830 , the selected elements may be presented to the end-user. The selected elements may appear highlighted, such as by being bolded, as displayed to the end-user. 
         [0062]      FIG. 9  illustrates an embodiment of method  900  for modifying multiple elements of a Gantt chart concurrently. Method  900  may be performed using system  100  of  FIG. 1 . Each step of method  900  may be performed by a computer system. Referring to system  100  of  FIG. 1 , each step of method  900  may be performed by an end-user computer system of end-user computer systems  120 , ERP computer system  110 , or by some combination thereof. Method  900  may also be performed using some other system capable of selecting multiple elements of a Gantt chart using identifiers. Method  900  may be performed on a scheduling Gantt chart or a resource utilization Gantt. 
         [0063]    At step  910 , a Gantt chart may be displayed via an electronic display. The Gantt chart may be displayed via an end-user computer system to an end-user. The display to Gantt chart may appear similar to the scheduling Gantt chart of interface  200  of  FIG. 2  or may appear similar to the resource allocation Gantt chart of interface  400  of  FIG. 4 . The Gantt chart displayed at step  910  may also be some other form of Gantt chart. Display of the Gantt chart may allow an end-user to interact with various elements of the Gantt chart. 
         [0064]    At step  920 , input may be received from the end-user that selects multiple elements (e.g., time buckets or tasks) of the Gantt chart. Some or all of the selected elements may be in the same or different rows. Once selected, the elements selected at step  620  may appear highlighted to the end-user, such as the selected elements appearing bolded. 
         [0065]    At step  930 , a first API may be used to retrieve row keys for the elements indicated as selected by the user input received at step  920 . A row-key, or some other form of identifier, may be retrieved for each of these selected elements. Referring to the previously described API&#39;s, an API such as “getSelectedTaskRow-keys( )” may be executed in order to return a set of identifiers corresponding to the selected elements to an application. As should be understood, API “getSelectedTaskRow-keys( )” represents an exemplary embodiment of an API for returning identifiers of selected Gantt chart identifiers, other embodiments of an API that returns identifiers corresponding to selected elements of the Gantt chart may also be used. At this stage, a set of identifiers is now stored for the selected elements of the Gantt chart. If the user modifies the selected elements, the identifiers present in the set may be modified accordingly. 
         [0066]    At step  940 , a modification may be received from the end-user that is to be used to modify a characteristic of each of the selected elements. A modified characteristic may be received from the user that is to be applied to each selected element. For example, the end-user may provide a modified start date for the selected elements. As such, the start date of each of the selected elements may be set to the modified start date. The end-user may only need to specify the modified start date once for the selected group. The end-user may, for example, provide a modified end date or reassign the selected elements to another person. Other characteristics may also be modified. 
         [0067]    At step  950 , a second API may be used to apply the modification received at step  940  to the elements selected at step  920 . The row-keys, or other identifiers, retrieved at step  930  may be used in conjunction with another API to modify the selected elements. The selected elements may be retrieved using the set of row-keys or other identifiers retrieved at step  930 . An API such as “getTaskData(row-key)” or “getTimeBucketData(row-key)” may be used in order to retrieve the element along with the element&#39;s characteristics. The characteristics of the elements selected can then be modified in accordance with the modification received at step  940 . Modification of the elements at step  950  may involve accessing one or more remote or local databases, such as databases  150  of  FIG. 1 . This API may also be used to provide additional information for the elements represented by the row-keys. 
         [0068]    At step  960 , once the selected elements have been modified, the modified Gantt chart may be presented to the end-user. This may involve the Gantt chart being rendered in accordance with the modifications to the selected elements. 
         [0069]    Such manipulation of a Gantt chart may be performed by a computer system.  FIG. 10  illustrates an embodiment of a computer system which may allow the previously described methods to be performed and interfaces to be created. Computer system  1000  may represent each end-user computer system, the ERP computer system, and/or the developer computer system of system  100  of  FIG. 1 . It should be noted that  FIG. 10  is meant only to provide a generalized illustration of various components, any or all of which may be utilized as appropriate.  FIG. 10 , therefore, broadly illustrates how individual system elements may be implemented in a relatively separated or relatively more integrated manner. 
         [0070]    The computer system  1000  is shown comprising hardware elements that can be electrically coupled via a bus  1005  (or may otherwise be in communication, as appropriate). The hardware elements may include one or more processors  1010 , including without limitation one or more general-purpose processors and/or one or more special-purpose processors (such as digital signal processing chips, graphics acceleration processors, and/or the like); one or more input devices  1015 , which can include without limitation a mouse, a keyboard, and/or the like; and one or more output devices  1020 , which can include without limitation a display device, a printer, and/or the like. 
         [0071]    The computer system  1000  may further include (and/or be in communication with) one or more non-transitory storage devices  1025 , which can comprise, without limitation, local and/or network accessible storage, and/or can include, without limitation, a disk drive, a drive array, an optical storage device, solid-state storage device such as a random access memory (“RAM”), and/or a read-only memory (“ROM”), which can be programmable, flash-updateable, and/or the like. Such storage devices may be configured to implement any appropriate data stores, including without limitation, various file systems, database structures, and/or the like. 
         [0072]    The computer system  1000  might also include a communications subsystem  1030 , which can include without limitation a modem, a network card (wireless or wired), an infrared communication device, a wireless communication device, and/or chipset (such as a Bluetooth™ device, an 802.11 device, a WiFi device, a WiMax device, cellular communication facilities, etc.), and/or the like. The communications subsystem  1030  may permit data to be exchanged with a network (such as the network described below, to name one example), other computer systems, and/or any other devices described herein. In many embodiments, the computer system  1000  will further comprise a working memory  1035 , which can include a RAM or ROM device, as described above. 
         [0073]    The computer system  1000  also can comprise software elements, shown as being currently located within the working memory  1035 , including an operating system  1040 , device drivers, executable libraries, and/or other code, such as one or more application programs  1045 , which may comprise computer programs provided by various embodiments, and/or may be designed to implement methods, and/or configure systems, provided by other embodiments, as described herein. Merely by way of example, one or more procedures described with respect to the method(s) discussed above might be implemented as code and/or instructions executable by a computer (and/or a processor within a computer); in an aspect, then, such code and/or instructions can be used to configure and/or adapt a general purpose computer (or other device) to perform one or more operations in accordance with the described methods. 
         [0074]    A set of these instructions and/or code might be stored on a non-transitory computer-readable storage medium, such as the storage device(s)  1025  described above. In some cases, the storage medium might be incorporated within a computer system, such as computer system  1000 . In other embodiments, the storage medium might be separate from a computer system (e.g., a removable medium, such as a compact disc), and/or provided in an installation package, such that the storage medium can be used to program, configure and/or adapt a general purpose computer with the instructions/code stored thereon. These instructions might take the form of executable code, which is executable by the computer system  1000  and/or might take the form of source and/or installable code, which, upon compilation and/or installation on the computer system  1000  (e.g., using any of a variety of generally available compilers, installation programs, compression/decompression utilities, etc.), then takes the form of executable code. 
         [0075]    It will be apparent to those skilled in the art that substantial variations may be made in accordance with specific requirements. For example, customized hardware might also be used, and/or particular elements might be implemented in hardware, software (including portable software, such as applets, etc.), or both. Further, connection to other computing devices such as network input/output devices may be employed. 
         [0076]    As mentioned above, in one aspect, some embodiments may employ a computer system (such as the computer system  1000 ) to perform methods in accordance with various embodiments of the invention. According to a set of embodiments, some or all of the procedures of such methods are performed by the computer system  1000  in response to processor  1010  executing one or more sequences of one or more instructions (which might be incorporated into the operating system  1040  and/or other code, such as an application program  1045 ) contained in the working memory  1035 . Such instructions may be read into the working memory  1035  from another computer-readable medium, such as one or more of the storage device(s)  1025 . Merely by way of example, execution of the sequences of instructions contained in the working memory  1035  might cause the processor(s)  1010  to perform one or more procedures of the methods described herein. 
         [0077]    The terms “machine-readable medium” and “computer-readable medium,” as used herein, refer to any medium that participates in providing data that causes a machine to operate in a specific fashion. In an embodiment implemented using the computer system  1000 , various computer-readable media might be involved in providing instructions/code to processor(s)  1010  for execution and/or might be used to store and/or carry such instructions/code. In many implementations, a computer-readable medium is a physical and/or tangible storage medium. Such a medium may take the form of a non-volatile media or volatile media. Non-volatile media include, for example, optical and/or magnetic disks, such as the storage device(s)  1025 . Volatile media include, without limitation, dynamic memory, such as the working memory  1035 . 
         [0078]    Common forms of physical and/or tangible computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, EPROM, a FLASH-EPROM, any other memory chip or cartridge, or any other medium from which a computer can read instructions and/or code. 
         [0079]    Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to the processor(s)  1010  for execution. Merely by way of example, the instructions may initially be carried on a magnetic disk and/or optical disc of a remote computer. A remote computer might load the instructions into its dynamic memory and send the instructions as signals over a transmission medium to be received and/or executed by the computer system  1000 . 
         [0080]    The communications subsystem  1030  (and/or components thereof) generally will receive signals, and the bus  1005  then might carry the signals (and/or the data, instructions, etc. carried by the signals) to the working memory  1035 , from which the processor(s)  1010  retrieves and executes the instructions. The instructions received by the working memory  1035  may optionally be stored on a storage device  1025  either before or after execution by the processor(s)  1010 . 
         [0081]    The methods, systems, and devices discussed above are examples. Various configurations may omit, substitute, or add various procedures or components as appropriate. For instance, in alternative configurations, the methods may be performed in an order different from that described, and/or various stages may be added, omitted, and/or combined. Also, features described with respect to certain configurations may be combined in various other configurations. Different aspects and elements of the configurations may be combined in a similar manner. Also, technology evolves and, thus, many of the elements are examples and do not limit the scope of the disclosure or claims. 
         [0082]    Specific details are given in the description to provide a thorough understanding of example configurations (including implementations). However, configurations may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques have been shown without unnecessary detail in order to avoid obscuring the configurations. This description provides example configurations only, and does not limit the scope, applicability, or configurations of the claims. Rather, the preceding description of the configurations will provide those skilled in the art with an enabling description for implementing described techniques. Various changes may be made in the function and arrangement of elements without departing from the spirit or scope of the disclosure. 
         [0083]    Also, configurations may be described as a process which is depicted as a flow diagram or block diagram. Although each may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be rearranged. A process may have additional steps not included in the figure. Furthermore, examples of the methods may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segments to perform the necessary tasks may be stored in a non-transitory computer-readable medium such as a storage medium. Processors may perform the described tasks. 
         [0084]    Having described several example configurations, various modifications, alternative constructions, and equivalents may be used without departing from the spirit of the disclosure. For example, the above elements may be components of a larger system, wherein other rules may take precedence over or otherwise modify the application of the invention. Also, a number of steps may be undertaken before, during, or after the above elements are considered. Accordingly, the above description does not bound the scope of the claims.