1. Technical Field
The invention relates generally to managing a project. Specifically, under the present invention, a user system can generate an interactive event for an artifact for the project. A notice of the interactive event can be automatically provided to one or more other user systems working on the same project.
2. Background Art
Integrated Development Environments (IDEs), such as Websphere® Studio Application Developer offered by International Business Machines (IBM) Corp. of Armonk, N.Y., provide the primary workplace for completing a project, such as the development of a software product. To this extent, a typical IDE provides tools to manage and manipulate several types of artifacts for the project. For example, in software development, the artifacts can include models, source code files, function libraries, tasks, test cases, activities, etc.
Frequently, multiple users contribute to completing any given project. To this extent, each user may have a local copy of the various artifacts for the project that he/she can view, modify, etc. In this case, when a user has made changes to the local copy of an artifact that should be added to the project, the user can “check in” the artifact with the changes to a “master” copy of the artifact that is stored at a server or the like. Subsequently, other users can synchronize their local copy of the artifact with the master copy to obtain the most recent version of the artifact.
A problem can arise when two users make simultaneous modifications to the same artifact. In this case, there is a danger that a user that checks in his/her modified artifact may inadvertently overwrite a version of the artifact that included changes made by another user. To prevent this situation, various solutions can be used. For example, each user can be required to “check out” a particular artifact that he/she desires to modify. By allowing only one user the ability to check out each artifact, there is no danger of any other users checking in modifications that may conflict. However, many users find this solution too limiting as it severely limits the ability to work in parallel.
Another solution is to detect instances when overlapping modifications have been made to an artifact, and merge the modifications into a new version of the artifact. This solution works well when different portions of an artifact are modified, but may not work well when the modifications occur to the same portion of the artifact and/or one modification is not compatible with another modification. Additionally, neither of these solutions promote collaboration or coordination between multiple users while the modifications are being made.
As a result, a need exists for an improved solution for managing a project. In particular, a need exists for a management solution that can support and/or coordinate group problem solving involving shared artifacts. To this extent, a need exists for a method, system and program product that detect an interactive event that occurs on one user system and automatically provide information on the interactive event to another user system. In response, an appearance of an indicator for the artifact can be modified based on the interactive event to inform a user of the interactive event.
The invention provides a solution in which a user can be notified of the occurrence of a remote interactive event. Specifically, under the present invention, a local interactive event for an artifact of a project can be captured. A notice can be generated, which includes information on the local interactive event. The notice can be sent to one or more other users that are working on the project. A user interface that the user(s) is using to work on the project can then automatically surface the interactive event based on the received notice. In one embodiment, an indicator for the corresponding artifact is altered based on the notice. As a result, a user can be automatically informed of the actions performed on artifact(s) by one or more other users. This information can be used to initiate collaboration between two or more users, avoid conflicting modifications among users, etc.
A first aspect of the invention provides a method of managing a project, the method comprising: storing a set of artifacts for the project; receiving a first notice of an interactive event for one of the set of artifacts from a first user system; and automatically providing a second notice to a second user system, wherein the second notice is based on the first notice.
A second aspect of the invention provides a method of managing a project, the method comprising: obtaining a set of artifacts for the project; generating a user interface for selecting at least one of the set of artifacts, wherein the user interface includes an indicator for each of the set of artifacts; receiving a notice of a remote interactive event for one of the set of artifacts; and altering the indicator for the one of the set of artifacts based on the notice.
A third aspect of the invention provides a system for managing a project, the system comprising: an artifact system for managing a set of artifacts for the project; an event system for receiving a first notice of an interactive event for one of the set of artifacts from a first user system; and a broadcast system for automatically providing a second notice to a second user system, wherein the second notice is based on the first notice.
A fourth aspect of the invention provides an integrated development environment (IDE) comprising: a selection system for generating a user interface for selecting at least one of the set of artifacts, wherein the user interface includes an indicator for the at least one of the set of artifacts; an editor system for displaying at least one of the set of artifacts for a project; and an indicator system for altering the indicator based on a notice of a remote interactive event for the at least one of the set of artifacts.
A fifth aspect of the invention provides a program product stored on a recordable medium for managing a project, which when executed comprises: program code for obtaining a set of artifacts for the project; program code for generating a user interface for selecting at least one of the set of artifacts, wherein the user interface includes an indicator for at least one of the set of artifacts; program code for receiving a notice of a remote interactive event for one of the set of artifacts; and program code for altering the indicator for the one of the set of artifacts based on the notice.
A sixth aspect of the invention provides a system for deploying an application for managing a project, the system comprising: a computer infrastructure being operable to: manage a set of artifacts for the project; receive a first notice of an interactive event for one of the set of artifacts from a first user system; and automatically provide a second notice to a second user system, wherein the second notice is based on the first notice.
A seventh aspect of the invention provides computer software embodied in a propagated signal for managing a project, the computer software comprising instructions to cause a computer system to perform the following functions: manage a set of artifacts for the project; receive a notice of an interactive event for one of the set of artifacts from a first user system; and automatically provide the notice to a second user system.
The illustrative aspects of the present invention are designed to solve the problems herein described and other problems not discussed, which are discoverable by a skilled artisan.
These and other features of this invention will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings that depict various embodiments of the invention, in which:
It is noted that the drawings of the invention are not to scale. The drawings are intended to depict only typical aspects of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements between the drawings.
As indicated above, the invention provides a solution in which a user can be notified of the occurrence of a remote interactive event. Specifically, under the present invention, a local interactive event for an artifact of a project can be captured. A notice can be generated, which includes information on the local interactive event. The notice can be sent to one or more other users that are working on the project. A user interface that the user(s) is using to work on the project can then automatically surface the interactive event based on the received notice. In one embodiment, an indicator for the corresponding artifact is altered based on the notice. As a result, a user can be automatically informed of the actions performed on artifact(s) by one or more other users. This information can be used to initiate collaboration between two or more users, avoid conflicting modifications among users, etc. It is understood that, as used herein, the term “remote” means that the corresponding individual, interactive event, etc. is not using, did not occur on, etc., the same computer system. To this extent, remote does not imply any physical separation. For example, two users could sit next to each other in an office, but be remote from each other when each uses his/her own computer system.
Turning to the drawings,
When developing project 60, user systems 30A-B communicate with server 12 and/or another user system 30A-B over one or more networks 26. Each network 26 can comprise any type of communications link. For example, network 26 can comprise an addressable connection in a client-server (or server-server) environment that may utilize any combination of wireline and/or wireless transmission methods. To this extent, server 12 and user systems 30A-B may utilize conventional network connectivity, such as Token Ring, Ethernet, WiFi or other conventional communications standards. Further, network 26 can comprise any combination of various types of networks, including the Internet, a wide area network (WAN), a local area network (LAN), a virtual private network (VPN), etc. Where user systems 30A-B communicate with server 12 via the Internet, connectivity could be provided by conventional TCP/IP sockets-based protocol, and user systems 30A-B could utilize an Internet service provider to establish connectivity to server 12.
In any event, server 12 and user systems 30A-B comprise any type of computing devices capable of communicating with one or more other computing devices and/or interacting with one or more users. For example, server 12 and/or user systems 30A-B can each comprise a server, a desktop computer, a laptop, a handheld device, a mobile phone, a pager, a personal data assistant, etc. To this extent, server 12 is shown including a processor 14, a memory 16, an input/output (I/O) interface 18, a bus 20, external I/O devices/resources 22, and a storage system 24. In general, processor 14 executes computer program code such as information system 40, that is stored in memory 16 and/or storage system 24. While executing computer program code (e.g., information system 40), processor 14 can read and/or write data to/from memory 16, storage system 24, and/or I/O interface 18. Bus 20 provides a communication link between each of the components in server 12.
It is understood that server 12 is only illustrative of various possible combinations of hardware. For example, processor 14 may comprise a single processing unit, or be distributed across one or more processing units in one or more locations, e.g., on a client and server. Similarly, memory 16 and/or storage system 24 can comprise any combination of various types of data storage and/or transmission media that reside at one or more physical locations. I/O interface 18 can comprise any system for exchanging information with one or more I/O devices 22 that can provide an interface with one or more other computing devices (e.g., user systems 30A-B) and/or users. It is understood, however, that if server 12 comprises a handheld device or the like, one or more I/O devices 22 (e.g., a display) could be contained within server 12, and not as an external I/O device 22 as shown. Further, it is understood that user systems 30A-B typically include similar elements (e.g., processor, memory, I/O interface, etc.) as shown for server 12. These have not been separately shown and described for brevity.
In order to manage project 60, information system 40 is shown including an artifact system 42 for managing a set of artifacts 62 for project 60, and an archive system 44 for archiving various versions of the set of artifacts 62. Information system 40 is also shown including an event system 46 for receiving a notice of an interactive event for an artifact 62, and a broadcast system 48 for automatically providing the notice to one or more user systems 30A-B. In general, information system 40 can provide and/or receive data relating to project 60 to/from one or more IDEs 50A-B. Each IDE 50A-B can comprise computer program code that executes on a user system 30A-B to generate a user interface that enables a user to work on project 60. To this extent, IDE 50A is shown including a selection system 52 that generates a user interface for selecting one or more artifacts 62, and an editor system 53 that generates a user interface that enables a user to view, modify, etc., a particular artifact 62. Further, IDE 50A is shown including an indicator system 54 for altering a selection indicator based on the notice, a monitor system 56 for detecting a local interactive event, and a notice system 58 for generating a notice based on the local interactive event. Operation of each of these systems is discussed further below.
It is understood that, while not shown for brevity, IDE 50B can include each of the systems shown as part of IDE 50A. However, it is understood that information system 40 and IDEs 50A-B are only illustrative. As a result, some of the systems and/or functionality shown in information system 40 and IDE 50A may be implemented together, may not be implemented, and/or may be implemented separately. Further, additional systems and/or functionality may be included in information system 40 and/or IDEs 50A-B.
For example, information system 40 could include the functionality shown and described for IDEs 50A-B, and users could access information system 40 in a client-server environment. Similarly, each IDE 50A-B could comprise similar systems as shown and described for information system 40, and user systems 30A-B could communicate over a peer-to-peer network configuration to replicate locally stored copies of project 60 without the use of server 12 and/or storage system 24. Additionally, event system 44 and/or broadcast system 46 could be implemented apart from information system 40 on another computer that is dedicated to managing notices of interactive events but does not include any artifact 62 support capabilities.
As previously noted, the invention provides an improved solution for managing project 60. In one embodiment, a set (one or more) of artifacts 62 for project 60 can be stored on storage system 24. In this case, artifact system 42 can be used to manage set of artifacts 62. In particular, artifact system 42 can add/remove an artifact 62 to/from project 60, provide a copy of one or more artifacts 62 to user systems 30A-B, etc. Further, artifact system 42 can receive a modified artifact 62 from a user system 30A-B. In this case, artifact system 42 can provide the modified artifact 62 to archive system 44. Archive system 44 can archive both the modified version and each previous version of artifact 62. As a result, modifications to each artifact 62 can be viewed, tracked, reversed, etc., by a user as desired.
Each user uses an IDE such as IDE 50A to work on project 60. In particular, IDE 50A can generate a user interface at user system 30A that enables a user to select project 60 for viewing/editing. Once project 60 has been selected, selection system 52 can generate a user interface at user system 30A for displaying a listing of some/all of the set of artifacts 62 that belong to project 60. For example,
In one embodiment, user interface 82 comprises a tree structure for displaying indicators 86A-D. For example, a top node 83 can be generated for the selected project 60 (
In any event, user interface 82 can enable a user to select any one of the set of artifacts 62 (
Further, each editor interface 84A-B is shown including a identification area 88A-B that comprises an indicator 90A-B for the corresponding artifact 62 being displayed by the respective editor interface 84A-B. It is understood that identification area 88A-B can comprise any location and/or shape. For example, identification area 88A-B could comprise a tab shape, or the like. As shown, user interface 82 and editor interfaces 84A-B can each comprise a child interface (e.g., window) of interface 80. In this case, each child interface will occupy a portion of the display area of interface 80. However, it is understood that this arrangement is only illustrative, and various alternatives are possible. Additional aspects of the invention shown in
Returning to
Further details will be discussed with reference to
In step L2, notice system 58 can generate a notice based on the interactive event. The notice can comprise data regarding the interactive event. For example, the notice can include a timestamp for the occurrence of the interactive event, an identity of the user and/or user system 30A that generated the interactive event, data that identifies the interactive event, data that identifies artifact 62, and the like. After the notice has been generated, in step L3, notice system 58 can communicate the notice to one or more other user systems, e.g., user system 30B.
Depending on an architecture of network 26, various solutions exist for communicating the notice to user system 30B. For example, in a peer-to-peer network, the message may be communicated directly from user system 30A to user system 30B. However, server 12 may be utilized to communicate notices between various user systems 30A-B. In one embodiment, discussed with reference to
Further, event system 46 could capture one or more interactive events. For example, as discussed above, a user may check in a new version of artifact 62 using archive system 44. In this case, the request/creation of a new archived version of artifact 62 can comprise an interactive event, and event system 46 can capture its occurrence. To this extent, event system 46 could generate the notice based on the interactive event. Regardless, event system 46 will forward each notice to broadcast system 48 for further processing.
In step S2, broadcast system 48 can identify other user systems 30A-B currently accessing project 60. This can be done using any solution. For example, when IDE 50A-B opens project 60, selection system 52 can send a message to broadcast system 48 that indicates that the corresponding user system 30A-B is currently accessing project 60. A similar message can be sent by selection system 52 when project 60 is closed to indicate that project 60 is no longer being accessed. In any event, broadcast system 48 can maintain a list of user systems 30A-B that are currently accessing project 60. Alternatively, broadcast system 48 can maintain a list of user systems 30A-B that may access project 60 regardless of whether the user systems 30A-B are currently being used to access project 60.
In step S3, broadcast system 48 automatically provides the notice to one or more user systems 30B. Alternatively, broadcast system 48 could generate a second notice based on the first notice, and provide the second notice to one or more user systems 30B. In either case, broadcast system 48 can communicate the notice to all user systems 30A-B that are currently accessing project 60, individually communicate the notice to each user system 30B that is remote from user system 30A on which the interactive event occurred, communicate the notice to all user systems 30A-B on network 26 regardless of any access to project 60, etc.
In any event, user system 30B will receive the notice. Referring now to
As shown in
Selection of the markings for display in each indicator 86A-D, 90A-B, can be performed based on a priority of the corresponding interactive event(s). For example, when one remote user is viewing an artifact 62 (
As each user opens project 60 (
While
The notice information can be displayed using any solution. For example,
Similarly, as shown in
It is understood that the various markings, indicators 85A-C, 86A-D, 90A-B (
In addition to modifying an indicator, indicator system 54 (
It should be appreciated that the teachings of the present invention could be offered as a business method on a subscription or fee basis. For example, information system 40 (
The present invention also can be embedded in a computer program product or a propagated signal, which comprises all the respective features enabling the implementation of the methods described herein, and which—when loaded in a computer system—is able to carry out these methods. Computer program, propagated signal, software program, program, or software, in the present context mean any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form.
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible. Such modifications and variations that may be apparent to a person skilled in the art are intended to be included within the scope of the invention as defined by the accompanying claims. For example, while the invention has primarily been shown and described in conjunction with an IDE 50A-B (