版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版国际金融风险管理合同范本3篇
- 二零二五版建筑工地劳务用工及社会保障服务合同范本3篇
- 二零二五年酒店客房协议价优惠合作合同3篇
- 2024政府采购合同环境与安全监督协议3篇
- 2025年新型城镇化项目水电设施安装施工合同3篇
- 二零二五版板房租赁与租赁期满资产评估与转让合同3篇
- 二零二五年度出租车司机服务规范与客户满意度提升合同3篇
- 二零二五年透水混凝土工程验收与评估合同2篇
- 二零二五年智能交通管理系统采购合同3篇
- 二零二五版房屋代理租赁资产评估合同3篇
- 盖洛普Q12解读和实施完整版
- 2023年Web前端技术试题
- GB/T 20840.8-2007互感器第8部分:电子式电流互感器
- GB/T 14864-2013实心聚乙烯绝缘柔软射频电缆
- 品牌策划与推广-项目5-品牌推广课件
- 信息学奥赛-计算机基础知识(完整版)资料
- 发烟硫酸(CAS:8014-95-7)理化性质及危险特性表
- 数字信号处理(课件)
- 公路自然灾害防治对策课件
- 耳鸣中医临床路径
- 安徽身份证号码前6位
评论
0/150
提交评论