Enterprise Data Bridge
So, the Groove client is a web services server. But most users carry their Groove around -- I have my account on a laptop, which follows me everywhere, so connecting this to "central" enterprise systems is only possible if I'm in the office, on the white wire, and logged in. Not exactly 24/7.
Enter the Groove Enterprise Data Bridge Server (EDB). EDB is a server-based version of Groove, designed for scale and availability. It has most of the same functions as a Groove workstation (and several more) - but its only UI is for administrative purposes. EDB runs as a service, and it's supported on Windows 2003 servers.
Functionally, EDB behaves like any other Groove identity: you can invite EDB into a workspace, and it'll keep a synchronized copy of the space on disk. The EDB identity appears in the member-list; you can send it instant messages, to which it might respond (if there's code to handle the messages, rather than a person sitting at the console!). But EDB will usually be running in a server rack at your data centre. This means it'll have direct, high-availiability access to whichever company resources you need it to connect with: databases, file servers, and so on. Think of EDB as the "data tier" in a Groove systems architecture (since Groove isn't a client/server system, calling EDB a "server" can be confusing).
There are a few big differences from the client:
- There's no user interface to workspaces and tools. So all the overhead of running the UI components is gone; EDB is just about workspaces and data. It also has more aggressive cache management than the client; the net result is that EDB can be an active member of thousands, not hundreds, of workspaces.
- The web services HTTP server is substantially beefier than on the client. (The APIs are exactly the same, except that EDB doesn't implement the "local" web service which can open Groove UI on a client). In fact, EDB's main usage is as a high-volume server for Groove Web Services access to workspaces and their contents.
- For lots of memory headroom, EDB can use the Windows /LARGEADDRESSAWARE boot flag.
Since most people won't ever see EDB in action, here are a few screenshots from my development machine.
EDB's main user interface screen. On the left: a navigation tree, showing the services (ie. the Groove identities installed on this server); policies (for granular control over which tools can be installed); and logging. On the right: the main status controls, and the server's contact list; this is the equivalent of a workstation's "personal contact list".
Automatic invitation processing for my EDB-6 identity. In this case, the server will run a script to determine whether or not to join a workspace to which it's invited (based on the workspace, or the invitor, or whatever).
The workspaces which are currently present on the server (these are all test spaces called "HFPVM - Lab <n>"), and the tools in one of the workspaces (all are Forms tools, in this example). The "Config" tool (and all the others, actually) has a Groove Forms Sequence Time Extension attached to it; that's a "bot", shipped as part of EDB, which creates a special sequence timestamp field for any Forms deltas arriving at the server, which in this case I'm using as the watermark for incremental data synchronization with SQLServer.
The interesting applications for EDB are where a GWS application (a .NET app or service, for example) communicates with the server. For example, you can have a permanently-running application synchronize data in EDB's workspaces, continously, with an external database; or even move data between one workspace and another. Or you might have a central application using SQLServer, and when particular events happen, have EDB create a new workspace, add some tools, populate a Forms tool with data from the central system, then send invitations out to mobile Groove users; and synchronize those users' activities with home base.
Soon I'll talk in some detail about real-world examples of this "orchestrated integration" story -- they're really central to how Groove usage can be bootstrapped. Meanwhile, next on my agenda is some proper code using GWS in a simple way you can try at home.