advanced dfc programming seminar - emc community … · 2006-10-16 · advanced dfc programming...

134
© 2004 EMC Corporation. All rights reserved. Advanced DFC Programming Seminar Dave Samuels - Staff Application Architect Victor Spivak - Distinguished Engineer DevCon 2004 San Ramon, CA October 5, 2004

Upload: vophuc

Post on 10-Jun-2018

235 views

Category:

Documents


1 download

TRANSCRIPT

© 2004 EMC Corporation. All rights reserved.

Advanced DFC Programming Seminar

Dave Samuels - Staff Application ArchitectVictor Spivak - Distinguished Engineer

DevCon 2004San Ramon, CAOctober 5, 2004

© 2004 EMC Corporation. All rights reserved. 2CONFIDENTIAL

Outline of TopicsChanges to DFC 5.3 – Diagnostic Mode– Multi-Docbase Login Tickets

UCFBOF2Web Services

Miscellaneous– Aspects– Validation– Native– DFC PIA (Primary Interop Assembly)

© 2004 EMC Corporation. All rights reserved. 3CONFIDENTIAL

What you are about to see is subject to changewithout prior notice from Documentum, EMC or its affiliates. What you are about to

see is a presentation about DFC, the official application programming interface, herein after known as the Documentum API. This presentation refers to proposed future work in development.

Welcome to the Documentum Web site. Please review the following terms and conditions concerning your use of this site. By accessing, using or downloading materials from this Web site you agree to follow and to be bound by these terms and conditions. Software Licenses All Documentum and eRoom Software and Documentation ("Software”), including Software which may be downloaded from this site, eRoom.net and HTML code and/or Java applets generated by or included in eRoom Software, is copyrighted material owned by Documentum, a division of EMC Corporation or its suppliers. Any use of the Software, which is licensed, not sold, to end users is subject to the terms of a Documentum License Agreement between you and Documentum which accompanies each Software product. During the Software installation process, you will be given the opportunity to read the License Agreement for the Software you are installing, and you will be asked to accept its terms. If you cannot do so, then you may not complete the installation process. eRoom and Documentum beta Software is licensed under terms of applicable eRoom or Documentum beta license agreements. All rights, title, and interest not expressly granted are reserved.The License Agreements contain important information about the product's limited warranty (or no warranty), your remedies for non-conforming Software; and about Documentum’s limited liability. We encourage you to read the applicable License Agreement prior to ordering or installing any of our Software products.Maintenance Documentum’s Software user and server licenses may be covered by Maintenance, which is purchased in annual increments under the terms of Documentum's then current Customers Guide to Support Services and you are deemed to agree to such terms upon your purchase of Maintenance.Services From time to time, Documentum may offer various service offerings designed to assist customers with installation, customization, rapid adoption and best use of Documentum Software. A complete description of available Services can be obtained by contacting your Documentum sales representative.Standard Commercial Terms Unless otherwise agreed in writing by Documentum, full payment for non-credit card orders is due 30 days from the invoice date in US currency. Late charges of 12% per annum1.5%, or the maximum allowable by law, may be applied to late payments. The customer is responsible for all taxes, excluding taxes based on Documentum's income. Tangible products are shipped FOB Documentum's facility. There will be no cancellation of Software product orders or the initial year of Maintenance after shipment of Software, except as expressly allowed by the License Agreement or the Standard Maintenance Terms. Services may be cancelled or rescheduled as set forth in the Standard Services Terms.Your Rights to Copy Information on This Site You have our permission to print and use copies of the Documents and graphics incorporated in the Documents ("Document") at this Web site such as white papers, FAQs, knowledgebase documents, license agreements provided that: (i) all of the copyright notices appearing on such documents are included on all your copies, (ii) if a document does not contain the Documentum copyright notice below, then you will put the notice appearing below on your copy of the document, and (iii) your use of such information is limited to personal use, informational, non- commercial purposes, and documents may not be modified or altered in any way. Except as expressly provided herein, you may not use, download, upload, copy, print, display, perform, reproduce, publish, license, post, broadcast on any network or media, transmit or distribute any information from this Web site in whole or in part without the prior written permission of Documentum. The Documentum copyright notice is: Copyright Documentum, a division of EMC Corporation 1994-2004All Rights Reserved.

Trademarks Documentum, eRoom, the eRoom Logo, TrueArc, Boxcar, Bulldog, the Boxcar Logo, the Bulldog Logo, the TrueArc Logo, instinctive, eRoom Service, ePartner, ePack, Electronic Word-of-Mouth, Where Projects Get Done, the eMan Logo, EnterConnect,, the Documentum logos, Documentum RightSite, Documentum Server, Docbasic, Documentum DocPage Server, Now You Know, Uniting the World Through Content, Documentum WorkSpace, Documentum SmartSpace, Documentum ViewSpace, GMPharma, GXPharma, GSPharma, GDPharma and all other Documentum product and service names and logos are either service marks, trademarks, or registered trademarks of Documentum, a division of EMC Corporation SQL Anywhere is a trademark of Sybase, Inc. Fulcrum and SerachBuilder are trademarks of Fulcrum Technologies Corp. All other tradenames, trademarks and service marks are the properties of their respective owners. The absence of a product or service name, slogan, or logo from this list does not constitute a waiver of Documentum's trademark or other intellectual property rights concerning that name, slogan, or logo.We Don't Control the Linked Sites For your convenience, we have included various links within the Documentum Web site that allow you to leave our site. Please be aware that we have no control over, and are not responsible for, the content of such sites, and can make no representations about any site that you may access through this one. The fact that we provide a link to another site is not an indication of any endorsement or affiliation with or between Documentum and the third party hosting such site. This Site May Contain Errors We work hard to provide you with lots of useful information on this Web site. Despite our efforts, however, this Web site may contain technical inaccuracies or typographical errors. In addition, Documentum may change, update, improve or delete any of the information, programs or products contained in or described in this site at any time and without notice.No Representations or Warranties Except as may otherwise be agreed to in writing, we make no representation about the suitability of the information, products or services published on or available at this site for any purpose. As such, except as may otherwise be agreed to in writing, ALL INFORMATION, SOFTWARE, PRODUCTS AND SERVICES ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. DOCUMENTUM HEREBY DISCLAIMS ALL WARRANTIES WITH RESPECT TO THIS INFORMATION, SOFTWARE, PRODUCTS AND SERVICES, WHETHER EXPRESS OR IMPLIED, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.THE INFORMATION, SOFTWARE, PRODUCTS AND SERVICES CONTAINED ON THIS WEB SITE MAY BE OUT OF DATE OR INCLUDE OMMISSIONS, INACCURACIES OR OTHER ERRORS. EXCEPT WHERE EXPRESSLY PROVIDED OTHERWISE IN AN AGREEMENT BETWEEN YOU AND DOCUMENTUM, IN NO EVENT SHALL DOCUMENTUM BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES, OR DAMAGES FOR LOSS OF PROFITS, REVENUE, DATA OR USE, INCURRED BY YOU OR ANY THIRD PARTY, WHETHER IN AN ACTION IN CONTRACT OR TORT, ARISING FROM YOUR ACCESS TO, OR USE OF, THIS WEB SITE OR ANY OTHER HYPERLINKED WEB SITE. DOCUMENTUM RESERVES THE RIGHT TO MAKE CHANGES OR UPDATES TO THIS WEB SITE OR THE PRODUCTS OR PROGRAMS DESCRIBED IN THIS WEB SITE AT ANY TIME WITHOUT NOTICE. DOCUMENTUM CANNOT GUARANTEE COMPLETION OF ANY FUTURE PRODUCTS OR PRODUCT FEATURES MENTIONED ON THIS WEBSITE OR IN ANY PRESS RELEASE, AND NO RELIANCE SHOULD BE PLACED ON THEIR AVAILABILITY.

Governing Law and JurisdictionThis Web site is controlled by Documentum from its offices in Pleasanton, California, United States of America. All matters relating to your access to, or use of, this Web site shall be governed by the laws of the Commonwealth of Massachusetts. You may not access, download, use or export the information, Software, products or services contained on this Web site in violation of U.S. export laws or regulations, or in violation of any applicable local laws or regulations.FeedbackExcept where expressly provided otherwise by Documentum, all comments, feedback, information or materials submitted to Documentum through or in association with this Web site shall be considered non-confidential and Documentum's property. By submitting such comments, feedback, information or materials to Documentum, you agree to a no-charge assignment to Documentum of all worldwide rights, title and interest in copyrights and other intellectual property rights to the comments, feedback, information or materials. Documentum shall be free to use such comments, feedback, information or materials on an unrestricted basis. For questions or comments about Documentum's trademark policy, please contact [email protected].

I Accept I Decline

© 2004 EMC Corporation. All rights reserved. 4CONFIDENTIAL

ChangesSeriously, we are presenting this to you to help you realize the changes that are coming. Some of the technology presented is still under development and will likely changeSome of the technology presented will definitely change

© 2004 EMC Corporation. All rights reserved. 5CONFIDENTIAL

Goals for DFC 5.3Expand BOF infrastructure and provide great Web Service infrastructureDeliver next generation content transfer (UCF)Expanded support for Webtop, Collaboration, Records Management, ECI (searching), etc.Improve performanceMaintain quality Maintain compatibility

– Note: DFC 5.3 requires a 1.4.x JVM

© 2004 EMC Corporation. All rights reserved. 6CONFIDENTIAL

Everyone should know:DFC stands for Documentum Foundation ClassesDFC is the primary API for accessing a Documentum RepositoryDFC used in all Documentum productsBusiness Object Framework is part of DFC

© 2004 EMC Corporation. All rights reserved. 7CONFIDENTIAL

DFC provides the client APIs for accessing the Documentum repository

DocumentumRepository

Your Services

Your TBOs

Core DFC layer – Object-oriented access to server API layer

Intrinsic Business Objects

Content Pkgs Workflow Validation Virtual Document

Operations

Intrinsic Business ObjectsICollaboration IWorkflow

High-level

Middle-level

Low-level APIs

© 2004 EMC Corporation. All rights reserved. 8CONFIDENTIAL

Client access

DFC(Java)

DJCB(COM)

DFC PIA(.NET)

Java clients

VB clients

C# clients

© 2004 EMC Corporation. All rights reserved. 9CONFIDENTIAL

New to DFC in 5.3Multi-Docbase Login Tickets (Resuable)Diagnostic ModeValidation ImprovementsContent PackageNew Copy behavior options for RelationsContainer Customization ModelMACL (Mandatory ACL)Rich Text (Collaboration Service)PIA (Primary Interop Assemblies)

© 2004 EMC Corporation. All rights reserved. 10CONFIDENTIAL

Multi-Docbase Login Tickets (under development)

Old way - Login TicketsLogin Ticket used as password with LoginInfo. One Docbase, 1-time useSubconnections failCan't reconnect after timeout

New Option - Multi-Docbase Login TicketsgetLoginTicket( "*", "*" )Establishes the required, encrypted trust relationship between different Docbases

© 2004 EMC Corporation. All rights reserved. 11CONFIDENTIAL

Diagnostic ModeLogs errors related to mismanaged sessionsLogging of non-released sessions (session leaks) Accessing orphaned objectsSlight overhead– Defaults to Falsedfc.properties– dfc.resources.diagnostics.enabled=T/FRestart Process

© 2004 EMC Corporation. All rights reserved. 12CONFIDENTIAL

Diagnostic Mode - Sample 1 - Session LeakAvailable 5.2.5getSession() without a releaseSession()

private void test1 (IDfSessionManager mgr, String docbase)

throws DfServiceException, DfIdentityException, DfAuthenticationException

{IDfSession session = mgr.getSession(docbase);test2(mgr, docbase);mgr.release(session);

}

private void test2 (IDfSessionManager mgr, String docbase) throws DfServiceException, DfIdentityException,

DfAuthenticationException{

IDfSession session = mgr.getSession(docbase);}

private void test1 (IDfSessionManager mgr, String docbase)

throws DfServiceException, DfIdentityException, DfAuthenticationException

{IDfSession session = mgr.getSession(docbase);test2(mgr, docbase);mgr.release(session);

}

private void test2 (IDfSessionManager mgr, String docbase) throws DfServiceException, DfIdentityException,

DfAuthenticationException{

IDfSession session = mgr.getSession(docbase);}

Nested getSession()

Nested getSession()

Out of scope - garbage collectOut of scope - garbage collect

© 2004 EMC Corporation. All rights reserved. 13CONFIDENTIAL

Session LeakLog shows most recent getSession() as the culprit

dfc.resources.diagnostics.enabled = F

17:43:14,027 ERROR [Resource Housekeeper] com.documentum.fc.client.DfSessionManager$DfSessionManagerDisposableResource- [DFC_BOF_SESSION_LEAK] Unreleased session found in finalize "docbase=SVL_TST, refCounter=1, transFlag=false Session =com.documentum.fc.client.DfSession@12d7a10".

dfc.resources.diagnostics.enabled = F

17:43:14,027 ERROR [Resource Housekeeper] com.documentum.fc.client.DfSessionManager$DfSessionManagerDisposableResource- [DFC_BOF_SESSION_LEAK] Unreleased session found in finalize "docbase=SVL_TST, refCounter=1, transFlag=false Session =com.documentum.fc.client.DfSession@12d7a10".

dfc.resources.diagnostics.enabled = T

17:44:40,141 ERROR [Resource Housekeeper] com.documentum.fc.client.DfSessionLeakChecker -[DFC_BOF_SESSION_LEAK]

Unreleased session found in finalize "docbase=SVL_TST, refCounter=1, transFlag=false Session =com.documentum.fc.client.DfSession@3bb2b8".

com.documentum.fc.client.DfSessionLeakExceptionat svl.test.dfc.DfcTest2.test2(DfcTest2.java:55)at svl.test.dfc.DfcTest2.test1(DfcTest2.java:48)at svl.test.dfc.DfcTest2.main(DfcTest2.java:32)

dfc.resources.diagnostics.enabled = T

17:44:40,141 ERROR [Resource Housekeeper] com.documentum.fc.client.DfSessionLeakChecker -[DFC_BOF_SESSION_LEAK]

Unreleased session found in finalize "docbase=SVL_TST, refCounter=1, transFlag=false Session =com.documentum.fc.client.DfSession@3bb2b8".

com.documentum.fc.client.DfSessionLeakExceptionat svl.test.dfc.DfcTest2.test2(DfcTest2.java:55)at svl.test.dfc.DfcTest2.test1(DfcTest2.java:48)at svl.test.dfc.DfcTest2.main(DfcTest2.java:32)

Points to the actual getSession() that

doesn't have a release

Points to the actual getSession() that

doesn't have a release

© 2004 EMC Corporation. All rights reserved. 14CONFIDENTIAL

Accessing orphaned objects - available 5.3

When object is accessed against released sessionShows which "release" orphaned the objectShows which object access caused the error

...IDfSession session = mgr.getSession(docbase);IDfSysObject ysObj = (IDfSysObject)

session.getObjectByQualification("dm_document");mgr.release(session);Thread.sleep(11000);System.out.println("sysObj.getObjectName() = "

+ sysObj.getObjectName());...

...IDfSession session = mgr.getSession(docbase);IDfSysObject ysObj = (IDfSysObject)

session.getObjectByQualification("dm_document");mgr.release(session);Thread.sleep(11000);System.out.println("sysObj.getObjectName() = "

+ sysObj.getObjectName());...

© 2004 EMC Corporation. All rights reserved. 15CONFIDENTIAL

Orphaned objects - Diagnostic Mode Disabled

With Diagnostic mode disabled, error message is misleading

dfc.resources.diagnostics.enabled = F

DfException:: THREAD: main; MSG: [DM_API_E_EXIST]error: "Document/object specified by 09fc75e38000014e does not exist." ; ERRORCODE: 100; NEXT: nullat ...DfSession.convertToDfException(DfSession.java:3535)at ...DfSession.apiGet(DfSession.java:213)at ....apiGet(DfTypedObjHelperSessionBased.java:329)at ....getString(DfTypedObjHelperSessionBased.java:190)at ...DfTypedObject.getString(DfTypedObject.java:942)at ...DfSysObject.getObjectName(DfSysObject.java:49)at ...NativeMethodAccessorImpl.invoke0(Native Method)at ...NativeMethodAccessorImpl.invoke(...java:39)at ....invoke(DelegatingMethodAccessorImpl.java:25)at ...Method.invoke(Method.java:324)at ...PersObjectInvocHandler.invoke(...java:30)at $Proxy1.getObjectName(Unknown Source)at svl.test.dfc.DfcTest2.main(DfcTest2.java:36)

dfc.resources.diagnostics.enabled = F

DfException:: THREAD: main; MSG: [DM_API_E_EXIST]error: "Document/object specified by 09fc75e38000014e does not exist." ; ERRORCODE: 100; NEXT: nullat ...DfSession.convertToDfException(DfSession.java:3535)at ...DfSession.apiGet(DfSession.java:213)at ....apiGet(DfTypedObjHelperSessionBased.java:329)at ....getString(DfTypedObjHelperSessionBased.java:190)at ...DfTypedObject.getString(DfTypedObject.java:942)at ...DfSysObject.getObjectName(DfSysObject.java:49)at ...NativeMethodAccessorImpl.invoke0(Native Method)at ...NativeMethodAccessorImpl.invoke(...java:39)at ....invoke(DelegatingMethodAccessorImpl.java:25)at ...Method.invoke(Method.java:324)at ...PersObjectInvocHandler.invoke(...java:30)at $Proxy1.getObjectName(Unknown Source)at svl.test.dfc.DfcTest2.main(DfcTest2.java:36)

© 2004 EMC Corporation. All rights reserved. 16CONFIDENTIAL

Orphaned objects - Diagnostic Mode Enabled

When object is accessed against release objectShows "Caused by" - which "release" caused it

17:54:29,929 ERROR [main] ...DfSessionLeakChecker -[DFC_BOF_SESSION_ALREADY_RELEASED] An attempt of using the already released session.

com.documentum.fc.client.DfSessionAlreadyReleasedException: [DFC_BOF_SESSION_ALREADY_RELEASED] An attempt of using the already released session.

...at java.lang.reflect.Method.invoke(Method.java:324)at $Proxy1.buildCommandRoot(Unknown Source)at $Proxy1.getObjectName(Unknown Source)at svl.test.dfc.DfcTest2.main(DfcTest2.java:36)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.lang.reflect.Method.invoke(Method.java:324)at ...application.AppMain.main(AppMain.java:78)

Caused by: com.documentum.fc.client.DfSessionAlreadyReleasedException: [DFC_BOF_SESSION_ALREADY_RELEASED] An attempt of using the already released session.at svl.test.dfc.DfcTest2.main(DfcTest2.java:33)...

17:54:29,929 ERROR [main] ...DfSessionLeakChecker -[DFC_BOF_SESSION_ALREADY_RELEASED] An attempt of using the already released session.

com.documentum.fc.client.DfSessionAlreadyReleasedException: [DFC_BOF_SESSION_ALREADY_RELEASED] An attempt of using the already released session.

...at java.lang.reflect.Method.invoke(Method.java:324)at $Proxy1.buildCommandRoot(Unknown Source)at $Proxy1.getObjectName(Unknown Source)at svl.test.dfc.DfcTest2.main(DfcTest2.java:36)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.lang.reflect.Method.invoke(Method.java:324)at ...application.AppMain.main(AppMain.java:78)

Caused by: com.documentum.fc.client.DfSessionAlreadyReleasedException: [DFC_BOF_SESSION_ALREADY_RELEASED] An attempt of using the already released session.at svl.test.dfc.DfcTest2.main(DfcTest2.java:33)...

© 2004 EMC Corporation. All rights reserved.

Q&A

© 2004 EMC Corporation. All rights reserved.

Documentum Unified Client Facilities (UCF)

© 2004 EMC Corporation. All rights reserved. 19CONFIDENTIAL

Documentum Unified Client Facilities (UCF)Defined as...

A next generation facility for content transfer between client and application server

Main GoalsNext generation content transfer for WDK & Web ServicesApplication integration

Improve deployabilitySmallest possible client-side footprint - DFC not required–Signed applet - very small–Launches a small UCF-client runtime processPerform content analysis on server or client

© 2004 EMC Corporation. All rights reserved. 20CONFIDENTIAL

Next Generation Content TransferPrimarily for WDK-based– Will be used for all 5.3 and later client-side content transfer– Web Clients (Webtop, Web Publisher, DAM, ...)– Web ServicesPackages DFC OperationsCompatible with Web ServicesLightweight - Client doesn't need DFCContent analysis logic on serverHooks for Customization

© 2004 EMC Corporation. All rights reserved. 21CONFIDENTIAL

ArchitectureWebtop 5.3 deploys the UCF Client RuntimeNormal non-elevated user privilege to install

Deployed with the web page as a small signed applet whose job is to launch the UCF Client Runtime process

© 2004 EMC Corporation. All rights reserved. 22CONFIDENTIAL

UCF Functional Diagram (Web-environment)

DctmContentServer

HTTP Server

ApplicationServer

DFC

Browser

UCFClient Process

Client Environment

UCFServer

Component

WDK

Webtop, …

ClientFile System

Handlers

UCF applet

Application Server Content Server

© 2004 EMC Corporation. All rights reserved. 23CONFIDENTIAL

UCF Architectural ViewWebtop,

Digital Asset Manager,

Documentum Administrator

Web Publisher, Portal Content

ManagerPortlets Custom

Applications

UCF RuntimeUCF Runtime

Content Registry Service

MIME-typeRecognizer

Communication Service

Tracing/Logging Service

Notification Service

Component Registry Service

Content PkgingService

Configuration Service

UCF Kernel

Tracking/LoggingService

OS Info Service

Platform Services

UCF API

Extension Points

Custom AttachmentHandlers

Custom RequestHandlers

WDK-Based Apps Web Services Custom Apps

© 2004 EMC Corporation. All rights reserved. 24CONFIDENTIAL

UCF Platform ServicesFile System Service– Brokers file reading/writing/removal to

operating system– Will offer accelerated file store reading/writing options (DAM)MIME-type Recognizer Service– Provides analysis of content-types for both UCF requests and

responses– Does type and format analysis (compression options, etc.)Content Registry Service– Persists content meta-data on client when content is ‘resident’ there– Fully supports XML and VDMOS Info Service– Provides OS identification information– OS Info helps the modal operation of UCF based on unique client

environments

Content Registry Service

MIME-typeRecognizer

File SystemService

OS Info Service

Platform Services

© 2004 EMC Corporation. All rights reserved. 25CONFIDENTIAL

UCF Kernel ServicesComponent Registry Service– Used for registering ‘optional’

UCFcomponents such as handlers, processors, etc.

– Will have required, optional and skip registration scopesTracing/Logging Service– Very similar to existing DFC logging capabilities– Will rely on Java 1.4 logging capabilities (java.util.logging.* APIs)– Will only log client-side events, will not log any server-side information

except communcation-related Notification Service– Notifies on error conditions and progress feedback– For rich-client notification will be delivered to end-user– For WDK-client notification will be delivered to applicationContent Packaging Service– Creates content packages for transfer between client and server

Communication Service

Tracing/Logging Service

Notification Service

Component Registry Service

Content PkgingService

Configuration Service

UCF Kernel

© 2004 EMC Corporation. All rights reserved. 26CONFIDENTIAL

DeploymentUCF client libraries deployed to client as appletNo DFC required on clientApplet very small and fastUCF Client process 1/4 size of old contentTransferApplet

HTTP Server

ApplicationServer

Browser

UCFClient Process

UCFServer

Component

WDK

Webtop, …

UCF applet

Alreadyloaded?

yes, start process

no, download UCF client and start

© 2004 EMC Corporation. All rights reserved. 27CONFIDENTIAL

HandlersContent Analysis Components

Attachment HandlersAllows override of handling of attachments based on content formatPre/post processing Content Analysis componentsRequest / Respond handlers

Extension PointsCustom Attachment

Handlers

Custom RequestHandlers

© 2004 EMC Corporation. All rights reserved. 28CONFIDENTIAL

Pattern for using PackagesCreate a packagePopulate the packagepackage processor pre-preprocess (handler)DFC operation.add(package)operation.execute()package processor post-process

Content Analysis components

© 2004 EMC Corporation. All rights reserved. 29CONFIDENTIAL

PackagingKind of like Operations node set

– pkg = pkgFactory.newImportPackage()– pkg.add( objectID );– operation.add( package )

– pkgProcessor = pkgProcPkgFactory.newImportPackageProcessor(op,pkg);

– pkgProcessor.preprocess();

– operation.execute();

– pkgProcessor.postprocess();– Exit...

© 2004 EMC Corporation. All rights reserved. 30CONFIDENTIAL

UCF Sample - ICommManager / IServerSession

public class TestExportServlet extends HttpServlet{protected void doGet (HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException

{try{

HttpSession httpSession = request.getSession (false);if (httpSession == null)

handleServletException ("Http Session is not initialized");

ICommManager commMgr = (ICommManager)httpSession.getAttribute ("ucf");

if (commMgr == null)handleServletException (

"UCF is not properly initialized");

// Get a handle to a UCF sessionString clientId = request.getParameter ("ID");IServerSession ucfSession = commMgr.newSession (clientId);

...

public class TestExportServlet extends HttpServlet{protected void doGet (HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException

{try{

HttpSession httpSession = request.getSession (false);if (httpSession == null)

handleServletException ("Http Session is not initialized");

ICommManager commMgr = (ICommManager)httpSession.getAttribute ("ucf");

if (commMgr == null)handleServletException (

"UCF is not properly initialized");

// Get a handle to a UCF sessionString clientId = request.getParameter ("ID");IServerSession ucfSession = commMgr.newSession (clientId);

...

© 2004 EMC Corporation. All rights reserved. 31CONFIDENTIAL

Setting up a managed session and export operation

Servlet connects to the Docbase in behalf of the user

// Obtain session from another method in this servletIDfSession session = this.getSession();

// setup a docbase sessionIDfClientX clientX = new DfClientX();IDfClient client = clientX.getLocalClient();IDfSessionManager sMgr = this.getSessionManager();

...

// Obtain session from another method in this servletIDfSession session = this.getSession();

// setup a docbase sessionIDfClientX clientX = new DfClientX();IDfClient client = clientX.getLocalClient();IDfSessionManager sMgr = this.getSessionManager();

...

© 2004 EMC Corporation. All rights reserved. 32CONFIDENTIAL

Create and populate the "package" for export operation

// Create and setup the packageIDfContentPackageFactory pkgFactory =

clientX.getContentPackageFactory();

IDfExportPackage exportPackage = pkgFactory.newExportPackage();IDfClientServerFile clientServerDir =

pkgFactory.newClientServerFile();

clientServerDir.setClientFilePath(exportDir);exportPackage.setDestinationDirectory(clientServerDir);

// Create package item and add to the packageIDfExportPackageItem item =

exportPackage.add(clientX.getId(objectId));...

// Create and setup the packageIDfContentPackageFactory pkgFactory =

clientX.getContentPackageFactory();

IDfExportPackage exportPackage = pkgFactory.newExportPackage();IDfClientServerFile clientServerDir =

pkgFactory.newClientServerFile();

clientServerDir.setClientFilePath(exportDir);exportPackage.setDestinationDirectory(clientServerDir);

// Create package item and add to the packageIDfExportPackageItem item =

exportPackage.add(clientX.getId(objectId));...

// Setup the DFC operationIDfExportOperation exportOp = clientX.getExportOperation();exportOp.setSession( session);String objectId = this.getObjectId( "objectId");String exportDir = this.getDirectory("exportDirectory");

// Setup the DFC operationIDfExportOperation exportOp = clientX.getExportOperation();exportOp.setSession( session);String objectId = this.getObjectId( "objectId");String exportDir = this.getDirectory("exportDirectory");

© 2004 EMC Corporation. All rights reserved. 33CONFIDENTIAL

Create and populate the "package" for import operation

// Create and setup the packageIDfContentPackageFactory pkgFactory =

clientX.getContentPackageFactory();IDfImportPackage importPackage = pkgFactory.newImportPackage();

// Create package item and add to the packageIDfClientServerFile csFile = pkgFactory.newClientServerFile();csFile.setClientFilePath(filePath);IDfImportPackageItem item = importPackage.add( csFile );item.setDestinationFolderId(clientX.getId(destinationFolderId));

...

// Create and setup the packageIDfContentPackageFactory pkgFactory =

clientX.getContentPackageFactory();IDfImportPackage importPackage = pkgFactory.newImportPackage();

// Create package item and add to the packageIDfClientServerFile csFile = pkgFactory.newClientServerFile();csFile.setClientFilePath(filePath);IDfImportPackageItem item = importPackage.add( csFile );item.setDestinationFolderId(clientX.getId(destinationFolderId));

...

// Setup the DFC operationIDfImportOperation importOp = clientX.getImportOperation();importOp.setSession(session);String destinationFolderId =

this.getDestinatinoFolderId("destinationFolderId");String filePath = this.getFilePath("filePath");

// Setup the DFC operationIDfImportOperation importOp = clientX.getImportOperation();importOp.setSession(session);String destinationFolderId =

this.getDestinatinoFolderId("destinationFolderId");String filePath = this.getFilePath("filePath");

© 2004 EMC Corporation. All rights reserved. 34CONFIDENTIAL

pre-processing

// Do pre-processing on the export packageIPackageProcessorFactory factory =

ucfSession.getPackageProcessorFactory();

IPackageProcessor pkgProcessor = factory.newExportPackageProcessor(

exportOp, exportPackage);

// Do pre-processing on the export packageIPackageProcessorFactory factory =

ucfSession.getPackageProcessorFactory();

IPackageProcessor pkgProcessor = factory.newExportPackageProcessor(

exportOp, exportPackage);

// Do pre-processing on the import packageIPackageProcessorFactory factory =

ucfSession.getPackageProcessorFactory();

IPackageProcessor pkgProcessor = factory.newImportPackageProcessor(

importOp, importPackage);

// Do pre-processing on the import packageIPackageProcessorFactory factory =

ucfSession.getPackageProcessorFactory();

IPackageProcessor pkgProcessor = factory.newImportPackageProcessor(

importOp, importPackage);

pkgProcessor.preProcess(); pkgProcessor.preProcess();

© 2004 EMC Corporation. All rights reserved. 35CONFIDENTIAL

Operations take a "package" as a node

// Add the updated package to DFC operation and executeexportOp.add( exportPackage );exportOp.execute();

// Add the updated package to DFC operation and executeexportOp.add( exportPackage );exportOp.execute();

© 2004 EMC Corporation. All rights reserved. 36CONFIDENTIAL

Post-processing

// Do post-processing on the packagepkgProcessor.postProcess(); // Do post-processing on the packagepkgProcessor.postProcess();

// Terminate the UCF client runtimeIExitRequest exitRequest =

ucfSession.getRequestFactory().newExitRequest();

// send the terminate requestucfSession.addRequest( exitRequest );ucfSession.execute();commMgr.release (clientId);

// Terminate the UCF client runtimeIExitRequest exitRequest =

ucfSession.getRequestFactory().newExitRequest();

// send the terminate requestucfSession.addRequest( exitRequest );ucfSession.execute();commMgr.release (clientId);

© 2004 EMC Corporation. All rights reserved.

Q&A

© 2004 EMC Corporation. All rights reserved.

Business Object Framework BOF2 -2nd Generation BOF

© 2004 EMC Corporation. All rights reserved. 39CONFIDENTIAL

BOF2ArchitectureDynamic DeploymentModules (lightweight services)Packaging and deploymentDAB changes to support BOF2RestrictionsHow to– calling business object as COMBest Practices

© 2004 EMC Corporation. All rights reserved. 40CONFIDENTIAL

Everyone should know:DFC

– Documentum Foundation Classes– Primary client API for platform

BOF– Business Object Framework is part of DFC– Business logic that runs as part of DFC

© 2004 EMC Corporation. All rights reserved. 41CONFIDENTIAL

DFC provides the client APIs for accessing the Documentum repository

DocumentumRepository

Your Services

Your TBOs

Core DFC layer – Object-oriented access to server API layer

Intrinsic Business Objects

Content Pkgs Workflow Validation Virtual Document

Operations

Intrinsic Business ObjectsICollaboration IWorkflow

High-level

Middle-level

Low-level APIs

© 2004 EMC Corporation. All rights reserved. 42CONFIDENTIAL

Background: DFC 5.1/BOF 1.0

Business Object Framework (BOF) IntroducedFramework Version 1.0 Documentum 5.x applications

– Use BOF (out of the box)– Can be customized through BOF

Business Objects registered on all clientsBOF Object Types Introduced

– Type based Objects (TBO)Provide functionality that is specific to a repository object type (e.g. my_sop_document, …) and thus repository specific

– Service Based Objects (SBO)Provide functionality that is object and repository neutral (can be employed by any application – AutoNumber Service)

© 2004 EMC Corporation. All rights reserved. 43CONFIDENTIAL

BOF BenefitsFaster developmentAbstracts business logic from presentation layer codeEncourages reusePortable across applications

© 2004 EMC Corporation. All rights reserved. 44CONFIDENTIAL

Business Object Examples• Type-based

• Change or add behavior for a specific object type• Examples: request rendition on check-in, or create folder structure

on save

• Service-based• Provides a service, not tied to a specific type• Examples: transform an XML document, inbox, workflow manager,

autonumber

© 2004 EMC Corporation. All rights reserved. 45CONFIDENTIAL

Extensibility and ComponentizationType based Objects (TBO) Behavior specific to type

dm_documentdm_document

doctype_adoctype_a

doctype_bdoctype_b

dm_sysobjectdm_sysobject

DfDocumentDfDocument

Tbo_BTbo_B

DfSysObjectDfSysObjectsave() {}

save() {... super.save();}

Tbo_ATbo_A

dm_persistentobjectdm_persistentobject DfPersistentObjectDfPersistentObject

save() {... super.save();}save() {... super.save();}save() {... super.save();}save() {... super.save();}

© 2004 EMC Corporation. All rights reserved. 46CONFIDENTIAL

Extensibility and ComponentizationBest Practice To Promote Reuse– Declare Methods in an Interface class (e.g. ITbo_A)– Implementation class

• Extends implementation of superclass (e.g. DfDocument)• Implements the Interface class (e.g. IMySOP)• Implements the IDfDynamicInheritance interface

dm_documentdm_document

doctype_adoctype_a

doctype_bdoctype_b

dm_sysobjectdm_sysobject

DfDocumentDfDocument

Tbo_ATbo_A

Tbo_BTbo_B

DfSysObjectDfSysObject

IDfDynamicInheritanceIDfDynamicInheritance

DfPersistentObjectDfPersistentObject

ITbo_AITbo_A

ITbo_BITbo_B

© 2004 EMC Corporation. All rights reserved. 47CONFIDENTIAL

Extensibility and Componentization

Service Based Objects (SBOs)– Should only contain type-neutral business logic (e.g. AutoNumber, Inbox,

Print)– Should not have type awareness for maximum portability– Framework for creating business logic components directly called from

applications– Can work on objects from multiple repositories

IDfService

accelera.app.ISubscription(custom service)

© 2004 EMC Corporation. All rights reserved. 48CONFIDENTIAL

BOF Architecture

Client Program

DFC

fc.client Session Manager

DBO Factory

SBO access TBO access

Service B.O. Typed B.O.

Documentum Repository

Session Pool

DBO Registry

© 2004 EMC Corporation. All rights reserved. 49CONFIDENTIAL

Example SBO Service

public interface IEchoSBO extends IDfService{

public String echo (String in)}

public interface IEchoSBO extends IDfService{

public String echo (String in)}

IDfClient client = DfClient.getLocalClient();IEchoSBO sbo = (IEchoSBO) client.newService(

"acccelera.app.IEchoSBO", sessionMgr);

IDfClient client = DfClient.getLocalClient();IEchoSBO sbo = (IEchoSBO) client.newService(

"acccelera.app.IEchoSBO", sessionMgr);

public class EchoSBO extends DfService implements IEchoSBO{

public String echo (String in) {

return in;}

...other methods of DfService...}

public class EchoSBO extends DfService implements IEchoSBO{

public String echo (String in) {

return in;}

...other methods of DfService...}

© 2004 EMC Corporation. All rights reserved. 50CONFIDENTIAL

BOF 2.0 OverviewNext generation Business Object Framework

– Will ship with DFC 5.3Focus:

– Administration – Dynamic Deployment– Supported by Docapps (DAB and DAI)

Requirement:– Keep with BOF 1.0 programming model

• i.e. code fully compatible; slightly stricter packaging requirements (covered later in presentation)

– Docbase-registered modules have precedence over Dbor-registered objects.

© 2004 EMC Corporation. All rights reserved. 51CONFIDENTIAL

BOF 2.0 Administration (summary) Business objects Registered in Docbase as Modules

– No longer in client machine Properties file (DBOR is deprecated)

– TBOs in corresponding Docbase– SBOs in master Docbase

Docbase stores:– Version information– Description– Type (SBO, TBO)– Dependencies– Any file (javadocs,,zip file, etc)

Documentum Repository

© 2004 EMC Corporation. All rights reserved. 52CONFIDENTIAL

BOF 2.0 Dynamic Module Deployment (summary)The way class loaders are built drove many of our decisionsBOF object modules dynamically deploy (provisioned) to clientRequires Interfaces in separate JARSupports Java LibrariesHot DeployableIntelligent caching and "sandboxing "Classpath = statically provisioned

Documentum Repository

Dynamic DeploymentDynamic Deployment

© 2004 EMC Corporation. All rights reserved. 53CONFIDENTIAL

ModuleOne or more pieces of logicOne or more jars– Implementation Jar– Public interface jar (including public classes)

public interface IFoo BusinessObject{

void bar() throws MyException{...}

}

public interface IFoo BusinessObject{

void bar() throws MyException{...}

}

In this example, MyException is considered as one of the public classes

In this example, MyException is considered as one of the public classes

© 2004 EMC Corporation. All rights reserved. 54CONFIDENTIAL

Example SBO Module

public interface IEchoModule extends IModule{

public String echo (String in)}

public interface IEchoModule extends IModule{

public String echo (String in)}

IDfClient client = DfClient.getLocalClient();EchoModule module = (IEchoModule) client.newModule(

docbaseName, "echoModule", sessionMgr );

IDfClient client = DfClient.getLocalClient();EchoModule module = (IEchoModule) client.newModule(

docbaseName, "echoModule", sessionMgr );

public class EchoModule implements IEchoModule{

public String echo (String in) {

return in;}

}

public class EchoModule implements IEchoModule{

public String echo (String in) {

return in;}

}

© 2004 EMC Corporation. All rights reserved. 55CONFIDENTIAL

Shared Java Libraries - SandboxedOptional "sandboxing" is controlled via a setting for each

SBO1SBO1 SBO2SBO2

JDOMJDOM

Xalan 1Xalan 1 Xalan 2Xalan 2

JDOMJDOM JDOMJDOM

SBO1SBO1 SBO2SBO2

© 2004 EMC Corporation. All rights reserved. 56CONFIDENTIAL

BOF 2.0 Packaging and DeploymentCreating a Documentum Business Object will involve the following steps: 1) Implementing the business object. This includes tasks such as:

a) Defining the interface and implementation. b) Implementing the IDfBusinessObject methods and its business logic.

2) Packaging and deploying the business object in Docapps! You can either:

a) They can take advantage of the Documentum Application Builder (DAB) UI which will lead you through the process (Uses ANT tasks for deployment)

b) Write the XML config file on your own and execute the task as a command prompt program (ANT tasks)

3) Distributing the business object to pertinent Docbases (TBO) or to the master Docbase (SBO) through the Documentum Application Installer (DAI).

Note: Dependent Jars - see your "import" listNote: Dependent Jars - see your "import" list

© 2004 EMC Corporation. All rights reserved. 57CONFIDENTIAL

Hot DeploymentIDfClient.newModule() - specify Docbase - causes a concurrency checkIDfClient.newService() is also hot-deployable from master Docbase

Hot-deployability doesn't allow changing the interface2 options

– Extend the interface– Restart the DFC client process

public interface IFoo BusinessObject{

void bar() throws MyException{`...}

}

public interface IFoo BusinessObject{

void bar() throws MyException{`...}

}

© 2004 EMC Corporation. All rights reserved. 58CONFIDENTIAL

DAB: Modules

New!New!

© 2004 EMC Corporation. All rights reserved. 59CONFIDENTIAL

• JAR files for the business object’s implementation and interface.

• Named for the respective business object (either service name or type name, e.g. “mySBO”)

• Java Libraries JARs can be stored in repository

• Dependent interface jars. Interfaces to any used business object must be in a JAR and stored with the referencing business object in the “External Interfaces” folder.

• Dependent interface jars

Organization in Repository

Be sure to use proper naming convention

Be sure to use proper naming convention

mySBO.jarmySBOImpl.jarjavadoc.zipruntime environment.xml

mySBO

JDOMjdom.jar

myTBO.jar

External Interfaces

Miscellaneous

ModulesSystem

Docbase

SBO

TBO

Aspect

readme.txt

© 2004 EMC Corporation. All rights reserved. 60CONFIDENTIAL

Interface &Implementation

JARs

Module:Name, Type,

Version

© 2004 EMC Corporation. All rights reserved. 61CONFIDENTIAL

Path to Javadoc

Name, Version

Interfaces

Min DFC andJVM Versions (for reference)

© 2004 EMC Corporation. All rights reserved. 62CONFIDENTIAL

File pathwhen

deployed

Name/Value properties

Message logged

client-sidepost download

Nameswhen

deployed

© 2004 EMC Corporation. All rights reserved. 63CONFIDENTIAL

Third PartyJARs

DependentBusinessObjects

© 2004 EMC Corporation. All rights reserved. 64CONFIDENTIAL

Provider,Contact,

Description

Supportingdocuments:README,

license, etc.

© 2004 EMC Corporation. All rights reserved. 65CONFIDENTIAL

Ant build script

<taskdef name="BOFPackaging" classname="com.documentum.bof.ant.BOFPackaging" classpathref="classpath"/><target name="compileAndJar"

description="compiles source and jar"><javac srcdir="." destdir="./build/classes"

classpathref="classpath" target="1.4" source="1.4"/><jar jarfile="./build/lib/echo.jar">

<fileset dir="./build/classes"><include name="**\EchoSBO.class"/><exclude name="**\IEchoSBO.class"/>

</fileset></jar><jar jarfile="./build/lib/iecho.jar">

<fileset dir="./build/classes"><include name="**\IEchoSBO.class"/><exclude name="**\EchoSBO.class"/>

</fileset></jar>

</target>...

<taskdef name="BOFPackaging" classname="com.documentum.bof.ant.BOFPackaging" classpathref="classpath"/><target name="compileAndJar"

description="compiles source and jar"><javac srcdir="." destdir="./build/classes"

classpathref="classpath" target="1.4" source="1.4"/><jar jarfile="./build/lib/echo.jar">

<fileset dir="./build/classes"><include name="**\EchoSBO.class"/><exclude name="**\IEchoSBO.class"/>

</fileset></jar><jar jarfile="./build/lib/iecho.jar">

<fileset dir="./build/classes"><include name="**\IEchoSBO.class"/><exclude name="**\EchoSBO.class"/>

</fileset></jar>

</target>...

© 2004 EMC Corporation. All rights reserved. 66CONFIDENTIAL

Deployment via ANT script

<target name="package" depends="compileAndJar"><BOFPackaging moduleName="EchoSbo"

moduleType="SBO" implTech="Java" minDFCVersion="5.3" description="Will Echo anything" contactInfo="[email protected]" docAppName="EchoApp" >

<primaryClass name="com.documentum.Echo"/><addToPackage versionPolicy="minor">

<jarFileSet dir="./build/lib" jarType="2" minVMVersion="1.4.1" downloadable="true">

<include name="echo.jar"/></jarFileSet><jarFileSet dir="./build/lib" jarType="1"

minVMVersion="1.4.1" downloadable="true"><include name="iecho.jar"/>

</jarFileSet></addToPackage>

</BOFPackaging></target>

<target name="package" depends="compileAndJar"><BOFPackaging moduleName="EchoSbo"

moduleType="SBO" implTech="Java" minDFCVersion="5.3" description="Will Echo anything" contactInfo="[email protected]" docAppName="EchoApp" >

<primaryClass name="com.documentum.Echo"/><addToPackage versionPolicy="minor">

<jarFileSet dir="./build/lib" jarType="2" minVMVersion="1.4.1" downloadable="true">

<include name="echo.jar"/></jarFileSet><jarFileSet dir="./build/lib" jarType="1"

minVMVersion="1.4.1" downloadable="true"><include name="iecho.jar"/>

</jarFileSet></addToPackage>

</BOFPackaging></target>

© 2004 EMC Corporation. All rights reserved. 67CONFIDENTIAL

Service Based Objects (SBO)Special type of moduleDon’t have repository affinityReside in "master" Docbase

– Connects to "master" Docbase using credentials located in the dfc.properties file.Properties of note in dfc.properties:

Property Descriptiondfc.sbo.host Indicates name of repository

containing SBOs

dfc.sbo.host.username User name for an account that the system administrator will set up. We recommend READ permission to SBOs only.

dfc.sbo.host.password Clear or encrypted password. (Encryption requires DMCL setup with encryption key. [crippled user account?])

© 2004 EMC Corporation. All rights reserved. 68CONFIDENTIAL

Alternative SBO DocbasesA module can be downloaded from a specified Docbase(alternative to using the SBO master Docbase)New IDfClient method:IDfModule IDfClient.newModule( hostDobase, sMgr, moduleName )Downloads the SBO from the specified host Docbaseinstead of the master DocbaseIDfModule is a marker interface with no methods

© 2004 EMC Corporation. All rights reserved. 69CONFIDENTIAL

Restricted SBO DocbaseA module can be downloaded from a specified Docbase(alternative to using the SBO master Docbase)

When the module needs access to multiple Docbasesimplement the IDfMultipleDocbaseModule interface

public interface IDfSingleDocbaseModule extends IDfModule{

void setSessionManager( IDfSessionManager sMgr, String docbaseName);

}

public interface IDfSingleDocbaseModule extends IDfModule{

void setSessionManager( IDfSessionManager sMgr, String docbaseName);

}

public interface IDfMultipleDocbaseModule extends IDfModule{

void setSessionManager( IDfSessionManager sMgr );}

public interface IDfMultipleDocbaseModule extends IDfModule{

void setSessionManager( IDfSessionManager sMgr );}

© 2004 EMC Corporation. All rights reserved. 70CONFIDENTIAL

BOF2 RegistryIDfDbor is a deprecated interface– Will still work– Docbase-registered business objects take precedenceInstead, useIDfMasterDocbaseRegistry = IDfClient.getGlobalRegistry() – This connects to the master Docbase using the userid, password, and

Docbase specified in the dfc.properties file.

© 2004 EMC Corporation. All rights reserved. 71CONFIDENTIAL

BOF2 Best PracticesPackage and deploy business objects in DocappsNever change an interfaceCasting interface to class = check against an interface-only jarExtending SysObjectsCache CoherencyConcrete classes - don't use

© 2004 EMC Corporation. All rights reserved.

Q&A

© 2004 EMC Corporation. All rights reserved.

Web Services

© 2004 EMC Corporation. All rights reserved. 74CONFIDENTIAL

Web Service support Business logic should be abstracted from UI

– Simplification– Reuse– Migration when UI technology changes

Plugging into SOA– Documentum isn’t your only platform– As SOA becomes more common Documentum must integrate

seamlessly

We saw commonality in what customers wanted to do with ECM and Web Services and we wanted to make this easier to implement.

© 2004 EMC Corporation. All rights reserved. 75CONFIDENTIAL

Web Services SupportDocumentum Platform Release 5.3

– DFC includes Web Services Framework– Leverages BOF SBOs

• Authoring• Deployment

Web SBO Web SBO Programming Programming

ModelModelContentContent

er (UCF)er (UCF)DevelopDevelopmentment

ToolsToolsWeb Service Web Service

Runtime (Axis 1.2)Runtime (Axis 1.2).NET.NET friendly friendly

WSDLWSDLTransfTransf

© 2004 EMC Corporation. All rights reserved. 76CONFIDENTIAL

AssumptionsRemote-procedure-call (JAX-RPC) style interactions

– Marshalling is done in XML / SOAPPoint-to-point interactions

– Not involving complicated routing Intra-corporate biasClient-side web service framework neutrality

– At minimum, Java and .NET

Explicit non-goal:– Dynamic provisioning of web services

• The publication of a BOF service as a web service requires deliberate design-time intervention and explicit manual publication.

© 2004 EMC Corporation. All rights reserved. 77CONFIDENTIAL

Web Services RoadmapExamples: Plugging into SOA

– Timeframes vary• Some underway already

Web SBO Web SBO Web SBO Programming Programming Programming

ModelModelModelDevelopmentDevelopmentDevelopment

ToolsToolsToolsWeb Service Web Service Web Service

Runtime (Axis 1.2)Runtime (Axis 1.2)Runtime (Axis 1.2)ContentContentContent

Transfer (UCF)Transfer (UCF)Transfer (UCF).NET friendly.NET friendly.NET friendly

WSDLWSDLWSDLWeb Services FrameworkWeb Services Framework

Library Library Library OperationsOperationsOperations

WSBOsWSBOsWSBOsAdministrationAdministrationAdministration

WSBOsWSBOsWSBOsQuery Query Query WSBOWSBOWSBO

SearchSearchSearchWSBOWSBOWSBO

Many Many Many More…More…More…Web Services LibraryWeb Services Library

WSRPWSRP(Portlets)(Portlets)

Authoring Authoring IntegrationsIntegrations BPSBPS EAIEAI .NET .NET

ApplicationsApplications

© 2004 EMC Corporation. All rights reserved. 78CONFIDENTIAL

Web Services Framework OverviewCode generator

– Included with Documentum Application Builder (DAB)Packager

– Included with Documentum Application Builder (DAB)Manual Deployment

– Placing generated WAR on application server • (e.g. in the WebApps directory on Tomcat)

Runtime support classes– Servlet that needs to be hosted in a web container

© 2004 EMC Corporation. All rights reserved. 79CONFIDENTIAL

Deployment steps

Development Machine1) Implement BOF

service

2) Code generateand packagethrough DAB

3) Package compiled classes with DAI

Production Machines4) Distribute BOF

Service & WebService extension

via DAI

5) Run deploy tool to publish to runtime

environment

4) Distribute BOF service to repository

via DAI

5) Manually deploy WAR to application

server

© 2004 EMC Corporation. All rights reserved. 80CONFIDENTIAL

How does code generation work? (slide 1 of 2)1) Reflects on a service-based business object for signatures2) Constructs an aggregate interface comprising the method

signatures from all implemented interfaces, explicitly excluding IDfService and its superclasses. – Marshals arguments and return types in XML-based SOAP format– Supported datatypes mapped to JAX-RPC friendly types for input

arguments and return values.3) Generates a concrete wrapper class implementing the

contrived interface.4) Generated class is presented to the Axis infrastructure for

skeleton/WSDL generation. – Documentum type mappings and SOAP header manipulations

influence the WSDL generation.– Header definitions included in the WSDL. This facilitates automatic

stub generation for clients.

© 2004 EMC Corporation. All rights reserved. 81CONFIDENTIAL

InterfacesSignatures:

– In general, only support services with interfaces compliant to JAX-RPC

– For example:• Java primitive types and their wrappers• String• Calendar• “value types”

– Concrete classes with a public, no-argument constructor, and data accessibility via getters and setters, so long as the data are also JAX-RPC friendly. May be nested.

– Non-sparse arrays are also acceptableNo support for arbitrary interfaces

– other than BOF exceptions to this rule

© 2004 EMC Corporation. All rights reserved. 82CONFIDENTIAL

ReliabilityDepends solely on the reliability of the underlying BOF service

© 2004 EMC Corporation. All rights reserved. 83CONFIDENTIAL

Supported EnvironmentsThe web services framework requires a servlet container environment as host (such as Tomcat).We should support most, if not all, web service client environments that can take WSDL as the service definition.

© 2004 EMC Corporation. All rights reserved. 84CONFIDENTIAL

VersioningCompatible interface extensions to the underlying BOF service require a new manual web service deployment.Supports BOF 2.0 dynamic deployment of JAR.WS client code continues to function as expected

© 2004 EMC Corporation. All rights reserved. 85CONFIDENTIAL

InteroperabilityWS-I Basic Profile interoperability standard

– mandates document/literal style (schema-centric) SOAP messagesAdditional standards considered over time.

– Notably, any emerging as .NET evolves.

© 2004 EMC Corporation. All rights reserved. 86CONFIDENTIAL

Content TransferThe following types (in parameters or return values) suggest content transfer:

– javax.activation.DataSource– java.io.File– java.io.Reader– java.io.InputStream– (or the corresponding array types)

Code generator produces web service definition using SOAP attachment technology (possilbly)

– MIME, not DIME (as the latter is being phased out)Support for UCF is also planned

– This would require some optional client-side code to establish an inbound UCF connection

© 2004 EMC Corporation. All rights reserved. 87CONFIDENTIAL

Repository Credentials ServiceInitial use

– Create a new session manager instance, attach the Docbasecredentials, and save the session manager instance in a registry for later recovery.

– Generate a unique token to act as a key to the session manager instance. This key will be returned to the caller.

Subsequent use– Existing token is presented along with new or amended credentials. – The existing session manager instance will be recovered and

augmented/updated with the new credentials.

Optionally supports expiration periodSupports passing token to other Web Services

– Finds Session Manger based on token

© 2004 EMC Corporation. All rights reserved. 88CONFIDENTIAL

SecurityRepository credentials not passed in clear text (by default)SSL support

– Acceptable in a point-to-point environmentWS-Security support

– Planned– Cost: More complex client involvement would be required– Benefits: Digital signature support, partial encryption, etc.

© 2004 EMC Corporation. All rights reserved. 89CONFIDENTIAL

DAB SupportDAB support Services only (SBO's)Click on "Expose as Web Service" checkboxWAR file is generated

© 2004 EMC Corporation. All rights reserved. 90CONFIDENTIAL

DAB SupportAfter deploying the generated was to our web server the Echo Web service is available athttp://myhost:8080/dfcws/services/echo (configurable), To obtain the wsdl, just point your favorite IDE tohttp://myhost:8080/dfcws/services/echo?wsdl

© 2004 EMC Corporation. All rights reserved. 91CONFIDENTIAL

SampleIn C# you could write the following

Echo.IEchoWSService echoService = new Echo.IEchoWSService();String echo = echoService.echo("my string");Echo.IEchoWSService echoService = new Echo.IEchoWSService();String echo = echoService.echo("my string");

© 2004 EMC Corporation. All rights reserved. 92CONFIDENTIAL

Web Services Best PracticesDon't expose PersistentObjects via SBO interface– Instead, pass ID aroundDesign for "remotability"Multiple simultaneous use

© 2004 EMC Corporation. All rights reserved.

Q&A

© 2004 EMC Corporation. All rights reserved.

Miscellaneous

© 2004 EMC Corporation. All rights reserved. 95CONFIDENTIAL

MiscellaneousAspectsNativeValidationSearchDocumentum Programmable Interop Assemblies (PIA)

© 2004 EMC Corporation. All rights reserved.

Aspects

© 2004 EMC Corporation. All rights reserved. 97CONFIDENTIAL

Agenda

• Current Object Model• New Object Model (Aspect based)• Aspect as first class facility• Open Issues• Implementation Details• Future Extensions

© 2004 EMC Corporation. All rights reserved. 98CONFIDENTIAL

Current Object ModelDocbase object types define object attributesBOF 1.0 TBO defines object type custom behavior

a_extended_properties – Allows attachment of additional attributes to an object– Does not allow attaching a custom behavior per object instance– Business logic is implemented in an applicationapplication_code – protects objects that need a custom behavior

TBO = Object Type attributes + [behavior]

© 2004 EMC Corporation. All rights reserved. 99CONFIDENTIAL

Limitations of current modelDoes not allow customization of object behavior across object types– Based on object location, format, an attribute valueEmbraces non-interoperable applicationsServer and DFC do not provide built-in support for extended properties

© 2004 EMC Corporation. All rights reserved. 100CONFIDENTIAL

New Aspect-based Object ModelIntroduces a new concept – AspectsAspect is an extension of dm_sysobject "instance"Includes additional attributes and behaviorA client attaches an aspect to an object "instance"A SysObject may have several aspects

Each Aspect component is optional

SysObject Instance = TBO + [Aspects]Aspect = [attributes] + [behavior]

© 2004 EMC Corporation. All rights reserved. 101CONFIDENTIAL

Aspect RequirementsAspect implementation should be compatible with existing clients that are not aware of aspects. No code modification is required for existing client to use object instances with attached aspects.Aspect implementation should be compatible with TBO. Aspect custom behavior should augment type-specific behavior, but not replace it.Aspect is a natural object extension and all object operations are applicable for object extensions -- aspect attribute access, updating extended objects, querying extended attributes should follow the existing programming model for a sysobject.

© 2004 EMC Corporation. All rights reserved. 102CONFIDENTIAL

Additional Aspect RequirementsAspects should be a first class facility in the Documentum platform. All platform components should respect aspects.Aspect implementation should be efficient and robust. A client should not be able to manipulate aspects directly.The Documentum development tools should provide a facility for defining aspects, attaching custom behavior, etc.

© 2004 EMC Corporation. All rights reserved. 103CONFIDENTIAL

Persistent Modeldm_sysobject – 2 new attributes– r_aspect_id (possibly)– i_aspect_namedm_aspect (new type) – base object type for all aspectsdm_aspect_type (new type) – describes aspect– Name– Version– Object_type– Descriptiondm_aspect_relation– Parent aspect– Child aspect– Relation type

© 2004 EMC Corporation. All rights reserved. 104CONFIDENTIAL

Persistent Data Model Diagram

wcm

dm_aspectdm_sysobject

(r_aspect_id)

Id 1Id 2

i_aspect_name

Name 1Name 2

Aspectattributes

DBOR WcmAspect

DfAspect

registered

© 2004 EMC Corporation. All rights reserved. 105CONFIDENTIAL

RuntimeDFC provides explicit methods for aspect manipulationThe instantiation of a SysObject with attached aspects is transparent to the existing clients.A client that has no knowledge about a particular aspect will operate with an implementation object that honors its custom behavior. Attaching or detaching aspects requires changing underlying object implementation. A compound object could be implemented with the dynamic proxy (Java 1.3) facility complemented by the dynamic inheritance mechanism introduced in the DFC 5.2.

© 2004 EMC Corporation. All rights reserved. 106CONFIDENTIAL

dm_document

my_sop

DfDocument

TBO Impl. class

ISOP

DFC Aspect model

aspect_2

aspect_1 Aspect 1 Impl. classAspect 2 Impl. class

IAspect1

IAspect2

RegisteredAspects

Compound Object

Aspect 2Impl. class

TBO Impl. classISOP

IAspect1

IAspect2Aspect 1Impl. class

© 2004 EMC Corporation. All rights reserved. 107CONFIDENTIAL

DFC Dynamic ImplementationSysobject underlying implementation

DfDocument

TBO imp class

Aspect 1 imp class

IDfDocument int

Aspect 2 imp class

ITBO int

IAspect 1 int

IAspect 2 int

Dynamic Proxy

© 2004 EMC Corporation. All rights reserved. 108CONFIDENTIAL

GuidelinesDo not use concrete persistent classes

– Session.getObjectXxx() methods will return objects that implement IDfPersistentObject interface, but they will not be castable to DfPersistentObject class

Do not use DMCL pass through APIDo not use DQL Update/Delete commands on objectsRe-factor existing applications that use getObjectWithInterface() into Aspect-based interfaces

© 2004 EMC Corporation. All rights reserved. 109CONFIDENTIAL

Aspect as first class facilityThe access methods (set/get/append/find/remove/validate ) to the aspect attributes is the same as access to the type-specific attributes.All operations that could be performed on a sysobject are extended for supporting the notion of aspects.– Fetching sysobjects with aspects – Saving, checkin and checkout sysobjects with aspects – Destroying sysobjects with aspects – Auditing – Querying sysobjects with aspects Aspects and data dictionary

© 2004 EMC Corporation. All rights reserved. 110CONFIDENTIAL

Intrinsic to other API on platformBusiness logic implementation and eCS Aspects and XML applications Aspects in the distributed environment Aspects in the WDK Development and deployment tools Aspects and Web Cache

© 2004 EMC Corporation. All rights reserved. 111CONFIDENTIAL

Phased ReleaseCurrent plans:– 5.3 release will include the first phase of Aspect implementation –

behavior– 5.3 release will not support aspect specific attributes – No XML application support, Web Cache, etc.– No DQL extensions– Aspect in 5.3 is provided only for internal teams – Collaboration

Services, Record Manager

© 2004 EMC Corporation. All rights reserved.

NativeVictor Spivak

© 2004 EMC Corporation. All rights reserved.

Search

© 2004 EMC Corporation. All rights reserved. 114CONFIDENTIAL

BenefitsMulti-Docbase searchNew Query BuilderNext generation Smart Query + WDK

© 2004 EMC Corporation. All rights reserved. 115CONFIDENTIAL

DQL execution improvementsSped up full-text queriesSearch for content-less objectsCustomizable full-text indexing hooksSingle Box Search

© 2004 EMC Corporation. All rights reserved. 116CONFIDENTIAL

Documentum Enterprise Content Integration Services

Provides access to the global content in just one queryEnhances existing solutions in place without imposing change

Find, assimilate, synthesize, share and integrate information

Adapts to changes of the information space

Coexists with any kind of IT infrastructure

© 2004 EMC Corporation. All rights reserved. 117CONFIDENTIAL

ECI 5.3 Architecture

Docbases

PortalWebtop

DFC 5.3

WDK 5.3

ECI Services 5.3

Lexis NexisLotus Domino

ECI Client 5.3 ECI Portal 5.3

Google

WWW

Access to external contents

© 2004 EMC Corporation. All rights reserved. 118CONFIDENTIAL

WDK Search ComponentsSingle box search

– Multi-docbases

Results and Status– Wait screen – Results– Status– Status refreshed– Status stopped– Enter credentials from status– No results

Advanced and Revise– Advanced from results (revise a

search)– Advanced from browsing– Advanced cleared

Preferences– Search locations - favorite

repositories– Search locations - selected

specifically– Favorite repositories– Favorite repositories (admin)

Changing Sources– Change sources – Check box selected – Authenticate repository– Repository added to list – Navigate into repository and

breadcrumb – Navigate into a cabinet and

breadcrumb

Saving a Search – My saved searches– Properties of a saved search– All saved searches

© 2004 EMC Corporation. All rights reserved. 119CONFIDENTIAL

DCTM 5.3 Extended SearchQuery Building in DFC

import com.documentum.fc.client.search.*;

// InitializationIDfSearchService searchService =

client.newSearchService(session);

IDfMetadataMgr metadataMgr = searchService.newMetadataMgr();IDfQueryMgr queryMgr = searchService.newQueryMgr(metadataMgr);

// Creation of the queryIDfQueryBuilder queryBuilder = queryMgr.newQueryBuilder();queryBuilder.addSelectedSource("dm_notes");queryBuilder.addSelectedSource("AmazonBooks");`

// Definition of the constraintsIDfExpressionSet exprSet = queryBuilder.getRootExpressionSet();exprSet.addFullTextExpression("singleton Java");

exprSet.addSimpleAttrExpression("title", IDfValue.DF_STRING,IDfSimpleAttrExpression.SEARCH_OP_CONTAINS,false, false, “design patterns”);

import com.documentum.fc.client.search.*;

// InitializationIDfSearchService searchService =

client.newSearchService(session);

IDfMetadataMgr metadataMgr = searchService.newMetadataMgr();IDfQueryMgr queryMgr = searchService.newQueryMgr(metadataMgr);

// Creation of the queryIDfQueryBuilder queryBuilder = queryMgr.newQueryBuilder();queryBuilder.addSelectedSource("dm_notes");queryBuilder.addSelectedSource("AmazonBooks");`

// Definition of the constraintsIDfExpressionSet exprSet = queryBuilder.getRootExpressionSet();exprSet.addFullTextExpression("singleton Java");

exprSet.addSimpleAttrExpression("title", IDfValue.DF_STRING,IDfSimpleAttrExpression.SEARCH_OP_CONTAINS,false, false, “design patterns”);

© 2004 EMC Corporation. All rights reserved. 120CONFIDENTIAL

DCTM 5.3 Extended SearchQuery Execution in DFC

// Synchronous executionIDfQueryProcessor syncProcessor =

searchService.newQueryProcessor(queryBuilder);

// -1 == no timeoutIDfResultsSet results = syncProcessor.blockingSearch(-1);

manipulator = service.newResultsManipulator(metadataMgr);

IDfResultsSet sortedResults = manipulator.sortBy( results, "date", true);

// Synchronous executionIDfQueryProcessor syncProcessor =

searchService.newQueryProcessor(queryBuilder);

// -1 == no timeoutIDfResultsSet results = syncProcessor.blockingSearch(-1);

manipulator = service.newResultsManipulator(metadataMgr);

IDfResultsSet sortedResults = manipulator.sortBy( results, "date", true);

© 2004 EMC Corporation. All rights reserved.

Collaboration Service

© 2004 EMC Corporation. All rights reserved. 122CONFIDENTIAL

Collaboration ServicesPackaged with DFC 5.3Additional license for comment thread and notes– Remainder is intrinsic to 5.3 platform

Rich TextNotesCommentsDiscussion ThreadsWorkspaces

© 2004 EMC Corporation. All rights reserved. 123CONFIDENTIAL

Collaboration ServiceTBO dmc_notepage (rich can store rich text)Service for attaching discussion ICommentManager– Manages attaching discussions and comments to SysObjectsService for attaching rich text property to any SysObjectIRichTextManagerService for 'relating' dmc_topic discussions to any SysObjectITopic - Folder subtype– replying to comments and deleting commentsIComment - Sysobject subtype– Setting title, rich text to body of comment

© 2004 EMC Corporation. All rights reserved.

Validation

© 2004 EMC Corporation. All rights reserved. 125CONFIDENTIAL

ValidationDramatic performance improvementsMigration at install timeIntegration with DABIDfValidationModule interface available for you to implement your own custom validation upon CREATE or ALTER type.– Currently only works with single attributes, not repeating attributes

© 2004 EMC Corporation. All rights reserved. 126CONFIDENTIAL

Things to avoidByte version of string manipulation functionsIf you are using MessageFormat / NumberFormat - like methods, avoid formatting arguments that make use of the regional settings (such as "ddddd", "dddddd", "ttttt")You will need to express date literals used in expressions in canonical format to successfully couple with Java (2004/01/07; 2004/01/07 13:51:23; 13:51:23)

© 2004 EMC Corporation. All rights reserved.

PIA - Primary Interop Assembly

© 2004 EMC Corporation. All rights reserved. 128CONFIDENTIAL

Primary InteropAssembly

DFC(Java)

DJCB(COM)

DFC PIA(.NET)

Java clients

VB clients

C# clients

© 2004 EMC Corporation. All rights reserved. 129CONFIDENTIAL

Using the DFC PIA

Install ‘Documentum DFC PIA.msi’– Requisite version of DFC– .NET Framework 1.1– Updates GAC and creates private reference PIA

Integrate DFC into your applications– Reference DFC PIA– Call DFC functionality

• IntelliSense• Object Browser

© 2004 EMC Corporation. All rights reserved. 130CONFIDENTIAL

DFC Integration within Visual Studio .NET

Full IntelliSense support

© 2004 EMC Corporation. All rights reserved. 131CONFIDENTIAL

DFC Integration within Visual Studio .NET

Full Object Browser support

© 2004 EMC Corporation. All rights reserved. 132CONFIDENTIAL

Updating the DFC PIA

You are in control– Documentum recommends– Enterprise decides

Publisher provides guidance– “Publisher policy” (e.g. 5.2.5 5.3)

Customer/partner decides– Automatically redirect custom code to new release– Remain fixed on original foundation

<publisherPolicy apply="no"/>

© 2004 EMC Corporation. All rights reserved.

Q&A

© 2004 EMC Corporation. All rights reserved. 134CONFIDENTIAL