Documentum Foundation Classes

Embed Size (px)

Citation preview

  • 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