The VDF tracks two types of properties: client properties and server properties. If you have been using the web service API for a while, you are probably already familiar with server properties. But client properties is a new concept in the Vault API.
Both client and server properties are displayed in the Vault grid controls. As an end user, you probably didn’t care which was which. But if you program with the VDF, you will start to notice and appreciate the differences.
These are properties that live on the server. If you want to interact with these properties, it involves a web service call. Likewise, adding a new property is done by making web service calls. A server property value will be the same for all users. Lastly, server properties are indexed and can be used in a search.
These properties are set by the client and are not known by the server. Since the server doesn’t know about these properties, it can’t index or search on them. You interact with client properties through the VDF. You can add your own properties by implementing an interface and registering it with the VDF. I’ll cover that in another article.
Client properties may have different values depending on the user. The file status icon is a good example. One user may see a file as "out of date" while the other sees it as "no local file".
You can tell if a property is a client or server property by checking IsCalculated on PropertyDefinition. That’s the VDF PropertyDefinition class, which is in Autodesk.DataManagement.Client.Framework.Vault.Currency.Properties. Not to be confused with the web service class in Autodesk.Connectivity.WebServices.PropDef. Anyway, if IsCalculated is true, then it’s a client property.
Uses for Client Properties
Since you can define your own client properties, the possibilities are limitless. Out of the box, here are some of the ways that client properties are used.
Mixing client and server data - The algorithm involves grabbing some server data, cross-referencing it with local data and displaying a value unique to the current user. Examples include the File Status Icon and the File Extension Icon.
Modification of server properties - This is basically a server property displayed it a different way. Examples include (Date Only) and (Time Only) properties and the Entity Icon.
Display of non-property server data - Sometimes data from a server is not a property but you want to show it in the grid. The Path property is a good example.