60
FROM TITLE MASTER: [Insert Directory Location] [Insert File Name] [Insert Revision Date] Documentum Lifecycles Using Lifecycles To Trigger External Events

FROM TITLE MASTER: [Insert Directory Location] [Insert File Name] [Insert Revision Date] Documentum Lifecycles Using Lifecycles To Trigger External Events

Embed Size (px)

Citation preview

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

[email protected]

[email protected]

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

6

Lifecycles – What They Are

7

The Publishing Lifecycle

8

Publishing Lifecycle - The REVIEW State

9

Our Agenda

Gathering The Pieces• Lifecycles• Lifecycle Procedures• AutoRender Pro As Model For The

External Server

Putting The Pieces Together

10

The Lifecycle Procedures

11

The EntryRequirements Procedure

12

The StateAction Procedure

13

The PostProc Procedure

14

Our Agenda

Gathering The Pieces• Lifecycles• Lifecycle Procedures• AutoRender Pro As Model For The

External Server

Putting The Pieces Together

15

Documentum AutoRender Pro

16

AutoRender Pro

17

AutoRender Pro

18

AutoRender Pro - Queues And User Accounts

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

24

AutoRender Pro - Requesting A PDF Rendition

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

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

The Publishing Lifecycle – The Review State

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

45

Creating The Lifecycle

46

The Lifecycle

47

Configuring The Lifecycle States

48

Associating States With Procedures

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

50

The Documentum Developer Site

51

The Login Form

52

The Main Application

53

The Main Application

54

AppendPDF Pro

55

Main Application Functions

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

58

Infrastructure – The APPROVED State

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

62

Publishing Lifecycle – The APPROVED State