You are on page 1of 34

EMC Documentum Foundation Services (DFS)

Craig Randall Software Architect

EMC Corporation
http://craigrandall.net/
2007 EMC Corporation. All rights reserved. 1

Goals
Understand where ECM is going and the relevance of SOA Understand EMC Documentum Foundation Services (DFS)

DFS in action
Wrap-up

2007 EMC Corporation. All rights reserved.

Where Enterprise Content Management Is Going


Information management is:
A set of services operating on content

ECM has traditionally operated in a centralized model Evolving business needs + managing expanding volumes of data = an architecture where both content and processes are distributed

2007 EMC Corporation. All rights reserved.

Solutions Require Complex Integration


There has to be a better way

Forms Grants Content Rep. Training Recruitment

Forms Grants Content Rep. Training Recruitment Procurement Finance Records Mgt. Rulemaking

Forms Grants Content Rep. Training Recruitment Procurement Finance Records Mgt. Rulemaking

Forms Grants Content Rep. Training Recruitment Procurement Finance Records Mgt. Rulemaking

Instead of investing in new solutions to improve operational efficiencies, IT departments are spending a significant portion of their budgets maintaining complex integrations.

Procurement Finance Records Mgt. Rulemaking

2007 EMC Corporation. All rights reserved.

Emergence of Composite Applications

and we have applications Composite applications need services from everywhere We have content stores
Applications ECM Services File Servers

CRM Legacy
2007 EMC Corporation. All rights reserved.

ERP EMC Documentum Novell Solaris

MSFT

Content Management Application Observations


Distributed: by definition, some part of the applications are remote not on a single middle tier or application server. Heterogeneous: repository implementations, APIs and applications will be implemented in a variety of languages and will run on a wide range of platforms. Coarse-grained: parts that create the whole (the application) must provide substantial chunks of functionality and must be rapidly composed.
Service-Oriented Architecture

2007 EMC Corporation. All rights reserved.

Our Position on SOA


There is no SOA product offering!
Products enable

Provide high-value Content Management & Archiving services


Ready-to-deploy services (out-of-the-box) Services framework (extends industry standards) Developer tools (extends industry standards) Reusable common ECM functions

Enable consumption by disparate systems


Focus on standards Composite applications Common usage patterns

2007 EMC Corporation. All rights reserved.

Before SOA
Siloed Closed Monolithic Brittle

Offer Management
Customer request via web Customer status (new/existing)

Document Assembly

Loan Processing

Verify customer address Obtain proper forms (State, Federal) Assemble loan package Order Status

Review and Approval Loan Status Escrow Retain executed documents

Determine Loan Type Check Credit

Data Repositories
Data External Warehouse Partner

Marketing Sales

CRM

Finance

2007 EMC Corporation. All rights reserved.

After SOA
Shared Services Collaborative Interoperable Integrated
Composed Applications
Composite Application Document Assembly Loan Processing Offer Management

Composed Business Process

Reusable Business Services


Reusable Service Create Loan Documents Check Status Review and Approval Reusable Service Reusable Service

Reusable Service

Reusable Service

Retain Documents

Publish

Reusable Service

Data Repositories

Marketing Sales
2007 EMC Corporation. All rights reserved.

CRM

Finance

Data External Warehouse Partner


9

EMC Documentum Foundation Services (DFS)


Why DFS

DFS is about content participating in your business processes


Interoperable (increased access) ECM services as peers to other existing services Standards based

DFS is the path forward for ECM business logic


Will become the primary API DFC will remain (low-level)

Emphasizes service-orientation in the EMC Documentum platform

2007 EMC Corporation. All rights reserved.

10

EMC Documentum Foundation Services (DFS)


How DFS enables your SOA

Embodies a service development lifecycle


Design-time and runtime support to service developers and their clients

Deployable Documentum platform services OOTB


SDK for service and solution developers (internal and external)
Design-time tools Runtime infrastructure Documentum platform services (binaries for your solutions)

2007 EMC Corporation. All rights reserved.

11

EMC Documentum Platform Services


Version Control Ecosystem services
checkin, checkout cancelCheckout getCheckoutInfo getVersionInfo deleteVersion deleteAllVersions getCurrent

Platform services

Schema Collaboration Search Compliance Workflow

Core platform services (DFS)

getRepositoryInfo getSchemaInfo getTypeInfo getPropertyInfo getValueInfoList

Object
create, get update, delete copy, move validate getObjectContentUrls createPath

Query
execute
2007 EMC Corporation. All rights reserved.

12

Closer Look Object Service (page 1 of 4)


WSDL is primary API
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <definitions targetNamespace="http://core.services.fs.documentum.emc.com/" name="ObjectService" xmlns:tns="http://core.services.fs.documentum.emc.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> . . . <xsd:schema><xsd:import namespace="http://content.core.datamodel.fs.documentum.emc.com/" schemaLocation="ObjectService_schema8.xsd"/></xsd:schema> </types> . . . <message name="create"><part name="parameters" element="tns:create"/></message> <message name="createResponse"><part name="parameters" element="tns:createResponse"/></message> . . . <portType name="ObjectServicePort"> . . . <operation name="create"><input message="tns:create"/><output message="tns:createResponse"/><fault name="SerializableException" message="tns:SerializableException"/></operation> . . . </portType> <binding name="ObjectServicePortBinding" type="tns:ObjectServicePort"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> . . . <operation name="create"><soap:operation soapAction=""/><input><soap:body use="literal"/></input><output><soap:body use="literal"/></output><fault name="SerializableException"><soap:fault name="SerializableException" use="literal"/></fault></operation> . . . </binding> <service name="ObjectService"> <port name="ObjectServicePort" binding="tns:ObjectServicePortBinding"><soap:address location=". . ."/></port> </service> </definitions>
2007 EMC Corporation. All rights reserved.

13

Closer Look Object Service (page 2 of 4)


Consistent Java interface-based access
package com.emc.documentum.fs.services.core.client; import com.emc.documentum.fs.datamodel.core.*; import com.emc.documentum.fs.services.core.CoreServiceException; public interface IObjectService {
. . .

/** * Creates all data object in the data package using the specified target repository. * All specified related objects are also created. All content is automatically imported. * Note: DataPackage can contain operation-specific properties. * @param dataPackage * @param options * @return target DataPackage with a list of objects created. By default, it will only * return ObjectIdentity of the DataObjects with no ReferenceRelations. MetadataProfile * and ContentProfile settings can be used to specify what data is populated. * @throws CoreServiceException */ DataPackage create(DataPackage dataPackage, OperationOptions options) throws CoreServiceException;
. . .

}
2007 EMC Corporation. All rights reserved.

14

Closer Look Object Service (page 3 of 4)


Consistent, XML-/XSD-based data model
<soap:Envelope . . .> <soap:Header> <wsse:Security . . .><wsse:BinarySecurityToken ValueType="http://schemas.emc.com/documentum#ResourceAccessToken" . . .>. . .</wsse:BinarySecurityToken></wsse:Security> <ServiceContext . . . xmlns="http://context.core.datamodel.fs.documentum.emc.com/"> <profiles xmlns:q1="http://profiles.core.datamodel.fs.documentum.emc.com/" xsi:type="q1:PropertyProfile" /><profiles . . . xsi:type="q2:ContentProfile" formatFilter="ANY" pageFilter="ANY" pageNumber="0" pageModifierFilter="ANY" /> <profiles . . . xsi:type="q3:ContentTransferProfile" mTransferMode="UCF"><q3:ActivityInfo><sessionId xmlns="http://content.core.datamodel.fs.documentum.emc.com/">. . .</sessionId> <activityId . . .>. . .</activityId><autoCloseConnection . . .> true</autoCloseConnection></q3:ActivityInfo></profiles></ServiceContext> </soap:Header> <soap:Body> <create xmlns="http://core.services.fs.documentum.emc.com/"> <DataPackage repositoryName="target_docbase" xmlns="http://core.datamodel.fs.documentum.emc.com/"><DataObject isTransient="false" xmlns=""><Identity repositoryName="target_docbase" valueType="UNDEFINED" /><FileContent pageNumber="0" isLogical="false" isPassthrough="false" contentTransferMode="UCF" xmlns="http://content.core.datamodel.fs.documentum.emc.com/" /> </DataObject></DataPackage>...operation options (may be null)...</create> </soap:Body> </soap:Envelope>
2007 EMC Corporation. All rights reserved.

15

Closer Look Object Service (page 4 of 4)


Consistent, XML-/XSD-based data model (continued)
package com.emc.documentum.fs.datamodel.core; @XmlType (name="DataPackage", namespace = "http://core.datamodel.fs.documentum.emc.com/") @XmlRootElement (name="DataPackage") @XmlAccessorType (XmlAccessType.FIELD) public class DataPackage { public DataPackage(DataObject dataObject)[...] // more ctors, too public void addDataObject(DataObject dataObject)[...] // getDataObjects(), etc. public String getRepositoryName()[...] // setRepositoryName(), too; also toString() } @XmlType (name="DataObject". . .) @XmlRootElement . . . @XmlAccessorType . . . public class DataObject { public DataObject(ObjectIdentity identity, String type)[...] // more ctors, too public ObjectIdentity getIdentity()[...] // setIdentity(), too public String getType()[...] // setType(), too public PropertySet getProperties()[...] // setProperties(), too public ArrayList<Relationship> getRelationList()[...] // setRelationList(), too public ArrayList<Permission> getPermissionList()[...] // setPermissionList(), too public boolean isTransient()[...] // setTransient(), too public List<Content> getContentList()[...] // also toString() }
2007 EMC Corporation. All rights reserved.

16

DFS Data Model (page 1 of 3)


Important data part of service orientation
Services are about data and operations upon data

Rich model covers multiple aspects


Identity, persistent objects, permissions, schema,

Generalized payload representation


DataPackage, DataObject, ObjectIdentity, PropertySet,

Controlling operations and results


PropertyProfile, ContentProfile, SchemaProfile, DeleteProfile, OperationOptions

Extensibility and openness


New services can use DFS data model as-is or extend it New data model objects can be added
2007 EMC Corporation. All rights reserved.

17

DFS Data Model (page 2 of 3)


Payload tree

DataPackage
Payload container with one or more DataObjects

DataObject
Generalized representation of a persistent object Can have
ObjectIdentity ID, path, query-based qualification Type (Document, Folder, etc.) Metadata as a PropertySet Content multiple files or renditions Relationships related Data Object with relationship information (parent folder)

Example:
Single DataPackage can represent entire file system Top DataObjects are folder with related subfolders and files Can be imported/retrieved in one create operation!
2007 EMC Corporation. All rights reserved.

18

DFS Data Model (page 3 of 3)


Efficiency of data exchange

DataPackage can be sent and received in an operation


DataPackage Update (DataPackage)

Client can provide only data that is to be updated:


ObjectIdentity is required Properties, content as necessary

How much data we want back?


Nothing? Just the ObjectIdentity of created objects? All metadata? Include content, too?

Operations have defaults


Create returns DataObjects with only ObjectIdentity provided

Client determines the result strategy using profiles


Data exchange is on-demand!
2007 EMC Corporation. All rights reserved.

19

DFS Runtime (page 1 of 2)


Envelope for service implementation
For example, reflect (add value) behind published contracts Platform agnosticand impartial

Enhanced exception handling Advanced content transfer


UCF and distributed content (ACS/BOCS) support MTOM for simple transfers

Server and client-side support


Remote and local clients

2007 EMC Corporation. All rights reserved.

20

DFS Runtime (page 2 of 2)


Isolation model benefits

DFS tools/runtime creates isolation envelope DFS supports any client platform (WSDL-based)

Service developer is not aware of SOAP


XML on the wire only for remote calls

DFS supports location independence


In-process API is the same as Java remote API

DFS can be adapted to changes in service platform


For example, REST Service implementation is unchanged

2007 EMC Corporation. All rights reserved.

21

DFS Tools
Extend Java standard JAX-WS tools
For example, adapt wsgen/wsimport to DFS service model

Generate all the artifacts for deployment of a web service


Production and packaging mostly hidden from developer

Generate Java client library


Increase developer productivity

Broader reach
POJOs now viable targets SBOs and Modules, too Standards-based (WS-*, WS-I)

2007 EMC Corporation. All rights reserved.

22

Building a Service
DFS service development lifecycle

Create Java service (POJO, BOF Service)

Annotate: DfsPojoService, DfsBofService


Use DFS tools to generate artifacts
WSDL, proxies (SOAP, local), etc. Optional Java client library

Use generated Java client classes to build tests


In-process API first to simplify development

Use DFS tools to package the WAR/EAR application


Validate tests running remotely (same tests!)

Validate WSDL with non-Java clients


2007 EMC Corporation. All rights reserved.

23

Building a Service
DFS service development lifecycle

Source Control

Application Server
manual

commit

commit

commit

start

Runtime binaries Service sources Module name Classpath def.

Service model (XML)

JAX-WS sources JAXB sources Descriptors (etc.)

xyz.jar xyz-remote.jar Configuration (properties)


BuildService

end

Deployable artifact (i.e., EAR/ WAR)

(SupplyPrerequisites)

GenerateModel

GenerateWrappers

PackageService

time (e.g. artifacts accumulate left-to-right)

2007 EMC Corporation. All rights reserved.

24

Demo

DFS in action

2007 EMC Corporation. All rights reserved.

25

Goals
Understanding where ECM is going and the relevance of SOA Understanding of EMC Documentum Foundation Services
Why How

DFS in action

Wrap-up

2007 EMC Corporation. All rights reserved.

26

In Summary
Key takeaways about EMC Documentum Foundation Services and SOA

Simplified customization via courser-grained development Decouple services and content from the repository
Enables content management outside of the repository

Flexible development options


Platform and language agnostic services

Realization of composite application development


By business analysts via BPM and portals By application programmers via best-of-breed tools

2007 EMC Corporation. All rights reserved.

27

Join the EMC Developer Network (EDN)


http://developer.emc.com

Read my blog
http://craigrandall.net/

Build DFS-based solutions Thank you for your interest!

2007 EMC Corporation. All rights reserved.

28

Service Defined
Service
A service is a business function or resource that is well-defined, selfcontained, and does not depend on the context or state of other services Services use standardized protocols to create a robust connection to other services (i.e., a business service network)

Where objects use abstract data types and data abstraction, services can provide a similar level of adaptability through aspect or context orientation
Context is a Documentum core competency
Content Process (BPM)

2007 EMC Corporation. All rights reserved.

30

Basic Service Concept


2. Discovers

Service Consumer

3. Binds Messages (SOAP) Service Directory (UDDI) 4. Communicates Endpoint Address

Contract (WSDL)

1. Publishes

Service Provider
31

2007 EMC Corporation. All rights reserved.

SOA Defined
The policies, practices, frameworks that enable application functionality to be provided and consumed as sets of services published at a granularity relevant to the service consumer. Services can be invoked, published and discovered, and are abstracted away from the implementation using a single, standards-based form of interface.
CBDi Forum

2007 EMC Corporation. All rights reserved.

32

Service Lifecycle

Solution Implementation

Service Consumption

Discover Analysis Design Deploy Certify Publish

Request Execute Version

Service Provisioning

Service Implementation
2007 EMC Corporation. All rights reserved.

33

Developing a SOA Mindset


Shift to service orientation

From:
Connections = cost Function oriented Build to last Prolonged development Application silos Tightly coupled Object-oriented

To:
Connections = value Process-oriented Build for change Incrementally deployed Orchestrated solutions Loosely coupled Message-oriented

2007 EMC Corporation. All rights reserved.

34

You might also like