Method, system and program product for building collaboration applications using multiple-peer user interface libraries
A method, system and program product for building a collaboration server for deploying a collaboration application. The method includes installing on a server a collaboration server application having multiple-peer user interface libraries capable of creating and synchronizing multiple peer widgets for each widget created by a collaboration application. The method further includes deploying a collaboration application written using standard user interface libraries, and launching execution of the collaboration application on the server when one or more users connect to the server, such that a rendering of a shared state of the user interface is displayed on a client program corresponding to the users. Further, the method includes displaying the shared state on a client program of a new user connecting to the server. Also, when a change is made to the state of a shared widget by a user, the method includes updating the client programs of all remaining users.
Latest IBM Patents:
- INTERACTIVE DATASET EXPLORATION AND PREPROCESSING
- NETWORK SECURITY ASSESSMENT BASED UPON IDENTIFICATION OF AN ADVERSARY
- NON-LINEAR APPROXIMATION ROBUST TO INPUT RANGE OF HOMOMORPHIC ENCRYPTION ANALYTICS
- Back-side memory element with local memory select transistor
- Injection molded solder head with improved sealing performance
The present invention relates to a method and system for building collaboration applications and a computer program product for deploying the collaboration applications in a deployment environment, often referred to as a collaboration server. More particularly, the present invention relates to a method, system and computer program product for building a collaboration server for facilitating deployment of collaboration applications on the collaboration server using multiple-peer user interface libraries.
BACKGROUND OF THE INVENTIONIn today's business environment, organizations and/or businesses facilitate collaboration among employees and/or end users. Collaboration in various settings is achieved by using collaboration technologies. With the use of collaboration technologies, employees of a business and/or organization scattered throughout the world can collaborate with one another on a project or end users accessing various collaboration software can chat with one another or play a game with one another. Traditional collaboration technologies for developing collaboration applications require programmers to write collaboration applications in multiple languages, with some pieces deployed on client programs and some pieces on collaboration servers. Further, traditional technologies require a programmer to be aware of the existence of a network and to use an application-specific communication protocol for communicating with the different components, thus, making the collaboration applications written in traditional ways difficult to test and to initialize with a complex state. As such, there is a need for an efficient and cost effective way to develop collaboration technologies that promote collaboration and which overcome the limitations of traditional collaboration technologies.
SUMMARY OF THE INVENTIONIn a first aspect of the invention, there is provided a method of building a collaboration server for facilitating deployment of a collaboration application. The method includes installing a collaboration server application on a server connected to a network and being configured to run a collaboration application using one or more customized user interface libraries having collaboration functionality, each of the one or more customized user interface libraries having one or more customized widgets capable of mapping to one or more peer widgets, deploying a collaboration application on the server, wherein a user interface of the collaboration application is written using one or more standard user interface libraries, and launching execution of the collaboration application on the server when one or more collaborating users of a collaborating group connect to the server over the network, such that a rendering of a shared state of the user interface is displayed on a client program corresponding to each of the one or more collaborating users connected to the server. When a new collaborating user connects to the server for collaborating with the one or more collaborating users, the method further includes displaying the shared state of the user interface on another client program corresponding to the new collaborating user. Further, when a change is made to the shared state of the user interface by a collaborating user among the one or more collaborating users, the method includes broadcasting the change made to the shared state to a remainder of the one or more collaborating users. In an embodiment, the displaying step includes keying the shared state of the user interface to the collaboration group, storing the shared state of the user interface on the server, and displaying the rendering of the shared state of the user interface on the another client program corresponding to the new collaborating user when the new collaborating user connects to the server. In an embodiment, the broadcasting step includes issuing a notification to each client program corresponding to the remainder of the one or more collaborating users, such that the rendering of the shared state of the user interface is updated to reflect the change made to the shared state of the user interface. In an embodiment, the new collaborating user is either a first user in the collaborating group who connects to the server at an initial point-in-time or is a subsequent user in the collaborating group who connects to the server at a subsequent point-in-time. Further, in an embodiment, the change made to the shared state of the user interface is broadcasted across the network using a protocol chosen from an Internet protocol suite. Moreover, in an embodiment, the collaboration application and the collaboration server application are applications written in an object-oriented programming language.
In another aspect of the invention, there is provided a system for facilitating collaboration in an online collaborative environment. The system includes a collaboration server application installed on a server coupled to a network and being configured to run a collaboration application using one or more modified widget libraries includes of one or more customized widgets, each customized widget of the one or more customized widgets being configured to map to one or more peer widgets created on one or more local user interfaces corresponding to one or more collaborating users connected to the server, and a collaboration application deployed on the server, the collaboration server application being configured to run the collaboration application on the server when a collaborating user connects to the server, such that a shared part of a user interface of the collaboration application run on the server is stored on the server in order to display the shared part of the user interface on each local user interface corresponding to each of the collaborating users connected to the server and wherein any change made to the shared part of the user interface displayed on a local user interface of a collaborating user among the collaborating users is broadcasted and displayed on each remaining local user interface corresponding to each remaining collaborating user among the collaborating users connected to the server. In an embodiment, the collaboration server application is configured to key the shared part of the user interface to a collaboration group that includes the collaborating users. Further, the collaboration server application is configured to display the shared part of the user interface on a local user interface of a new collaborating user when the new collaborating user connects to the server. In an embodiment, the new collaborating user is either a first user in the collaborating group who connects to the server at an initial point-in-time or a subsequent user in the collaborating group who connects to the server at a subsequent point-in-time. In an embodiment, the collaboration server application is further configured to issue a notification to each local user interface corresponding to the each remaining collaborating users of the collaborating users connected to the server in order to update and display any change made to the shared part of the user interface. Further, in an embodiment, the change made to the shared state of the user interface is broadcasted across the network using a protocol chosen from an Internet protocol suite. Moreover, in an embodiment, the collaboration application and the collaboration server application are applications written in an object-oriented programming language.
In yet another embodiment, the present invention provides a computer program product for building a collaboration server application that facilitates deployment of a collaboration application. The computer program product includes a computer readable medium, first program instructions to install a collaboration server application on a host server connected to a network, the collaboration server application being configured to run a collaboration application using customized widget libraries that include one or more customized widgets, each of the customized widgets being capable of creating one or more peer widgets on each local user interface of a client program corresponding to each of one or more collaborating users connected to the host server. Further, the computer program product includes second program instructions to run on the host server a collaboration application deployed thereon, the collaboration application having a user interface written using one or more standard widget libraries and third program instructions to display a shared part of the user interface of the collaboration application on a local user interface of a client program corresponding to a new collaborating user when the new collaborating user connects to the host server. In an embodiment, the new collaborating user includes at least one of: a first user in the collaborating group who connects to the host server at an initial point-in-time or a subsequent user in the collaborating group who connects to the host server at a subsequent point-in-time. In an embodiment, the second program instructions include instructions to key to a collaborating group the shared part of the user interface displayed as each local user interface corresponding to the one or more collaborating users. In an embodiment, the third program instructions include instructions to share between the one or more collaborating users one or more customized widgets used to render the shared part of the user interface displayed as the local user interface on the client program corresponding to the one or more collaborating users. Furthermore, the computer program product includes fourth program instructions to update the shared part of the user interface displayed on the each local user interface corresponding to the one or more collaborating users when a change is made to the shared part of the user interface by any of the one or more collaborating users. In an embodiment, the fourth program instructions include instructions to transmit over the network the change made to the shared part of the user interface displayed as the local user interface using a protocol chosen from an Internet protocol suite. In an embodiment, each of the first, second, third and fourth program instructions are stored on the computer readable medium. In an embodiment, both the collaboration application and the collaboration server application are applications written in an object-oriented programming language.
The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention:
Many of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like. Modules may also be implemented in software for execution by various types of processors. An identified module or component of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.
Further, a module of executable code could be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices, over disparate memory devices, and may exist, at least partially, merely as electronic signals on a system or network. Furthermore, modules may also be implemented as a combination of software and one or more hardware devices. For instance, a module may be embodied in the combination of a software executable code stored on a memory device. In a further example, a module may be the combination of a processor that operates on a set of operational data. Still further, a module may be implemented in the combination of an electronic signal communicated via transmission circuitry.
Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language 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, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
Moreover, the described features, structures, or characteristics of the invention may be combined in any suitable manner in one or more embodiments. It will be apparent to those skilled in the art that various modifications and variations can be made to the present invention without departing from the spirit and scope of the invention. Thus, it is intended that the present invention cover the modifications and variations of this invention provided they come within the scope of the appended claims and their equivalents. Reference will now be made in detail to the preferred embodiments of the invention.
In one embodiment, the invention provides a method of building a collaboration server for facilitating deployment of a collaboration application. The method includes installing a collaboration server application on a server connected to a network and being configured to run a collaboration application using one or more customized user interface libraries having collaboration functionality, each of the one or more customized user interface libraries being configured to create one or more customized widgets capable of mapping to one or more peer widgets, deploying a collaboration application on the server, wherein a user interface of the collaboration application is written using one or more standard user interface libraries, and launching execution of the collaboration application on the server when one or more collaborating users of a collaborating group connect to the server over the network, such that a rendering of a shared state of the user interface is displayed on a client program corresponding to each of the one or more collaborating users connected to the server. When a new collaborating user connects to the server for collaborating with the one or more collaborating users, the method further includes displaying the shared state of the user interface on another client program corresponding to the new collaborating user. Further, when a change is made to the shared state of the user interface by a collaborating user among the one or more collaborating users, the method includes broadcasting the change made to the shared state to a remainder of the one or more collaborating users. In an embodiment, the displaying step includes keying the shared state of the user interface to the collaboration group, storing the shared state of the user interface on the server, and displaying the rendering of the shared state of the user interface on the another client program corresponding to the new collaborating user upon launching of the collaboration application when the new collaborating user connects to the server. In an embodiment, the broadcasting step includes issuing a notification to each client program corresponding to the remainder of the one or more collaborating users, such that the rendering of the shared state of the user interface is updated to reflect the change made to the shared state of the user interface.
In an embodiment, the new collaborating user is either a first user in the collaborating group who connects to the server at an initial point-in-time or is a subsequent user in the collaborating group who connects to the server at a subsequent point-in-time. Further, in an embodiment, the change made to the shared state of the user interface is broadcasted across the network using a protocol chosen from an Internet protocol suite. In an embodiment, the change made to the shared state of the user interface is broadcasted across the network using a HTTP (Hypertext Transfer Protocol) Internet protocol. Moreover, in an embodiment, the collaboration application and the collaboration server application are applications written in an object-oriented programming language. In an embodiment, the collaboration application and the collaboration server application are applications written in the Java programming language. Although, the description herein below describes both the collaboration application or program and the collaboration server application as programs written in the Java programming language, it should be understood that the respective applications or programs can be written in any other object-oriented or object-based or interpreted or compiled programming language by one skilled in the art. Moreover, in an embodiment, the client program used by the one or more collaborating users is a web browser.
Reference is now made to
Typically, a standard Java UI library is made up of Java classes and Java interfaces, which implement or define Java methods. When a Java collaboration application or program runs, it creates widget trees. A widget tree is the tree representation of widgets, widget groups and frames in a screen. The largest widget, the frame, is the root of the tree. Each group that is contained within a larger widget is a branch of the widget tree. The widgets that do not contain other widgets, (buttons for example) are leaves of the widget tree. The Java widgets are used to create the user interface of the collaboration application. Each program typically uses one widget library, though multiple libraries may be used. If a programmer wants to add a Java widget to a parent widget tree in an application, the programmer uses Java program calls. The calls depend on the widget library. Each library has its own procedures for adding widgets to widget trees. The association between a java layer widget and a native layer widget is created when a newly created java widget is added to a widget tree or when the widget tree is made visible. The native layer is the underlying display context where the user interface is displayed. In a typical Java program, the native layer is the operating system, which includes the libraries that the operating system uses to draw frames and widgets on a computer screen. For a simple Java program running on a laptop, the native layer could be the Windows® operating system with its GDI (Graphic Device Interface) and SDK (software Development Kit) libraries or the Macintosh® operating system and its associated libraries or the Linux® operating system with its Motif, GTK (Gimp Tool Kit) or a Qt libraries. The programmer adds widgets to a widget tree to create a GUI (Graphical User Interface).
In a standard Java UI library, the Java widget objects correspond one to one with the native widgets that they encapsulate. A Java widget is never associated with more than one native or peer widget at any given time. A Java widget has a peer widget that it uses to render itself on the host operating system. The peer widget uses the Java widget to communicate with the Java user program, through its event handlers and through manipulation of the state of the Java widget. A typical Java widget cannot be added to two widget trees because each widget is only mapped to one peer. For a widget to appear in two places, it must be mapped to two peers. To build a collaboration server that can utilize the standard Java widget libraries that programmers have used to write a standalone Java program, the collaboration server application includes multiple-peer or customized UI libraries. The customized or multiple-peer widget libraries form part of the collaboration server application and, therefore, are placed on the host server. The customized or multiple-peer UI libraries with the collaboration functionality allow clients to connect to the collaboration server application using a web browser or any other client program and to use the collaboration application installed thereon. Client programs do not have to be built using a non-standard UI library since the multiple-peer UI libraries on the server have the same set of Java classes and Java methods as a standard UI library. When a multiple-peer UI library is requested by an instance of a collaboration application to create a widget, it creates a Java object (the widget) on the server and it creates a peer widget in the client program as well. When there are multiple collaborating users running multiple collaboration applications with shared widget trees, some widgets will need to manage multiple peer widgets, one for each collaborating user. So the UI libraries in the collaboration server application are capable of creating multiple peer widgets and synchronizing multiple peer widgets (making sure that shared widgets have the same state on each of the client programs at any given time). Each Java widget has a state, which can be changed by user actions and the collaboration application. When a widget has a change in shared, the widget redraws or renders the new state on each user's client program. The state of a shared widget refers to any attribute, for example, color and dimensions that a shared widget possesses and displays to multiple users. Another example of a shared state is the position of a shared widget, for instance, a chess piece on a shared chessboard. The collaboration application is launched when the first user belonging to a certain collaborating group connects to the server using the collaboration server application. When the collaboration application runs, if a Java object representing a frame is created in Java, then the user's client program is sent a representation of the frame to be displayed on the user's client program. The object that is displayed in the user's client program is called the peer object and a mapping of the peer object to the Java object is stored on the collaboration server. As such, every widget in Java has an equivalent peer widget on the user's client program. When a user enters a collaboration context, the collaboration application creates the shared parts of the user interface by reusing shared widgets and widget trees. A new user commences working with the shared widgets like all the other collaborating users. So collaboration is achieved by sharing Java widgets or widget trees between the collaborating users.
Turning to
Turning to
Turning to
Turning to
In another embodiment, the invention provides a system for facilitating collaboration in an online collaborative environment. Reference is now made to
Turning to
Turning to
The collaboration applications deployed in this environment can be written just like simple one-user Java programs. All the code is in one piece, a single application, rather than different programs. The programmer can write shared UI elements like chessboards by sharing the Frame or Shell where the chessboard is rendered. The programmer does not have to be aware of the network and need not write any networking or communication code. The programmer does not have to be aware of the browser and need not write any browser code. The programmer does not have to be aware of an HTTP (Hypertext Transfer Protocol) server and does not write any server code. The programmer does not have to know what part of his code runs on the server and what part of the code runs on the client. Further, the programmer can test the collaboration application code as a single user application using a framework, such as Eclipse or any other Java IDE (Integrated Development Environment). Moreover, a server API (Application Programming Interface) is used to store shared state in the collaboration server. There is no client API. In an embodiment, the collaboration server automatically initializes the state of the application of a new user to be consistent with the state of all other users already collaborating. Changes in shared state are propagated to all collaborating users automatically, for instance, using a refresh notification, such as a repaint call mechanism for communicating changes in shared state to collaborating users.
In yet another embodiment, the invention provides a computer program product for building a collaboration server application that facilitates deployment of a collaboration application upon it in the context of a host server. The computer program product comprises a computer readable or computer-usable medium, which provides program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. Preferably, the computer storage medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD. Further, preferably, network medium can comprise of transmission devices on a network, such as, cables, routers, switches and/or network adapter cards.
Preferably, the computer program product is in a form accessible from the computer-usable or computer-readable medium, which provides program codes or instructions for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the codes or instructions for use by or in connection with the instruction execution system, apparatus, or device. Preferably, the medium can comprise an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. More preferably, the computer-readable medium can comprise a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Further, examples of optical disks include compact disc-read only memory (CD-ROM), compact disc-read/write (CD-R/W) and digital versatile/video disc (DVD). The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
The computer program product comprises first program instructions to install a collaboration server application on a host server connected to a network, the collaboration server application being configured to run a collaboration application using customized widget libraries which include one or more customized widgets, each of the customized widgets being capable of creating one or more peer widgets on each local user interface of a client program corresponding to each of one or more collaborating users connected to the host server. Further, the computer program product comprises second program instructions to run on the host server a collaboration application deployed thereon, the collaboration application having a user interface written using one or more standard widget libraries and third program instructions to display a shared part of the user interface of the collaboration application on a local user interface of a client program corresponding to a new collaborating user when the new collaborating user connects to the host server. In an embodiment, the new collaborating user comprises at least one of: a first user in the collaborating group who connects to the host server at an initial point-in-time or a subsequent user in the collaborating group who connects to the host server at a subsequent point-in-time. In an embodiment, the second program instructions include instructions to key to a collaborating group the shared part of the user interface displayed as each local user interface corresponding to the one or more collaborating users. In an embodiment, the third program instructions include instructions to share between the one or more collaborating users one or more customized widgets used to render the shared part of the user interface displayed as the local user interface on the client program corresponding to the one or more collaborating users. Furthermore, the computer program product comprises fourth program instructions to update the shared part of the user interface displayed on the each local user interface corresponding to the one or more collaborating users when a change is made to the shared part of the user interface by any of the one or more collaborating users. In an embodiment, the fourth program instructions include instructions to transmit over the network the change made to the shared part of the user interface displayed as the local user interface using a protocol chosen from an Internet protocol suite. In an embodiment, each of the first, second, third and fourth program instructions are stored on the computer readable medium. In an embodiment, both the collaboration application and the collaboration server application are applications written in an object-oriented programming language, for instance, the Java programming language.
Referring now to
In general, a user A 830 interfaces with infrastructure 802 for accessing a collaboration application, for instance, a collaboration application 818 deployed on the computer system or server 804 for collaborating with other users over a network, such as the network 500 shown in
Computer system or server 804 is shown to include a CPU (hereinafter “processing unit 806”), a memory 812, a bus 810, and input/output (I/O) interfaces 808. Further, computer system 800 is shown in communication with external I/O devices/resources 824 and storage system 822. In general, processing unit 806 executes computer program codes, such as the collaboration server application 814 or program code stored in memory 812. Similarly, processing unit 806 executes the computer program code for the JVM (Java Virtual Machine) 816 having customized or multiple-peer widget libraries 816, and the collaboration application 818 that is metric collector and transmitter script inserted within each of the other web pages 816, 818 and 820. While executing the collaboration application 818 using the JVM (Java Virtual Machine) 816 having customized or multiple-peer widget libraries 816, the processing unit 806 can read and/or write data, to/from memory 812, storage system 822, and/or I/O interfaces 808. Bus 810 provides a communication link between each of the components in computer system 800. External devices 824 can comprise any devices (e.g., keyboard, pointing device, display, etc.) that enable a user to interact with computer system 800 and/or any devices (e.g., network card, modem, etc.) that enable computer system 800 to communicate with one or more other computing devices.
Computer infrastructure 802 is only illustrative of various types of computer infrastructures for implementing the invention. For example, in one embodiment, computer infrastructure 802 comprises two or more computing devices (e.g., a server cluster) that communicate over a network to perform the various process steps of the invention. Moreover, computer system 800 is only representative of various possible computer systems that can include numerous combinations of hardware. To this extent, in other embodiments, computer system 800 can comprise any specific purpose computing article of manufacture comprising hardware and/or computer program code for performing specific functions, any computing article of manufacture that comprises a combination of specific purpose and general purpose hardware/software, or the like. In each case, the program code and hardware can be created using standard programming and engineering techniques, respectively. Moreover, processing unit 806 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 812 and/or storage system 822 can comprise any combination of various types of data storage and/or transmission media that reside at one or more physical locations. Further, I/O interfaces 808 can comprise any system for exchanging information with one or more external devices 824. Still further, it is understood that one or more additional components (e.g., system software, math co-processing unit, etc.) not shown in
Storage system 822 can be any type of system (e.g., a database) capable of providing storage for information under the present invention. To this extent, storage system 822 could include one or more storage devices, such as a magnetic disk drive or an optical disk drive. In another embodiment, storage system 822 includes data distributed across, for example, a local area network (LAN), wide area network (WAN) or a storage area network (SAN) (not shown). Although not shown, additional components, such as cache memory, communication systems, system software, etc., may be incorporated into computer system 800.
The foregoing descriptions of specific embodiments of the present invention have been presented for the purpose of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.
Claims
1. A method of building a collaboration server for facilitating deployment of a collaboration application, said method comprising the steps of:
- installing a collaboration server application on a server connected to a network and being configured to run a collaboration application using one or more customized user interface libraries having collaboration functionality, each of said one or more customized user interface libraries being configured to create one or more customized widgets capable of mapping to one or more peer widgets;
- deploying a collaboration application on said server, wherein a user interface of said collaboration application is written using one or more standard user interface libraries; and
- launching execution of said collaboration application on said server when one or more collaborating users of a collaborating group connect to said server over said network, such that a rendering of a shared state of said user interface is displayed on a client corresponding to each of said one or more collaborating users connected to said server.
2. The method according to claim 1, further comprising the step of:
- when a new collaborating user connects to said server for collaborating with said one or more collaborating users, displaying said shared state of said user interface on another client program corresponding to said new collaborating user.
3. The method according to claim 2, further comprising the step of:
- when a change is made to said shared state of said user interface by a collaborating user among said one or more collaborating users, broadcasting said change made to said shared state to a remainder of said one or more collaborating users.
4. The method according to claim 3, wherein said displaying step further comprises the steps of:
- keying said shared state of said user interface to said collaboration group;
- storing said shared state of said user interface on said server; and
- displaying said rendering of said shared state of said user interface on said another client program corresponding to said new collaborating user upon launching of said collaboration application when said new collaborating user connects to said server.
5. The method according to claim 4, wherein said broadcasting step further comprises the step of:
- issuing a notification to each client program corresponding to said remainder of said one or more collaborating users, such that said rendering of said shared state of said user interface is updated to reflect said change made to said shared state of said user interface.
6. The method according to claim 5, wherein said new collaborating user comprises at least one of: a first user in said collaborating group who connects to said server at an initial point-in-time and a subsequent user in said collaborating group who connects to said server at a subsequent point-in-time.
7. The method according to claim 6, wherein said change made to said shared state of said user interface is broadcasted across said network using a protocol chosen from an Internet protocol suite.
8. The method according to claim 7, wherein said collaboration application comprises an application written in an object-oriented programming language; and wherein said collaboration server application comprises an application written in an object-oriented programming language.
9. A system for facilitating collaboration in an online collaborative environment, comprising:
- a collaboration server application installed on a server coupled to a network and being configured to run a collaboration application using one or more modified widget libraries comprising of one or more customized widgets, each customized widget of said one or more customized widgets being configured to map to one or more peer widgets created on one or more local user interfaces corresponding to one or more collaborating users connected to said server; and
- a collaboration application deployed on said server, said collaboration server application being configured to run said collaboration application on said server when a collaborating user connects to said server, such that a shared part of a user interface of said collaboration application run on said server is stored on said server in order to display said shared part of said user interface on each local user interface corresponding to each of said collaborating users connected to said server and wherein any change made to said shared part of said user interface displayed on a local user interface of a collaborating user among said collaborating users is broadcasted and displayed on each remaining local user interface corresponding to each remaining collaborating user among said collaborating users connected to said server.
10. The system according to claim 9, wherein said collaboration server application is configured to key said shared part of said user interface to a collaboration group comprising of said collaborating users.
11. The system according to claim 10, wherein said collaboration server application is further configured to display said shared part of said user interface on a local user interface of a new collaborating user when said new collaborating user connects to said server; and wherein said new collaborating user comprises at least one of: a first user in said collaborating group who connects to said server at an initial point-in-time and a subsequent user in said collaborating group who connects to said server at a subsequent point-in-time.
12. The system according to claim 11, wherein said collaboration server application is further configured to issue a notification to said each local user interface corresponding to said each remaining collaborating users of said collaborating users connected to said server in order to update and display said any change made to said shared part of said user interface.
13. The system according to claim 12, wherein said collaboration application comprises an application written in an object-oriented programming language; and
- wherein said collaboration server application comprises an application written in an object-oriented programming language.
14. The method according to claim 13, wherein said change made to said shared state of said user interface is broadcasted across said network using a protocol chosen from an Internet protocol suite.
15. A computer program product for building a collaboration server application that facilitates deployment of a collaboration application, said computer program product comprising:
- a computer readable medium;
- first program instructions to install a collaboration server application on a host server connected to a network, said collaboration server application being configured to run a collaboration application using customized widget libraries comprising of one or more customized widgets, each of said customized widgets being capable of creating one or more peer widgets on each local user interface of a client program corresponding to each of one or more collaborating users connected to said host server;
- second program instructions to run on said host server a collaboration application deployed thereon, said collaboration application having a user interface written using one or more standard widget libraries;
- third program instructions to display a shared part of said user interface of said collaboration application on a local user interface of a client program corresponding to a new collaborating user when said new collaborating user connects to said host server;
- fourth program instructions to update said shared part of said user interface displayed on said each local user interface corresponding to said one or more collaborating users when a change is made to said shared part of said user interface by any of said one or more collaborating users; and wherein said first, second, third and fourth program instructions are stored on said computer readable medium.
16. The computer program product according to claim 15, wherein said second program instructions include instructions to key to a collaborating group said shared part of said user interface displayed as said each local user interface corresponding to said one or more collaborating users.
17. The computer program product according to claim 16, wherein said third program instructions include instructions to share between said one or more collaborating users one or more customized widgets used to render said shared part of said user interface displayed as said local user interface on said client program corresponding to said one or more collaborating users.
18. The computer program product according to claim 17, wherein said new collaborating user comprises at least one of: a first user in said collaborating group who connects to said host server at an initial point-in-time and a subsequent user in said collaborating group who connects to said host server at a subsequent point-in-time.
19. The computer program product according to claim 18, wherein said fourth program instructions include instructions to transmit over said network said change made to said shared part of said user interface displayed as said local user interface using a protocol chosen from an Internet protocol suite.
20. The computer program product according to claim 19, wherein said collaboration application comprises an application written in an object-oriented programming language; and wherein said collaboration server application comprises an application written in an object-oriented programming language.
Type: Application
Filed: Oct 12, 2006
Publication Date: Apr 17, 2008
Applicant: International Business Machines Corporation (Armonk, NY)
Inventor: Cohan S. Carlos (Raleigh, NC)
Application Number: 11/546,691
International Classification: G06F 15/16 (20060101);