1. Field of the Invention
The invention relates generally to xe2x80x9cteamware,xe2x80x9d a category of software that enables a team of people, especially people distributed over multiple locations, to collaborate on projects. More specifically, the invention relates to methods and systems for executing transactions between teamware workspaces.
2. Background Art
One of the major challenges in developing large-scale (multi-platform) software is coordinating the activities of a team of people, i.e., developers, testers, technical writers, and managers. To improve productivity, time-to-market, and quality of the software, the various phases of the development life cycle typically evolve concurrently, i.e., in parallel. Concurrent software development requires that the developers have access to common software base for the purpose of developing and building the software. The main challenge with this type of development process is how to control access to the software base and track the changes made to the software base so that the integrity of the software base is maintained. It should be noted that at any point in time, various configurations of the software base may exist because the various phases of the development cycle are evolving concurrently.
Most development teams use a Software Configuration Management (SCM) system to manage the software base. SCM systems, such as Concurrent Versions System (CVS), track the changes made to the files under their control and facilitate merging of code. Sophisticated SCM systems, such as Rational(copyright) ClearCase(copyright) from Rational Software Corporation and Forte(trademark) TeamWare from Sun Microsystems, Inc., provide other capabilities such as software building and process management (e.g., what changes can be made to the software base and who can make the changes).
SCM systems, such as Forte(trademark) TeamWare, allow creation of one or more isolated workspaces (also known as sandbox). The term xe2x80x9cworkspace,xe2x80x9d as used herein, refers to a directory, its subdirectories, and the files contained in those directories. Typically, the files are maintained under a version control system, such as Source Code Control System (SCCS) or Revision Control System (RCS). To use Forte TeamWare, for example, the developers initially place their project directories and files (if available) in one high-level directory. Forte(trademark) TeamWare then transforms the high-level directory into a top-level (or parent) workspace. If project directories and files are not available, an empty parent workspace is created. After creating the parent workspace, the developers create their own child workspaces with copies of the parent workspace files. The developers can then modify individual versions of the same file in their child workspaces without interfering with the work of other developers. After the files are modified in the child workspaces, they are merged and copied to the parent workspace. Merging of files generally involves resolving conflicts between individual versions of the same file.
Transactions between a child workspace and a parent workspace generally revolve around three relationships: bring over files from the parent workspace, modify files in the child workspace, and put back files to the parent workspace. Forte(trademark) TeamWare (version 6) as currently implemented only supports transactions between two local workspaces. Two workspaces are xe2x80x9clocalxe2x80x9d if local access methods or standard network file sharing protocols, such as Network File System (NFS) on UNIX(copyright) or Server Message Block (SMB) on Windows(copyright), can be used to transfer files between the workspaces. NFS, for example, operates as a client-server application. A computer that shares its resources with other computers on the network using the NFS service is known as an NFS server. The computers sharing the resources of the NFS server are known as NFS clients. Using NFS service, a resource physically linked to a NFS server may be NFS mounted. Once the resource is NFS mounted, it becomes accessible to all NFS clients as if it were stored locally at each client. Similarly, SMB server provides file sharing services to SMB clients.
Typically, the parent workspace is located on a different machine than the one on which the child workspace is located. In this arrangement, the computer on which the parent workspace resides can be referred to as a server, and the computer on which the child workspace resides can be referred to as a client. Thus, if the server is a UNIX(copyright) system and the client is a Windows(copyright) system, either the server would have to install an implementation of SMB or the client would have to install an implementation of NFS to execute transactions between the workspaces. In other words, both the server and client are required to have an implementation of the same file sharing protocol to execute transactions between the workspaces. This may not always be possible or convenient because there are several operating systems on the market and an implementation of a particular file sharing protocol may not be available for all operating systems. In this situation, a mechanism that allows transactions between workspaces to be executed regardless of the operating system of the client and server computers is desired.
In one aspect, the invention relates to a method for remotely accessing a resource in a network having a client-side and a server-side. The method comprises calling a method of a proxy object at the client-side, converting the call for the method of the proxy object to a request, transmitting the request to the server-side, and invoking a servlet at the server-side to generate a response to the request. The servlet delegates processing of the request to a server object having access to the resource.
In another aspect, the invention relates to a method for executing transactions in a network having a client-side and a server-side. The method comprises requesting access to a remote workspace by calling a method of a proxy object at the client-side, converting the call for the method of the proxy object to a request, transmitting the request to the server-side, and invoking a servlet at the server-side to generate a response to the request. The servlet delegates processing of the request to a server object having access to the remote workspace.
In another aspect, the invention relates to a method for executing transactions in a network having a client-side and a server-side. The method comprises requesting access to a remote resource by calling a method of a proxy object at the client-side, converting the call for the method of the proxy object to a request, transmitting the request to the server-side using HTTP protocol, and invoking a servlet on the server-side to generate a response to the request. The servlet delegates processing of the request to a server object having access to the remote resource.
In another aspect, the invention relates to a system for remotely accessing a resource in a client-server network. The system comprises a server application having at least one server object that can access the resource, a client application comprising an interface through which a method of a proxy object can be called locally and converted to a request, a servlet that delegates processing of the request to the server object, and a connection for sending the request to the servlet.
In another aspect, the invention relates to a software configuration management system which comprises a server application having at least one server object that can access a workspace, a client application comprising an interface through which a method of a proxy object can be called locally and converted to a request, a servlet that delegates processing of the request to the server object, and a connection for sending the request to the servlet.
Other aspects and advantages of the invention will be apparent from the following description and the appended claims.