Hello,
I would like to expose you the DCTM BOF Business Object Framework (BOF) which is the object oriented framework provided by Documentum to build, deploy, test and execute reusable business logic component known as Business Objects.
Types of BOF Modules:
- TBO – Type Based Business Object
- SBO – Service Based Business Object
- Aspects
- Simple Module
https://www.emc.com/collateral/software/white-papers/h8832-documentum-business-object-framework-wp.pdf:
BOF offers the following capabilities:
-
- Customization of Documentum functionality in one of the following ways:
+ Extend core Documentum functionality
+ Add or modify existing Documentum types and their behavior
+ Add new attributes and behavior dynamically to individual object instances - Centralization of Documentum functionality:
+ Client independence
BOF allows developers to install BOF modules containing business logic solutions directly on the repository, to allow DFC-based client applications to access them without explicitly adding the module JAR files locally. The underlying DFC framework ensures that the module JAR files are dynamically and transparently downloaded to the client system from the repository through the dynamic delivery mechanism. This relieves the end user from explicitly copying custom solution JAR files to each client machine or the application before accessing them.
+ Hot deployment
This feature allows developers to upgrade the business logic implementation by installing the updated module directly into the repository without restarting the application server or the client application. The underlying DFC framework automatically detects the modules that have changed, and updates the client cache transparently, relieving the end-user from explicitly updating classes and JARs on the client systems.
+ Reusability
Developers can write the business logic implementation once, and any DFCbased application can reuse it. This feature reduces development time and effort. - Abstraction of the business logic from the presentation
+ This feature allows two different teams to work in parallel. While one team implements the business logic, the second team works on the presentation, simultaneously. This promotes separation of concerns and allows the developer to build the solution quickly.
+ Developers can change the business logic and redeploy it without changing the presentation layer implementations.
- Customization of Documentum functionality in one of the following ways:
BOF Module Caching
A client machine refers to the machine running an application server with Documentum Webtop, Documentum Administrator (DA), or any DFC-based client application. DFC maintains a BOF cache where the interface and implementation JAR files of TBOs, SBOs, and other modules are downloaded and cached on the client machine. The location of the BOF cache on the client machine can be specified by setting the dfc.cache.dir property in the dfc.properties file. Its default value is the cache subdirectory of the directory indicated by the dfc.data.dir property in the dfc.properties file. The BOF cache is shared among all the applications that use the same DFC installation.
Structure of the BOF DFC-based client cache (module cache): \cache\6.7.2000.0038\bof\MY_DOCBASE_DEV\
090xxxxxxxxxxxc4c.jar
090xxxxxxxxxxx20.jar
…
DCTM SBO (Service based Business Object)
- SBO’s are part of Documentum Business Object framework
- SBO’s are not associated with any repositories
- SBO’s are not associated with any Documentum object types.
- SBO information is stored in repositories designated as Global Registry.
- SBO’s are stored in /System/Modules/SBO/ folder of repository. is the name of SBO.
- Each folder in /System/Modules/SBO/ corresponds to a individual SBO
The steps to create a SBO are these using Composer (java codes, 2 jars (impl, interfaces), create jardefs, create module SBO):
1) Create a interface that extends IDfService define your business method
2) Create the implementation class implement write your business logic, This class should extend DfService and implement the interface defined in Step 1. Important : add “@Override public String getVendorString() ” and “@Override public String getVersion(){} ” methods”. These infornations are needed in order to versioning the SBO, could be stored in a properties file “MyHUOServiceBO.properties”
Build-Version=1.41
Vendor-Name=Java Luxembourg
3) Create a jar file for the created Interface and another jar for the implementation class then create Jar Definitions
4) Create needed implementation jardef for all jar needed in Service side (like “commons-codec.jar.jardef” for the jar “commons-codec-1.10.jar”)
5) Create a SBO Module and Deploy your Documentum Archive using Documentum Composer (Application builder for older versions)
6) Add all jardefs in the SBO module configuration,
How to use SBO from a Client Application
follow the below steps to instantiate a SBO from a client application.
1) Get the Local client
2) Create a login info and populate the login credentials.
3) Create a IDfSessionManager object
4) Use the newService () from the Client Object to create a SBO instance
Example: zipcodevalidator
// create client IDfClient myClient = DfClient.getLocalClient(); // create login info IDfLoginInfo myLoginInfo = new DfLoginInfo(); myLoginInfo.setUser("user"); myLoginInfo.setPassword("pwd"); // create session manager IDfSessionManager mySessionManager = myClient.newSessionManager(); mySessionManager.setIdentity("repositoryName", myLoginInfo); // instantiate the SBO IZipValidatorSBO zipValidator = (IZipValidatorSBO) myClient.newService( IZipValidatorSBO.class.getName(), mySessionManager); // call the SBO service zipValidator.validateZipCode(obj, zipCode, "repositoryName");https://ajithp.com/2009/07/20/service-based-objects-sbos-in-documentum/
http://rinturajak.blogspot.lu/2014/06/implementation-of-documentum-business.html?m=1DCTM TBO (Type based Business Object)
- TBO’s are part of Documentum Business Object framework
- Extend the persistence object type
- Installed in target repository
- Override DFC method or adding of new functionnalities
- Creation: java codes, 2 jars (impl, interfaces), create jardefs, create module TBO
- Use in client: instanciation directly “newobject…(…)”
How to use TBO from a Client Application
IMyDocumentTbo myDocumentTypeObj = (IMyDocumentTbo) getSession().newObject("my_document_tbo"); myDocumentTypeObj.setObjectName("sayHello baby"); myDocumentTypeObj.setContentType("pdf"); myDocumentTypeObj.sayHello("..."); myDocumentTypeObj.save();http://www.docbyte.com/fr/blog/creating-custom-tbo
http://rinturajak.blogspot.lu/2014/06/implementation-of-documentum-business.html?m=1
DCTM ASPECTS
Persistent Object = [TBO] + [Aspects] = [Object Type attributes + behaviour] + [New attributes + behaviour]
- Aspect’s are part of Documentum Business Object framework
- Attached on object INSTANCES
- NO attached to object type
- Installed in target repository
- Could be attached to object type but can be attached/detached to INSTANCES of ANY object type at RUNTIME
- While TBO alter all instances of a specific persistence object type; Aspects alter specific instances of a specific object type under constraints at RUNTIME
- Aspects define custom fields and custom values WITHOUT changing type definition (at RUNTIME)
- Aspects are used when across type functionnality to be defined
- Creation: ….
- Use in client: ….
Example:
Users-based of differents countries depending of the country where user belongs, behaviour and fields of application change:
- -> different aspects by country must be created for specific behaviour and fields attached user as needed
- -> if user changes from one country to another, simply remove the old country aspect and attach the ney country aspect
https://ajithp.com/2008/01/18/aspects-the-new-bof-type-in-documentum/
EMC Documentum Composer Version 7.2 User Guide : https://www.emc.com/collateral/TechnicalDocument/docu57854.pdf
Automate BOF Module Deployment During Development
Very good article concerning the use of “BOFPackaging” Ant task allowing automatical installation and update of BOF modules into any repository:
https://www.bluefishgroup.com/insights/ecm/bof-ant-task/
Best regards,
Huseyin OZVEREN