Metadata in Livelink (Yawn ContentServer) is mostly by a Object Called Categories.A Category Object again is of subtype 131 and it can have versions.Its content or version file looks like XML and translates the data structure for use with Livelink.When some one adds a Category to an Object like Document,Folder etc what you are essentially doing is requesting the latest copy of the Category Template(131) or it will be the Category applied to the parent container.Then it goes through an oscript/weblingo layer where it paints the structure like is it a Text? is it Mandatory and so on.Increasingly I see OT advising customers to use SETS and that too with Multiple Values.I tried to stay away from SETS in my design because it is next to impossible to write reports when there is more than one value involved 🙂
A Picture is worth a thousand words so I am showing a Category called SapCategory as you can see I have some that are very self descriptive however these terminology is probably worth understanding.In Livelink projects you will affix useful metadata{ a set of categories(131), some Classifications(199) or RM Classifications (551) }.OT has prided itself on capability of its search and indexing engine(after all OT was the first guys to index the OED and that greatly increases the work they put in this ) so all this metadata that you put and inherit it down to millions of items is supposed to find you patterns of knowledge in your organization.The xECM side of the house puts technical categories so does AGA so that in first shot looking at the object metadata one can even say what it purports to be.Classifications and RM Classifications look like category metadata but they allow alternate taxonomies and navigation structures.
MVA-Multi Valued Attribute indicate by the + and – signs.In any case if you only have one Value also it is internally a List of values.On top of it now all Livelink servers can have that in more than one language . OT does not the make category metadata multi language but our good friends at Cassia ECM make it and sell it through OT.
Set -The Set is a place holder where in you can define more and more primitive datatypes and it looks aesthetically pleasing(?) or even easier to understand data.Both Sets and Categories subtype will say AttrType=-18 and AttrID indicates the position.
For techies see my revelation to the world I think the link is permanently lost
There is a simple Request Handler called attributes.dump ( perhaps it is hidden in the admin.index pages and you might need a SA prv) you will see that the Set Identifier does not have a Attribute ID
Nobody from OpenText has told the programming world or developers how to look at this DataStructure well not in so many words at least.. Everyone is using their own methods do something.How many SET parsing/example requests happen in the OT KB and OT answers cryptically? Or as a Java or a C# programmer is one supposed to be that intelligent to figure everything out? I believe it is very shortsighted of OT to push towards their professional services,or WebReports to achieve anything and everything.Since the move from LAPI some hobby programmers have shown the parsing.I have had countless requests from developers who wanted to see how to go about it so this is a way to help them. Actually since all ReturnValues are coded for OOP apparently this is much easier than in LAPI days but still a new programmer cannot be expected to become a livelink knowledgeable person for participating in one project.
Imagine a Node Object like Document or Folder has had a category attached,then its values are in its MetaData Object.The MetaData Object consists of AttributeGroups which are akin to List of Categories.So if you have applied 7 Categorise expect 7.These 7 will show you empty shells or filled shells of information.
So I have this and another category attached /applied to an object
As you can see those are the two categories or an AttributeGroups Object of two AttributeGroup.OK so if you isolate one AttributeGroup you will get the individual keys(Attributes).OK then you need to test/cast these complex structures from their Livelink given out DataValue to things people can understand Namely StrinValue,IntegerValue and DateValue.Now if a Set is encountered you will get a TableValue object.Now the TableValue will contain a excel row like representation and is a RowValue Object.Once you isolate the RowValue into its DataValue you will get its IntegerValue,StringValue and such like.Good thing they did not allow a Set inside a Set 🙂
The key of an Attribute is made up of <category dataid>_<version>_<attributeID>
So hopefully the code I post in C# helps a poor soul.Now please understand that the Category Data Structure is a pretty complicated way how the Data is shown,how the Data is held in a Table and how the reporting table has been considered. When we were in the LAPI era the entire structure was given to you as a LLValue Object out of which you had to get the Types isolated and program.This was me in 2004 battling out a worked out example in LAPI documentation which actually did not work if you actually cut and pasted the sample.So I just took it as a challenge and trying to learn the OT debugger and its Script actually helped me with it
Link to Code File coming soon 🙂 One thing I noticed in 2017 against CS16 is now OT has already built a category called “External Att” with some commonly asked of functionality Good Job…
Hopefully they might be trying to get rid of the “Additional Node Attributes” piece in OT
Screen Cap of when I run the code against a Node in LL.You can optimize the loops when you understand how the code is supposed to be written.Frankly my intention is to show you how to iterate the DataStructure.
A C# file that I wrote that takes a NodeID in Livelink and spits out Category Info
Including Sets & MVA