學(xué)習(xí)-dfc開發(fā)培訓(xùn)_第1頁
學(xué)習(xí)-dfc開發(fā)培訓(xùn)_第2頁
學(xué)習(xí)-dfc開發(fā)培訓(xùn)_第3頁
學(xué)習(xí)-dfc開發(fā)培訓(xùn)_第4頁
學(xué)習(xí)-dfc開發(fā)培訓(xùn)_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

DocumentumDFCTrainingBroadtextLtd.2010目錄Documentum基礎(chǔ)知識DFCDQLDFSTBO&SBODocumentum基礎(chǔ)知識Documentum?企業(yè)級電子文檔管理系統(tǒng)企業(yè)內(nèi)容管理專家行業(yè)領(lǐng)先產(chǎn)品文檔管理平臺先進(jìn)的產(chǎn)品設(shè)計理念豐富的產(chǎn)品線眾多的合作伙伴文檔管理和交換中心平臺各種內(nèi)容庫和文檔類型OtherRep.豐富的內(nèi)容服務(wù)業(yè)務(wù)流程優(yōu)化基本內(nèi)容

服務(wù)SAP內(nèi)容服務(wù)及歸檔復(fù)合文檔管理影像管理內(nèi)容捕獲業(yè)務(wù)流程管理網(wǎng)頁發(fā)布郵件歸檔動態(tài)文檔生成與發(fā)布信息權(quán)限管理可信內(nèi)容服務(wù)信息自動分類和推送信息生命周期管理財務(wù)報表

歸檔統(tǒng)一搜索不同的客戶端EMCDocumentum基本功能Documentum帶來的好處Documentum企業(yè)內(nèi)容管理平臺: 提高了內(nèi)容快速搜索的智能,讓組織知識更容易被發(fā)現(xiàn) 按照業(yè)務(wù)規(guī)則管理企業(yè)及組織非結(jié)構(gòu)化內(nèi)容和知識的生命周期 通過內(nèi)容的格式以及獲取渠道控制發(fā)布 根據(jù)不同文檔的安全級別控制文檔文檔的訪問級別 法規(guī)遵從 對內(nèi)容協(xié)作的支持 與授權(quán)的工具及企業(yè)應(yīng)用進(jìn)行快速整合與文件系統(tǒng)的區(qū)別Documentum管理文檔與在文件系統(tǒng)的區(qū)別:不能夠快速準(zhǔn)確地獲取文檔的最新版本對每個文檔單獨設(shè)定訪問權(quán)限的功能非常有限搜索文檔只能是針對文件系統(tǒng)中有限的幾個屬性文件系統(tǒng)中對同一份文檔的不同格式以單獨的文檔來表現(xiàn)不支持工作流如果用戶沒有特殊需求默認(rèn)總是能夠獲取最新版本可以對文檔的讀、寫、刪等等不同權(quán)限針對用戶分別指定可以根據(jù)客戶需求制定多樣的搜索功能,包括全文搜索對同一份文檔的不同格式是以同一文檔進(jìn)行管理支持文檔的發(fā)布、審批等工作流文件系統(tǒng)DocumentumECM平臺什么是文檔庫Documentum’s文檔庫:內(nèi)容文件存放在文件系統(tǒng)中文檔的屬性信息存放在關(guān)系型數(shù)據(jù)庫中(RDBMS)Oracle,SQLServer,DB2,Sybase支持多種操作系統(tǒng)

UNIX,Linux,Windows注意:Repository和Docbase這兩個術(shù)語通常都是指文檔庫,可以互換文檔庫文件系統(tǒng)數(shù)據(jù)庫文檔庫對象非結(jié)構(gòu)化內(nèi)容在文檔庫中是以一個

對象來保存一個文檔對象由兩部分元素構(gòu)成:屬性

-存儲在數(shù)據(jù)庫中內(nèi)容

(文件夾、用戶等沒有內(nèi)容)

-存儲在文件系統(tǒng)中文檔庫文件系統(tǒng)數(shù)據(jù)庫內(nèi)容文件文件屬性作者創(chuàng)建日期文件名訪問權(quán)限基本訪問權(quán)限授予用戶訪問和維護(hù)一個

文檔對象內(nèi)容的權(quán)限基本權(quán)限級別:NONE(1):沒有權(quán)限BROWSE(2):瀏覽對象的權(quán)限READ(3):查看對象內(nèi)容的權(quán)限RELATE(4):為PDF、TIFF等格式文檔添加注釋的權(quán)限VERSION(5):修改文檔版本信息的權(quán)限WRITE(6):修改文檔并把文檔保存入相同版本的權(quán)限D(zhuǎn)ELETE(7):刪除文檔的權(quán)限文檔的基本權(quán)限是可“繼承”的一個用戶對于某個特定文檔具有RELATE

權(quán)限一定具有READ

和BROWSE

權(quán)限文檔權(quán)限用戶能否訪問文檔庫中的文檔取決于該文檔的

訪問權(quán)限集Documentum靈活的權(quán)限架構(gòu)可以容許用戶

為特定的用戶授予特定的訪問權(quán)限文檔訪問權(quán)限及能夠被自動的分配給文檔,

也可以基于業(yè)務(wù)規(guī)則手工分配權(quán)限集定義了一個用戶可以怎樣與文檔交互文檔的權(quán)限集清晰地描述了文檔庫中所有用戶對

本文檔所具有的訪問權(quán)限WorldOwner

TrainingConsultingdavidNONEDELETEWRITEVERSIONWRITE––ChangeLocation–ChangeOwner,ChangeStateUsers/GroupsBasicPermissionsExtendedPermissions文檔、權(quán)限和用戶用戶username:Davidloginname:davidusersource:LDAP

……內(nèi)容文件屬性ownername:Johncreationdate:05-21-2005objectname:AssemblyProcessformat:msw8subject:Manufacturingkeywords:mfg,tool,assembly

acl:dm_aclWorldOwner

StanleyDavidMarketingBROWSEDELETEWRITEREADVERSIONUsers/GroupsPermissions權(quán)限集注意:當(dāng)然權(quán)限集中也可以為組和角色分配權(quán)限強(qiáng)大的Documentum內(nèi)容管理平臺

基礎(chǔ)服務(wù)、安全服務(wù)、搜索、格式轉(zhuǎn)換……企業(yè)數(shù)據(jù)非結(jié)構(gòu)化數(shù)據(jù)集中管理

將整個企業(yè)的非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行大集中式的管理,使得各個業(yè)務(wù)系統(tǒng)中的非結(jié)構(gòu)化數(shù)據(jù)立即擁有Documentum平臺所提供的多種服務(wù),讓企業(yè)的數(shù)據(jù)在安全性和可靠性得到可靠保證;此外其它系統(tǒng)也可以便捷地使用Documentum平臺的全文搜索、格式轉(zhuǎn)換等服務(wù)。其它的業(yè)務(wù)系統(tǒng)

合同管理系統(tǒng)、項目管理系統(tǒng)……管理內(nèi)容服務(wù)內(nèi)容庫

圖書館服務(wù)自動各式轉(zhuǎn)換多國語言翻譯虛擬文檔管理安全全文檢索、關(guān)鍵字和屬性的檢索內(nèi)容管理平臺—集中式管理內(nèi)容管理平臺—業(yè)務(wù)系統(tǒng)接口方案ContentServerDOCUMENTUM平臺FILESTORERDBMSFULLTEXTXMLSTOREDocumentumFoundationServicesDocumentumFoundationClassesJava應(yīng)用系統(tǒng)C#應(yīng)用系統(tǒng)MediaWorkspaceDFC什么是DFC?DFC(DocumentumFoundationClasses)Documentum基礎(chǔ)類代表了展現(xiàn)所有Documentum功能的最豐富的API.DFC提供了一種面向?qū)ο蟮募軜?gòu)來訪問ContentServer的功能.DFC將Documentum對象模型作為一個面向?qū)ο蟮目蛻舳祟悗靵韺崿F(xiàn),供內(nèi)容管理應(yīng)用使用.多種應(yīng)用都可以使用API,包括JAVA,VB,C#,C++開發(fā)的應(yīng)用.DFC作為一套JAVA類和接口來實施,帶有一個連接,用于通過COM從VB或者C++中訪問DFC.簡單的客戶端和服務(wù)器體系結(jié)構(gòu)應(yīng)用采用客戶端對象通過DFC對ContentServer進(jìn)行訪問.創(chuàng)建一個客戶端對象會加載所需的共享類庫.常見術(shù)語介紹ContentServerDocbaseDocbrokerDocAppObjectTypeAttributesCabinet&FolderVersioningPermissionACLDocbroker每當(dāng)客戶端請求服務(wù)器連接時,DocBroker作為橋梁或者中介.代替客戶端向服務(wù)器請求信息.返回的方式則有些不同,ContentServer以固定的時間間隔向多個DocBroker廣播它的連接信息,信息經(jīng)過DocBroker返回到請求的客戶端.從返回的信息中,客戶端可以選擇使用哪個服務(wù)器.象WebPublisher,DocumentumApplicationBuilder這樣的客戶端可以通過在客戶端的perties文件定義一個主要的或者備用的DocBroker與多個DocBroker通信.DocbrokerDocApp對于Documentum來說,DocApp是將對象打包成單元.DocApp將生命周期,工作流,文件夾等對象作為可配置單元從一個Docbase移動到另外的Docbase中.并且由它再創(chuàng)建一個DocApp壓縮文件。在文件系統(tǒng)中,這個壓縮文件代表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.通過文件柜和文件夾組織文件可以幫助我們更好的分類和快速查找重要的信息.不能繼承文件柜創(chuàng)建類型,但可以繼承文件夾創(chuàng)建類型.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)成對出現(xiàn).釋放的session不能再被使用.創(chuàng)建會話管理器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;}創(chuàng)建會話getSession()

首先從sessionpooling中找到一個未使用的session,如果沒有可用的session,則直接創(chuàng)建一個session.

session=sMgr.getSession(docbaseName);newSession()

直接創(chuàng)建一個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是不是個具體的數(shù)字ID??)獲取對象(三)getObject(IDfId

objectId)(objectId這只是個代稱。應(yīng)該是個具體的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.注:詳細(xì)信息參考DFC6.5API刪除對象IDfIdmyId=clientx.getId("09...1");IDfPersistentObjectperObj=session.getObject(myId);

//canalsocalldestroyAllVersions()perObj.destroy();獲取/填充內(nèi)容

ByteArrayInputStreambais=obj.getConent();將obj對象代表的文件的內(nèi)容取出給bais.ByteArrayOutputStreambaos=…

obj.setContent(baos);將比特流baos填充到obj對象代表的文件中去.獲取屬性獲取單值屬性

obj.getString(“xxx”);//字符串

obj.getInt(“xxx”);//數(shù)字

obj.getDouble(“xxx”);//浮點

obj.getBoolean(“xxx”);//booleanobj.getTime(“xxx”);//日期獲取多值屬性

obj.getRepeatingString(“xxx”,n);//字符串

obj.getRepeatingInt(“xxx”,n);//數(shù)字

obj.getRepeatingDouble(“xxx”,n);//浮點

obj.getRepeatingBoolean(“xxx”,n);//booleanobj.getRepeatingTime(“xxx”,n);//日期設(shè)置屬性設(shè)置單值屬性

obj.setString(“xxx”,”x”);//字符串

obj.setInt(“xxx”,n);//數(shù)字

obj.setDouble(“xxx”,d.dd);//浮點

obj.setBoolean(“xxx”,true/false);//booleanobj.setTime(“xxx”,”2010/07/0412:00:00”);//日期設(shè)置多值屬性

obj.setRepeatingString(“xxx”,n,”x”);//字符串

obj.setRepeatingInt(“xxx”,n,m);//數(shù)字

obj.setRepeatingDouble(“xxx”,n,d.dd);//浮點

obj.setRepeatingBoolean(“xxx”,n,true/false);//booleanobj.setRepeatingTime(“xxx”,n,”2010/07/0412:00:00”);//日期文件掛接在Documentum中,文檔和文件夾都是獨立的對象,如果需要將某個文件放在某個文件夾下,可以通過link實現(xiàn).Link有兩種方式:

obj.link(‘/Test/a’);

obj.link(‘0b0aba1980006c51’);文件可以掛接到多個位置,也就是說,一個文件可以鏈接到多個目錄下,但文件只是一個.多個目錄無非是不同的通道而已.獲取一個文件掛接的目錄,可以通過如下方式獲?。篺or(inti=0;i<obj.getFolderIdCount;i++){StringfolderId=obj.getFolderId(i);IDfFolderfolderObj=(IDfFolder)session.getObject(newIDfId(folderId);

System.out.println(folderObj.getObjectName());}導(dǎo)入文件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;}導(dǎo)出文件(一)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);導(dǎo)出文件(二)

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導(dǎo)出單個文件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());}導(dǎo)出多個文件(一)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

導(dǎo)出多個文件(二)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();}}

查詢結(jié)果集publicstaticIDfCollectionexecQuery(StringqueryString,IDfSessionsession)throwsDfException{IDfCollectioncol=null;//CollectionfortheresultIDfClientXclientx=newDfClientX();IDfQueryq=clientx.getQuery();//Createqueryobject//examplequeryString:"select*fromdm_cabinet"http://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詳細(xì)的含義參照DFC6.5API常用的對象IDfACL–權(quán)限集IDfClient–客戶對象IDfCollection–集合IDfDocument–文檔IDfFolder–文件夾IDfGroup

–組IDfPermit–權(quán)限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作業(yè)某一目錄下的所有文件及文件夾導(dǎo)出到本地的TXT文件中,要求必須記錄文檔的ID,名稱,路徑等信息.DFS什么是DFS?DFS是Documentum企業(yè)內(nèi)容管理服務(wù)的核心包6.0之后版本提供的API–“業(yè)務(wù)最佳實踐”提供了一整套便于發(fā)現(xiàn)和使用的內(nèi)容管理服務(wù)Object,Version,Query,Schema,Search,Workflow包含了runtimeenvironment和一系列的design-time工具DFS提供了兩個發(fā)布產(chǎn)品

EARfile(服務(wù)器端JavaEnterpriseEdition(JEE))Ziparchive(訪問客戶端DFSSDKforrunanddesign-time).為什么DFS?快速開發(fā)和部署容易學(xué)習(xí)–English-likelanguage方便使用–notECM/Documentumspecific容易支持DFS提供哪些服務(wù)?DFS提供了一整套便于發(fā)現(xiàn)的內(nèi)容管理服務(wù)文檔的增刪改查文件夾的增刪改查文檔和文件夾的權(quán)限管理用戶管理搜索流程……DFS服務(wù)如何發(fā)現(xiàn)開發(fā)者根據(jù)所開發(fā)接口應(yīng)用功能的不同選擇不同的WebService服務(wù)來實現(xiàn),文檔庫的所有WebService服務(wù)地址和WSDL可以訪問服務(wù)與功能的對應(yīng)關(guān)系ObjectService—提供了文檔和文件夾的建立、更新、刪除,以及文檔內(nèi)容的上傳和下載等所有對象相關(guān)的服務(wù)QueryService—提供了文檔、文件夾以及其他各種類型對象的查詢相關(guān)的操作和服務(wù)QueryServiceObjectService58ObjectService和QueryService新建對象更新對象刪除對象上傳或下載內(nèi)容搜索對象接口數(shù)據(jù)模型—最常用的有哪些?接口數(shù)據(jù)模型由其他系統(tǒng)與文檔庫服務(wù)接口交互過程中請求和返回的對象模型構(gòu)成的,對象模型主要包括了如下內(nèi)容:DataPackage:定義了包含對內(nèi)容庫服務(wù)的所有請求和返回的基本信息單元DataObject:用來表示文檔庫中的對象,它們包括了文檔、文件夾、流程、用戶以及權(quán)限等各種各樣的文檔及文檔管理相關(guān)的對象ObjectIdentity:唯一地標(biāo)識一個文檔庫對象Property:用以表述庫對象屬性Content:用來表述庫對象內(nèi)容Relationship:

用來表述當(dāng)前描述對象與文檔庫中對象的關(guān)系……接口數(shù)據(jù)模型—DataPackage接口數(shù)據(jù)模型由其他系統(tǒng)與文檔庫服務(wù)接口交互過程中請求和返回的對象模型構(gòu)成的,對象模型主要包括了如下內(nèi)容:

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]);}

接口數(shù)據(jù)模型—DataPackageDataPackage對應(yīng)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是所有請求和返回的基本信息單元。在調(diào)用服務(wù)的過程中,DataPackage對象由一系列DataObject實例構(gòu)成接口數(shù)據(jù)模型—DataObject

StringrepName="MyRepositoryName";DataObjectdataObj=newDataObject();//使用對象ID標(biāo)識庫中對象

ObjectIdentityrepositoryIdt=newObjectIdentity();……dataObj.setIdentity(repositoryIdt);//設(shè)置對象的屬性

PropertySetpSet=newPropertySet();……dataObj.setProperties(pSet);//設(shè)置對象與庫中對象的關(guān)系

ReferenceRelationshipfolderRelationship=newReferenceRelationship();dataObj.setRelationships(relationships);//設(shè)置對象的內(nèi)容

Content[]contents=newContent[1];……dataObj.setContents(contents);

DataObject描述的是文檔庫中對象,包括對象的唯一標(biāo)識、屬性、內(nèi)容、與庫中對象的關(guān)系等。

DataObjectjava示例:接口數(shù)據(jù)模型—DataObjectDataObject對應(yīng)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來標(biāo)識庫中對象。注意:這里描述對象屬性的值。接口數(shù)據(jù)模型—DataObjectDataObject對應(yīng)xml如下所示:<ns3:Relationshipsxmlns:xsi=""……</ns3:Relationships><ns3:Contentsxmlns:xsi=""xsi:type="ns4:BinaryContent"pageNumber="0"format="crtext">……</ns3:Contents></ns3:DataObjects>

注意:這里用來描述該DataObject對象與庫中對象的關(guān)系。注意:這里描述對象文件內(nèi)容。接口數(shù)據(jù)模型—ObjectIdetity

StringrepName="MyRepositoryName";ObjectIdentity[]objectIdentities=newObjectIdentity[4];//1.在客戶端做創(chuàng)建操作時,DataObject所表達(dá)的文檔庫對象還不存在ObjectIdentityobjIden=newObjectIdentity();objIden.setRepositoryName(repName);objectIdentities[0]=objIden;ObjectIdentity的功能是為了唯一地標(biāo)識一個文檔庫對象。一個ObjectIdentity對象實例包含了庫的名稱和一些其他的任意一種形式的標(biāo)識符,這些標(biāo)識符可能是對象ID、對象路徑、查詢條件表達(dá)式甚至是一系列的對象關(guān)鍵字段值等等。當(dāng)然在客戶端做創(chuàng)建等操作時,DataObject所表達(dá)的文檔庫對象還不存在,所以O(shè)bjectIdentity只需要文檔庫名就可以了,不需要其他的標(biāo)識符來描述

ObjectIdentityjava示例:接口數(shù)據(jù)模型—ObjectIdetity

//2.用對象ID進(jìn)行唯一標(biāo)識

ObjectIdentityobjIden1=newObjectIdentity();ObjectIdobjId=newObjectId("090007d280075180");objIden1.setObjectId(objId);objectIdentities[1]=objIden1;//3.可以使用對象路徑進(jìn)行唯一標(biāo)識

ObjectPathfolderPath=newObjectPath();folderPath.setPath(desPath);ObjectIdentityobjIden2=newObjectIdentity();objIden2.setValueType(ObjectIdentityType.OBJECT_PATH);objIden2.setObjectPath(folderPath);objIden2.setRepositoryName(repName);objectIdentities[2]=objIden2;接口數(shù)據(jù)模型—ObjectIdetityObjectIdetity對應(yīng)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來標(biāo)識庫中對象。注意:這里使用對象的路徑來標(biāo)識庫中對象。接口數(shù)據(jù)模型—PropertyPropertySetpSet=newPropertySet();//1.設(shè)置對象的Object_nameStringPropertynamepro=newStringProperty();namepro.setName("object_name");namepro.setValue(object_name);//2.設(shè)置對象的title StringPropertytitlepro=newStringProperty();titlepro.setName("title");titlepro.setValue(title);Property[]properties=newProperty[2];properties[0]=namepro;properties[1]=titlepro;pSet.setProperties(properties);DataObject在實際的使用場景中經(jīng)常會包含PropertySet對象實例,而PropertySet對象實例是由Property對象實例所構(gòu)成的。Property對象一般用以表述庫對象屬性。

Propertyjava示例:接口數(shù)據(jù)模型—PropertyProperty對應(yīng)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>注意:這里設(shè)置對象的object_name屬性。注意:這里設(shè)置對象的title屬性。開發(fā)環(huán)境及步驟—客戶端源代碼生成由于DFS客戶端開發(fā)層對于JDK版本等環(huán)境要求限制,開發(fā)者在開發(fā)應(yīng)用接口的時候需要使用工具利用WSDL生成客戶端代碼。這些客戶端代碼為開發(fā)者提供了和DFS客戶端開發(fā)成大致相當(dāng)?shù)膶ο髷?shù)據(jù)模型和使用方式。首先開發(fā)者在開發(fā)文檔庫接口應(yīng)用的時候,可以根據(jù)所開發(fā)接口應(yīng)用功能的不同選擇不同的WebService服務(wù)來實現(xiàn),文檔庫的所有WebService服務(wù)地址和WSDL可以通過獲得。WebService服務(wù)地址和WSDL如下表所示:開發(fā)環(huán)境及步驟—客戶端源代碼生成Address:WSDL:

?wsdlAddress:WSDL:

?wsdlAddress:WSDL:

?wsdlAddress:WSDL:

?wsdlAddress:WSDL:

?wsdlAddress:WSDL:

?wsdlAddress:WSDL:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論