Docstoc

Documentum Lifecycles

Document Sample
Documentum Lifecycles Powered By Docstoc
					    Documentum Lifecycles
Using Lifecycles To Trigger External Events




                                          FROM TITLE MASTER:
                                          [Insert Directory Location]
                                          [Insert File Name]
                                          [Insert Revision Date]
                          Introduction

Robert Harper / Anheuser – Busch Training and Development Group
              Robert.Harper@Anheuser-Busch.com
                    Robert.Harper@IEEE.org




                                                                  2
              Introduction – Our Agenda

   External Application Server
•        Downloads a file from Documentum
•        Manipulates the file
•        Places the new file in Documentum
   External Web Server
•   Makes selected Documentum content
    available via the web.



                                             3
            Introduction – Our Agenda

   Gathering The Pieces
•       Lifecycles
•       Lifecycle Procedures
•       AutoRender Pro As Model For The
        External Server
   Putting The Pieces Together




                                          4
                  Our Agenda

   Gathering The Pieces
•       Lifecycles
•       Lifecycle Procedures
•       AutoRender Pro As Model For The
        External Server
   Putting The Pieces Together




                                          5
Lifecycles – What They Are




                             6
The Publishing Lifecycle




                           7
Publishing Lifecycle - The REVIEW State




                                          8
                  Our Agenda

   Gathering The Pieces
•       Lifecycles
•       Lifecycle Procedures
•       AutoRender Pro As Model For The
        External Server
   Putting The Pieces Together




                                          9
The Lifecycle Procedures




                           10
The EntryRequirements Procedure




                                  11
The StateAction Procedure




                            12
The PostProc Procedure




                         13
                  Our Agenda

   Gathering The Pieces
•       Lifecycles
•       Lifecycle Procedures
•       AutoRender Pro As Model For The
        External Server
   Putting The Pieces Together




                                          14
Documentum AutoRender Pro




                            15
AutoRender Pro




                 16
AutoRender Pro




                 17
AutoRender Pro - Queues And User Accounts




                                            18
          AutoRender Pro - Requesting A PDF Rendition


TRACE: Rendering PS_PDF request
 Start Time: 2/22/2004 12:30:18 PM
| Processing: Course Catalog Issue
| Docbase = MyDocbase // Queue = dm_autorender_win31 // Sent
         By = dmadmin
TRACE: MoveFile from file: C:\Documents and
         Settings\Administrator\dmcl\00009753\abtdgdev003\800187
         80\Course Catalog Issue.doc To file:
         c:\dmautop\temp\Course Catalog Issue.doc
TRACE: Generating OLE automation: ARPGENERIC.WORDDOC
|        TRACE: Attempting to perform rendering via plugin:
         ARPGENERIC.WORDDOC
Word Render, Maximum wait interval is 10 seconds



                                                                   21
           AutoRender Pro - Requesting A PDF Rendition


|   Generating PS from Word (OLE)
|     TRACE: Checking for file: C:\DISTASST.PS
|     TRACE: File C:\DISTASST.PS is ok to open....continue
|     TRACE: MoveFile from file: C:\DISTASST.PS To file:
              c:\dmautop\temp\7.PS
|     TRACE: Checking for file: c:\dmautop\temp\7.LOG
|     TRACE: Checking for file: c:\dmautop\temp\7.PDF
|     TRACE: File c:\dmautop\temp\7.LOG is ok to open....continue
|     TRACE: Checking for file: c:\dmautop\temp\7.LOG
|     TRACE: File c:\dmautop\temp\7.LOG is ok to open....continue




                                                                    22
           AutoRender Pro - Requesting A PDF Rendition


|   | TRACE: Checking for file: c:\dmautop\temp\7.PDF
|     TRACE: File c:\dmautop\temp\7.PDF is ok to open....continue
|     TRACE: Generating PDT
|     TRACE: Created AcroExch.app object
|     TRACE: Created AcroExch.AVDoc object
|     TRACE: PDF Text Render, Maximum wait interval is 10
               seconds
|     TRACE: PDF not linearized....optimizing
|     TRACE: Setting pdf attributes
|     TRACE: ResetExitTimer
|   PDF rendition created




                                                                    23
AutoRender Pro - Requesting A PDF Rendition




                                              24
               AutoRender Pro - Requesting A PDF Rendition

   Here we find the PDF request
   # [ 1256 ] Wed Feb 18 09:24:31 2004 765000 ( 0.000 sec) ( 45 rpc) API>
    execquery,s0,T,select stamp,message,content_type,item_id,item_name,sent_by,
    date_sent, router_id from dm_queue where name = 'dm_autorender_win31' and
    message = 'rendition_req_ps_pdf' order by date_sent
   # [ 1256 ] Wed Feb 18 09:24:31 2004 765000 ( 0.000 sec) ( 45 rpc) Server RPC:
    EXEC (0000000000000000) select
    stamp,message,content_type,item_id,item_name,sent_by, date_sent, router_id
    from dm_queue where name = 'dm_autorender_win31' and message =
    'rendition_req_ps_pdf' order by date_sent
   # [ 1256 ] Wed Feb 18 09:24:31 2004 875000 ( 0.110 sec) ( 46 rpc) Res: 'OK'
   # [ 1256 ] Wed Feb 18 09:24:31 2004 875000 ( 0.000 sec) ( 46 rpc) API> getlastcoll,s0
   # [ 1256 ] Wed Feb 18 09:24:31 2004 875000 ( 0.000 sec) ( 46 rpc) Res: 'q0'
   # [ 1256 ] Wed Feb 18 09:24:31 2004 890000 ( 0.000 sec) ( 46 rpc) API> next,s0,q0
   # [ 1256 ] Wed Feb 18 09:24:31 2004 890000 ( 0.000 sec) ( 46 rpc) Server RPC:
    MultiNext (5)
   # [ 1256 ] Wed Feb 18 09:24:31 2004 890000 ( 0.000 sec) ( 47 rpc) Res: 'OK'




                                                                                            25
              AutoRender Pro - Requesting A PDF Rendition

   # [ 1256 ] Wed Feb 18 09:24:31 2004 953000 ( 0.000 sec) ( 50 rpc) Res: 'Craycroft,
    Aaron'
   # [ 1256 ] Wed Feb 18 09:24:31 2004 953000 ( 0.000 sec) ( 50 rpc) API> close,s0,q0
   # [ 1256 ] Wed Feb 18 09:24:31 2004 953000 ( 0.000 sec) ( 50 rpc) Server RPC:
    Close (5)
   # [ 1256 ] Wed Feb 18 09:24:31 2004 953000 ( 0.000 sec) ( 51 rpc) Res: 'OK'
   We've got the job, so now we dequeue it
   # [ 1256 ] Wed Feb 18 09:24:31 2004 984000 ( 0.000 sec) ( 51 rpc) API>
    dequeue,s0,1b0097528000a5af
   # [ 1256 ] Wed Feb 18 09:24:31 2004 984000 ( 0.000 sec) ( 51 rpc) Server RPC:
    InboxItemDelete (1b0097528000a5af)
   # [ 1256 ] Wed Feb 18 09:24:32 2004 031000 ( 0.047 sec) ( 52 rpc) Res: 'OK'
   # [ 1256 ] Wed Feb 18 09:24:32 2004 031000 ( 0.000 sec) ( 52 rpc) API>
    fetch,s0,0900975280052895
   # [ 1256 ] Wed Feb 18 09:24:32 2004 031000 ( 0.000 sec) ( 52 rpc) Server RPC:
    IsCurrent (0900975280052895)




                                                                                         26
              AutoRender Pro - Requesting A PDF Rendition

   get,s0,0900975280052895,a_compound_architecture
   # [ 1256 ] Wed Feb 18 09:24:32 2004 328000 ( 0.000 sec) ( 64 rpc) Res: ''
   So we now we finally go and get the Word document.
   # [ 1256 ] Wed Feb 18 09:24:32 2004 328000 ( 0.000 sec) ( 64 rpc) API>
    getfile,s0,0900975280052895,,msw8
   # [ 1256 ] Wed Feb 18 09:24:32 2004 328000 ( 0.000 sec) ( 64 rpc) Server RPC:
    IsCurrent (0600975280032ab2)
   # [ 1256 ] Wed Feb 18 09:24:32 2004 328000 ( 0.000 sec) ( 65 rpc) Server RPC:
    FetchType (dm_format)
   # [ 1256 ] Wed Feb 18 09:24:32 2004 328000 ( 0.000 sec) ( 66 rpc) Server RPC:
    OBJECT_FROM_CACHE




                                                                                    27
              AutoRender Pro - Requesting A PDF Rendition

   # [ 1256 ] Wed Feb 18 09:24:40 2004 062000 ( 0.000 sec) ( 70 rpc) Server RPC:
    BEGIN_TRANS (0000000000000000)
   # [ 1256 ] Wed Feb 18 09:24:40 2004 062000 ( 0.000 sec) ( 71 rpc) Res: 'OK'
   And we put the rendition back up on the server
   # [ 1256 ] Wed Feb 18 09:24:40 2004 078000 ( 0.000 sec) ( 71 rpc) API>
    addrendition,s0,0900975280052895,c:\dmautop\temp\3.PDF,pdf,,,T
   # [ 1256 ] Wed Feb 18 09:24:40 2004 078000 ( 0.000 sec) ( 71 rpc) Server RPC:
    ID_FROM_CACHE (0000000000000000)
   # [ 1256 ] Wed Feb 18 09:24:40 2004 078000 ( 0.000 sec) ( 72 rpc) Server RPC:
    OBJECT_FROM_CACHE (270097528000019d)
   # [ 1256 ] Wed Feb 18 09:24:40 2004 078000 ( 0.000 sec) ( 73 rpc) Server RPC:
    FetchType (dm_store)
   # [ 1256 ] Wed Feb 18 09:24:40 2004 078000 ( 0.000 sec) ( 74 rpc) Server RPC:
    ID_FROM_CACHE




                                                                                    28
                                                   What We Know

   We know that lifecycles allow us to define different lifecycle
    states for our documents.
   We know that the EntryRequirements, StateAction and
    PostProc procedures allow us to spell out what happens at
    each of those lifecycle states.
   We know how to create a queue in our Docbase in which to
    place action requests.
   We know how to place a job request in that queue.
   We know how to build an external server that can:
       Communicate with the Docbase.
       Check a queue for job requests.
        Copy files out of Documentum on to a local hard drive.
        Place files back in the Docbase

                                                                     29
                 Our Agenda

Gathering The Pieces
Putting The Pieces Together
  (REVIEW STATE)
  Creating the User Accounts and Queue
  Creating the Lifecycle Procedures
  Creating the Lifecycle
  Building The External Server



                                         30
The Publishing Lifecycle – The Review State




                                              31
The Publishing Lifecycle – The Review State




                                              32
The Publishing Lifecycle – The Review State




                                              33
The Publishing Lifecycle – The Review State




                                              34
The Publishing Lifecycle – The Review State




                                              35
The Publishing Lifecycle – The Review State




                                              36
                 Our Agenda

Gathering The Pieces
Putting The Pieces Together
  (REVIEW STATE)
  Creating the User Accounts and Queue
  Creating the Lifecycle Procedures
  Creating the Lifecycle
  Building The External Server



                                         37
                                        Creating The Queue

   #
   execquery,c,T,CREATE dm_user OBJECTS
   SET user_name = 'xy_publish_win2000',
   SET user_os_name = 'xy_publish_win2000',
   SET home_docbase= 'XYDOCBASE',
   SET user_address = 'xy_publish_win2000',
   SET client_capability = 8, (8 = System Administrator)
   SET user_privileges = 8, (8 = Sysadmin)
   SET description = 'XY Publishing Account'
   close,c,q0
   #



                                                             38
                                 Creating The User Account

   execquery,c,T,CREATE dm_user OBJECTS
   SET user_name = 'xy_communicate',
   SET user_os_name ='dmacct123',
   SET user_address = ‘dmacct123’,
   SET home_docbase='MyDocbase',
   SET default_folder = 'xy_communicate',
   SET user_group_name = 'xy_creators',
   SET client_capability = 4,
   SET description = 'Our Publishing Account'
   close,c,q0




                                                             39
                 Our Agenda

Gathering The Pieces
Putting The Pieces Together
  (REVIEW STATE)
  Creating the User Accounts and Queue
  Creating the Lifecycle Procedures
  Creating the Lifecycle
  Building The External Server



                                         40
                                            Creating The Procedures

# First we create the entryrequirements procedure object
create,c,dm_procedure
set,c,l,object_name
entryrequirements
# And place it in the System/Procedures folder
link,c,l,/System/Procedures
# Next, we insert the code for the procedure from a text file
setfile,c,l,entryrequirements.txt,text
# And now we save it to the docbase
save,c,l
# Now we create our stateaction procedure object
create,c,dm_procedure
set,c,l,object_name
stateaction
# And place it in the System/Procedures folder
link,c,l,/System/Procedures
# Next, we insert the code for the procedure from a text file
setfile,c,l,stateaction.txt,text
# And now we save it to the docbase
save,c,l
# And finally we create our postprocessing procedure object
create,c,dm_procedure
set,c,l,object_name
postproc
# And place it in the System/Procedures folder
link,c,l,/System/Procedures
# Next, we insert the code for the procedure from a text file
setfile,c,l,postproc.txt,text
# And now we save it to the docbase
save,c,l

                                                                      41
                                             Creating The Lifecycle Procedures
   'EntryCriteria Function
   '
   Const REMOVE_ALL_VALUES As Integer = -1
   Const ADD_TO_END           As Integer = -2
   '
   Public Function EntryCriteria _
      (ByVal SessionId As String, _
       ByVal ObjectId As String, _
       ByVal UserName As String, _
       ByVal TargetState As String, _
       ByRef ErrorStack As String) As Boolean

     EntryCriteria = False

     sttus$ = dmAPISet("set," & SessionId & "," & ObjectId & ",title", "DRAFT")
     mssg$ = dmAPIGet("getmessage," & SessionId & ",3")
     If (mssg <> "") Then
        ErrorStack = mssg
     Else
        EntryCriteria = True
     End If

   End Function




                                                                                   42
                       Putting The PDF Request In Queue

   'Send a queue item to request that a
   'composite PDF be created
   ErrorStack = "Send request for PDF Rendition"
   rcs$ = dmAPIGet("queue," & SessionID & "," &
   ObjectID & ",xy_publish_win2000,
   CompositePDF,1,nulldate,null")




                                                          43
                 Our Agenda

Gathering The Pieces
Putting The Pieces Together
  (REVIEW STATE)
  Creating the User Accounts and Queue
  Creating the Lifecycle Procedures
  Creating the Lifecycle
  Building The External Server



                                         44
Creating The Lifecycle




                         45
The Lifecycle




                46
Configuring The Lifecycle States




                                   47
Associating States With Procedures




                                     48
                 Our Agenda

Gathering The Pieces
Putting The Pieces Together
  (REVIEW STATE)
  Creating the User Accounts and Queue
  Creating the Lifecycle Procedures
  Creating the Lifecycle
  Building The External Server



                                         49
The Documentum Developer Site




                                50
The Login Form




                 51
The Main Application




                       52
The Main Application




                       53
AppendPDF Pro




                54
Main Application Functions




                             55
                 Our Agenda

Gathering The Pieces
Putting The Pieces Together
  (APPROVED STATE)
  Building The Infrastructure
  Selecting The Documents To Publish
  Creating the URLs




                                       56
                 Our Agenda

Gathering The Pieces
Putting The Pieces Together
  (APPROVED STATE)
  Building The Infrastructure
  Selecting The Documents To Publish
  Creating the URLs




                                       57
Infrastructure – The APPROVED State




                                      58
                 Our Agenda

Gathering The Pieces
Putting The Pieces Together
  (APPROVED STATE)
  Building The Infrastructure
  Selecting The Documents To Publish
  Creating the URLs




                                       59
             Publishing Lifecycle – The APPROVED State

   SELECT DISTINCT b.My_TrainingDoc DOC_NAME,
    a.r_object_id DOC_ID, a.title, a.object_name, c.
    My_TrainingDoc AB_STSNUM, a.cpe_location
    AB_LOCATION,
   FROM dmadmin.dm_sysobject_s a, dmadmin.
    My_TrainingDoc _s b, dmadmin. My_TrainingDoc _r c,
    dmadmin.dm_sysobject_r d
   WHERE a.r_object_id = b.r_object_id AND b.r_object_id =
    c.r_object_id AND c.r_object_id AND a.i_cabinet_id =
    '0c0099999999999'
   AND a.r_current_state > 1
   AND a.r_current_state < 5
   AND c.Course_ID = '@Course Number'


                                                              60
                 Our Agenda

Gathering The Pieces
Putting The Pieces Together
  (APPROVED STATE)
  Building The Infrastructure
  Selecting The Documents To Publish
  Creating the URLs




                                       61
Publishing Lifecycle – The APPROVED State




                                            62