You are on page 1of 3

Documentum Workflows

Workflow represents a Business Process.

A Workflow Defination consists of multiple Activities which can be Manual or


Automatic. Manual Activities are performed by a Performer or a User whereas an
Auto-Activity is generally performed by a program on behalf of a user (using a
User’s session). The program used for Auto-Activity has to follow certain
guidelines. The class should implement IDmMethod or WorkflowMethod and
accordingly it should implement execute or doTask from the corresponding
interface. This program is configured as a workflow method, an instance of
dm_method with its a_special_app property set to ‘Workflow’. It can be created
using DAB or DA + DQL. The Manual activities are made available to the
Performers in their inbox as task.

The activities are linked through flows. Flows have Packages associated with them.
It’s mandatory for Flows to have at least one associated Package. The ending flow
is an exception which doesn’t have any associated package. A Package specifies an
object type whose objects can be attached in the package as attachments. A flow
can be a Normal Flow or a Reject Flow. A Reject flow is represented by a red line
in the Workflow Template. Using a Reject Flow in a Workflow Template
automatically generates a Reject button in an inbox task.

Object Types:
The workflow template/definition : dm_process
The constituting activities : dm_activity
The running instance of workflow : dm_workflow
The running instance of activity : dmi_workitem
The package associated with a workflow : dmi_package
The representation of manual activity in inbox : dmi_queue_item

Object Relationship:
A document attached in a Workflow:
A document is actually attached to a package which in turn is associated with a
flow in a workflow. As seen in the Object Relation diagram above:
dm_workflow dmi_queue_item dmi_package dm_sysobject
(workflow) (inbox) (package) (document)
r_object_id = router_id = r_workflow_id
r_component_id(Rep)= r_object_id

Keeping in mind the above relation, the below mentioned DQL query can be used
to find out the documents present as workflow attachment in a user’s inbox.
SELECT DOC.r_object_id, DOC.object_name
FROM dm_document DOC, dmi_package PACKAGE, dmi_queue_item INBOX
WHERE INBOX.name = 'Uttkarsh'
AND INBOX.router_id = PACKAGE.r_workflow_id
AND any PACKAGE.r_component_id = DOC.r_object_id
AND INBOX.delete_flag = 0

Vice-Versa if the document is present as a workflow attachment and its properties


are known, the following DQL query can be used to find the User in whose inbox it
is present.
SELECT name, task_name
FROM dmi_queue_item INBOX, dmi_package PACKAGE, dm_document DOC
WHERE DOC.object_name = 'queries.txt'
AND any PACKAGE.r_component_id = DOC.r_object_id
AND INBOX.router_id = PACKAGE.r_workflow_id
AND INBOX.delete_flag = 0

In addition to above, an Administrative Method GET_INBOX can also be used to


get the details of task in a user’s inbox.
EXECUTE GET_INBOX with name = 'Uttkarsh'

Guess that’s enough for this post. Hope you enjoyed reading it.

You might also like