How does the system know which client specification to use?
Answer: a user has to acquire a clientSpec object to be able to do any of the related operations: get object to a local file, check-out, check-in, etc.
"Acquire a clientSpec" means telling the system that a specific client specification is going to be used for all subsequent operations, and associates the clientSpec object with the user and the client computer.
A client specification can be acquired only by one user on one client computer at a time. When a client specification is acquired it is associated with the login that acquired it. When the user logs-out – or when the login expires - the clientSpec is released – i.e. marked as free to be acquired by someone else.
Note that it is possible that a user logs-in multiple times from the same client computer. In this case each login can acquire the same client specification, and the client specification will be released with the last log-out – or when the last login expires. See also Persistent check-out.
When a client specification is acquired by a user, the client computer IP address and associated logins are stored in the clientSpec object attributes: inUseUserRef, inUseIP and inUseLogins. For example:
<clientSpec name="MiMoPC" host="MIMO-PC" >
. . .
<inUseUserRef idref="obj1602" />
<inUseIP>192.168.1.43</inUseIP>
<inUseLogins>
<item>1388606d-5655-4e48-889f-0030f9dc1ad4</item>
</inUseLogins>
</clientSpec>
This is an example of the exported XML of a clientSpec object that has been acquired by the user with id 1602 from a client computer with IP 192.168.1.42 and a single login identified by the long string of hex numbers (that is the GUID of the login).
Note that inUseLogin is a list since there can be more than one login acquiring the same clientSpec .
Attempts to acquire a client specification that has already been acquired by a different user or on a different client computer fail with an error 1207:
The client specification '<NAME>' (id: <ID>) is already in use by <USER> connected from <ADDRESS>.
The currently acquired client specification can be seen using the cmd4 command ‘who’:
> who
Connected to 'http://localhost/GN4/Int/AdminSrv.asmx' as Michele Mottini [id: 1602]. Login
session '1388606d-5655-4e48-889f-0030f9dc1ad4'
Client specification 'MIMO-PC' [id: 2825]
If no client specification has been acquired:
> who
Connected to 'http://localhost/GN4/Int/AdminSrv.asmx' as Michele Mottini [id: 1602]. Login
session 'df81620c-aa3c-4dc8-98dc-269dca8e68e5'
No current client specification