A Channel provides the basic mechanism to connect parties. It supports passing web service calls between workers using public/private key pairs, and supports logging of the calls. Instances of Channel implement one end of the channel, and communicate with a paired instance of Channel in a partner.
Pairing requires identifying where to find the other partner, a unique identifier, and a public/private key pair.
The channel for the other partner can be on the same server (local) or a different server (remote). This is indicated bythe Remote partner flag.
Local partners are identified by a node reference or a link to the partner's channel node, held in the Partner node. This will be held as a link if permissions allow, or a node reference if not.
Remote partners are identified by a URL stored in Partner URL, which is the URL for the partner's channel node, with ?method=service appended. This is used for web service calls to the partner's channel.
The Channel identifier identifies one end of the channel. It must be the same as the Partner identifier at the other end. This is reciprocal: each Partner identifier must be the same as the other Channel identifier.
Additional fields are used to summarise the information required to connect to the other partner's child, plus capabilities to export and import a channel's information for easy connection.
In the admin tab, fields are used to control what calls are logged, and the retention period for logs.
The channel supports four methods.
|Script||Receive incoming calls (i.e. calls from the other end of the channel). This is the default method.|
|Send||Send data to the other end of the channel.|
|Register||Register a worker with the channel so that it can receive service requests through it.|
|Get File URL||Used to retrieve file details - see Process client URLs. Currently not implemented.|
The channel has to keep track of all its associated workers. It does this by holding within it a Channel Worker for each worker, the local reference of which is derived from the Process identifier used to identify the process and the Role that identifies the worker's role in the process.
Each Channel Worker contains within it a record of each request sent to or from the worker, held as a Channel Event. This records the data sent from or to the partner, both in its raw form (with signatures) and in its decoded form. This provides a complete audit trail of the collaboration. Holding the raw data, with signatures, provides a non-repudiable record of exactly what the partner sent.
A Connection is an extension to the Channel. It provides all the capabilities of a channel, but adds capabilities that make it easier to build applications around the Channel. This includes:
- Creating a group which should hold workers associated with the channel and through which the channel can be configured. A link to the group is held in Connection group.
- Managing permissions to use the channel. The user groups to which channel permissions are granted are held in the User groups field defined on the connection group.
- Managing anonymous execution permissions, which are required to access the connection remotely without user credentials.
- Automatically creating a Control worker to handle incoming requests for creating new workers.