from title master: [insert directory location] [insert file name] [insert revision date] documentum...
Post on 26-Mar-2015
229 Views
Preview:
TRANSCRIPT
FROM TITLE MASTER:[Insert Directory Location][Insert File Name][Insert Revision Date]
Documentum Lifecycles
Using Lifecycles To Trigger External Events
2
Introduction
Robert Harper / Anheuser – Busch Training and Development Group
Robert.Harper@Anheuser-Busch.com
Robert.Harper@IEEE.org
3
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.
4
Introduction – Our Agenda
Gathering The Pieces• Lifecycles• Lifecycle Procedures• AutoRender Pro As Model For The
External Server
Putting The Pieces Together
5
Our Agenda
Gathering The Pieces• Lifecycles• Lifecycle Procedures• AutoRender Pro As Model For The
External Server
Putting The Pieces Together
9
Our Agenda
Gathering The Pieces• Lifecycles• Lifecycle Procedures• AutoRender Pro As Model For The
External Server
Putting The Pieces Together
14
Our Agenda
Gathering The Pieces• Lifecycles• Lifecycle Procedures• AutoRender Pro As Model For The
External Server
Putting The Pieces Together
21
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 = dmadminTRACE: 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.docTRACE: Generating OLE automation: ARPGENERIC.WORDDOC| TRACE: Attempting to perform rendering via plugin: ARPGENERIC.WORDDOCWord Render, Maximum wait interval is 10 seconds
22
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
23
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
25
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'
26
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)
27
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
28
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
29
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
30
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
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
38
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 #
39
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
40
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
41
Creating The Procedures
# First we create the entryrequirements procedure objectcreate,c,dm_procedureset,c,l,object_nameentryrequirements# And place it in the System/Procedures folderlink,c,l,/System/Procedures# Next, we insert the code for the procedure from a text filesetfile,c,l,entryrequirements.txt,text# And now we save it to the docbasesave,c,l# Now we create our stateaction procedure objectcreate,c,dm_procedureset,c,l,object_namestateaction# And place it in the System/Procedures folderlink,c,l,/System/Procedures# Next, we insert the code for the procedure from a text filesetfile,c,l,stateaction.txt,text# And now we save it to the docbasesave,c,l# And finally we create our postprocessing procedure objectcreate,c,dm_procedureset,c,l,object_namepostproc# And place it in the System/Procedures folderlink,c,l,/System/Procedures# Next, we insert the code for the procedure from a text filesetfile,c,l,postproc.txt,text# And now we save it to the docbasesave,c,l
42
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
43
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")
44
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
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
56
Our Agenda
Gathering The Pieces
Putting The Pieces Together(APPROVED STATE)
Building The Infrastructure
Selecting The Documents To Publish
Creating the URLs
57
Our Agenda
Gathering The Pieces
Putting The Pieces Together(APPROVED STATE)
Building The Infrastructure
Selecting The Documents To Publish
Creating the URLs
59
Our Agenda
Gathering The Pieces
Putting The Pieces Together(APPROVED STATE)
Building The Infrastructure
Selecting The Documents To Publish
Creating the URLs
60
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'
61
Our Agenda
Gathering The Pieces
Putting The Pieces Together(APPROVED STATE)
Building The Infrastructure
Selecting The Documents To Publish
Creating the URLs
top related