Documentum Lifecycles

Download Report

Transcript Documentum Lifecycles

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
[email protected]
[email protected]
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