Wednesday, June 10, 2009
Tuesday, June 9, 2009
Virtual Documents in Documentum
Virtual document versions
Version labels can be managed for a Virtual document in one of two ways –only for the root Virtual document object or for the entire Virtual document including its components and all indirect descendents.
Binding rule:
1,use the current version of the component document.(by default )
2,use a specific version number of the component document.
3,use a specific version label of the component document.
4,Do not fix a specific version and allow the component version to be determined at snapshot time.
Snapshot:
When you call the freeze () r_immutable_flag will be set to true by content server also r_frozen_flag will also be set to true by the content server.
+ Cannot add or delete components from the Assembly
+ That version of the component will be frozen
- Can’t change contents or attributes
- Assembly Document will be frozen
- Can’t change contents or attributes
Unfreeze
+ May add or delete from the Assembly again
+ That version of the component is unfrozen
- r_frzn_assembly_cnt = 0
- Can change contents and attributes
+ Only works if it is not nested within another frozen Assembly
Note
• A Virtual Document object may or may not have a content (dmr_content) attached to it but a folder or a cabinet will never have any content attached to it. Though most of the time a Virtual Document might not be having a Content file attached to it.
• Any Object type that extents from SysObject can be converted as a Virtual Document. The Attribute r_is_virtual_doc (integer not a Boolean) of SysObject determines whether that object is a virtual document or not. If the value is 1 then it’s a Virtual document. If its value is 0 and the property r_link_cnt value is not higher than 0 then that object is not a Virtual Document
• The Contents of the Virtual document can be of different object types.
• The Virtual Documents can be versioned and managed in the same way as you do with any other objects.
• The Virtual documents are composed of various components, each components are nothing but individual objects.
• The containment objects (dmr_containtment) stores the information about the individual components of a Virtual Document. Every time when you add a new component to a virtual document a new dmr_containtment object will be created.
DQLs
SELECT ‘object_name’ in dm_sysobject IN DOCUMENT ID (‘r_object_id_of_virtual_document’);
SELECT ‘object_name’ in dm_sysobject IN DOCUMENT ID (‘r_object_id_of_virtual_document’) DESCENT
SELECT ‘object_name’ in dm_sysobject IN DOCUMENT ID (‘r_object_id_of_virtual_document’) VERSION 1.1
FREE EMC Documentum Developer Edition
Content Server and DMCL
However the finger of blame sometimes gets pointed at the DMCL even when it is unlikely to have any connection with the problem in hand. An example is internal processing failures of the Content Server process. I have seen people (including Documentum support) suggest dmcl cache clearing even for problems that arise inside Content Server processes. One of the keys to troubleshooting is using an understanding of how applications are architected to rule out certain explanations for the error.
The figure below shows a typical Documentum technology stack. This particular example is for a web browser accessing WebPublisher but you will see a similar picture for other client applications. The key here is that DMCL is a client library. Content Server exposes all its functionality via a set of (undocumented) server functions that are accessed via a Remote Procedure Call (RPC).
The DMCL is a linked library inside the client application – a DLL in windows, shared library in Unix. The DMCL takes documented API calls made by the client application and maps them to Server RPC functions that can be executed by the Content Server. Once the call has arrived inside the Content Server process the processing is no longer affected by the DMCL environment. In fact the DMCL thread that made the call will simply be sleeping awaiting the results of the processing from the server.
The really confusing part is that DMCL is included with the Content Server installation. The reason is that much of the functionality that is associated with the Content Server is actually implemented in external methods. In these cases the external method is a client of the Content Server and will utilise DMCL (via the API) to do its work. So really you need to be clear where the error is originating from. Does it arise from the external method code or does it arise from processing inside the content server?