EMC -- DFS篇(Documentum Foundation Services)

DFS 包含的技术有

1. Enterprise Content Services.

--- 一组面向对象的服务。

2.  Data model and API

3. Client productivity layer

4. Tools for generating services and runtime support

5. SDK

6. EMC Documentum Solution Catalog Repository

DFS消费者

1. 使用生产力层 , 用java 和 .net 直接调用  wsdl

2. 通过WSDL产生客户端代理, 不需要使用生产力层

转化方式:

java : Axis 或者JAX-WS

.NET: WCF(EMC自己提供的工具)

本地和远端消费

DFS提供的所有服务,包含客制的服务, 都可以使用DFS java 生产里层本地调用, 之后才作为远端客户运行。

这样的话对于调式非常有用。

DFS工具

1. 把Java代码生成WSDL. 使用Composer interface。

2. 把WSDL生成代码来调用。 使用 ant 脚本(EMC提供, 包含在WDK中)

DFS服务可以实施为POJOs(Plain Old Java Objects), BOF, SBOs

Java Productivity Layer

SDK的路径不能有空格

调用Query Service 的例子(基于Eclipse)

1.  确保http://IP:9080/services/core/QueryService?WSDL

是可以连接和正常访问的, 具体需要看IP, Port 是否正常, QueryService 是否正确安装(默认在Content Server安装时,会安装在jboss里)

2.  新建java 工程,把 SDK下 , lib/java 目录下所有的jar档 include 到build path中(注意, 千万不要把xml等非jar 的文件include)

3. 写测试代码 TQueryServiceTest.java

package com.study.client;

import java.util.List;

import com.emc.documentum.fs.datamodel.core.CacheStrategyType;
import com.emc.documentum.fs.datamodel.core.DataObject;
import com.emc.documentum.fs.datamodel.core.DataPackage;
import com.emc.documentum.fs.datamodel.core.OperationOptions;
import com.emc.documentum.fs.datamodel.core.context.RepositoryIdentity;
import com.emc.documentum.fs.datamodel.core.properties.PropertySet;
import com.emc.documentum.fs.datamodel.core.query.PassthroughQuery;
import com.emc.documentum.fs.datamodel.core.query.QueryExecution;
import com.emc.documentum.fs.datamodel.core.query.QueryResult;
import com.emc.documentum.fs.rt.ServiceException;
import com.emc.documentum.fs.rt.context.ContextFactory;
import com.emc.documentum.fs.rt.context.IServiceContext;
import com.emc.documentum.fs.rt.context.ServiceFactory;
import com.emc.documentum.fs.services.core.client.IQueryService;

public class TQueryServiceTest {

	private String repository = "test";

	private String userName = "username";

	private String password = "passowrd";

	private String host = "http://ip:port/services";

	private static String moduleName = "core";

	private IServiceContext serviceContext;

	public TQueryServiceTest() {
	}

	public void setContext() {
		ContextFactory contextFactory = ContextFactory.getInstance();
		serviceContext = contextFactory.newContext();
		RepositoryIdentity repoId = new RepositoryIdentity();
		repoId.setRepositoryName(repository);
		repoId.setUserName(userName);
		repoId.setPassword(password);
		serviceContext.addIdentity(repoId);
	}

	public void callQueryService() {
		try {
			ServiceFactory serviceFactory = ServiceFactory.getInstance();
			IQueryService querySvc = serviceFactory.getRemoteService(IQueryService.class, serviceContext, moduleName,
					host);
			PassthroughQuery query = new PassthroughQuery();
			query.setQueryString("select r_object_id,object_name from dm_cabinet");
			query.addRepository(repository);
			QueryExecution queryEx = new QueryExecution();
			queryEx.setCacheStrategyType(CacheStrategyType.DEFAULT_CACHE_STRATEGY);

			OperationOptions operationOptions = null;
			QueryResult queryResult = querySvc.execute(query, queryEx, operationOptions);
			System.out.println("QueryId == " + query.getQueryString());
			System.out.println("CacheStragegyType == " + queryEx.getCacheStrategyType());
			DataPackage resultDp = queryResult.getDataPackage();
			List<DataObject> dataObjects = resultDp.getDataObjects();
			int numberOfObjects = dataObjects.size();
			System.out.println("Total objects returned is: " + numberOfObjects);
			for (DataObject dObj : dataObjects) {
				PropertySet docProperties = dObj.getProperties();
				String objectId = dObj.getIdentity().getValueAsString();
				String docName = docProperties.get("object_name").getValueAsString();
				System.out.println("Cabinet " + objectId + " name is " + docName);
			}
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TQueryServiceTest t = new TQueryServiceTest();
		t.setContext();
		t.callQueryService();
	}

}


ServiceFactory:

1. 两个参数时, 服务的地址会从

serviceFactory.getRemoteService(IObjectService.class,
                    serviceContext);

方法:

createPath: 创建目录

create: 创建doc

DFS SDK

包含 DFS  productivity layer and build tools

对于本地DFS客户端(local DFS Client), 消费者和服务在同一个进程中,在同一个Java虚拟机中。

本地DFS客户端通过传统的RPC方式与Content Server交互。

本地消费方式提供的附加功能: 因为和远端服务提供的功能是一样的, 对与系统开发比较有用。 可以用来做测试。不同的地方有

1. 服务上下文注册

2. 内容传送不同

时间: 2024-10-24 03:03:17

EMC -- DFS篇(Documentum Foundation Services)的相关文章

Chrome Foundation Services

Chrome Foundation Services Contents Overview API Standards Service Directory Structure Dependencies Physical Packaging Additional Documentation Relationship To Other Top-Level Directories Adding a new service Overview This directory contains Chrome F

OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于Java中的自动装箱和拆箱,Java中的集合其实也是不允许存入基本类型的,但是我们任然看可以那么操作,就是因为有自动装箱功能,如果你将Eclipse的JDK改成5.0之前的,你看看还能操作吗.. 注:那为什么基本类型不能存入到集合中呢? 原因是在操作集合的时候会操作集合元素中的方法,但是基本类型是没有

OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类: http://blog.csdn.net/jiangwei0910410003/article/details/41788223 今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArray类是不可变的,NSMutableArray类是可变的.

Objective-C学习篇05—Foundation框架简介

iOS中所谓的框架,说到底就是一个目录,iOS提供了很多我们可以在应用程序中调用的框架.许多应用程序都使用了如Foundation.UIKit和Core Graphics这些框架.根据你为应用程序选择的模版,相关的框架就已经被自动引入了.比如我们在OSX Application下的CommandLineTool创建一个Xcode工程时,系统会帮我们默认引入Foundation 框架: #import <Foundation/Foundation.h>如果默认加入的框架不能满足你的应用程序的需求

OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象

在之前的一篇文章中我们说到了Foundation框架中的NSObject对象: http://blog.csdn.net/jiangwei0910410003/article/details/41788121 那么今天在在来继续看一下Foundation框架中的常用对象:NSString和NSMutableString 在OC中NSString对象是不可变的,和Java中的String一样的,而NSMutableString是可变的,和Java中的StringBuilder一样. 一.NSStr

(转载)OC学习篇之---Foundation框架中的NSObject对象

前一篇文章讲到了OC中的代理模式,而且前几篇文章就介绍了OC中的类相关知识,从这篇文章开始我们开始介绍Foundation框架. OC中的Foundation框架是系统提供了,他就相当于是系统的一套api,和Java中的一些系统jar很相似,又早起的一批人开发的,内部有很多现有的类和功能提供给我们使用.那么今天首先来介绍一下Foundation框架中的第一个类NSObject. 在之前介绍了类的相关知识,我们看到我们自定义的类都必须实现NSObject类,这个类内部有很多现有的方法可以供我们使用

(转载)OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象

在之前的一篇文章中我们说到了Foundation框架中的NSObject对象,那么今天在在来继续看一下Foundation框架中的常用对象:NSString和NSMutableString. 在OC中NSString对象是不可变的,和Java中的String一样的,而NSMutableString是可变的,和Java中的StringBuilder一样. 一.NSString对象 在OC中,NSString对象是非常重要的一个对象,也是最基础的一个对象,是用来处理字符串的常用类,和Java中的St

(转载)OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java中集合的思想,应该还有一个Set,是的,OC中有NSSet和NSMutableSet这两个类的,但是,这里我为什么不单独介绍了呢?因为他的操作和NSArray是非常相似的,只是他和NSArray有一个区别就是他不能放重复数据,而且他也是无序的.其他没什么了,所以就不单独介绍了,而且NSSet在后面的

OC学习篇之---Foundation框架中的NSObject对象

前一篇文章讲到了OC中的代理模式:http://blog.csdn.net/jiangwei0910410003/article/details/41777627,而且前几篇文章就介绍了OC中的类相关知识,从这篇文章开始我们开始介绍Foundation框架. OC中的Foundation框架是系统提供了,他就相当于是系统的一套api,和Java中的一些系统jar很相似,又早起的一批人开发的,内部有很多现有的类和功能提供给我们使用.那么今天首先来介绍一下Foundation框架中的第一个类NSOb