8/13/2019 Documentum Foundation Classes
1/21
EMC Documentums Foundation Classes (DFC)
Kamel BELGACEM S.C. Euroscript-Certitude S.R.L. December 200
8/13/2019 Documentum Foundation Classes
2/21
8/13/2019 Documentum Foundation Classes
3/21
Docume#tum ou#datio# Classes
Set o3 "a#aclasses14a+a A,
Ma5e ser#er$unctionalitiesa+ailable to custom clientapplications
Ma6 be co#sidered as t$e %b&ect-'elational-Mapper17RM3or pro(rammaticall6 accessi#( docume#ts i#side t$erepositor6 1t$e docbase
8/13/2019 Documentum Foundation Classes
4/21
DC !ierarc$6 Dia(ram
8/13/2019 Documentum Foundation Classes
5/21
'se3ul classes a#d i#ter3aces
ID$Client
Establis$es a#d ma#a(es sessio# "it$ ser+er
ro+ides i#3ormatio# about ser+er
ID$Collection
ro+ides access to collectio# ob8ects
ID$Document
ro+ides 3u#ctio#alit6 to i#teract "it$ dm9docume#t ob8ect
ID$Folder
ro+ides access to 3older-related data stored i# 3olders
ID$ersistent%b&ect
Base class 3or all Docume#tum persiste#t ob8ects
8/13/2019 Documentum Foundation Classes
6/21
'se3ul classes a#d i#ter3aces
ID$Query
ro+ides 3u#ctio#alit6 to ru# DL :ueries a(ai#st a repositor6
ID$ession
E#capsulates a sessio# "it$i# Docume#tum repositor6
ID$essionManaer Ma#a(es ide#tities/ pooled sessio#s a#d tra#sactio#s
ID$ys%b&ect
ro+ides 3u#ctio#alit6 to i#teract "it$ dm9s6sob8ect ob8ect
ID$Typed%b&ect
ro+ides basic operatio#s 3or all t6ped ob8ects
8/13/2019 Documentum Foundation Classes
7/21
Setti#( up a DC pro8ect
'se a#6 IDE1Eclipse/ ;etbea#s/ 4De+eloper/ etc.
,#stall
8/13/2019 Documentum Foundation Classes
8/21
Lo( i#
8/13/2019 Documentum Foundation Classes
9/21
Create a 3older
,...-
import com.documentum.fc.client.Dfuer);
import com.documentum.fc.client.IDfCollection;
import com.documentum.fc.client.IDfDocument;
import com.documentum.fc.client.IDfFolder;
import com.documentum.fc.client.IDfuer);
import com.documentum.fc.common.IDfId;
,...-
public class DFCTutorial {
,...-
private static final String DIR_NAME "SubDirectory";
private IDfFolder folder null;
,...-
private void createFolder!" throws #$ce%tion {
folder !IDfFolder" session.ne&/01ect!"dm_folder"";
folder.set/01ect2ame!DIR_NAME";
folder.lin3!"/Temp"";
folder.sa4e!";
S)stem.out.%rintln!"reated folder! " 5 folder.getId!"r_obect_id""";+
+
8/13/2019 Documentum Foundation Classes
10/21
Create a#d li#5 a docume#t
,...-
public class DFCTutorial {
,...-
private static final String FILE_NAME "Documentums D#$## %resentation";private static final String DIR_PATH "/Temp/" 5 DIR_NAME;
private IDfDocument document null;
,...-
private void createDocument!" throws #$ce%tion {
document !IDfDocument" session.ne&/01ect!"dm_document"";
document.set/01ect2ame!FILE_NAME";document.setContentT)%e!"crte&t"";document.setFile!"$!/%resentation#ppt&""; // 'dd content to this dm_documentdocument.sa4e!"; // Dont forget to save your modifications
S)stem.out.%rintln!"reated file! " 5 document.getId!"r_obect_id""";+
private void linkFileToFolder!" throws #$ce%tion {
document.lin3!DIR_PATH";document.sa4e!"; // Dont forget this
+
+
d 3 d 1 d
8/13/2019 Documentum Foundation Classes
11/21
Modi36 a docume#t 1metadata
,...-
public class DFCTutorial {
,...-
private static final String DOC_AUTHOR "amel *+,'*-";,...-
private voidmodifyDocument!" throws #$ce%tion {
document.c6ec3out!";
int num7ut6ors document.get7ut6orsCount!";
document.set7ut6ors!num7ut6ors* DOC_AUTHOR";
// doc#chec.in(false "%revents promotion to 011*2T")3
document.c6ec3in!false* null"; // 4hen a null version label is provided// D$ automatically gives the new version// an implicit version label (5#5 5#6 etc#)// and the symbolic label "011*2T"#
+
+
t $ 3 ld t t 1 i ,D3 ld
8/13/2019 Documentum Foundation Classes
12/21
etc$ 3older co#te#t 1usi#( ,D3older
,...-
public class DFCTutorial {
,...-
private void fetchFolderContentUsingIDfFolder!" throws #$ce%tion {
IDfFolder folder session.getFolder8)(at6!DIR_PATH"; // (7) ontrol the case when null
IDfCollection collection null;
IDfDocument doc null;
int count 9;
try {
// ,et all the documents inside the folder and iterate on them
collection folder.getContents!"r_obect_id"";
while !collection.ne$t!"" {
count55;
IDfId id collection.getId!"r_obect_id"";
doc !IDfDocument" session.get/01ect!id";
S)stem.out.%rintln!id 5 : : 5 doc.get/01ect2ame!"";
+
+ finally {
// '+4'8S7 clean up your collections
if !collection
8/13/2019 Documentum Foundation Classes
13/21
etc$ 3older co#te#t 1usi#( DL
,...-
public class DFCTutorial {
,...-
private void fetchFolderContentUsingDQ!" throws #$ce%tion {
String d=lString "S*+*T r_obect_id obect_name $19- dm_document " :"4;*1* folder(
8/13/2019 Documentum Foundation Classes
14/21
uer6 docume#ts 1b6 pat$
,...-
public class DFCTutorial {
,...-
private static final String FILE_PATH DIR_PATH: "/" : FILE_NAME;
,...-
private void !ueryDocument"y#ath!" throws #$ce%tion {
// ,et the file by path ###
IDfDocument doc !IDfDocument" session.get/01ect8)(at6!FILE_PATH";
// ### and start using it7
+
private void !ueryDocument"yDQ!" throws #$ce%tion {
String d=lString "S*+*T r_obect_id $19- dm_document"
5 " 4;*1* obect_name =
8/13/2019 Documentum Foundation Classes
15/21
Remo+e 3olders a#d docume#ts
,...-
public class DFCTutorial {
,...-
private void removeDocument!" throws #$ce%tion {
document.destro)7ll>ersions!"; // Dont forget that versionning is enabled+
private void removeFolder!" throws #$ce%tion {
folder.destro)7ll>ersions!"; // Dont forget that versionning is enabled+
+
Best ractices 3or Resource Clea#up
8/13/2019 Documentum Foundation Classes
16/21
Best ractices 3or Resource Clea#up
=$e ID$Collectionob8ect Similar to a&a#a.s/l.'esultetob8ect
7#ce ope#ed/ $as to be closed
;umber o3 collectio#s ope#ed is limited
=$e ID$essionob8ect
Similar to a&a#a.s/l.Connectionob8ect 7pe#ed a#d closed b6 ID$essionManaer
Do#>t 3or(et to release t$e sessio# o#ce 3i#is$ed
C$ec5poi#t
8/13/2019 Documentum Foundation Classes
17/21
C$ec5poi#t
Sa6 i3 t$ese i#3ormatio# are true or 3alse*
ID$Collectionob8ects are automaticall6 closed
ID$essionob8ects $a+e to be closed ma#uall6
)e ca##ot 3etc$ 3older co#te#t usi#( DQ+. ,t s$ould be per3ormedusi#( ID$Folderob8ect
7#ce a c!eckin1 is per3ormed/ a sa#e1 $as to be called ot$er"isec$ec5i# is aborted
Disco##ecti#( 3rom t$e docbase is per3ormed b6 closi#( all ope#sessio#s
C$ec5poi#t
8/13/2019 Documentum Foundation Classes
18/21
C$ec5poi#t
)$at $appe#s "$e# ru##i#( t$is met$od &
Does t$is $elp to upload m6 ?@.=?= docume#t &
private void update$uthors!" throws #$ce%tion {
IDfDocument doc !IDfDocument" session.get/01ect8)(at6!FILE_PATH";
int num7ut6ors document.get7ut6orsCount!";
document.set7ut6ors!num7ut6ors* DOC_AUTHOR";
document.c6ec3in!false* null";
+
private void upload%yDocument!" throws #$ce%tion {
IDfDocument document ne& DfDocument!";
document.set/01ect2ame!"-y >8?#T>T Document"";
document.setContentT)%e!"crte&t"";
document.setFile!"$!/>8?#T>T"";
+
A#s"ers
8/13/2019 Documentum Foundation Classes
19/21
A#s"ers
Sa6 i3 t$ese i#3ormatio# are true or 3alse*
False* ID$Collectionob8ects s$ould be ma#uall6 closed
True* ID$essionob8ects $a+e to be closed ma#uall6
False* )e ca# 3etc$ 3older co#te#t usi#( DQ+a#d ID$Folderob8ect
False* c!eckin1 uploads a #e" +ersio# o3 t$e docume#t a#d itsmetadata up-to-date/ so #o sa#e1 is re:uired
True* Closi#( allsessio#s disco##ects us 3rom t$e docbase
A#s"ers
8/13/2019 Documentum Foundation Classes
20/21
A#s"ers
=$is "ill raise a# eceptio#. !eres t$e correctio#*
;o/ it does#t $elp si#ce it raises a# eceptio#. !eres t$ecorrectio#*
private void update$uthors!" throws #$ce%tion {
IDfDocument doc !IDfDocument" session.get/01ect8)(at6!FILE_PATH";
document&checkout'(; // hec.ing out a document before modification is re@uiredint num7ut6ors document.get7ut6orsCount!";
document.set7ut6ors!num7ut6ors* DOC_AUTHOR";
document.c6ec3in!false* null";
+
private void upload%yDocument!" throws #$ce%tion {
// 4e cannot instantiate (A)DfDocument we need to pass by a builder (Session)
IDfDocument document 'IDfDocument( session&new)b*ect'"dm_document"(;
document.set/01ect2ame!"-y >8?#T>T Document"";
document.setContentT)%e!"crte&t"";
document.setFile!"$!/>8?#T>T"";
document&save'(; // Af you dont save the document nothing will happen+
8/13/2019 Documentum Foundation Classes
21/21
T!ank you #ery muc!0
12 mul3umesc 0