Documentum Developer Conference 2001

9/9/01 12:43

Inside Documentum Workflow Gladys Pang

Pang

1

Documentum Developer Conference 2001

9/9/01 12:43

Agenda 

Concepts 



Building a complex workflow   





Automated activities Distributed workflow

Workflow and Lifecycle 

Pang

Simple workflow Path selection Dynamic performer

Advanced Features 



Workflow and Lifecycle

Lifecycle procedures

2

Documentum Developer Conference 2001

9/9/01 12:43

Documentum Workflow    

Mechanism to model a business process A network of tasks performed by a user or the system Flow of data from task to task Logic that governs the sequence of tasks

Edit

Dept. Review

Engr. Approval Publish Mktg. Approval

You can use Workflow to model a business process. Workflow is task centric. As in the example, there are Edit, Review, etc. You can define tasks to be performed by user manually or by the system automatically. For example, you can make Publish an automatic task. You can send different numbers of document in a workflow. You can set up the logic in the workflow to control the flow of the tasks. As in the Approval tasks, the next task can be forwarded to Publish or rejected to Edit.

Pang

3

Documentum Developer Conference 2001

9/9/01 12:43

Documentum Lifecycle 



Mechanism to specify the location, security, ownership and other policies that govern the document in each phase of its existence Modeled as a sequence of states and the transitions between them   

Entry Criteria Actions Post Actions

Author

Review

Publish

Retire

Withdrawn

Lifecycle is document centric. Lifecycle is used to control the location, security, ownership etc for different phases of the document. To use Lifecycle, you define phases or states for a document. In each state the document has different control parameters such as location, permission and ownership. You use Lifecycle to control the transition of the states and therefore the document's control parameters. You can define transition tests and actions to be run as Entry Criteria, Action, or Post Action during the state transition.

Pang

4

Documentum Developer Conference 2001

9/9/01 12:43

Workflow And Lifecycle    

A document can only have one Lifecycle at a given time It can participate in many Workflow processes Lifecycle allows us to factor out the document policy from the business process Lifecycle and Workflow often work in conjunction to produce the desired system behavior Lifecycle

Workflow

A document can only have one Lifecycle at a given time. But it can participate in many Workflow processes. Lifecycle allows us to factor out the document policy from the business process. Lifecycle and Workflow often work in conjunction to produce the desired system behavior. We will go through this in more detail in the Workflow and Lifecycle topic which comes in later of the presentation.

Pang

5

Documentum Developer Conference 2001

9/9/01 12:43

Workflow Model Process Design and Definition

Workflow Manager

Build Time

Workflow Templates Run Time Process Instantiation and Control

Interaction with Users and Application Tools

Server Workflow Engine

Applications and IT Tools

This is a high level picture for DCTM workflow model. We have Workflow Manager to create the Workflow definition which is called workflow template. At runtime we create a workflow instance which refers to the workflow template. The server workflow engine controls the flow logic according to the workflow definition in the workflow template. User performs on the tasks through the client application. Or the task itself be performed by some applications.

Pang

6

Documentum Developer Conference 2001

9/9/01 12:43

Workflow Enactment Workflow Manager

Workflow Template Interpreted by

Maintains

Server Workflow Engine Administration and Control

Workflow Control Data

References

Through method invocation

Content

update

Task List

Supervisor

Client's Inbox and Task Manager

Applications Invokes

Here we have a closer look at the Workflow functional components.Starting from the top, we have Workflow Manager which is used to create workflow template. Workflow template can also reference alias set and LDAP integration in its definition. Coming to the center of the diagram is the workflow runtime control. In the center is the Server Workflow Engine, maintained by Workflow Supervisor. It controls automated aspect of the business process The Workflow Engine references the the routing document (content). The Workflow Engine also maintains a set of workflow control data. It is used to control the processing of the existing tasks and to determine the next tasks. Going down to the bottom of the picture, task list is created for manual tasks. In this case, performer receives the task in the Inbox. He completes the task through the Task Manager interface of the client. For automatic tasks, the Workflow Engine will invoke the applications directly. Here the applications can talk to the Workflow Engine through server methods and/or DFC.

Pang

7

Documentum Developer Conference 2001

9/9/01 12:43

Object Model And Relationship is defined in a

Business Process

Workflow Template

is managed by

used to create and manage

Workflow Instance

Process Definition

Workflow Instance

dm_process

dm_workflow

include one or more

composed of two or more

Activity

during execution is represented by

Task

Activity Definition

Work Item

dm_activity

dmi_ dmi_workitem

associate with

associate with one or more

Queue Item

Package

dmi_queue_item dmi_queue_item

dmi_package dmi_package

Here is the object model in DCTM server. * Business Process - what is intended to happen * On the left is the Design Time Definition. Workflow Template is defined by - Process Definition - dm_process, representation of what’s intended to happen - Activity Definition - dm_activity, representation of what’s intended to achieve at a logical step * On the right is the Run Time Management - Workflow Instance - dm_workflow, controls automated aspect of the business process and record runtime information of workflow - Task - record run time information of activity - Work Item - dmi_workitem, task allocated to task performers - Queue Item - dmi_queue_item, peer item for work item for querying in Inbox - Package - dmi_package, references documents and comments routed among task

Pang

8

Documentum Developer Conference 2001

9/9/01 12:43

Client Object Model And Relationship Inbox

Task

queries for

Queue Item dmi_queue_item dmi_queue_item

invokes

Task Work Item

Task Manager

dmi_ dmi_workitem

manipulates associate with

associate with one or more

Queue Item

Package

dmi_queue_item dmi_queue_item

dmi_package dmi_package

Here is the object model in DCTM client. * Inbox - provides a list of tasks you are responsible for * Task Manager - provides details of a task and allows user to perform the task

Pang

9

Documentum Developer Conference 2001

9/9/01 12:43

Agenda  

Concepts Building a Workflow   

 

Pang

Simple Workflow Path Selection Dynamic Performer

Advanced Features Workflow and Lifecycle

10

Documentum Developer Conference 2001

9/9/01 12:43

Building A Simple Workflow



Approve Activity - allow delegate and repeat; require sign off

1) Basic process of building a workflow * Log on the Workflow Manager. * Drag and drop the activity from template to the drawing panel * Connect the activities using the flow tool * Set the parameters in Activity Inspector and Flow Inspector * Save, validate and install the workflow template 2) Build a simple workflow * Start with a simple linear workflow template that contains signoff, repeat, and delegate * Template detail: Approve - allow delegate and repeat, require sign off

Pang

11

Documentum Developer Conference 2001

9/9/01 12:43

Building A Simple Workflow

Activity Inspector

1) Basics of the Performer tab * Performer information * Delegate, reassign, and signoff information 2) Set Approve task for delegate, repeat, and signoff * Select the Approve activity * Bring up the Activity Inspector by double click, menu item, or toolbar * Go to Performer tab * Check the appropriate check boxes

Pang

12

Documentum Developer Conference 2001

9/9/01 12:43

Building A Simple Workflow

Flow Inspector

1) Basics of the Package tab * Package information * Port/link definition 2) Add the package to the flows * Multi-select all the flows * Bring up the Flow Inspector by double click, menu item, or toolbar * Go to Packages tab * Add new package * You can change to an optional package from the Version column * Check apply to all selected check box * Apply

Pang

13

Documentum Developer Conference 2001

9/9/01 12:43

Running A Simple Workflow

Start Workflow

1) Invoke Start Workflow * Log on to Desktop Client * Navigate to the installed workflow template * Invoke Start Workflow by double click or Open menu item 2) Start Workflow Component * Add package * Add comment and define who to send the comment to

Pang

14

Documentum Developer Conference 2001

9/9/01 12:43

Running A Simple Workflow

Start Workflow

(1) Start with workflow template (2) Create workflow instance (3) Execute workflow

dm_process

dm_activity Submit dm_activity Review dm_activity Approve dm_activity Publish

dm_workflow ----------------------dormant running

What’s happening during Start Workflow 1) Start with workflow template * The workflow template objects: dm_process, a list of dm_activity objects 2) Create workflow instance * Create a dm_workflow object * dm_workflow points to the workflow template dm_process * Save dm_workflow * dm_workflow is in Dormant state 3) Run the workflow * Execute dm_workflow * dm_workflow is in Running state

Pang

15

Documentum Developer Conference 2001

9/9/01 12:43

Running A Simple Workflow

Start Workflow

Add package to start activities dm_activity Submit

Task

dm_process

dm_workflow

dmi_workitem Submit -----------------dormant dmi_queue_item Submit dmi_package Submit - Doc A

dm_note comment

Inbox ---------Τ Submit

What’s happening when add package to the workflow 1) The usual workflow template objects * The workflow template objects: dm_process, a list of dm_activity objects 2) The workflow instance * dm_workflow which points to the workflow template dm_process * dm_workflow is in Running state 3) Adding package to workflow triggers the start activities * Workflow receives the package * Required packages of the start activities are fulfilled, ready to start * Workflow engine creates the task objects: The task objects contains: dmi_workitem, peer dmi_queue_item, dmi_package to hold the document, dm_note to hold the user comments if any * Task is in Dormant state 4) Task in Inbox * Client Inbox queries dmi_queue_item for the user

Pang

16

Documentum Developer Conference 2001

9/9/01 12:43

Workflow Runtime States Workflow termination criteria is met Initial state

Dormant

Execute

Halt Restart

Halted

Finished

Running

Resume Abort

Abort

Terminated

This diagram shows the the workflow states and the related API calls. API calls are in italic. Initially workflow is in Dormant state. Once execute, it’s in Running state. If the workflow runs smoothly to the end, it goes to Finished state. If there are any error during the execution of the workflow, it becomes Halted state. You can continue the workflow by restart or resume. At any time, you can abort the workflow and it changes to Terminated state.

Pang

17

Documentum Developer Conference 2001

9/9/01 12:43

Running A Simple Workflow

Start Workflow Use IDfWorkflowBuilder in DFC ' Create IDfWorkflowBuilder object. Set wfBuilder = session.newWorkflowBuilder(processId) ' Save workflow. wfBuilder.initWorkflow ' Set the workflow to run. wfBuilder.runWorkflow ' Add package to each start activity. docIdList.appendId docObjId wfBuilder.addPackage activityNameStr, portNameStr, pkgNameStr, pkgTypeStr, noteText, notePersistent, docIdList

A more complete example for start workflow: ' Create IDfWorkflowBuilder object. Set wfBuilder = session.newWorkflowBuilder(processId) ' Save workflow only once. wfBuilder.initWorkflow ' < Any alias set thing goes here. Not covered in presentation. >

' Add document to each package in the start activities For actIndex = 0 to (actList.getCount() - 1) ' Find activity object_id and activity name in the template. Set actId = sActivities.getId(actIndex) actName = sActivityNames.getString(actIndex) Set activity = session.getObject(actId)

' Set the workflow to run. wfBuilder.runWorkflow ' < Set dynamic performer here. Will be covered in later slides. > ' Get start activities and their names to IDfList objects. ' So now we can find out the packages for the start activities. Set actList = wfBuilder.getStartActivityIds() Set actNameList = wfBuilder.getStartActivityNames()

' Find the number of packages. pkgCount = activity.getPackageCount() ' Get all the packages and insert the INPUT type pkgs For pkgIndex = 0 To (pkgCount - 1) If activity.getPortType(pkgIndex) = "INPUT" Then ' We have an INPUT package ' Retrieve all the relative data for setting package info. pkgName = activity.getPackageName(pkgIndex) pkgLabel = activity.getPackageLabel(pkgIndex) pkgType = activity.getPackageType(pkgIndex) ' Add package to each start activity. docIdList.appendId docObjId wfBuilder.addPackage activityNameStr, portNameStr, pkgNameStr, pkgTypeStr, noteText, notePersistent, docIdList Next pkgIndex Next actIndex

Pang

18

Documentum Developer Conference 2001

9/9/01 12:43

Running A Simple Workflow

Complete Task

1) Navigate to Inbox * Log on to Desktop Client * Navigate to Inbox 2) Invoke Task Manager * Select task in the Inbox Task is in Dormant (ready) state * Invoke Task Manager by double click or Open menu item 3) Task Manager Component * Task information * Document information and action * Comment reviewing, adding, deleting * Finish or reassign (delegate) 4) Finish Dialog of Task Manager * Finish the task or also have someone else repeat the task * Signoff requirement

Pang

19

Documentum Developer Conference 2001

9/9/01 12:43

Running A Simple Workflow

Complete Task (1) Task in Inbox (2) Acquire task (3) Complete task

dm_activity Approve dm_process

dm_workflow

dmi_workitem Approve -----------------dormant acquired finished dmi_queue_item Approve dmi_package Approve-DocA

dm_note

Inbox ---------Τ Approve

What’s happening when perform task in Inbox 1) The usual workflow template objects * The workflow template objects: dm_process, a list of dm_activity objects 2) The workflow instance * dm_workflow which points to the workflow template dm_process 3) Task in Inbox * The task objects contains: dmi_workitem, peer dmi_queue_item, dmi_package to hold the document, dm_note to hold the user comments if any * Task is in Dormant state 4) Open task in Task Manager * Task Manager acquires the task automatically * Task is in Acquired state 5) Finish task in Task Manager * Task Manager finishes the task * Task is in Finished state * Task is dequeued from Inbox

Pang

20

Documentum Developer Conference 2001

9/9/01 12:43

Running A Simple Workflow

Complete Task Create next task (task transition)

dm_workflow

dm_activity Publish dm_process

dmi_workitem dmi_queue_item Approve Approve dmi_package Approve - DocA dm_note dmi_workitem Publish -------------dormant dmi_queue_item Publish dmi_package Publish - DocA

Inbox ---------Τ Publish

What’s happening when server finishes one task and creates the next task 1) The usual workflow template objects * The workflow template objects: dm_process, a list of dm_activity objects 2) The workflow instance * dm_workflow which points to the workflow template dm_process * Workflow records the previous task is finished * Workflow Engine creates the new task and points to the new task 3) Previous task * The task objects contains: dmi_workitem, peer dmi_queue_item, dmi_package to hold the document, dm_note to hold the user comments if any * Task is in Finished state * Task objects hangs around 4) Next task * The task objects contains: new dmi_workitem, new peer dmi_queue_item, new dmi_package to hold the document, existing dm_note to hold the user comments if any * Task is in Dormant state * Task appears in Inbox

Pang

21

Documentum Developer Conference 2001

9/9/01 12:43

Work Item Runtime States Acquire

Dormant

Acquired

Complete

Finished

Reassign WF:Halt Pause

Resume/ Reassign

Restart WF:Halt

Paused

Restart WF:Halt

D/A/P Paused

Restart

This diagram shows the the work item states and the related API calls. API calls are in italic. Initially work item is in Dormant state. Once acquired, it goes to Acquired state. If the work item completes, it becomes Finished. If there are any error during the execution of the work item, it becomes Paused state. You can continue the work item by resume. If at any time the workflow containing the work item is halted, the work item becomes DPaused, APaused, or PPaused depending on the original state of the work item. Once get into D, A, or P Paused state, the work item will go back to its original state only if the workflow is restarted.

Pang

22

Documentum Developer Conference 2001

9/9/01 12:43

Running A Simple Workflow

Complete Task

Use IDfWorkitem in DFC ' Acquire work item (IDfWorkitem) to accept task. If (witem.getRuntimeState() = 0) Then ' 0 = dormant witem.acquire End If ' Sign off if needed. If (witem.isSignOffRequired() = TRUE) Then witemPersistenObj.signoff userOSNameStr, passwdStr, "signoff task" End If ' Finish the task. witem.complete

A more complete example for complete task: ' Show the attached documents in the task. ' Get all the associated packages into IDfCollection collection Set collection = m_workItem.getPackages("") While (collection.Next()) Set typeObject = collection ' Attached documents are stored in r_component_id. docCount = typeObject.getValueCount("r_component_id") ' Some information about the package. packageName = typeObject.getString("r_package_name") packageObjId = typeObject.getString("r_object_id") For docIndex = 0 To (docCount - 1) Set docObjId = typeObject.getRepeatingId( "r_component_id", docIndex) Set docObj = session.getObject(docObjId) docObjType = docObj.getString("r_object_type") Next docIndex Wend collection.Close Set collection = Nothing

' Acquire the work item (IDfWorkitem) to accept the task. If (witem.getRuntimeState() = 0) Then ' 0 = dormant witem.acquire End If ' Delegate the task to user or group if necessary. If (witem.isDelegatable() = TRUE And chooseToDelegate) Then witem.delegateTask(delegateUserNameStr) ' Done with the task - So exit function here. Exit Sub End If ' < Set dynamic performer here. Will be covered in later slides. > ' < Set next activities here. Will be covered in later slides. > ' Sign off if needed. If (witem.isSignOffRequired() = TRUE) Then witemPersistenObj.signoff userOSNameStr, passwdStr, "signoff task" End If ' Repeat the task if necessary. If (witem.isRepeatable() = TRUE) Then ' Add user names to the IDfList userNameList. userNameList.appendString userName witem.repeat(userNameList) End If ' Finish the task. witem.complete

Pang

23

Documentum Developer Conference 2001

9/9/01 12:43

Running A Simple Workflow

Delegate Task (1) Task in Inbox (2) Acquire task (3) Delegate task

dm_activity Approve dm_process

dm_workflow

dmi_workitem dmi_workitem Approve Approve ----------------------------------acquired dormant dormant Manager David Martin

dmi_package Approve-DocA

dmi_queue_item dmi_queue_item dmi_queue_item Approve Approve Approve ------------------------------------Manager David Manager David Martin dm_note Inbox (Martin) (David) (David) Inbox ----------------------------Τ Approve Τ Τ Approve Approve

What’s happening when delegate task in Inbox 1) The usual workflow template objects * The workflow template objects: dm_process, a list of dm_activity objects 2) The workflow instance * dm_workflow which points to the workflow template dm_process 3) Open Task in Task Manager from Inbox * The task objects contains: dmi_workitem, peer dmi_queue_item, dmi_package to hold the document, dm_note to hold the user comments if any * Task changes from Dormant to Acquired state 4) Reassign task in Task Manager * Workflow Engine changes the performer name in dmi_workitem and dmi_queue_item * Task reset to Dormant state * Task removes from original performer Inbox and appears in the new performer Inbox

Pang

24

Documentum Developer Conference 2001

9/9/01 12:43

Running A Simple Workflow

Repeat Task (1) Task in Inbox (2) Acquire task (3) Repeat task (4) Complete task

dm_activity Approve dm_process

dm_workflow dmi_workitem Approve ---------------David, Complete Acquired Dormant David, Martin, Dormant

dmi_queue_item Approve -------------David dmi_package Approve - DocA dm_note dmi_queue_item Approve -------------Martin

Inbox (David) Inbox Inbox(David) (Martin) ---------------------------------------Approve ΤΤApprove

What’s happening when repeat task in Inbox 1) The usual workflow template objects * The workflow template objects: dm_process, a list of dm_activity objects 2) The workflow instance * dm_workflow which points to the workflow template dm_process 3) Open task in Task Manager from Inbox * The task objects contains: dmi_workitem, peer dmi_queue_item, dmi_package to hold the document, dm_note to hold the user comments if any * Task changes from Dormant to Acquired state 4) Repeat and finish task in Task Manager * Workflow Engine marks the original performer done with the task * Workflow Engine adds the new performer name to the dmi_workitem and creates new dmi_queue_item for the new performer * Task removes from original performer Inbox and appears in the new performer Inbox

Pang

25

Documentum Developer Conference 2001

9/9/01 12:43

Agenda  

Concepts Building a Workflow   

 

Pang

Simple Workflow Path Selection Dynamic Performer

Advanced Features Workflow and Lifecycle

26

Documentum Developer Conference 2001

9/9/01 12:43

Adding Path Selection

  

Transition logic at Submit and Review Trigger logic at Revise Archive will wait on an event notification before it starts

Adding Peer Review such that multiple persons can review the document. Adding multiple Approve so that there can be multiple persons to sign off. Adding Archive activity. Changing the basic workflow template to multiple paths with decision logic for trigger and transition 1) Activities * Transition logic at Submit and Review Allow the performer of Submit and Review to determine the next tasks * Trigger logic at Revise Allow Revise to start when any of the previous activity has finished * Archive will wait on an event for notifying Publish is done before it starts 2) Flows * Reject flow from Review to Revise

Pang

27

Documentum Developer Conference 2001

9/9/01 12:43

Adding Path Selection

Setting Transition Condition

1) Basics of the Transition tab * Determine what to do when the task is completed * Transition types: - all - all next tasks will be started - manual transition - performer chooses the next tasks (forward or reject) - auto transition - server picks the next tasks based on the condition defined 2) Set Submit task for manual transition * Select the Submit activity * Bring up the Activity Inspector by double click, menu item, or toolbar * Go to Transition tab * Check the appropriate radio button

Pang

28

Documentum Developer Conference 2001

9/9/01 12:43

Adding Path Selection

Setting Trigger Condition

1) Basics of the Trigger tab * Determine when to start this task * Trigger conditions: - all - all previous tasks are done - some - certain number of previous tasks are done - event - the task will not start until a certain event arrives * Number of times the activity can run 2) Set Revise task for manual transition * Select the Revise activity * Bring up the Activity Inspector by double click, menu item, or toolbar * Go to Trigger tab * Check the appropriate radio button and specify 1 input

Pang

29

Documentum Developer Conference 2001

9/9/01 12:43

Adding Path Selection

Reject Path

There is no build-in reject path as compared to router. So you have to add the reject paths explicitly. 1) Set Review task for manual transition * Select the Review activity * Bring up the Activity Inspector by double click, menu item, or toolbar * Go to Transition tab * Check the appropriate radio button

Pang

30

Documentum Developer Conference 2001

9/9/01 12:43

Adding Path Selection

Event Trigger

1) Set Archive task for event transition * Select the Archive activity * Bring up the Activity Inspector by double click, menu item, or toolbar * Go to Trigger tab * Check the wait on event check box and specify an event name

Pang

31

Documentum Developer Conference 2001

9/9/01 12:43

Managing Path Selection

Select Next Tasks

1) Navigate to Inbox * Log on to Desktop Client * Navigate to Inbox 2) Invoke Task Manager * Select task in the Inbox * Invoke Task Manager by double click or Open menu item * Task changes from Dormant to Acquired state 3) Finish Dialog of Task Manager * Finish the task by selecting the next activities

Pang

32

Documentum Developer Conference 2001

9/9/01 12:43

Managing Path Selection

Select Next Tasks (1) Acquire task as usual (2) Select next tasks (3) Complete task as usual

dm_activity Revise dm_activity Review

dm_process

dm_workflow

dm_activity Approve1

dm_activity Approve2

dmi_workitem Review -------------Next Task = Revise dmi_queue_item Review dmi_package Review - DocA

Inbox ---------Τ Review

What’s happening during select next tasks 1) The usual workflow template objects * The workflow template objects: dm_process, a list of dm_activity objects 2) The workflow instance * dm_workflow which points to the workflow template dm_process 3) Open task in Task Manager from Inbox * The task objects contains: dmi_workitem, peer dmi_queue_item, dmi_package to hold the document, dm_note to hold the user comments if any * Task changes from Dormant to Acquired state 4) Select next tasks and finish * Workflow Engine marks the selected next tasks to the current work item * Task Manager finishes the task * Task is in Finished state * Task is dequeued from Inbox

Pang

33

Documentum Developer Conference 2001

9/9/01 12:43

Managing Path Selection

Select Next Tasks

Use IDfWorkitem::setOutput in DFC ' Acquire work item (IDfWorkitem) to accept task. If (witem.getRuntimeState() = 0) Then ' 0 = dormant witem.acquire End If ’ Determine transition type. If (witem.isManualTransition() = TRUE) Then ' Get the activity and add it to the IDfList of next acts. outList.append activityObj ' Add the forward/reject activities to the output. witem.setOutputByActivities outList End If ' Finish the task. witem.complete

A more complete example with select output path: ' Acquire the work item (IDfWorkitem) to accept the task. If (witem.getRuntimeState() = 0) Then ' 0 = dormant witem.acquire End If ' < Set dynamic performer here. Will be covered in later slides. > 'Determine transition type. If (witem.isManualTransition() = TRUE) Then ' Get the possible forward activities into IDfList. Set forwardActObjs = witem.getForwardActivities() ' Get the rejectable activities into IDfList. Set rejectActObjs = witem.getRejectActivities() ' Loop the forward and reject activities and ' decide which paths to take.

' Sign off if needed. If (witem.isSignOffRequired() = TRUE) Then witemPersistenObj.signoff userOSNameStr, passwdStr, "signoff task" End If ' Repeat the task if necessary. If (witem.isRepeatable() = TRUE) Then ' Add user names to the IDfList userNameList. userNameList.appendString userName witem.repeat(userNameList) End If ' Finish the task. witem.complete

' Get the activity and add it to the IDfList of next acts. outList.append activityObj ' Add the forward/reject activities to the output. witem.setOutputByActivities outList End If

Pang

34

Documentum Developer Conference 2001

9/9/01 12:43

Managing Path Selection

Trigger And Transition Settings (1) Determine next tasks: - All, manual or auto transition (2) Trigger conditions of next tasks (3) Task transition

(1)Transition Condition: All, Manual, Auto?

dm_activity Current

dm_activity Next

dm_process

dm_workflow

dmi_workitem Current -----------dmi_queue_item Current dmi_package finished Current

(2)Fulfill Trigger Conditions?

dmi_workitem Next -----------dmi_queue_item Next dormant dmi_package (3)Create New Task

Next

Inbox ---------Τ Next

What’s happening during task transition and triggering 1) The usual workflow template objects * The workflow template objects: dm_process, a list of dm_activity objects 2) The workflow instance * dm_workflow which points to the workflow template dm_process 3) The current task is finished * Task is in Finished state * Check the corresponding activity definition * Determine if the transition is all, manual, or auto * Find out the next task based on the transition conditions 4) Before creating the next task * Check the corresponding activity definition * Determine if the trigger conditions are fulfilled: number of previous finished tasks, wait on event * Workflow Engine waits if the trigger conditions are not fulfilled 5) Create the new task

Pang

35

Documentum Developer Conference 2001

9/9/01 12:43

Managing Path Selection

Send Event to Workflow

Use IDfSession::queue in DFC Function MyPublishApplication … Publish Job here … Set sysObject = workflowObject Set queueId = sysObject.queue(toUserName, eventNameStr, priorityInt, sendMailBool, dueDate, messageStr) ... End Function

This wait on event mechanism is useful when you have a task that has to be performed externally to DCTM system. You will have a task (Publish) to notify the external agent and then finish to the next task. It will be the next task to wait for the finish event of the external agent. The external agent will perform its operation. When the external agent is done with the task, it simply notifies the workflow by sending a finish event. Once the workflow receives the event, the next task (Archive) will be triggered.

Pang

36

Documentum Developer Conference 2001

9/9/01 12:43

Agenda  

Concepts Building a Workflow   

 

Pang

Simple Workflow Path Selection Dynamic Performer

Advanced Features Workflow and Lifecycle

37

Documentum Developer Conference 2001

9/9/01 12:43

Dynamic Performer Selection

 

Submit chooses performer of PeerReview Performer for Approve will be the manager of the performer of Review

Changing Peer Review and Review from multiple to one activity. Changing their performers to be assigned dynamically. Changing the multi-path workflow template to single path with dynamic performer 1) Activities * Peer Review (performer to be chosen in Submit) Submit task performer will choose some users to perform on Peer Review * Review (performer to be resolved from previous task performer) Review will be performed by Revise performer’s manager

Pang

38

Documentum Developer Conference 2001

9/9/01 12:43

Dynamic Performer Selection

Peer Review

1) Basics of the Select Performer Wizard * performer types * Performer values: - Real user name - To be picked at runtime by some previous activities - To be resolved from alias set of document or previous performer 2) Set Peer Review performer to be select at runtime by Submit * Select the Peer Review activity * Bring up the Activity Inspector by double click, menu item, or toolbar * Go to Performer tab * Select Some Users from Group * Select to be assigned at runtime in activity Submit * Next to select a default group name * Define a real default group name

Pang

39

Documentum Developer Conference 2001

9/9/01 12:43

Managing Dynamic Performer

1) Navigate to Inbox * Log on to Desktop Client * Navigate to Inbox 2) Invoke Task Manager * Select task in the Inbox * Invoke Task Manager by double click or Open menu item * Task changes from Dormant to Acquired state 3) Finish Dialog of Task Manager * Select performers for Peer Performer task * Choose any number of users from the predefined group * Finish task

Pang

40

Documentum Developer Conference 2001

9/9/01 12:43

Managing Dynamic Performer (1) Acquire task as usual (2) Select dynamic performers (3) Complete task as usual dm_process --------------Submit->PeerReview

dm_workflow ---------------dm_workflow PeerReview - UserA PeerReview - UserB

dm_activity Submit

dm_activity PeerReview

dmi_workitem Submit dmi_queue_item Submit dmi_package Submit - DocA

Inbox ---------Τ Submit

What’s happening during select dynamic performers 1) The usual workflow template objects * The workflow template objects: dm_process, a list of dm_activity objects 2) The workflow instance * dm_workflow which points to the workflow template dm_process 3) Open task in Task Manager from Inbox * The task objects contains: dmi_workitem, peer dmi_queue_item, dmi_package to hold the document, dm_note to hold the user comments if any * Task changes from Dormant to Acquired state 4) Select dynamic performer * Workflow Engine marks the selected performers for Peer Review in dm_workflow object 5) Finish task * Task Manager finishes the task * Task is in Finished state * Task is dequeued from Inbox

Pang

41

Documentum Developer Conference 2001

9/9/01 12:43

Managing Dynamic Performer Task transition when using dynamic performer dm_process --------------Submit->PeerReview

dm_workflow ---------------PeerReview - WriterGreen PeerReview - WriterCooley

dm_activity Submit

dm_activity PeerReview

dmi_workitem PeerReview dmi_queue_item ------------WriterGreenPeerReviewdmi_package PeerReview DocA dmi_workitem PeerReview dmi_queue_item -------------PeerReviewdmi_package WriterCooley PeerReview DocA

Inbox (WriterGreen) ---------------Inbox (WriterCooley) Τ PeerReview ---------------Τ PeerReview

What’s happening during task transition using dynamic performer 1) The usual workflow template objects * The workflow template objects: dm_process, a list of dm_activity objects 2) The workflow instance * dm_workflow which points to the workflow template dm_process 3) The next task is determined * See detail in Task Transition for Trigger and Transition in previous slides 4) Before creating the next task * Check the corresponding activity definition * Determine if the performer is determined dynamically * Workflow Engine reads the performer selection from dm_workflow object 5) Create the new tasks

Pang

42

Documentum Developer Conference 2001

9/9/01 12:43

Managing Dynamic Performer Using IDfWorkflow::setPerformers in DFC ' Acquire the work item (IDfWorkitem) to accept the task. If (witem.getRuntimeState() = 0) Then ' 0 = dormant witem.acquire End If ' Set dynamic performer if required. nameList.appendString performerName workflow.setPerformers actName, nameList ' Finish the task. witem.complete

A more complete example for displaying dynamic performer to choose from: ' Find the act_choose_by entries for the current activity name. actChooseCount = process.getActChooseByCount() For actChooseIndex = 0 To actChooseCount - 1 actChooseBy = processObj.getActChooseBy(actChooseIndex) If (StrComp(actChooseBy, currActivityName) = 0) Then actChooseFor = processObj.getActChooseFor(actChooseIndex) ' Find the "select from" group value. It's the performer_name ' in the activity object. If it's an alias name, need to resolve ' alias to figure out the group value. ' Obtain the activity object. Set processPersistentObj = processObj locateIndex = processPersistentObj.apiGet("locate", "r_act_name," & currActivityName) Set actObjId = processObj.getActivityDefId(locateIndex) Set actObj = session.GetObject(actObjId) ' Find out the performer type and name for the activity.

' Find out the default group if choosing for "some users from group". If (perfType = 8 And InStr(groupValue, "%") = 1) Then ' Need to check if the default group is an alias name ' Then resolve alias before setting it. ' Try to resolve the alias. Set wfPerObj = workflow groupValue = session.resolveAlias(wfPerObj.getObjectId(), groupValue) End If defaultPerfGroup = groupValue ' Find out the user should choose "one or more user values" ' or a group value. If (perfType = 3) Then ' 3 = specific user chooseType = CHOOSE_SINGLE_USER_FROM_ALL_USERS ElseIf (perfType = 4) Then ' 4 = all users in group chooseType = CHOOSE_SINGLE_GROUP_FROM_ALL_GROUPS ElseIf (perfType = 5 Or perfType = 6) Then ' 5,6 = single user in group chooseType = CHOOSE_SINGLE_GROUP_FROM_ALL_GROUPS ElseIf (perfType = 8) Then ' 8 = some users in group chooseType = CHOOSE_ANY_FROM_DEFAULT_GROUP End If ' Provide interface for user to choose the dynamic performers.

perfType = actObj.getPerformerType groupValue = actObj.getPerformerName

Pang

End If Next actChooseIndex

43

Documentum Developer Conference 2001

9/9/01 12:43

Performer Alias

Review

Assume the user has alias set which contains the manager alias. 1) Basics of the performer alias options in Select Performer Wizard * Workflow initiator defines * Resolve from specific alias set * Resolve from document’s alias set * Resolve from previous performer’s alias set 2) Set Review performer to be resolved at runtime from previous performer’s alias set * Select the Review activity * Bring up the Activity Inspector by double click, menu item, or toolbar * Go to Performer tab * Select Specific User * Select to be resolved from alias set at runtime * Next to select resolve from previous performer

Pang

44

Documentum Developer Conference 2001

9/9/01 12:43

Managing Performer Alias Task transition when using performer alias dm_activity Revise

dm_process

dm_workflow

dm_activity Review ----------------%manager resolved from prev perf

dmi_workitem Revise dmi_queue_item ------------WriterMary Revise dmi_package Revise - DocA dmi_workitem Review dmi_queue_item ---------------ManagerDavid Review dmi_package Review - DocA

dm_user WriterMary

dm_alias_set -------------------------manager = ManagerDavid

Inbox ---------Τ Review

What’s happening during task transition using performer alias 1) The usual workflow template objects * The workflow template objects: dm_process, a list of dm_activity objects 2) The workflow instance * dm_workflow which points to the workflow template dm_process 3) The next task is determined * See detail in Task Transition for Trigger and Transition in previous slides 4) Before creating the next task * Check the corresponding activity definition * Determine if the performer is determined from alias set * Workflow Engine resolves the alias name to a real user or group according to the resolution setting 5) Create the new tasks

Pang

45

Documentum Developer Conference 2001

9/9/01 12:43

Agenda   

Concepts Building a Complex Workflow Advanced Features  



Pang

Automated Activities Distributed workflow

Workflow and Lifecycle

46

Documentum Developer Conference 2001

9/9/01 12:43

Automatic Task 



Publish and Archive become auto tasks

Publish and Archive become auto tasks

Changing Publish and Archive into automatic tasks 1) Activities * Publish and Archive Change to auto task to run workflow methods

Pang

47

Documentum Developer Conference 2001

9/9/01 12:43

Adding Automatic Task

Assuming Publish will be done in the lifecycle Action during document promote ==> Publish = Promote in WF 1) Basics of the Performer tab in Auto Mode * Performer * Execution method * Execution result * Execution time – how long the server should run the method before timing out * Error handling

2) Set Publish to automatic activity * Select the Publish activity * Bring up the Activity Inspector by double click, menu item, or toolbar * Go to Performer tab * Select perform automatically * Select user in Select Performer Wizard * Select Promote method, save result, 60 seconds, and stop execution (60 sec has to be between the min and max attribute values on dm_method)

Pang

48

Documentum Developer Conference 2001

9/9/01 12:43

Managing Automatic Task Automatic task dm_activity Publish

dm_process

dm_method PublishMethod

No Queue Item for Automatic Task! dm_workflow

dmi_workitem Publish dmi_package Publish - DocA

dm_sysobject Publish Execution Log

Inbox ----------

What’s happening during select dynamic performers 1) The usual workflow template objects * The workflow template objects: dm_process, a list of dm_activity objects 2) The workflow instance * dm_workflow which points to the workflow template dm_process 3) Automatic task is created * The task objects contains: dmi_workitem, dmi_package to hold the document, dm_note to hold the user comments if any * No peer dmi_queue_item * Task references its auto method 4) Executing automatic task * Workflow Engine runs the method defined in dm_activity * Method acquires and completes the task * Workflow Engine saves execution log and handles error according to the dm_activity definition

Pang

49

Documentum Developer Conference 2001

9/9/01 12:43

Workflow Automatic Activities Basic code structure Sub MyAutoMethod(ByVal stub1 As String, ByVal docbase As String, _ ByVal stub2 As String, ByVal user As String, _ ByVal stub3 As String, ByVal workItemId As String, _ ByVal stub4 As String, ByVal ticket As String, _ ByVal stub5 As String, ByVal mode As String) ' Session connection. ... ' Get work item object. Set workItem = session.GetObject(clientX.getId(workItemId)) ' Acquire the work item. workItem.acquire ' Custom operations go here. ... ' Complete the workitem. workItem.complete End Sub

A more complete example for writing a workflow method: Sub MyAutoMethod(ByVal stub1 As String, ByVal docbase As String, _ ByVal stub2 As String, ByVal user As String, _ ByVal stub3 As String, ByVal workItemId As String, _ ByVal stub4 As String, ByVal ticket As String, _ ByVal stub5 As String, ByVal mode As String)

' Get work item id object. errorMsg = "Getting work item id object" Set workItemIdObj = clientX.getId(workItemId) ' Get work item object. errorMsg = "Getting work item object" Set workItem = session.GetObject(workItemIdObj)

On Error GoTo MyAutoMethod_Error Dim clientX As Object 'dfclib.DfClientX Dim client As Object

'IDfClient

Dim errorMsg as String Dim session As Object 'IDfSession Dim workItem As Object

' Acquire the work item only when mode = "0" for not restarting. If mode = "0" Then errorMsg = "Acquiring work item" workItem.acquire End If ' My custom operations go here.

Dim workItemIdObj As Object ' Get a session. errorMsg = "Connecting to docbase"

' Complete the workitem. Assume there is only ' one output port for this task. errorMsg = "Completing work item" workItem.complete

Set clientX = CreateObject("Documentum.Dfc") Set loginInfo = clientX.getLoginInfo() loginInfo.setUser user logininfo.setPassword ticket Set client = clientX.getLocalClient()

Exit Sub MyAutoMethod_Error: Print errorMsg ' This message will go to the result log. dmExit (100) End Sub

Set session = client.getSharedSession(docbase, loginInfo, "WF_Auto_Method")

Pang

50

Documentum Developer Conference 2001

9/9/01 12:43

Workflow Automatic Activities 

Sample method 

Pang

Promote Lifecycle

51

Documentum Developer Conference 2001

9/9/01 12:43

' (c) Copyright Documentum, Inc., 2001 ' WF_PromoteLifeCycle ' -- This method is used for Workflow. It acquires the work item, '

promotes all documents of the current work item, and completes

'

the work item.

Sub PromoteLifeCycle(ByVal stub1 As String, ByVal docbase As String, ByVal stub2 As String, _ ByVal user As String, ByVal stub3 As String, ByVal workItemId As String, _ ByVal stub4 As String, ByVal ticket As String, ByVal stub5 As String, ByVal mode As String) On Error GoTo PromoteLifeCycle_Error Dim clientX As Object 'dfclib.DfClientX Dim client As Object

'IDfClient

Dim doc, docIdObj, packageCollection, session, workItem As Object Dim docIdStr, errorMsg, lifeCycleState as String Dim lifeCycleOverride, lifeCycleTestOnly as Boolean lifeCycleState = ""

' Promote to the next default state.

lifeCycleOverride = False lifeCycleTestOnly = False ' Get a session. Set clientX = CreateObject("Documentum.Dfc") Set loginInfo = clientX.getLoginInfo() loginInfo.setUser user logininfo.setPassword ticket Set client = clientX.getLocalClient() Set session = client.getSharedSession(docbase, loginInfo, "WF_Auto_Method") ' Get work item object. Set workItem = session.GetObject(clientX.getId(workItemId)) ' Acquire the work item only when mode = "0" for not restarting. If mode = "0" Then workItem.acquire End If ' Promote document life cycle for each document. Set packageCollection = workItem.getPackages("") While packageCollection.Next docIdStr = packageCollection.getString("r_component_id") Set docIdObj = clientX.getId(docIdStr) Set doc = session.GetObject(docIdObj) doc.promote lifeCycleState, lifeCycleOverride, lifeCycleTestOnly Wend packageCollection.Close ' Complete the workitem. Assume there is only one output port for this task. workItem.complete Exit Sub PromoteLifeCycle_Error: Print errorMsg dmExit (100) End Sub

Pang

52

Documentum Developer Conference 2001

9/9/01 12:43

Workflow Automatic Activities 

When there is an execution error in automatic task  



What should a Workflow Supervisor do when error occurs   

Pang

Stop Execution - Task will be put in Paused state and reassigned to Workflow Supervisor Continue Execution - Task will be continued to the next task

Check execution results Fix the problem Rerun the task!

53

Documentum Developer Conference 2001

9/9/01 12:43

Workflow Automatic Activities

1) Navigate to Inbox * Log on to Desktop Client * Navigate to Inbox 2) Invoke Task Manager * Select task in the Inbox * Invoke Task Manager by double click or Open menu item * Notice the add-on to the instruction by the Desktop Client Task Manager 3) Finish task * Showing the execution log * Finish task by choosing either to - rerun the automatic method - no more human interaction - or, manually complete the task - get the normal Finish Dialog

Pang

54

Documentum Developer Conference 2001

9/9/01 12:43

Agenda   

Concepts Building a Complex Workflow Advanced Features  



Pang

Automated Activities Distributed workflow

Workflow and Lifecycle

55

Documentum Developer Conference 2001

9/9/01 12:43

Distributed Workflow 

Distributed  



Federated environment  

 

route a foreign document route to a remote user notion of home Docbase users, groups, types, and ACLs are known to all participating Docbases

Workflow definitions, workflow initiator, and all runtime objects are all in single Docbase Only queue item is replicated to user’s home Docbase

When a work item is assigned to a remote user, a work item and the peer queue item are generated in the Docbase where the process definition and the containing workflow reside. The notification agent for the source Docbase replicates the queue item in the user’s home Docbase. Using these queue items, the home Inbox connects to the source Docbase and retrieves all information necessary for the user to perform the work item tasks. A remote user must be able to connect to the source Docbase to work on a replicated queue item.

Pang

56

Documentum Developer Conference 2001

9/9/01 12:43

Agenda    

Concepts Building a Complex Workflow Advanced Features Workflow and Lifecycle 

Pang

Lifecycle Procedures

57

Documentum Developer Conference 2001

9/9/01 12:43

Workflow And Lifecycle    

A Document can have only lifecycle at a given time It can participate in many workflow processes Lifecycle allows us to factor out the document policy from the process Lifecycle and Workflow often work in conjunction to produce the desired system behavior Lifecycle

Pang

Workflow

58

Documentum Developer Conference 2001

9/9/01 12:43

Workflow And Lifecycle

Application 1 Author

In Review

Published

Start WF

S

Archived

Promote

Submit

Approve

Publish

E

Review

Example using document Lifecycle to drive Workflow process * When document is promoted from Author to In Review state, the state transition logic of In Review triggers to start workflow, providing the document as the content for the workflow * The workflow continues to Submit, Review, Approve and Publish * Publish invokes the promote Lifecycle method. The document is promoted to Published state from In Review state

Pang

59

Documentum Developer Conference 2001

9/9/01 12:43

Workflow And Lifecycle

Application 2 Author

In Review

Published

Promote

Promote S

Submit

Archived

Review

Auto Promote

Publish

Approve

Example using Workflow process to drive document Lifecycle * Starting from a workflow, after the document is submitted, workflow runs an automatic promote Lifecycle task on the document * Document is promoted from Author to In Review state * The workflow continues to Review, Approve and Publish * Publish invokes the promote Lifecycle method. The document is promoted to Published state from In Review state

Pang

60

Documentum Developer Conference 2001

9/9/01 12:43

Lifecycle Transition

Promote

Start (Begin Transaction) Entry Criteria Success?

No

Yes

Change Lifecycle State Action Success?

No

Yes

Post Action End (Commit Transaction)

End (Abort Transaction)

During the promote, server goes through a sequence of tests/standard actions/procedures as defined in a state of a Lifecycle. These steps are done in a transaction. For each state of a Lifecycle, there are Entry Criteria, Action, and Post Action. You can define the transition tests, standard actions and/or procedures for each of these steps in DDS. During a promotion, the Entry Criteria will be executed. If it fails, the transaction will be aborted and the promotion fails. If the Entry Criteria succeeds, the Lifecycle state of the document will be changed to the next state. And then the Actions will be executed. If it fails, the transaction will be aborted and the promotion fails. After Actions, the Post Actions will be executed and the transaction will be completed. The promotion does not depend on the result of the Post Actions.

Pang

61

Documentum Developer Conference 2001

9/9/01 12:43

Lifecycle Procedures 

Sample procedure 

Pang

launching Workflow from Lifecycle

62

Documentum Developer Conference 2001

9/9/01 12:43

' (c) Copyright Documentum, Inc., 2001 ' Sample_Lifecycle_StartWF

' -- This script launches the workflow Sample_WF_Lifecycle_Template '

with the document attached to this document life cycle.

' This function has to be called EntryCriteria. ' This is used in the Entry Criteria procedure of life cycle ' Sample_Lifecycle_For_WF. ' The returned value of EntryCriteria will be false if error

' Set package for workflow activities. ' Assume there is only one package going ' to all starting activities. ' Prepare the doc id list for add package. ErrorStack = "Creating document id list" Set docIdList = clientX.getList() Set docId = clientX.getId(ObjectId) docIdList.appendId docId

' is encountered; true, otherwise. 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 On Error GoTo EntryCriteria_Error Dim clientX as Object 'dfclib.DfClientX Dim client as Object

'IDfClient

Dim session as Object 'IDfSession Dim process as Object 'IDfProcess Dim wfBuilder as Object 'IDfWorkflowBuilder Dim docId, actId, processId as Object

'IDfId

Dim docIdList, actIdList, actNameList as Object 'IDfList Dim act as Object

'IDfActivity

Dim actCount, actIndex, pkgCount, pkgIndex as Integer Dim actName, portName, portType, pkgName, pkgLabel, _ pkgType, queryString as String ' Get a session. ErrorStack = "Getting session" Set clientX = CreateObject("Documentum.Dfc") Set client = clientX.getLocalClient() Set session = client.adoptDMCLSession(SessionID) ' Get the workflow template object id. ErrorStack = "Getting workflow template id" queryString = "dm_process where object_name = 'Sample_WF_Lifecycle_Template'" Set processId = session.getIdByQualification(queryString) ' Create workflow builder with corresponding process. ErrorStack = "Creating new workflow builder with process id = " + _ processId.toString() Set wfBuilder = session.newWorkflowBuilder(processId)

' Find out start activities id and names. ErrorStack = "Getting workflow start activity ids" Set actIdList = wfBuilder.getStartActivityIds() ErrorStack = "Getting workflow start activity names" Set actNameList = wfBuilder.getStartActivityNames() ' For each start activity/package, add package. ErrorStack = "Looping start activities to add package" actCount = actIdList.getCount For actIndex = 0 To actCount - 1 ErrorStack = "Getting workflow start activity index =" _ + Str(actIndex) Set actId = actIdList.getId(actIndex) Set act = session.getObject(actId) actName = actNameList.getString(actIndex) pkgCount = act.getPackageCount() For pkgIndex = 0 To pkgCount - 1 portType = act.getPortType(pkgIndex) If portType = "INPUT" Then portName = act.getPortName(pkgIndex) pkgName = act.getPackageName(pkgIndex) pkgLabel = act.getPackageLabel(pkgIndex) pkgType = act.getPackageType(pkgIndex) ' Attach the current document. ErrorStack = "Adding package to activity=" + _ actName + ",pkgName=" + pkgName wfBuilder.addPackage actName, portName, _ pkgName, pkgType, _ "This is a note", False, _ docIdList End If Next pkgIndex Next actIndex ' Sucess and done. EntryCriteria = True Exit Function EntryCriteria_Error: ' Error handling. Print ErrorStack EntryCriteria = False End Function

' Assume there is no performer aliasing in workflow. ErrorStack = "Initializing workflow" dfcVersion = clientX.getDFCVersion If InStr(1, dfcVersion, "4.1", 1) = 1 Then wfBuilder.initWorkflow ErrorStack = "Running workflow" wfBuilder.runWorkflow Else wfBuilder.startWorkflow ' For 4.0.X docbase End If

Pang

63

Documentum Developer Conference 2001

9/9/01 12:43

Questions?

Pang

64

Documentum Developer Conference 2001

9/9/01 12:43

Summary 

Workflow features   



Pang

Build a complex workflow Run workflow using DFC Server runtime object detail

Using Workflow and Lifecycle together

65

Documentum Developer Conference 2001

9/9/01 12:43

Workflow Teminology Activity (design time) - task definition, included in a workflow template Dynamic Performer (both design and run time) - performer to be defined at runtime Flow or Link (design time) - connects two activities Package (both design and run time) - design time - store the definition for the routing documents - run time - a placeholder to store the routing documents and comments Performer (both design and run time) - user or group who works on the task in workflow Performer Alias (both design and run time) - performer defined in an alias representation Port (design time) - part of the activity definition, placeholder for a link. From activity’s point of view, it only sees ports but not links Task (run time) - a logical step of work in a workflow at runtime Workflow Instance (run time) - workflow at runtime Workflow Template (design time) - workflow definition set up at design time

Pang

66