Hi,
Can some one tell me that is there a mapping method underneath to translate the url to folder structure behind the scene?
For example, the url for [Test Folder] in my personal workspace is http://devecm1/OTCS/llisapi.dll?func=ll&objtype=142&objaction=browse, which doesn't make any sense to me, however, in code we can use DocumentManagementClient to access this location by nodes reflecting folder structure. What's the mapping between them?
Thanks,
Di
did you try to use webdav. With web dav you can map any folder to a drive letter.
Hi Di,
A URL simply represents a type of request to Content Server.
The response from Content Server could be anything, however, there are some common patterns used in ?func=ll requests that you can look for.
&objType=# is used for obtaining an object by SubType. This implies that there is only one relevant node in the system for the given SubType. In the example below, SubType=142 means “Personal Workspace”, so the only relevant node for you is your own personal workspace. The CWS equivalent of this is DocumentManagement.getRootNode().
&objID=# is used for obtaining an object by DataID. This is used to access nodes regardless of where they are in the system. The CWS equivalent of this is DocumentManagement.getNode().
&objaction=<string> is used to determine what action to perform on the node once we’ve obtained it. In the example below, you are going to “browse” the personal workspace.
Other examples are “open”, “properties”, “create”, “delete”, etc.
Now back to your question about translating a URL into a folder structure…
Given that the URL doesn’t define a path in this fashion, no, you cannot do it from these URLs.
However, for items that are marked as relative link MIME types ([filters] relativeLinkMimeTypes setting in the opentext.ini file), those items, when opened, will have a full path as their fetch URL, containing each node ID up to the root of the volume they’re in.
For your programmatic purposes, I’m not sure if CWS offers a way to obtain the object’s full path. This would be a good feature request.
However, if the node is pulled back via a search, the OTLocation region will provide you with the full path to the object.
Kyle
Thank you very much Kyle for the detailed response.
When I get the node from GetNodeByPath/GetNodeByName, there is no OTLocation attribute under it. The only similar attribute is "Position" with null value. Can you tell me a little bit more about the meaning of "if the node is pulled back via a search" as you said?
I literally meant search, as in use of the SearchService, or the ?func=search RESTful API.
You can execute a search for a specific node and inspect the element SearchResult/OTLocationPath to get the node path. However, if the nodes you process do not come from a search already it would be like taking a sledgehamer to crack a nut... If you want to get the node path you could have to write your own web service (LAPI function or HTTP request handler) in OScript returning result of LLNode.NodeFullPath. Some OT products did it.
--- Ferda