学习-培训umentum之dfc开发概览_第1页
学习-培训umentum之dfc开发概览_第2页
学习-培训umentum之dfc开发概览_第3页
学习-培训umentum之dfc开发概览_第4页
学习-培训umentum之dfc开发概览_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

um

Foundation

Class)DFC

(开发概览DFC概览DFC客户端和会话与类型相关接口通用工具操作接口查询相关接口BOF(Business

Object

Framework)开发概览DFC概览um

Foundation

Classes(DFC)是Content

Application和Content

Server进行通信的主要接口。它提供了完整的um

Object

Model的基于对象的应用程序接口DFC能够使程序员通过High-level的操作或者Low-level的对象方法调用来

内容管理包名称描述包含通过

DFC的接口com.um.fc.client包含管理Session和

umRepository数据的类和接口com.documemon包含所有DFC对象都可能用到的有用的类和接口com.um.operations包含通用client功能的接口,如checkingin和checking

out

文档的操作com.um.registery包含在客户端本地系统管理um需要用到的类和接口com.um.xml.xdql包含查询

um

Repository返回XML结果所需要用到的类和接口该程序将在内容库中创建一个新的文件柜,需要四步:获得登录信息,准备创建到内容服务器的会话(Session)提供登录信息:用户名/ /内容库名称创建回话管理对象获得到内容服务器的会话在内容库中创建一个文件柜该会话提供内容库名称、用户名、 ;创建一个会话管理IDfSessionManager

createSessionManager(String

repository,String

user,

String

password)

throws

Exception

{//创建一个客户端对象IDfClientX

clientx

=

new

DfClientX();IDfClient

client

=

clientx.getLocalClient();//创建一个会话管理对象IDfSessionManager

sMgr

=

client.newSessionManager();//创建一个登录信息对象IDfLoginInfo

“loginInfo”IDfLoginInfo

loginInfo=clientx.getLoginInfo();loginInfo.setUser

(user);loginInfo.setPassword

(password);//将登录信息绑定会话管理sMgr.setIdentity(repository,

loginInfo);return

sMgr;

}创建一个到内容服务器的会话:IDfSession

session

=

sMgr.getSession(strRepositoryName);如果登录信息正确,

到内容服务器的一个有效会话你将从会话管理中Session

Manager获得一个有效会话现在就可以来操作内容库里面的各种对象了以下步骤将创建一个新的文件柜将会话赋予并设置文件柜名称,然后创建该程序没有判断是否该文件柜已经存在的情况private

static

IDfFolder

createCabinet(

IDfSession

session,String

cabinetName

)

throws

DfException

{//创建文件柜-使用IDfFolder接口IDfFolder

myCab

=

(IDfFolder)session.newObject("dm_cabinet");myCab.setObjectName(

cabinetName

);//保存该对象到库中myCab.save();return

myCab;}会话release(IDfSession

session)与获得会话当使用Session

Manager,getSession()总是成对出现finally{sMgr.release(session);}刚才的案例中,

使用了一些DFC接口和对象例如:当创建登录信息对象的时候,使用了IDfLoginInfo接口IDfLoginInfo

loginInfoObj

=

clientx.getLoginInfo();配置用户登录名称使用了IDfLoginInfo接口定义的对象loginInfoObj.setUser

(user);从那里了解

DFC接口和对象?JavadocsDFC

Development

Guidehttp:/

um‘Javadocs

由包、类和接口组成DFC

包开始于‘com.DFC

类开始于‘D’(DfClientX)DFC

接口开始于‘I’(IDfSession)选择IDfLoginInfo

接口,然后找到方法和说明setUser()dctm.jar

类文件包含了指向其它类文件的一个使用

DFC

开发,必须

相关类在Java

IDE,

mount

dfc.jar(和其它相关类文件),在Eclipse中添加外部类文件代码中

import

com.

um.fc.client.*在VB中,

添加 到Dfc.dll

(orDfc.tlb)客户端和会话IDfRepositoryMapRepository

LocatorIDfGroupdm_groupIDfdm_IDfFolderdm_folderdm_cabinetIDfSysObjectdm_sysobjectIDfTypedm_typeIDfUserdm_userIDfPersistentObjectPersistent

ObjectIDfCollectionNon-PersistentIDfTypedObjectNon-Persistent

TypeIMyInterfacemy_(BOF)IDfProcessdm_process(workflow

template)IDfFormatdm_formatIDfContainmentdmr_containmentIDfWorkflowdm_workflowIDfACLdm_aclIDfRepositoryMapRepository

LocatorIDfGroupdm_groupIDfdm_IDfFolder

dm_folder

dm_cabinetIDfSysObjectdm_sysobjectIDfTypedm_typeIDfUserdm_userIDfPersistentObjectPersistent

ObjectIDfCollectionNon-PersistentIDfTypedObjectNon-Persistent

TypeIMyInterfacemy_(BOF)IDfProcess

dm_process

(workflow

template)IDfFormatdm_formatIDfContainmentdmr_containmentIDfWorkflowdm_workflowIDfACLdm_aclType

RelatedClients

and

SessionsIDfClientX

IDfClientIDfLoginInfoIDfSessionManager

*

Convenience/IDfSession

Programming

ToolsIDfCollection

***IDfExceptionIDfIdIDfPropertiesIDfFileIDfListQuery

RelatedIDfQueryIDfQueryMgrIDfXMLQueryValidation

RelatedIDfValidatorIDfValueAssistanceVirtualIDfVirtualIDfVirtualBusiness

ObjectFramework

(BOF)IDfBusinessObject

*IDfService

*IDfDbor

*Operations

and

NodesIDfOperationIDfOperationNodeIDfOperationErrorIDfCheckinOperationIDfDeleteOperationNodeIDfXMLTransformOperationIDfValidationOperation...NodeRegistry

and

Local

FilesIDfClientRegistryObjectIDfRepositoryMap**

IDfCheckedOutObjectDFC把所有client功能压缩到IDfClient的接口,这个接口是所有DFC代码的

。从IDfClient对象可以获得一个IDfSessionManager概念。一个DFC

Session实现了内容服务器接。DFC

clients可以通过session

managerIDfSession对象是DFC的和它提供的服务之间的

来得到一个session

objectSession

Manager管理着一个或多个repository的session。Client应用程序给Session处理:从Session

manager获得session,使用完后,把sessionmanager。Session

manager提供了很多方法,能够让管理

和 凭证认证用户的会话获得或处理事务获得会话统计信息缓存检查和未检查的例外事件IDfClientX接口提供了一组工厂方法,这些方法列举了其他对象,例如IDfClient可以通过new

DfClientX()来创建一个IDfClientX对象一些成员方法示例:getLocalClient()-通过返回一个DFC本地客户对象来调用DMCL40.dll跟um

Server进行通信getCheckoutOperation()-IDfCheckoutOperation对象的工厂方法包含了一系列方法可以获得库信息、创建会话管理和其它对象当创建了一个IDfClientX

对象,调用IDfClientX.getLocalClient()

方法来创建一个IDfClient对象IDfClient

client

=

clientx.getLocalClient();一些成员方法示例getDocbaseMap()-请求Connection

Broker,得到所有内容库列表newSessionManager()-IDfSessionManager

对象的工厂方法IDfSessionManager

sMgr

=

client.newSessionManager();IDfSessionManager管理identities,sessions

和transactions使用IDfClient

工厂方法来创建IDfSessionManager

sMgr

=

client.newSessionManager();一些成员方法示例:setIdentity(String

repository,

IDfLoginInfo

identity)

–设置用户验证的

,如果该 已经存在于session中的话,会抛异常sMgr.setIdentity(repository,

loginInfoObj);getSession(String

repository)–取得处理具体应用所需要的session信息,通过该方法可以多次恢复sessionrelease(IDfSession

session)- session对象IDfSession接口封装了

um

Repository的session对象,Client可以通过这个接口来执行Repository操作,查询Repository信息创建一个IDfSession

对象通过

Session

ManagerIDfSession

session

=

sMgr.getSession(strrepositoryName);一些成员方法示例:getDocbaseName()-返回缺省的repository名称newObject(typename)-创建一个持久化对象getFolderByPath(folderPath)-返回IDfFolder对象getSessionManager()-返回Session

Manager

对象接口示例IDfClientXIDfClientX

clientx

=

new

DfClientX();IDfClientIDfClient

client

=clientx.getLocalClient();IDfDocbaseMapIDfDocbaseMap

repositoryMap

=client.getDocbaseMap();IDfLoginInfoIDfLoginInfo

loginInfoObj

=clientx.getLoginInfo();IDfSessionManagerIDfSessionManager

sMgr

=client.newSessionManager();IDfSessionIDfSession

session

=sMgr.getSession(strrepositoryName);与类型相关接口这些类型相关的接口基本都能与

um的具体ObjectType联系起来。这里最重要的一个类型相关接口是IDfSysObject,它提供很多功能相关的方法。属性相关内容管理相关(checkin,lock等,接口IDfOperation也能执行这些操作)内容相关(取得内容路径,

类型等)版本相关(控制版本树,标记版本等)/

相关(控制对象间关系)ACL相关(对象权限控制)Lifecycle相关(对象生命周期控制)VDM相关(虚拟文档管理)Alias相关(别名控制)Events相关(事件 、注销等)其他(工作流,日志等)类型父类型属性示例Persistent

Object

(internaltype)noner_object_idi_vstampSysObject

(dm_sysobject)Persistent

Objectr_creator_name

acl_nameobject_name(dm_

)SysObjectnone接口的对象继承所有父接口里的方法接口父接口方法示例IDfTypedObjectgetObjectId();getString(attrName);IDfPersistentObjectIDfTypedObjectsave();IDfSysObjectIDfPersistentObjectcheckout();

getObjectName();getContent();IDfIDfSysObjectnonetry{IDfdoc

=(IDf )

session.newObject(“dm_”)doc.setContentType(“msw8”);//IDfSysObject的方法doc.setFile("c:/temp/chap1.doc");doc.link("/mycabinet");...//调用其它方法doc.save();//IDfPersistentObject的方法}catch(DfException

dfe){//出错报告}IDfIDfFolderIDfSysObjectIDfPersistentObject概述:IDfTypedObject接口提供所有类型对象的基本操作。提供基本的方来来获得和设置对象属性包括单值和多值属性boolean

isPrivate

=myCabinet.getBoolean(“is_private”)getValueCount(attrName)来定义多值属性中值的数量使用这些方法来定制各种属性类型对象在会话中被创建,它也有一些跟会话有关的方法,例如:DfTypedObject.getSession()-

IDfTypedObject-

IDfPersistentObject-

IDfSysObject-

IDf-

IDfFolder-

IDfType使用这些方法来获取对象属性信息类型方法单值属性booleangetBoolean(String

attrName)doublegetDouble(String

attrName)IDfIdgetId(String

attrName)intgetInt(String

attrName)StringgetString(String

attrName)IDfTimegetTime(String

attrName)IDfValuegetValue(String

attrName)多值属性booleangetRepeatingBoolean(String

attrName,int

index)doublegetRepeatingDouble(String

attrName,

int

index)IDfIdgetRepeatingId(String

attrName,

int

index)intgetRepeatingInt(String

attrName,

int

index)StringgetRepeatingString(String

attrName,

int

index)IDfTimegetRepeatingTime(String

attrName,

int

index)IDfValuegetRepeatingValue(String

attrName,

int

index)使用这些方法来设置对象属性信息类型方法单值属性booleandoubleIDfIdsetBoolean(String

attrName,

boolean

value)setDouble(String

attrName,

doublevalue)setId(String

attrName,

IDfId

value)intsetInt(String

attrName,

int

value)StringsetString(String

attrName,String

value)IDfTimesetTime(String

attrName,

IDfTime

value)IDfValuesetValue(String

attrName,

IDfValue

value)多值booleansetRepeatingBoolean(String

attrName,

int

index,

boolean

value)属性doublesetRepeatingDouble(String

attrName,

int

index,

double

value)IDfIdsetRepeatingId(String

attrName,

int

index,

IDfId

value)intsetRepeatingInt(String

attrName,

int

index,

intvalue)StringsetRepeatingString(String

attrName,

intindex,String

value)IDfTimesetRepeatingTime(String

attrName,

int

index,

IDfTime

value)IDfValuesetRepeatingValue(String

attrName,

int

index,

IDfValue

value)保存对象联接到文件夹设置属性创建对象例如:创建文件柜、文件夹或文档返回类型接口和方法参数使用IDfPersistentObject(cast

to

desired

type)IDfSession.newObject()String

typeName(“dm_cabinet”)在库中创建一个对象voidIDfSysObject.setObjectName()String

objectName(“myobject”)设置对象名称

object_namevoidIDfSysObject.link()String

folderSpec(“/myfolder”)将该对象联接到文件夹voidIDfSysObject.setContentType()String

contentType(“crtext”)设置内容格式类型

(fileformat)voidIDfSysObject.setFile()String

fileName(“c:/test.txt”)设置内容文件voidIDfPersistentObject.save()()保存对象IDfFolderIDfSession.getFolderByPath()String

folderPath(“/myfolder”)返回

IDfFolder,同样也查看该文件夹存在与否IDfIdIDfTypedObject.getObjectId()()用来获得一个IDfId作为参数使用传送会话和文件柜名称来创建创建一个新的“dm_cabinet”,但是使用IDfFolder接口public

static

IDfFolder

createCabinet(

IDfSession

session,String

cabinetName

)

throws

DfException{//先判断该文件柜是否已经存在IDfFolder

myCabinet

=

session.getFolderByPath

("/"

+cabinetName);if(myCabinet

!=

null

){System.out.println("Cabinet

already

exists!");return

myCabinet;//已经存在}//使用IDfFolder接口创建一个文件柜myCabinet

=

(IDfFolder)session.newObject("dm_cabinet");myCabinet.setObjectName(

cabinetName

);//保存该创建的对象

myCabinet.save();return

myCabinet;}传送会话和文件夹路径、名称来创建创建一个新的“dm_folder”,但是使用IDfFolder接口public

static

IDfFolder

createFolder(

IDfSession

session,String

path,String

folderName

)

throws

DfException{//先先判断该文件夹是否已经存在//创建一新的文件夹IDfFolder

myFolder

=(IDfFolder)session.newObject("dm_folder");myFolder.setObjectName(folderName);

myFolder.link

(path);

//连接到父路径//保存该文件夹对象myFolder.save();return

myFolder;}public

staticIDfcreate(

IDfSession

session,String

objectName,IDfFolder

folder,String

content

)throws

DfException{对象=)session.newObject("dm_");//创建一个dm_IDf(IDf//设置文件名字.setObjectName(

objectName

);//设置文件格式类型“type”到crtext.setContentType(

"crtext"

);//文件系统中可用的文件内容.setFile(

content

);//设置在哪个文件夹创建该文档.link(

folder.getObjectId().getId()

);//保存该文件.save();//返回新创建的文件return

;}通用工具IDfDocbaseMapDocbase

LocatorIDfGroupdm_groupIDfdm_IDfFolder

dm_folder

dm_cabinetIDfSysObjectdm_sysobjectIDfTypedm_typeID

Userdm_userIDfPersistentObjectPersistent

ObjectIDfCollectionNon-PersistentIDfTypedObjectNon-Persistent

TypeIMyInterfacemy_(BOF)IDfProcess

dm_process

(workflow

template)IDfFormatdm_formatIDfContainmentdmr_containmentIDfWorkflowdm_workflowIDfACLdm_aclType

RelatedClients

and

SessionsIDfClientXIDfClientIDfDocbaseMapIDfLoginInfoIDfSessionManagerIDfSessionQuery

RelatedIDfQueryIDfQueryMgrIDfXMLQueryValidation

RelatedIDfValidatorConvenience/Programming

ToolsIDfCollectionIDfExceptionIDfIdIDfPropertiesIDfFileIDfListBusiness

ObjectFramework

(BOF)IDfBusinessObjectIDfService

IDfDborOperations

and

NodesIDfOperationIDfOperationNodeIDfOperationErrorIDfCheckinOperationIDfDeleteOperationNodeIDfXMLTransformOperationIDfValidationOperation...IDfValueAssistanceVirtualIDfVirtualIDfVirtualNodeRegistry

and

Local

FilesIDfClientRegistryObjectIDfCheckedOutObjectIDfFile接口-DFC

对象代表了一个文件IDfFile对象的工厂方法:IDfClientX.getFile

(String

filePath)示例:IDfFile

myFile

=

clientx.getFile

(

"c:/mydoc.txt"

);其它一些工厂方法示例:deleteFile()–删除文件exists()–判断文件是否存在setExtension()–设置文件扩展一些方法返回collections(IDfCollection)一个IDfCollection是一种跨平 法通过调用返回多个对象属性示例,返回内容库中所有对象的对象名称:IDfCollection

collection

=

folder.getContents("object_name");使用next()方法实现循环输出while(collection.next()){//对象名称输出到屏幕System.out.println

(collection.getString("object_name"));}IDfCollection主要的方法有:next()close()IDfTypedObject

对象方法在循环中使用IDfCollection

是IDfTypedObject的子类IDfId

myId

=

collection.getId("r_object_id");关闭collectionsfinally{if

(collection

!=

null){collection.close();}}public

static

void

listContentsOfFolder(String

strUserCabinetFolder,

IDfSession

mySession)throws

DfException{IDfFolder

folder

=mySession.getFolderByPath(strUserCabinetFolder

);if(

folder

==

null

){System.out.println("Folder

does

not

exist

in

the

repository!");return;}//继续IDfCollection

collection

=folder.getContents(

"object_name"

);try{//循环while(

collection.next()

){System.out.println(collection.getString(

"object_name"

)

);}}catch(

DfException

e

){//处理例外事件e.printStackTrace();}finally{//关闭Collectionif(

collection

!=

null

){collection.close();}}“/dmadmin”中对象名称IDfList

对象有点像JAVA中的Vector类它比IDfCollection

对象提供更全面的功能IDfList

可以包含任何对象类型创建

IDfList

不是 的,可以将来使用IDfCollections

仅包含最原始的对象,仅仅可以读一次;当调用next()后,不能返回转换IDfCollection

到IDfList

通过使用IDfCollection.getTypedObject()

添加对象到新的IDfList对象示例:当使用IDfOperations(new

objects,root

nodes,childnodes),列表可以使用到新创建的对象中IDfList

listObjectsNew

=

opCheckin.getNewObjects();列表也可使用在IDfOperations

报错包中IDfList

opErrors

=

operation.getErrors()IDfList一些方法:getCount()–返回IDfList项目数量appendString(String

value)-为IDfList添加一字符串getString(int

index)-索引中得到一字符串remove(int

index)-索引中删除一项目get(int

index)-索引中获得一个对象实例set(int

index,Object

value)-添加一个对象到索引IDfList

使用示例:if(

!

operation.execute()

){

IDfList

opErrors

=

operation.getErrors();int

count

=opErrors.getCount();for(

int

i

=

0;

i

<

count;

++i){IDfOperationError

err

=(IDfOperationError)opErrors.get(i);String

strErrorMsg

=

err.getMessage();DfTrace.traceMsg(

strErrorMsg

);}}获得一个对象的

一些方法IDfSession.getObject(IDfId

objID)IDfSession.getObjectByPath(String

path)IDfSession.getObjectByQualification(String

qualification)IDfSession.getObject(IDfId

objID)返回IDfPersistentObject参数是一个IDfId-代表一个对象ID工厂方法是IDfClientX.getId()因为要调用IDfSysObject.getObjectName(),所以必须强制转型到

(IDfSysObject)IDfId

myId

=

clientx.getId("0900d5bb8001fd00");IDfSysObject

sysObj

=(IDfSysObject)sess.getObject(myId);String

myName

=

sysObj.getObjectName();IDfSession.getObjectByPath(String

path)返回

IDfPersistentObject-要求需要标明全路径何对象名称如果路径中有多个路径,其中一个对象被选中IDfSysObject

sysObj

=(IDfSysObject)sess.getObjectByPath("/DFCTest/testObject");if

(sysObj.getObjectName().equals("testObject"))

{//成功的获得该对象...}IDfSession.getObjectByQualification(qualification)返回

IDfPersistentObject

(需要

)使用查询获得String

qualification

=

"dm_where

object_name

=‘"+ object_name

+

"‘

and

FOLDER(ID(‘"

+folder.getObjectId()

+

"‘))";IDfSysObject

myObject

=(IDfSysObject)session.getObjectByQualification(qualification);if

(myObject.getObjectName().equals(object_name))

{//

Successfully

obtained

object...}一些IDfSession的方法:getACL(String

acl ,

String

aclName)getFolderByPath(String

folderPath)getFormat(String

formatName)getGroup(String

groupName)getIdByQualification(String

qualification)getObjectWithCaching(IDfId

objectId,String

typeName,String

className,StringcurrencyCheckValue,boolean

usePersistentCache,boolean

useSharedCache)getObjectWithType(IDfId

objectId,

String

objType,

String

className)newObject(String

typeName)newObjectWithType(String

typeName,

String

className)getType(String

typeName)getTypeDescription(String

typeName,

String

attribute,IDfIdbusinessPolicyId,

Stringstate)getUser(String

userName)getUserByOSName(String

userOSName,

String

userOS

)操作接口IDfDocbaseMapDocbase

LocatorIDfGroupdm_groupIDfdm_IDfFolder

dm_folder

dm_cabinetIDfSysObjectdm_sysobjectIDfTypedm_typeIDfUserdm_userIDfPersistentObjectPersistent

ObjectIDfCollectionNon-PersistentIDfTypedObjectNon-Persistent

TypeIMyInterfacemy_(BOF)IDfProcess

dm_process

(workflow

template)IDfFormatdm_formatIDfContainmentdmr_containmentIDfWorkflowdm_workflowIDfACLdm_aclType

RelatedClients

and

SessionsIDfClientX

IDfClientIDfDocbaseMapIDfLoginInfoIDfSessionManagerIDfSessionQuery

RelatedIDfQueryIDfQueryMgrIDfXMLQueryValidation

RelatedIDfValidatorIDfValueAssistanceVirtualIDfVirtualIDfVirtualConvenience/Programming

ToolsIDfCollectionIDfExceptionIDfIdIDfPropertiesIDfFileIDfListBusiness

ObjectFramework

(BOF)IDfBusinessObjectIDfService

IDfDborOperations

and

NodesIDfOperationIDfOperationNodeIDfOperationErrorIDfCheckinOperationIDfCheckoutOperationIDfImportOperationIDfExportOperation...NodeRegistry

and

Local

FilesIDfClientRegistryObjectIDfCheckedOutObjectOperations包是一组

次的执行通用内容管理的功能的接口集合,例如import,checkin,checkout,export,delete,它有如下一些特点:能够在同一时间处理多个对象处理了很多底层的细节操作XML文档多repository操作在编程实现Operation的时候,需要与对应的Nodes接口协同工作,Nodes就是要进行Operation操作的项目Operations也有继承关系,所有的IDfXXXOperation都继承自IDfOperation接口(XXX具体代表import,checkin,checkout等动作)所有的IDfXXXNode都继承自IDfOperationNode接口(XXX具体代表import,checkin,checkout等动作)。IDfCancelCheckoutOperationIDfCheckinOperationIDfCheckoutOperationIDfCopyOperationIDfDeleteOperationIDfExportOperationIDfImportOperationIDfXMLTransformOperationIDfValidationOperationIDfMoveOperationIDfOperationErrorIDfOperationMonitorIDfOperationIDfCancelCheckoutNodeIDfCheckinNodeIDfCheckoutNodeIDfCopyNodeIDfDeleteNodeIDfExportNodeIDfImportNodeIDfXMLTransformNodeIDfValidationNodeIDfMoveNodeIDfOperationNode执行创建操作对象ImportExportCheckoutCheckinCancelCheckoutCopyDeleteMoveValidationXMLTransform对每一个Node执行相同的操作步骤添加操作对象VirtualsVirtualComponentsObjects

(s)FoldersFilesDirectoriesBDEDoc2AcrepositorFiyle

System创建一个合适的Operation对象(例如IDfCheckinOperation)使用Operation对象的add方法创建Nodes执行这个Operation异常处理处理结果操作Operations发生错误,一般不抛出异常(除非发生致命错误),而是把错误在IDfOperationError。如果在对多个nodes执行一种操作的时候,其中一个对象发生错误,operations仍旧执行下去,执行完成以后,返回出错的nodesIDfCheckinOperation

opCheckin

=

clientx.getCheckinOperation();if(

node1

==

null

)

//check

for

null//handle

null

caseherenode1.setFormat(

"crtext"

);boolean

success

=

opCheckin.execute();if(

!

success

){myProcessErrors(

opCheckin.getErrors()

);}IDfList

listObjectsNew

=

opCheckin.getNewObjects();创建1a

设置参数添加创建Nodes2a

设置参数执行处理错误处理结果35412opCheckin.setVersionLabels(

"Approved"

);

1aIDfSysObject

sysObj1=(IDfSysObject)sess.getObject(clientx.getId("09...1"));IDfCheckinNode

node1=(IDfCheckinNode)opCheckin.add(sysObj1);2a通过adding

Nodes

执行Operation对象每个

Node

独立执行IDfCheckinOperation

operation

=

clientx.getCheckinOperation();IDfSysObject

sysObj1=(IDfSysObject)session.getObject(clientx.getId("09...1"));IDfCheckinNode

node1

=

(IDfCheckinNode)operation.add(sysObj1);IDfSysObject

sysObj2=(IDfSysObject)session.getObject(clientx.getId("09...2"));IDfCheckinNode

node2

=

(IDfCheckinNode)operation.add(sysObj2);boolean

success

=

operation.execute();IDfCheckinNodeIDfCheckinOperationIDfCheckinNode文档1文档2支持简单和复杂对象支持混合类型:IDfSysObjectIDfVirtual文件IDfImportOperation

op

=

clientx.getImportOperation();IDfImportNode

node

=

(IDfImportNode)op.add(

"c:/HTSWeb/index.html"

);op.setSession(

session

);boolean

success

=

op.execute();–

和子IDfImportOperation

op

=

clientx.getImportOperation();IDfImportNode

node

=

(IDfImportNode)op.add(

"c:/HTSWeb"

);op.setSession(

session

);boolean

success

=

op.execute();NodeOperationthrows

DfExceptionum

缺省的public

void

mport(){IDfImportOperation

operation

=clientx.getImportOperation();operation.setSession(m_session);operation.setDestinationFolderId(clientx.getId("0c01e6058000a40f")

);IDfImportNode

nodeA

=

(IDfImportNode)

operation.add("c:/doc_a.txt");IDfImportNode

nodeB

=

(IDfImportNode)

operation.add("c:/doc_b.txt");IDfImportNode

nodeC

=

(IDfImportNode)

operation.add("c:/doc_c.txt");nodeC.setDocbaseObjectType(

"sop_ "

);nodeC.setDestinationFolderId(clientx.getId("0b01e6058000a4f2")

);if(

!

operation.execute()

){//

Handle

errors...}}选择一个操作接口满足需要的任务查询JavaDocs,了解该Operation接口:“setter”方法来设置参数“getter”方法获得其它信息,例如:缺省信息查询

JavaDocs,了解对应的Operation-type

Node接口“setter“方法来设置并覆盖操作级别参数“getter”方法获得缺省参数运行execute()方法将针对每个Node自动完成一系列步骤示例:IDfCheckoutOperation:获得每个文档的锁创建checkout的目的路径创建合适的文件名从内容服务器上 主要的内容文件将签出的文件添加到 表中执行

add()后可以设置或获得针对该节点execute()前后的参数可以通过getNodes(),得到IDfList可以使用getRootNodes()和getChildren()获得节点级别public

static

void

printOperationNodes(IDfOperation

operation){IDfList

nodes

=

operation.getNodes();int

nodeCount

=

nodes.getCount();for(int

i

=

0;

i

<

nodeCount;

i++){IDfOperationNode

node

=(IDfOperationNode)nodes.get(i);System.out.println("Object

name:

"

+

node.getNewObjectName()

);}}问题:如果使用IDfImportOperation,怎样配置其“关键字”属性?答案:当执行完毕操作后,采用getObject()

和调用IDfSysObject方法...//执行操作IDfId

myId

=

node.getObjectId();IDfSysObject

myDoc

=(IDfSysObject)

session.getObject

(myId);myDoc.setKeywords

(

0,

“keyword0”

);myDoc.save();

//记得保存!IDfImportOperation

opImport

=clientx.getImportOperation();//repository

session用于导入操作.opImport.setSession(

session

);//设置目的文件夹opImport.setDestinationFolderId(

clientx.getId("0b0...")

);//需要导入的文件获得IDfFile

myFile

=

clientX.getFile(

"C:/mydoc.txt"

);//将文件添加//创建一个到导入节点接口IDfImportNode

node

=

(IDfImportNode)opImport.add(

myFile

);opImport.execute();执行完整的客户端导入(一个或多个节点)可以导入独立的文件或文件夹通过一个简单的add(),导入包含一个可以导入复合和XML文件可以add()IDfFile

对象中所有内容–

为了避免错误,可以检查该文件或 是否已经存在设置目的文件夹IDfOperation.setDestinationFolderId()–

为了避免错误,可以检查 是否已经存在必须标明一个会话

IDfImportOperation.setSession()一些IDfImportNode()方法:setDestinationFolderId()getObject()

use

this

to

change

any

properties

of

the

objectgetObjectId()setDocbaseObjectType()setFormat()setVersionLabels()setXMLApplicationName()enableOLELinksProcessing()setKeepLocalFile()内容可以参看

JavaDocsIDfSysObject

simpleObject

=

(IDfSysObject)session.getObject(objectId_1

);IDfCheckoutOperation

checkout

=clientx.getCheckoutOperation();checkout.add(

simpleObject

);if(

checkout.execute()

==

false

){ this.displayErrorList(

checkout.getErrors()

);}Checkout

一个文档Checkout

置一把锁到该对象,然后拷贝到本地文件系统–

缺省文件被放置在Checkout

,可以通过setDestinationDirectory()覆盖原来配置可以

add()

IDfSysObject,

IDfVirtual or

IDfVirtualNodeIDfSysObject

simpleObject

=

(IDfSysObject)session.getObject(

objectId_2

);IDfVirtual vDoc

=

simpleObje

Virtual

("CURRENT",IDfCheckoutOperation

checkout

=clientx.getCheckoutOperation();checkout.add(

vDoc

);if(

checkout.execute()

==

false

){

this.displayErrorList(

checkout.getErrors()

);false

);}Checkout

虚拟文档IDfCheckinOperation

checkin

=clientx.getCheckinOperation();IDfSysObject

sysObject

=(IDfSysObject)session.getObject(objectId_1);IDfCheckinNode

node

=

(IDfCheckinNode)checkin.add(

sysObject

);checkin.setCheckinVersion(

IDfCheckinOperation.NEXT_MINOR

);checkin.setVersionLabels(

"CURRENT,DRAFT,WIP"

);node.setFilePath(

"c:/myfile.doc"

);if(

checkin.execute()

){DfId

freshNode=node.getNewObjectId(); //新创建的对象}Checkin

文档–标明Check-in版本号和标记符号执行check

in

所有节点Detects

compound

references

(links)

(off

by

default)创建新的库对象上载文件到服务器清除checkout

标记更新本地客户端 表,清除本地内容文件可以

add()

IDfSysObject,

IDfVirtual orIDfVirtualNode拷贝内容对象到文件系统所有虚拟文档树被自动导出可以add() IDfSysObject,

IDfVirtualor

IDfVirtualNodeIDfExportOperation

opExport

=

clientx.getExportOperation();IDfSysObject

simpleObject

=

(IDfSysObject)

session.getObject("09...1");IDfExportNode

nodeExport

=

(IDfExportNode)

opExport.add(

simpleObject

);nodeExport.setDestinationDirectory(

"c:/My

exported

files"

);opExport.execute();导出一个文档到指定查询相关接口IDfQuery接口是一个非持久化对象,用来传送一条DQL语句给DQL引擎,返回查询结果IDfQuery本身也只是一个辅助DFC编程的工具,具体执行时需要传送session给IDfQuery对象。DFC操作DB有以下方式:直接查询

um对象类型,这个时候,可以认为IDfQuery查询的是一个对象型数据库。直接通过JDBC,或者ODBC来

DBIDfQueryDQL

QuerySession

IDIDfCollection获得一个IDfQuery对象设置查询属性执行查询,得到结果迭代查询结果并返回需要值关闭连接IDfClientX.getQuery()query.setDQL("string")query.execute(sess,

querytype)returns

IDfCollectioncol.next()直到返回错误IDfTypedObject方法,getString()col.close()IDfCollection

execQuery(IDfSession

sess,

String

queryString){IDfCollection

col

=

null;

//

Collection

for

the

resulttry

{IDfQuery

q=clientx.getQuery();//创建查询对象q.setDQL(queryString);//配置属性//DF_READ_QUERY

是查询类型col

=

q.execute(sess,

IDfQuery.DF_READ_QUERY);}catch

(DfException

e)

{//错误处理}return

col;}查询类型描述DF_APPLYused

to

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论