I just read the thread regarding "better employee management" where people are looking for ways to categorize and list subcontractors and freelancers based on their skill level/skill set. This is an application for metadata.
You create a Search Template called Programmers, and you create several custom fields, such as numeric proficiency fields for several languages. In the html document you enter text explaining that proficiency is 0 to 9 where 0 = no ability and 9 = high ability (in the short term we don't check for valid values, but in the long term, we should be able to specify numeric type and range). So we have 4 proficiency fields named PHP, Java, Perl, and Python. Another custom field called punctuality which specifies how often they are late with assignments. On and on, you get the picture... We click a checkbox to identigy this html document as a Search Template, and save it. 2 new fields need to be added to the documents table to make this work. One field is a boolean data type, it just identifies this template as a search template. The other field is a numeric or integer data type (I'm not a php guy, so I can't get specific here). This field is automatically set to a unique (autoincremented) value. That is the unique "search template ID". To attach subcontractor metadata to a company or contact, we create a new html document from that template. Whenever we create a new document from an existing search template, OpenGoo automatically copies the search template ID from the search template into the new document. We fill in the custom fields with whatever metadata we have defined for that template, save the document, and attach it to the company or contact. Now when we want to search for subcontractors, we pull up the subcontractor search template, and fill in the custom fields with the metadata that we are looking for. Blank custom fields are ignored, and (thanks to some php and sql majic from the OpenGooRoos) OpenGoo searches for documents that match the search template ID, and whatever custom fields are filled in.
Probably a lot of code, but it would provide a LOT of power, and integrate smoothly into the OpenGoo linked objects framework.
In terms of selecting contacts to assign tasks, if you could select this metadata search to populate the list of contacts to choose from, that would be sweet! You could even have a special field in the search template document that would allow you to select which custom field would be used to order the list.
And because this uses the existing linked objects framework, this metadata search could be used for anything you store.
Pretty powerful stuff!
- Paul