Title: Documentum Lifecycles
1Documentum Lifecycles
- Using Lifecycles To Trigger External Events
2Introduction
- Robert Harper / Anheuser Busch Training and
Development Group - Robert.Harper_at_Anheuser-Busch.com
- Robert.Harper_at_IEEE.org
3Introduction 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.
4Introduction Our Agenda
- Gathering The Pieces
- Lifecycles
- Lifecycle Procedures
- AutoRender Pro As Model For The External
Server - Putting The Pieces Together
-
5Our Agenda
- Gathering The Pieces
- Lifecycles
- Lifecycle Procedures
- AutoRender Pro As Model For The External
Server - Putting The Pieces Together
-
6Lifecycles What They Are
7The Publishing Lifecycle
8Publishing Lifecycle - The REVIEW State
9Our Agenda
- Gathering The Pieces
- Lifecycles
- Lifecycle Procedures
- AutoRender Pro As Model For The External
Server - Putting The Pieces Together
-
10The Lifecycle Procedures
11The EntryRequirements Procedure
12The StateAction Procedure
13The PostProc Procedure
14Our Agenda
- Gathering The Pieces
- Lifecycles
- Lifecycle Procedures
- AutoRender Pro As Model For The External
Server - Putting The Pieces Together
-
15Documentum AutoRender Pro
16AutoRender Pro
17AutoRender Pro
18AutoRender Pro - Queues And User Accounts
19AutoRender Pro - Requesting A PDF Rendition
20AutoRender Pro - Requesting A PDF Rendition
- 'dm_rendPDF_autoact.ebs -- This script extracts
the - 'attached objects from a work item and calls the
- 'appropriate method to generate a PDF rendition
for - 'it.
- queueID dmAPIGet("queue,c," docID _
",dm_autorender_win31,rendition,0,F" _
",,rendition_req_ps_pdf") - Â
21AutoRender Pro - Requesting A PDF Rendition
TRACE Rendering PS_PDF request Start Time
2/22/2004 123018 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
22AutoRender 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
23AutoRender 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
24AutoRender Pro - Requesting A PDF Rendition
25AutoRender Pro - Requesting A PDF Rendition
- Here we find the PDF request
- 1256 Wed Feb 18 092431 2004 765000 (
0.000 sec) ( 45 rpc) APIgt 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 092431 2004 765000 (
0.000 sec) ( 45 rpc) Server RPC EXEC
(0000000000000000) select stamp,message,content_ty
pe,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 092431 2004 875000 (
0.110 sec) ( 46 rpc) Res 'OK' - 1256 Wed Feb 18 092431 2004 875000 (
0.000 sec) ( 46 rpc) APIgt getlastcoll,s0 - 1256 Wed Feb 18 092431 2004 875000 (
0.000 sec) ( 46 rpc) Res 'q0' - 1256 Wed Feb 18 092431 2004 890000 (
0.000 sec) ( 46 rpc) APIgt next,s0,q0 - 1256 Wed Feb 18 092431 2004 890000 (
0.000 sec) ( 46 rpc) Server RPC MultiNext (5) - 1256 Wed Feb 18 092431 2004 890000 (
0.000 sec) ( 47 rpc) Res 'OK'
26AutoRender Pro - Requesting A PDF Rendition
- 1256 Wed Feb 18 092431 2004 953000 (
0.000 sec) ( 50 rpc) Res 'Craycroft, Aaron' - 1256 Wed Feb 18 092431 2004 953000 (
0.000 sec) ( 50 rpc) APIgt close,s0,q0 - 1256 Wed Feb 18 092431 2004 953000 (
0.000 sec) ( 50 rpc) Server RPC Close (5) - 1256 Wed Feb 18 092431 2004 953000 (
0.000 sec) ( 51 rpc) Res 'OK' - We've got the job, so now we dequeue it
- 1256 Wed Feb 18 092431 2004 984000 (
0.000 sec) ( 51 rpc) APIgt dequeue,s0,1b0097528000a
5af - 1256 Wed Feb 18 092431 2004 984000 (
0.000 sec) ( 51 rpc) Server RPC InboxItemDelete
(1b0097528000a5af) - 1256 Wed Feb 18 092432 2004 031000 (
0.047 sec) ( 52 rpc) Res 'OK' - 1256 Wed Feb 18 092432 2004 031000 (
0.000 sec) ( 52 rpc) APIgt fetch,s0,090097528005289
5 - 1256 Wed Feb 18 092432 2004 031000 (
0.000 sec) ( 52 rpc) Server RPC IsCurrent
(0900975280052895)
27AutoRender Pro - Requesting A PDF Rendition
- get,s0,0900975280052895,a_compound_architecture
- 1256 Wed Feb 18 092432 2004 328000 (
0.000 sec) ( 64 rpc) Res '' - So we now we finally go and get the Word
document. - 1256 Wed Feb 18 092432 2004 328000 (
0.000 sec) ( 64 rpc) APIgt getfile,s0,0900975280052
895,,msw8 - 1256 Wed Feb 18 092432 2004 328000 (
0.000 sec) ( 64 rpc) Server RPC IsCurrent
(0600975280032ab2) - 1256 Wed Feb 18 092432 2004 328000 (
0.000 sec) ( 65 rpc) Server RPC FetchType
(dm_format) - 1256 Wed Feb 18 092432 2004 328000 (
0.000 sec) ( 66 rpc) Server RPC
OBJECT_FROM_CACHE
28AutoRender Pro - Requesting A PDF Rendition
- 1256 Wed Feb 18 092440 2004 062000 (
0.000 sec) ( 70 rpc) Server RPC BEGIN_TRANS
(0000000000000000) - 1256 Wed Feb 18 092440 2004 062000 (
0.000 sec) ( 71 rpc) Res 'OK' - And we put the rendition back up on the server
- 1256 Wed Feb 18 092440 2004 078000 (
0.000 sec) ( 71 rpc) APIgt addrendition,s0,09009752
80052895,c\dmautop\temp\3.PDF,pdf,,,T - 1256 Wed Feb 18 092440 2004 078000 (
0.000 sec) ( 71 rpc) Server RPC ID_FROM_CACHE
(0000000000000000) - 1256 Wed Feb 18 092440 2004 078000 (
0.000 sec) ( 72 rpc) Server RPC
OBJECT_FROM_CACHE (270097528000019d) - 1256 Wed Feb 18 092440 2004 078000 (
0.000 sec) ( 73 rpc) Server RPC FetchType
(dm_store) - 1256 Wed Feb 18 092440 2004 078000 (
0.000 sec) ( 74 rpc) Server RPC ID_FROM_CACHE
29What 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
30Our 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
-
31The Publishing Lifecycle The Review State
32The Publishing Lifecycle The Review State
33The Publishing Lifecycle The Review State
34The Publishing Lifecycle The Review State
35The Publishing Lifecycle The Review State
36The Publishing Lifecycle The Review State
37Our 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
-
38Creating 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
-
39Creating 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
40Our 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
-
41Creating 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
42Creating 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 ltgt "") Then
- ErrorStack mssg
- Else
43Putting 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")
44Our 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
-
45Creating The Lifecycle
46The Lifecycle
47Configuring The Lifecycle States
48Associating States With Procedures
49Our 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
-
50The Documentum Developer Site
51The Login Form
52The Main Application
53The Main Application
54AppendPDF Pro
55Main Application Functions
56Our Agenda
- Gathering The Pieces
- Putting The Pieces Together
- (APPROVED STATE)
- Building The Infrastructure
- Selecting The Documents To Publish
- Creating the URLs
-
-
57Our Agenda
- Gathering The Pieces
- Putting The Pieces Together
- (APPROVED STATE)
- Building The Infrastructure
- Selecting The Documents To Publish
- Creating the URLs
-
-
58Infrastructure The APPROVED State
59Our Agenda
- Gathering The Pieces
- Putting The Pieces Together
- (APPROVED STATE)
- Building The Infrastructure
- Selecting The Documents To Publish
- Creating the URLs
-
-
60Publishing 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 gt 1
- AND a.r_current_state lt 5
- AND c.Course_ID '_at_Course Number'
61Our Agenda
- Gathering The Pieces
- Putting The Pieces Together
- (APPROVED STATE)
- Building The Infrastructure
- Selecting The Documents To Publish
- Creating the URLs
-
-
62Publishing Lifecycle The APPROVED State