版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DocumentumDFCTrainingBroadtextLtd.2010目录Documentum基础知识DFCDQLDFSTBO&SBODocumentum基础知识Documentum?企业级电子文档管理系统企业内容管理专家行业领先产品文档管理平台先进的产品设计理念丰富的产品线众多的合作伙伴文档管理和交换中心平台各种内容库和文档类型OtherRep.丰富的内容服务业务流程优化基本内容
服务SAP内容服务及归档复合文档管理影像管理内容捕获业务流程管理网页发布邮件归档动态文档生成与发布信息权限管理可信内容服务信息自动分类和推送信息生命周期管理财务报表
归档统一搜索不同的客户端EMCDocumentum基本功能Documentum带来的好处Documentum企业内容管理平台: 提高了内容快速搜索的智能,让组织知识更容易被发现 按照业务规则管理企业及组织非结构化内容和知识的生命周期 通过内容的格式以及获取渠道控制发布 根据不同文档的安全级别控制文档文档的访问级别 法规遵从 对内容协作的支持 与授权的工具及企业应用进行快速整合与文件系统的区别Documentum管理文档与在文件系统的区别:不能够快速准确地获取文档的最新版本对每个文档单独设定访问权限的功能非常有限搜索文档只能是针对文件系统中有限的几个属性文件系统中对同一份文档的不同格式以单独的文档来表现不支持工作流如果用户没有特殊需求默认总是能够获取最新版本可以对文档的读、写、删等等不同权限针对用户分别指定可以根据客户需求制定多样的搜索功能,包括全文搜索对同一份文档的不同格式是以同一文档进行管理支持文档的发布、审批等工作流文件系统DocumentumECM平台什么是文档库Documentum’s文档库:内容文件存放在文件系统中文档的属性信息存放在关系型数据库中(RDBMS)Oracle,SQLServer,DB2,Sybase支持多种操作系统
UNIX,Linux,Windows注意:Repository和Docbase这两个术语通常都是指文档库,可以互换文档库文件系统数据库文档库对象非结构化内容在文档库中是以一个
对象来保存一个文档对象由两部分元素构成:属性
-存储在数据库中内容
(文件夹、用户等没有内容)
-存储在文件系统中文档库文件系统数据库内容文件文件属性作者创建日期文件名访问权限基本访问权限授予用户访问和维护一个
文档对象内容的权限基本权限级别:NONE(1):没有权限BROWSE(2):浏览对象的权限READ(3):查看对象内容的权限RELATE(4):为PDF、TIFF等格式文档添加注释的权限VERSION(5):修改文档版本信息的权限WRITE(6):修改文档并把文档保存入相同版本的权限DELETE(7):删除文档的权限文档的基本权限是可“继承”的一个用户对于某个特定文档具有RELATE
权限一定具有READ
和BROWSE
权限文档权限用户能否访问文档库中的文档取决于该文档的
访问权限集Documentum灵活的权限架构可以容许用户
为特定的用户授予特定的访问权限文档访问权限及能够被自动的分配给文档,
也可以基于业务规则手工分配权限集定义了一个用户可以怎样与文档交互文档的权限集清晰地描述了文档库中所有用户对
本文档所具有的访问权限WorldOwner
TrainingConsultingdavidNONEDELETEWRITEVERSIONWRITE––ChangeLocation–ChangeOwner,ChangeStateUsers/GroupsBasicPermissionsExtendedPermissions文档、权限和用户用户username:Davidloginname:davidusersource:LDAP
……内容文件属性ownername:Johncreationdate:05-21-2005objectname:AssemblyProcessformat:msw8subject:Manufacturingkeywords:mfg,tool,assembly
acl:dm_aclWorldOwner
StanleyDavidMarketingBROWSEDELETEWRITEREADVERSIONUsers/GroupsPermissions权限集注意:当然权限集中也可以为组和角色分配权限强大的Documentum内容管理平台
基础服务、安全服务、搜索、格式转换……企业数据非结构化数据集中管理
将整个企业的非结构化数据进行大集中式的管理,使得各个业务系统中的非结构化数据立即拥有Documentum平台所提供的多种服务,让企业的数据在安全性和可靠性得到可靠保证;此外其它系统也可以便捷地使用Documentum平台的全文搜索、格式转换等服务。其它的业务系统
合同管理系统、项目管理系统……管理内容服务内容库
图书馆服务自动各式转换多国语言翻译虚拟文档管理安全全文检索、关键字和属性的检索内容管理平台—集中式管理内容管理平台—业务系统接口方案ContentServerDOCUMENTUM平台FILESTORERDBMSFULLTEXTXMLSTOREDocumentumFoundationServicesDocumentumFoundationClassesJava应用系统C#应用系统MediaWorkspaceDFC什么是DFC?DFC(DocumentumFoundationClasses)Documentum基础类代表了展现所有Documentum功能的最丰富的API.DFC提供了一种面向对象的架构来访问ContentServer的功能.DFC将Documentum对象模型作为一个面向对象的客户端类库来实现,供内容管理应用使用.多种应用都可以使用API,包括JAVA,VB,C#,C++开发的应用.DFC作为一套JAVA类和接口来实施,带有一个连接,用于通过COM从VB或者C++中访问DFC.简单的客户端和服务器体系结构应用采用客户端对象通过DFC对ContentServer进行访问.创建一个客户端对象会加载所需的共享类库.常见术语介绍ContentServerDocbaseDocbrokerDocAppObjectTypeAttributesCabinet&FolderVersioningPermissionACLDocbroker每当客户端请求服务器连接时,DocBroker作为桥梁或者中介.代替客户端向服务器请求信息.返回的方式则有些不同,ContentServer以固定的时间间隔向多个DocBroker广播它的连接信息,信息经过DocBroker返回到请求的客户端.从返回的信息中,客户端可以选择使用哪个服务器.象WebPublisher,DocumentumApplicationBuilder这样的客户端可以通过在客户端的perties文件定义一个主要的或者备用的DocBroker与多个DocBroker通信.DocbrokerDocApp对于Documentum来说,DocApp是将对象打包成单元.DocApp将生命周期,工作流,文件夹等对象作为可配置单元从一个Docbase移动到另外的Docbase中.并且由它再创建一个DocApp压缩文件。在文件系统中,这个压缩文件代表DocApp.然后,通过DocumentumApplicationInstaller将DocApp安装到另一个Docbase。DocAppObjectType
属性(Attributes)在Documentum中,属性用来描述对象的.持久化对象类型有三个属性是所有的对象都具有的:r_object_idi_is_replicai_vstampCabinet&Folder文件柜(Cabinet)是最高一级的目录,它包含文件夹,文件和其它对象.对象即可以在文件柜或者文件夹中.在documentum中,文件柜对象类型是dm_cabinet.文件夹(Folder)存在于在文件柜或者文件夹中.在documentum中,文件夹对象类型是dm_folder.dm_cabinet继承dm_folder.通过文件柜和文件夹组织文件可以帮助我们更好的分类和快速查找重要的信息.不能继承文件柜创建类型,但可以继承文件夹创建类型.VersioningVersion1.0Version1.1Version2.0Version1.2Version2.1pertiesdfc.docbroker.host[0=5dfc.docbroker.port[0]=1489dfc.globalregistry.repository=hlbyc_projectdfc.globalregistry.username=dm_bof_registrydfc.globalregistry.password=xNue7OEwZEaffBLWca4Zyg\=\=erval=60dfc.bof.registry.preload.enabled=falseerval=60dfc.resources.diagnostics.enabled=T会话管理器(SessionManager)Asessionmanager(IDfSessionManager)managessessionsforasingleuserononeormorerepositories.YoucreateasessionmanagerusingtheDfClient.newSessionManagerfactorymethod.ThesessionmanagerservesasafactoryforgeneratingnewIDfSessionobjectsusingtheIDfSessionManager.newSessionmethod.Immediatelyafterusingthesessiontodoworkintherepository,theapplicationshouldreleasethesessionusingtheIDfSessionManager.release()methodinafinallyclause.Thesessioninitiallyremainsavailabletobereclaimedbysessionmanagerinstancethatreleasedit,andsubsequentlywillbeplacedinaconnectionpoolwhereitcanbeshared.TheIDfSessionManager.getSessionmethodchecksforanavailablesharedsession,and,ifoneisavailable,usesitinsteadofcreatinganewsession.Thismakesforefficientuseofcontentserverconnections,whichareanextremelyexpensiveresource,inawebprogrammingenvironmentwherealargenumberofsessionsarerequired.会话(Session)Todoanyworkinarepository,youmustfirstgetasessionontherepository.Asession(IDfSession)maintainsaconnectiontoarepository,andgivesaccesstoobjectsintherepositoryforaspecificlogicaluserwhosecredentialsareauthenticatedbeforeestablishingtheconnection.TheIDfSessioninterfaceprovidesalargenumberofmethodsforexaminingandmodifyingthesessionitself,therepository,anditsobjects,aswellasforusingtransactions(refertoIDfSessionintheJavadocsforacompletereference).Asharablesessioncanbesharedbymultipleusers,threads,orapplications.Aprivatesessionisasessionthatisnotshared.Togetasharedsession,useIDfSessionManager.getSession.Togetaprivatesession,useIDfSessionManager.newSession.Session&SessionManagerwherethesessionmanagerwillbelimitedtoprovidingsessionsforasinglerepository,orwherethelogincredentialsfortheuseristhesameinallrepositories,youcansetasingleidentitytoIDfLoginInfo.ALL_DOCBASES(=*).getSession(session)/newSession(session)releaseSession(session)成对出现.释放的session不能再被使用.创建会话管理器IDfSessionManagercreateSessionManager(Stringdocbase,Stringuser,Stringpass)throwsException{//createClientobjectsIDfClientXclientx=newDfClientX();IDfClientclient=clientx.getLocalClient();//createaSessionManagerobjectIDfSessionManagersMgr=client.newSessionManager();//createanIDfLoginInfoobjectnamedloginInfoObjIDfLoginInfologinInfoObj=clientx.getLoginInfo();
loginInfoObj.setUser(user);loginInfoObj.setPassword(pass);loginInfoObj.setDomain(null);//bindtheSessionManagertothelogininfosMgr.setIdentity(docbase,loginInfoObj);//couldalsosetidentityformorethanoneDocbases://sMgr.setIdentity(strDocbase2,loginInfoObj);//sMgr.setIdentity(*,loginInfoObj);returnsMgr;}创建会话getSession()
首先从sessionpooling中找到一个未使用的session,如果没有可用的session,则直接创建一个session.
session=sMgr.getSession(docbaseName);newSession()
直接创建一个session.
session=sMgr.newSession(docbaseName);释放会话release()sMgr.release(session);
将session释放到sessionpooling中.
获取对象(一)()IDfClientXclientx=newDfClientX();IDfIdmyId=clientx.getId(strObjId);
IDfSysObjectsysObj=(IDfSysObject)session.getObject(myId);if(sysObj==null){System.out.println("Objectcannotbefound.");returnnull;}else{System.out.println("Objectnamed"+sysObj.getObjectName()+"wasfound.");}(没有指明是那个对象?全部的sysObj??)获取对象(二)
如果ID为myId的对象的类型是dm_document.获取对象可以使用下列两种方式的任意一种.IDfSysObjectsysObj=(IDfSysObject)session.getObject(myId);IDfDocumentsysObj=(IDfDocument)session.getObject(myId);(这里myId是不是个具体的数字ID??)获取对象(三)getObject(IDfId
objectId)(objectId这只是个代称。应该是个具体的id吧)
ReturnsarepositoryobjectasanIDfPersistentObjectinterfacegivenanIDfIdinterfacetoagivenobject.
getObjectByPath(String
objectPath)
ReturnsaDocumentumserverobjectgivenafullpathtotheobject.
getObjectByQualification(String
qualification)
ReturnsaDocumentumserverobjectthatsatisfiestheDQLqualification.
getObjectByQualificationWithInterface(String
qualification,String
interfaceName)
Getatypebasedbusinessobject(BusinessLogicMiddleware)withagiveninterface.
getObjectWithCaching(IDfId
objectId,String
typeName,String
className,String
currencyCheckValue,boolean
usePersistentCache,boolean
useSharedCache)
Returnsarepositoryobject.
getObjectWithInterface(IDfId
objectId,String
interfaceName)
Getatypebasedbusinessobject(BusinessLogicMiddleware)withagiveninterface.
getObjectWithType(IDfId
objectId,String
typeName,String
className)
Returnsarepositoryobject.注:详细信息参考DFC6.5API删除对象IDfIdmyId=clientx.getId("09...1");IDfPersistentObjectperObj=session.getObject(myId);
//canalsocalldestroyAllVersions()perObj.destroy();获取/填充内容
ByteArrayInputStreambais=obj.getConent();将obj对象代表的文件的内容取出给bais.ByteArrayOutputStreambaos=…
obj.setContent(baos);将比特流baos填充到obj对象代表的文件中去.获取属性获取单值属性
obj.getString(“xxx”);//字符串
obj.getInt(“xxx”);//数字
obj.getDouble(“xxx”);//浮点
obj.getBoolean(“xxx”);//booleanobj.getTime(“xxx”);//日期获取多值属性
obj.getRepeatingString(“xxx”,n);//字符串
obj.getRepeatingInt(“xxx”,n);//数字
obj.getRepeatingDouble(“xxx”,n);//浮点
obj.getRepeatingBoolean(“xxx”,n);//booleanobj.getRepeatingTime(“xxx”,n);//日期设置属性设置单值属性
obj.setString(“xxx”,”x”);//字符串
obj.setInt(“xxx”,n);//数字
obj.setDouble(“xxx”,d.dd);//浮点
obj.setBoolean(“xxx”,true/false);//booleanobj.setTime(“xxx”,”2010/07/0412:00:00”);//日期设置多值属性
obj.setRepeatingString(“xxx”,n,”x”);//字符串
obj.setRepeatingInt(“xxx”,n,m);//数字
obj.setRepeatingDouble(“xxx”,n,d.dd);//浮点
obj.setRepeatingBoolean(“xxx”,n,true/false);//booleanobj.setRepeatingTime(“xxx”,n,”2010/07/0412:00:00”);//日期文件挂接在Documentum中,文档和文件夹都是独立的对象,如果需要将某个文件放在某个文件夹下,可以通过link实现.Link有两种方式:
obj.link(‘/Test/a’);
obj.link(‘0b0aba1980006c51’);文件可以挂接到多个位置,也就是说,一个文件可以链接到多个目录下,但文件只是一个.多个目录无非是不同的通道而已.获取一个文件挂接的目录,可以通过如下方式获取:for(inti=0;i<obj.getFolderIdCount;i++){StringfolderId=obj.getFolderId(i);IDfFolderfolderObj=(IDfFolder)session.getObject(newIDfId(folderId);
System.out.println(folderObj.getObjectName());}导入文件publicstaticIDfDocumentimportDocument(IDfSessionsession,StringobjectName,IDfFolderfolder,StringfilePath)throwsDfException{//Createadm_documentobjectandsetpropertiesIDfDocumentdocument=(IDfDocument)session.newObject("dm_document");document.setObjectName(objectName);document.setContentType("crtext");//setFileExparameters(fileName,formatName,pageNumber,otherFile)document.setFileEx(filePath,"crtext",0,null);//Specifythefolderinwhichtocreatethedocumentdocument.link(folder.getObjectId().toString());//SavethedocumentintheDocbasedocument.save();returndocument;}导出文件(一)IDfIdmyId=m_clientx.getId("09...1");IDfSysObjectsysObj=(IDfSysObject)m_sess.getObject(myId);//thegetContentTypemethoddeterminestheformatoftheprimaryrendition//thefollowingcreateanIDfFormatobjectrepresentingtheformatIDfFormatmyFormat=session.getFormat(document.getContentType());//usedtoprinttheextensioninthefilePathStringext=myFormat.getDOSExtension();StringfilePath="c:/temp/"+document.getObjectName()+"."+ext;//getFileEx2
parameters:(fileName,formatName,//pageNumber,pageModifier,getResource)document.getFileEx2(filePath,document.getContentType(),0,“”,false);导出文件(二)
getFile(String
fileName)
RetrievesacontentfilefromtheDocumentumserver.
getFileEx(String
fileName,String
formatName,int
pageNumber,boolean
getResource)
Thisistheextendedmethodforretreivingacontentfilefromtherepository.
getFileEx2(String
fileName,String
formatName,int
pageNumber,String
pageModifier,boolean
getResource)
Thisistheextendedmethodforretreivingacontentfilefromtherepository.签入/签出操作签出:checkout()checkoutEx(String
versionLabel,String
compoundArchValue,String
specialAppValue)取消签出:cancelCheckout(),cancelCheckoutEx(boolean
sendMail,String
compoundValue,String
specialValue)
签入:checkin(boolean
fRetainLock,String
versionLabels)checkinEx(boolean
fRetainLock,String
versionLabels,String
poundArchValue,String
oldSpecialAppValue,String
poundArchValue,String
newSpecialAppValue)操作类型操作类型ImportintoarepositoryIDfImportOperationIDfImportNodeExportfromarepositoryIDfExportOperationIDfExportNodeCheckintoarepositoryIDfCheckinOperationIDfCheckinNodeCheckoutofarepositoryIDfCheckoutOperationIDfCheckoutNodeCancelacheckoutIDfCancelCheckoutOperationIDfCancelCheckoutNodeDeletefromarepositoryIDfDeleteOperationIDfDeleteNodelocationtoanotherIDfCopyOperationIDfCopyNodeMovefromonerepositorylocationtoanotherIDfMoveOperationIDfMoveNodeValidateanXMLdocumentagainstaDTDorSchemaIDfValidationOperationIDfValidationNodeTransformanXMLdocumentusingXSLTIDfXMLTransformOperationIDfXMLTransformNodePre‑cacheobjectsinaBOCSrepositoryIDfPredictiveCachingOperationIDfPredictiveCachingNode导出单个文件publicstaticvoiddoExport(StringstrPath,StringdestDir,StringexportName,StringexportFormat,IDfSessionsession)throwsDfException{IDfClientXclientx=newDfClientX();IDfSysObjectsysObj=(IDfSysObject)session.getObjectByPath(strPath);if(sysObj==null){System.out.println("Object"+strPath+"cannotbefound.");return;}sysObj.setObjectName(exportName);IDfExportOperationoperation=clientx.getExportOperation();operation.setDestinationDirectory(destDir);IDfExportNodenode=(IDfExportNode)operation.add(sysObj);node.setFormat(exportFormat);//seesample:Operations-ExecuteandCheckErrorsexecuteOperation(operation);System.out.println("exportedfilepath:"+node.getFilePath());}导出多个文件(一)publicstaticvoiddoExportMultipleObjects(StringstrFolderPath,StringdestDir,IDfSessionsession)throwsDfException{IDfClientXclientx=newDfClientX();IDfFolderfolder=null;folder=session.getFolderByPath(strFolderPath);if(folder==null){System.out.println("Folderorcabinet"+strFolderPath+"doesnotexistintheDocbase!");return;}IDfExportOperationoperation=clientx.getExportOperation();operation.setDestinationDirectory(destDir);//iftheexportdirectorydoesn‘texist,makeitbesureto"importjava.io.*;"Filef=newFile(destDir);f.mkdir();Stringqualification="select*fromdm_documentwhereFOLDER(ID('"+folder.getObjectId()+"'))";IDfCollectioncol=null;
//createacollectionfortheimagestobeexportedtry{IDfQueryq=clientx.getQuery();
//Createqueryobjectq.setDQL(qualification);
//Giveitthequerycol=q.execute(session,IDfQuery.DF_READ_QUERY);
//Executesynchronously
导出多个文件(二)while(col.next()){Stringname=col.getString("object_name");IDfFiledestFile=clientx.getFile(destDir+name);//checkifthefilehasbeenexported(exists)toavoidanotherexportif(!destFile.exists()){//CreateanIDfSysObjectrepresentingtheobjectinthecollectionStringid=col.getString("r_object_id");IDfIdidObj=clientx.getId(id);IDfSysObjectmyObj=(IDfSysObject)session.getObject(idObj);//addtheIDfSysObjecttotheoperationIDfExportNodenode=(IDfExportNode)operation.add(myObj);}}//seesample:Operations-ExecuteandCheckErrorsexecuteOperation(operation);System.out.println("Theobjectsin"+strFolderPath+"havebeenexportedto"+destDir);}finally{if(col!=null)col.close();}}
查询结果集publicstaticIDfCollectionexecQuery(StringqueryString,IDfSessionsession)throwsDfException{IDfCollectioncol=null;//CollectionfortheresultIDfClientXclientx=newDfClientX();IDfQueryq=clientx.getQuery();//Createqueryobject//examplequeryString:"select*fromdm_cabinet"//examplequeryString:“selectobject_name,i_contents_id,r_page_cntfrom//dm_documentwhereobject_namelike'MyName%"q.setDQL(queryString);//Giveitthequerycol=q.execute(session,IDfQuery.DF_READ_QUERY);System.out.println("Queryexecuted.");returncol;}注:execute(IDfSession
session,int
queryType)QueryType:0DF_READ_QUERY1DF_QUERY2DF_CACHE_QUERY3DF_EXECUTE_QUERY4DF_EXECUTE_READ_QUERY5DF_APPLY详细的含义参照DFC6.5API常用的对象IDfACL–权限集IDfClient–客户对象IDfCollection–集合IDfDocument–文档IDfFolder–文件夹IDfGroup
–组IDfPermit–权限IDfQuery–查询IDfSession–会话IDfSessionManager–会话管理器IDfSysObject-对象IDfUser-用户DFC例子分析IDfClientXcx=newDfClientX();//Step1IDfClientclient=cx.getLocalClient();//Step2IDfSessionManagersMgr=client.newSessionManager();//Step3IDfLoginInfologinInfo=clientX.getLoginInfo();loginInfo.setUser("Mary");loginInfo.setPassword("ganDalF");loginInfo.setDomain("");sMgr.setIdentity(strRepositoryName,loginInfo);IDfSessionsession=sMgr.getSession(strRepoName);//Step4try{IDfDocumentdocument=(IDfDocument)session.newObject("dm_document");//Step5document.setObjectName("ReportonWizards");//Step6document.save();}finally{sMgr.release(session);//Step7}DFC作业某一目录下的所有文件及文件夹导出到本地的TXT文件中,要求必须记录文档的ID,名称,路径等信息.DFS什么是DFS?DFS是Documentum企业内容管理服务的核心包6.0之后版本提供的API–“业务最佳实践”提供了一整套便于发现和使用的内容管理服务Object,Version,Query,Schema,Search,Workflow包含了runtimeenvironment和一系列的design-time工具DFS提供了两个发布产品
EARfile(服务器端JavaEnterpriseEdition(JEE))Ziparchive(访问客户端DFSSDKforrunanddesign-time).为什么DFS?快速开发和部署容易学习–English-likelanguage方便使用–notECM/Documentumspecific容易支持DFS提供哪些服务?DFS提供了一整套便于发现的内容管理服务文档的增删改查文件夹的增删改查文档和文件夹的权限管理用户管理搜索流程……DFS服务如何发现开发者根据所开发接口应用功能的不同选择不同的WebService服务来实现,文档库的所有WebService服务地址和WSDL可以访问服务与功能的对应关系ObjectService—提供了文档和文件夹的建立、更新、删除,以及文档内容的上传和下载等所有对象相关的服务QueryService—提供了文档、文件夹以及其他各种类型对象的查询相关的操作和服务QueryServiceObjectService58ObjectService和QueryService新建对象更新对象删除对象上传或下载内容搜索对象接口数据模型—最常用的有哪些?接口数据模型由其他系统与文档库服务接口交互过程中请求和返回的对象模型构成的,对象模型主要包括了如下内容:DataPackage:定义了包含对内容库服务的所有请求和返回的基本信息单元DataObject:用来表示文档库中的对象,它们包括了文档、文件夹、流程、用户以及权限等各种各样的文档及文档管理相关的对象ObjectIdentity:唯一地标识一个文档库对象Property:用以表述库对象属性Content:用来表述库对象内容Relationship:
用来表述当前描述对象与文档库中对象的关系……接口数据模型—DataPackage接口数据模型由其他系统与文档库服务接口交互过程中请求和返回的对象模型构成的,对象模型主要包括了如下内容:
DataPackageJava示例:DataPackagedp=newDataPackage();DataObjectdataObj=newDataObject();DataObjectdataObj1=newDataObject();//buildArrayandthensettheDataPackagecontentstotheArrayDataObject[]dataObjects=newDataObject[2];dataObjects[0]=dataObj;dataObjects[1]=dataObj1;dp.setDataObjects(dataObjects);
dataObjects=dp.getDataObjects();for(inti=0;i<dataObjects.length;i++){System.out.println("DataObject:"+dataObjects[i]);}
接口数据模型—DataPackageDataPackage对应xml如下所示:<dataPackagerepositoryName="库名"><ns3:DataObjectstype="hbt_document"><ns3:IdentityrepositoryName="库名"></ns3:Identity><ns3:PropertiesisInternal="false"><ns2:Propertiesxmlns:xsi=""xsi:type="ns2:StringProperty"isTransient="false"name="a_content_type"><ns2:Value>crtext</ns2:Value></ns2:Properties></ns3:Properties><ns3:Relationshipsxmlns:xsi=""xsi:type="ns3:ReferenceRelationship"targetRole="parent"name="folder"><ns3:Targetreposito199ryName="库名"valueType="OBJECT_PATH"><ns3:ObjectPathpath="/Temp"></ns3:ObjectPath></ns3:Target></ns3:Relationships></ns3:DataObjects><ns3:DataObjects>……</ns3:DataObjects></dataPackage>注意:DataPackage是所有请求和返回的基本信息单元。在调用服务的过程中,DataPackage对象由一系列DataObject实例构成接口数据模型—DataObject
StringrepName="MyRepositoryName";DataObjectdataObj=newDataObject();//使用对象ID标识库中对象
ObjectIdentityrepositoryIdt=newObjectIdentity();……dataObj.setIdentity(repositoryIdt);//设置对象的属性
PropertySetpSet=newPropertySet();……dataObj.setProperties(pSet);//设置对象与库中对象的关系
ReferenceRelationshipfolderRelationship=newReferenceRelationship();dataObj.setRelationships(relationships);//设置对象的内容
Content[]contents=newContent[1];……dataObj.setContents(contents);
DataObject描述的是文档库中对象,包括对象的唯一标识、属性、内容、与库中对象的关系等。
DataObjectjava示例:接口数据模型—DataObjectDataObject对应xml如下所示:<ns3:DataObjectstype="hbt_document"><ns3:IdentityrepositoryName="库名"valueType="OBJECT_ID"><ns3:ObjectIdid="0901e24080042120"></ns3:ObjectId></ns3:Identity><ns3:PropertiesisInternal="false"><ns2:Propertiesxmlns:xsi=""xsi:type="ns2:StringProperty"isTransient="false"name="object_name"><ns2:Value>object_name</ns2:Value></ns2:Properties>……</ns3:Properties>
注意:这里使用objectid来标识库中对象。注意:这里描述对象属性的值。接口数据模型—DataObjectDataObject对应xml如下所示:<ns3:Relationshipsxmlns:xsi=""……</ns3:Relationships><ns3:Contentsxmlns:xsi=""xsi:type="ns4:BinaryContent"pageNumber="0"format="crtext">……</ns3:Contents></ns3:DataObjects>
注意:这里用来描述该DataObject对象与库中对象的关系。注意:这里描述对象文件内容。接口数据模型—ObjectIdetity
StringrepName="MyRepositoryName";ObjectIdentity[]objectIdentities=newObjectIdentity[4];//1.在客户端做创建操作时,DataObject所表达的文档库对象还不存在ObjectIdentityobjIden=newObjectIdentity();objIden.setRepositoryName(repName);objectIdentities[0]=objIden;ObjectIdentity的功能是为了唯一地标识一个文档库对象。一个ObjectIdentity对象实例包含了库的名称和一些其他的任意一种形式的标识符,这些标识符可能是对象ID、对象路径、查询条件表达式甚至是一系列的对象关键字段值等等。当然在客户端做创建等操作时,DataObject所表达的文档库对象还不存在,所以ObjectIdentity只需要文档库名就可以了,不需要其他的标识符来描述
ObjectIdentityjava示例:接口数据模型—ObjectIdetity
//2.用对象ID进行唯一标识
ObjectIdentityobjIden1=newObjectIdentity();ObjectIdobjId=newObjectId("090007d280075180");objIden1.setObjectId(objId);objectIdentities[1]=objIden1;//3.可以使用对象路径进行唯一标识
ObjectPathfolderPath=newObjectPath();folderPath.setPath(desPath);ObjectIdentityobjIden2=newObjectIdentity();objIden2.setValueType(ObjectIdentityType.OBJECT_PATH);objIden2.setObjectPath(folderPath);objIden2.setRepositoryName(repName);objectIdentities[2]=objIden2;接口数据模型—ObjectIdetityObjectIdetity对应xml如下所示:
<ns3:DataObjectstype="hbt_document"><ns3:IdentityrepositoryName="库名"valueType="OBJECT_ID"><ns3:ObjectIdid="0901e24080042120"></ns3:ObjectId></ns3:Identity>
……</ns3:DataObjects>
<ns3:DataObjectstype="hbt_document"><ns3:IdentityrepositoryName="库名"valueType="OBJECT_PATH"><ns3:ObjectPathpath="/Temp"></ns3:ObjectPath></ns3:Identity>
……</ns3:DataObjects>注意:这里使用对象ID来标识库中对象。注意:这里使用对象的路径来标识库中对象。接口数据模型—PropertyPropertySetpSet=newPropertySet();//1.设置对象的Object_nameStringPropertynamepro=newStringProperty();namepro.setName("object_name");namepro.setValue(object_name);//2.设置对象的title StringPropertytitlepro=newStringProperty();titlepro.setName("title");titlepro.setValue(title);Property[]properties=newProperty[2];properties[0]=namepro;properties[1]=titlepro;pSet.setProperties(properties);DataObject在实际的使用场景中经常会包含PropertySet对象实例,而PropertySet对象实例是由Property对象实例所构成的。Property对象一般用以表述库对象属性。
Propertyjava示例:接口数据模型—PropertyProperty对应xml如下所示:<ns3:PropertiesisInternal="false"><ns2:Propertiesxmlns:xsi=""xsi:type="ns2:StringProperty"isTransient="false"name="object_name"><ns2:Value>doccreateservicetest</ns2:Value></ns2:Properties><ns2:Propertiesxmlns:xsi=""xsi:type="ns2:StringProperty"isTransient="false"name="title"><ns2:Value>mytitle</ns2:Value></ns2:Properties></ns3:Properties>注意:这里设置对象的object_name属性。注意:这里设置对象的title属性。开发环境及步骤—客户端源代码生成由于DFS客户端开发层对于JDK版本等环境要求限制,开发者在开发应用接口的时候需要使用工具利用WSDL生成客户端代码。这些客户端代码为开发者提供了和DFS客户端开发成大致相当的对象数据模型和使用方式。首先开发者在开发文档库接口应用的时候,可以根据所开发接口应用功能的不同选择不同的WebService服务来实现,文档库的所有WebService服务地址和WSDL可以通过获得。WebService服务地址和WSDL如下表所示:开发环境及步骤—客户端源代码生成Address:WSDL:
?wsdlAddress:WSDL:
?wsdlAddress:WSDL:
?wsdlAddress:WSDL:
?wsdlAddress:WSDL:
?wsdlAddress:WSDL:
?wsdlAddress:WSDL:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度房地产销售代理承包合同
- 二零二五年度广州租车合同范本专业解读版3篇
- PPR水管安装施工技术交底三篇
- 低年级识字教研活动记录(3篇)
- 证券交易转让合同书
- 过户车辆转让协议书模板
- 施工管理合同范本
- 2025-2030全球足部止痛膏行业调研及趋势分析报告
- 2025年全球及中国可持续磷行业头部企业市场占有率及排名调研报告
- 二零二五年度信用卡透支资金借用及监管协议4篇
- 2024-2025学年成都市高一上英语期末考试题(含答案和音频)
- 2025年浙江省湖州市湖州职业技术学院招聘5人历年高频重点提升(共500题)附带答案详解
- 四年级学业指导模板
- ZK24600型平旋盘使用说明书(环球)
- 少儿口才培训主持课件
- 城市基础设施维修计划
- 2024山西广播电视台招聘专业技术岗位编制人员20人历年高频500题难、易错点模拟试题附带答案详解
- 新材料行业系列深度报告一:新材料行业研究框架
- 人教版小学英语各册单词表(带英标)
- 广东省潮州市潮安区2023-2024学年六年级上学期期末考试数学试题
- 骨髓穿刺课件
评论
0/150
提交评论