LDD Today

Integrating Lotus Workflow and Domino.Doc


by
Luciano Resende
and Tara Hall

Level: Intermediate
Works with: Lotus Workflow and Domino.Doc
Updated: 02-Dec-2002

Fred and Ginger, peanut butter and jelly, Lotus Workflow and Domino.Doc—what do they all have in common? They belong together. Lotus Workflow and Domino.Doc complement each other by extending each system's functionality. Domino.Doc's content management is enhanced by the workflow management provided by Lotus Workflow, so you can use Domino.Doc to store documents and use Lotus Workflow to manage processes (such as document approval) for these documents. In Lotus Workflow 3.0, you can also now create new documents that you store in Domino.Doc. Integration of the two systems is simple, requiring little or no programming, depending on the level of customization.

In this article, we describe how to use the Lotus Workflow 3.0 automated activities to improve performance between Lotus Workflow and Domino.Doc. We also describe the New Document feature in Domino.Doc that lets you create documents in Domino.Doc using Lotus Workflow, and we provide updated examples of Lotus Workflow and Domino.Doc integration using the Lotus Workflow Architect. This article is intended for Lotus Workflow and Domino.Doc system administrators and Lotus Workflow process designers. The examples in this article work with Lotus Workflow 3.0 or later and Domino.Doc 2.5a or later.

How to configure Lotus Workflow and Domino.Doc integration
Before you can integrate the two products, you must set up the Domino.Doc and Lotus Workflow environments. Install both Domino.Doc and Lotus Workflow on the same server. The server platform must be Windows32. The topic of installation is an article in itself, so we won't be covering it here. However, you can find installation and configuration help for each product in the Lotus Workflow Installation and Administration Guide and in the Domino.Doc Installation and Administrator's Guides. We also recommend that you refer to the "Installation considerations" chapter in the Domino.Doc and Lotus Workflow Integration Guide. You can find all of these guides and more in the Documentation Library.

After you set up each system, you are ready to get started, so let's begin with the documents that you need to integrate the two systems: Access Profiles and Application Setup documents.

Domino.Doc Access Profiles
As mentioned earlier, integration of Domino.Doc and Lotus Workflow requires little or no programming—depending on the level of integration you want to achieve. The more you integrate the two products, the more programming is required. The Domino.Doc API lets you integrate back-end features like check-in, check-out, search, and archive with Lotus Workflow, but for front-end features like launching or viewing a document from Domino.Doc, you don't need the API. Integration of the back-end features requires access information—user account name and password—from the Lotus Workflow application. To use the automated activities described later in this article, we use the Domino.Doc API, so you need an Access Profile.

You can create Domino.Doc Access Profiles in Lotus Workflow. The Lotus Workflow Application Setup document lets you manage your Access Profiles. Domino.Doc uses a reader field to determine who can read or edit an Access Profile, so assigning the proper role to each user in the Access Profiles is critical. The following table describes the roles available to you.

RoleAssigned to...Description
[Process Server]Domino.Doc and Lotus Workflow servers and agent signersThis role provides a high level of security. Any one assigned this role can read the Access Profile.
[Process Reader]UsersThis role provides a low level of security. Like the [Process Server] role, any one assigned this role can read the Access Profiles. Assign this role to your Lotus Workflow users.

In addition to these roles, you need to setup the appropriate ACL for your Lotus Workflow application. For more information about ACL settings, see the Lotus Workflow Administrator's Guide for your release.

Creating a Domino.Doc Access Profile
The Lotus Workflow Application Setup Document contains all the global parameters you need to integrate Lotus Workflow applications with Domino.Doc. The Domino.Doc Access Profile provides information about the URL for the Domino.Doc library to be used and the user name and password used to access Domino.Doc documents.

To create the Domino.Doc Access Profile in the Lotus Workflow application, follow these steps:
Depending on your environment, you may need to create more than one Access Profile documents. If you have more than one profile, you can specify which profile to use for each type of action you perform in Domino.Doc when you design your Lotus Workflow process.

For more detailed information about creating Domino.Doc Access profiles, see the Lotus Workflow Administration Guide for your release.

If you want to use Lotus Workflow agents to integrate Lotus Workflow and Domino.Doc, configure the "Settings for Lotus Workflow agents for Domino.Doc integration" section on the Domino.Doc Integration Setup tab. Because we focus on the new way of integrating Lotus Workflow and Domino.Doc in this article, we won't go into details about that section. For more information about how to use those agents to integrate Lotus Workflow and Domino.Doc, refer to the Domino.Doc and Lotus Workflow Integration Guide available in the Documentation Library.

If your Domino.Doc library uses event-based initiation, enable Advanced initiation in the Lotus Workflow Application Setup Document. For instructions on how to enable Advanced initiation, see the Domino.Doc and Lotus Workflow Integration Guide.

Domino.Doc configuration
After you configure Lotus Workflow, you can complete the integration of Domino.Doc and Lotus Workflow by configuring Domino.Doc.

First, install the Domino.Doc Desktop Enabler. Note that the Desktop Enabler runs only on a Windows32 platform. The Desktop Enabler lets users access documents in Domino.Doc from the appropriate authoring tools. For instance, you can access a WordPro file in Domino.Doc from Lotus WordPro. Integration like this uses the Domino.Doc API. To integrate Domino.Doc and Lotus Workflow, you must install the Domino.Doc Desktop Enabler on all Lotus Workflow servers. The Desktop Enabler makes the Domino.Doc API available to the Lotus Workflow servers.

Domino.Doc document types
In Domino.Doc, document types are used to identify documents. For instance, you can specify a document type of memo and apply that type to all documents fitting your description of memo. For each document type, there are attributes. For our memo document type, we might have attributes such as date, to, from, and so on. You can specify attributes for each document type. To help you get started, Domino.Doc ships with some predefined document types. We use the DWF Client Correspondence and DWF Expense Report types in our Lotus Workflow Samples, which you can download from the Sandbox.

When you integrate Lotus Workflow and Domino.Doc, you can use document types to specify workflow options. You can specify your workflow options in the Workflow Options section of the document type configuration associated with each document. You can access the document types configuration section by accessing the Library Administration in the Domino.Doc library. For our purposes, the most important information that you specify in the Workflow Options section is:
Event-based initiation
With event-based initiation, you specify the event that triggers a new Workflow process. Domino.Doc provides predefined events for you to choose from. Those events are applied to all documents of a certain document type. The Workflow process is automatic, but the initiation is not instantaneous. A background agent scheduled for the Workflow application begins the Workflow process.

Interactive initiation
Interactive initiation is triggered by the user (that is, the user determines when to initiate the workflow). To initiate the workflow, the user opens the Workflow tab of a document and selects a process from a list. The Workflow process begins immediately.

As the Domino.Doc Library Administrator, you can determine which processes are available for a specified document type. The following screen shows the settings available in the Workflow Options section.

Workflow Options



New Domino.Doc and Lotus Workflow integration
In Lotus Workflow 2.1.1 and earlier, you used predefined Automated Activities agents to integrate Lotus Workflow and Domino.Doc. You can continue using these agents to integrate Domino.Doc and Lotus Workflow 3.0 and later, but these agents caused performance issues for two reasons:
Lotus Workflow 3.0 and later introduced the Script Library Automated Activities to replace the Automated Activities agents, although Lotus Workflow 3.0 and later continue to support those agents. To support the Script Library Automated Activities, the code to integrate Lotus Workflow and Domino.Doc was rewritten. As a result, performance improved because the Agent Manager is not used to prepare, load, and run the agent. Also, the Workflow processes are passed as parameters to the automated activity object, so searching the database is no longer necessary. In addition, Domino caches the Script Libraries, so they run faster.

The new integration capabilities change the Lotus Workflow configuration. We explain those changes in the following sections.

The Lotus Workflow Architect new Custom Action interface
The Lotus Workflow 3.0 Architect introduced the concept of Custom Actions, which are extensions of Automated Activities. Custom Actions let you use any predefined action that has been determined externally, such as through the Notes client. Custom Actions provide you with a more flexible interface with which to integrate Domino.Doc and Lotus Workflow. From the Lotus Workflow Architect, you can:
Custom Actions are defined in your INI files by adding the parameter type=CustomActions. The following table lists the conventions and rules used to create a Custom Action INI file:

KeyRequiredValue / comment
[Info]
TypeyesThe value CustomActions indicates that this ini file contains CustomActions.
[Action 1]
InternalNameyesInternalActionName
DisplayNamenoValues include DisplayActionName or %GlossaryID or both. The default is InternalName. Use the following formats:
DisplayName=Name
DisplayName=%GlossaryID
DisplayName=Name#%GlossaryID
ObjectTypenoOnly AutomatedActivity is allowed. This is the default.
CategorynoCategoryName
DescriptionnoValues include ActionDescription or %GlossaryID or both. Use the same format use by DisplayName.
PlatformnoThe default is Notes.
TypeyesAgent/Script
ScriptLibraryNameif "Script"Name of the ScriptLibrary
ScriptLibraryClassif "Script"Name of the ScriptLibraryClass
AgentNameif "Agent"Name of the Agent
Parameter 1 ...
Param_1_InternalNameyesInternalParameterName
Param_1_DisplayNameyesValues include DisplayParameterName or %GlossaryID or both. Use the same format used for DisplayName.
Param_1_TypenoYou can specify String/Formula/Number/BO/FieldName/NotesDB/Keywords/Keywords+
Keywords+ allows user input. The default is String.
Param_1_Keywordsif keywordsYou can list internal keywords separated by a comma.
Param_1_DisplayKeywordsif keywordsYou can list display keywords or %GlossaryIDs or both. Use the same format used by DisplayName.
Separate keywords with a comma. For example:
Param_1_DisplayKeywords=yes,no
Param_1_DisplayKeywords=%5001,%5002
Param_1_DisplayKeywords=yes#%5001,no#%5002
Param_1_DefaultValuenoDefaultValue
Param_1_SaveTonoThe value is NotesField in this case. The default is the InternalName.
Param_1_DescriptionnoValues include ParameterDescription or %GlossaryID or both. Use the same format used by DisplayName.
Param_1_RequirednoValues are yes or no. The default is yes.
Param_1_InputHelpnoValues include OpenFileDialog, OpenDatabaseDialog, BOLibrary, and any value needed to provide input help like BOLibary, Browse button, list of BOs, and so on.
Param_1_InputHelpParamsnoThis parameter may contain specific parameters that depend on the InputHelp provided, such as type info for BOLibrary.
Param_1_MultiValuenoValues are yes or no. The default is no.

Here is an example of a Custom Actions ini file. We added the following code to the domdoc.ini:

[Info]
Type=CustomActions

;=== Action 1 ===============================================

[Action 1]
InternalName=DDCheckout
DisplayName=Domino.Doc - Checkout#%6656
Category=Domino.Doc
Description=Checks out a Domino.Doc document and attaches its file to a workflow document.#%6657
Type=Script
Platform=Notes
ScriptLibraryName=OS Domino.Doc Integration
ScriptLibraryClass=DominoDocIntegration

Param_1_InternalName=DDAccessProfile
Param_1_DisplayName=Access Profile#%6623
Param_1_Type=BO
Param_1_DefaultValue=
Param_1_SaveTo=DDProfileOS
Param_1_Description=AccessProfile used for accessing the Domino.Doc library. The Access Profile contains username and password information required for log-in into Domino.Doc.#%6624
Param_1_Required=yes
Param_1_InputHelp=
Param_1_InputHelpParams=DominoDocAccessProfile

The following screen shows the Automated Activity Properties box. This box reflects the changes made to the previous domdoc.ini file. For instance, the Action type field lists the value specified in the DisplayName parameter. Other parameters and their values are listed in the window below the Action type field.

Automated Activity Properties Box



Lotus Workflow action types for Domino.Doc integration
As we mentioned earlier, you can check in, check out, archive, and search for documents in Domino.Doc using Lotus Workflow. These actions are predefined, so you can set these actions in the Lotus Workflow Architect. The following sections describe how to set up each of these predefined actions.

Domino.Doc search
You can use Domino.Doc search to create Workflow processes that look for documents associated with a Workflow process. Before Lotus Workflow 3.0, you used the following fields on the OS DD Search Setup subform to configure a search:

Field nameValue RangeFunctionality
DDSearchExecuteyes, fixed valueThis field flags a search request. The DD Search Agent looks for the first document with DDSearchExecute=Yes.
DDSearchCriterionText. Must be a valid full text search criterion.This field contains the search query to be executed by the DD Search Agent.
Use a computed field to compute the query. The query is dependent on the computed field values, for example:
"FIELD Customer_Name = \"" + Customer_Name+"\""
DDSearchMaxDocsnumberThis field limits the number of search results. To return all search results, set the field to 0.

Lotus Workflow 3.0 still supports the existing fields DDSearchmaxDocs and DDSearchExecute; however, the fields must appear in the main document.

Configuring Domino.Doc search
Follow these steps to configure your search in the Lotus Workflow Architect. The search results form may be unable to support large number of search results, so it's a good idea to limit the maximum number of results. The maximum number of results varies, but use the search query to limit the number of search results rather than a parameter.

Domino.Doc archive
Another way in which you can integrate Domino.Doc and Lotus Workflow is to use Domino.Doc to archive Lotus Workflow processes. Domino.Doc's archive feature automatically archives Lotus Workflow processes in a Domino.Doc File Cabinet. From the Domino.Doc File Cabinet, you can recreate any document that was part of a Workflow process.

Configuring the Domino.Doc archive
Follow these steps to configure the Domino.Doc archive from the Lotus Workflow Architect. Domino.Doc Check-out
You can check out Domino.Doc documents from Lotus Workflow by configuring the check out activity in the Lotus Workflow Architect. If you have more than one Workflow application checking out the same documents, be careful to avoid conflicts that can occur when two or more Workflow processes attempt to check out the same document. If you use the same Access Profile for more than one Workflow process, then check outs occur for the same user account. The integration code issues an ID and adds it to the title of the checked out document. The ID locks the document, so only one Workflow process can check out the same document at any time.

Note: Do not attach more than one document to a Domino.Doc document.

To integrate Domino.Doc check out with Lotus Workflow, follow these steps:
Domino.Doc Check-in
Use the Lotus Workflow Architect to let your users check in Domino.Doc documents from Lotus Workflow. Follow these steps.
Replace matrix for migrating Lotus Workflow 2.1.1 applications
The following table summarizes the changes Lotus Workflow 2.1.1 to 3.x. It lists the Domino.Doc features that you can access from Lotus Workflow and the action type available in each release as well as from the Lotus Workflow Architect.

Domino.Doc Integration Feature
Action Type
2.1.1 Agent Automated ActivityLWF 3.x Script Library Automated Activity Architect special properties values
SearchDD SearchDomino.Doc - SearchN/A
ArchiveDD ArchiveDomino.Doc - ArchiveN/A
Check In as DraftDD Check In as DraftDomino.Doc - CheckinCheck-In status as : As Draft
Check Out Again = Yes
Check In as Draft and DetachDD Check In as Draft and DetachDomino.Doc - CheckinCheck-In status as : As Draft
Remove Attachment as : Yes
Check Out Again = No
Check In as VersionDD Check In as VersionDomino.Doc - CheckinCheck-In status as : As Version
Check Out Again = Yes
Check In as Version and DetachDD Check In as Version and DetachDomino.Doc - CheckinCheck-In status as : As Version
Remove Attachment as : Yes
Check Out Again = No
Check Out and DetachDD Check Out and DetachDomino.Doc - CheckoutN/A

Implementing the Domino.Doc New Document feature
The New Document feature lets a Lotus Workflow process create a new document in the Domino.Doc. The new document is based on the main document of the Workflow Binder and is stored in the Domino.Doc File Cabinet and Binder as specified in the Lotus Workflow Architect. You can determine whether or not the attachment from the current document is removed. Removing the attachment is a good idea, so you can avoid having attachments from Domino.Doc and Lotus Workflow that are out of synch. If you want the attachment, you can check out the document and specify that the attachment is returned to the Workflow document.

Because you are limited to having only one attachment in the Domino.Doc document, the New Document feature works only with the first attachment in the Workflow document. Any other attachments are ignored.

To implement this new feature, first update your domdoc.ini file located in the Architect directory with the new settings needed to create the Custom Action interface. To do this, follow these steps:
;=== Action 5 ===============================================

[Action 5]
InternalName=DDNewDocument
DisplayName=Domino.Doc - New Document
Category=Domino.Doc
Description=Creates a copy of Main Document in specified file-cabinet and binder in Domino.Doc.
Type=Script
Platform=Notes
ScriptLibraryName=OS Domino.Doc Integration
ScriptLibraryClass=DominoDocIntegration

Param_1_InternalName=DDAccessProfile
Param_1_DisplayName=Access Profile
Param_1_Type=BO
Param_1_DefaultValue=
Param_1_SaveTo=DDProfileOS
Param_1_Description=AccessProfile used for accessing the Domino.Doc library. The Access Profile contains username and

password information required for log-in into Domino.Doc.
Param_1_Required=yes
Param_1_InputHelp=
Param_1_InputHelpParams=DominoDocAccessProfile

Param_2_InternalName=DDFileCabinet
Param_2_DisplayName=File Cabinet
Param_2_Type=Formula
Param_2_Keywords=
Param_2_DisplayKeywords=
Param_2_DefaultValue=
Param_2_SaveTo=DDFileCabOS
Param_2_Description=Name of Domino.Doc File Cabinet into which the Workflow document will be created.
Param_2_Required=yes
Param_2_InputHelp=

Param_3_InternalName=DDBinder
Param_3_DisplayName=Binder
Param_3_Type=Formula
Param_3_Keywords=
Param_3_DisplayKeywords=
Param_3_DefaultValue=
Param_3_SaveTo=DDBinderOS
Param_3_Description=Name of the Binder into which the Workflow document will be created.
Param_3_Required=yes
Param_3_InputHelp=

Param_4_InternalName=DDDocID
Param_4_DisplayName=Document ID
Param_4_Type=FieldName
Param_4_Keywords=
Param_4_DisplayKeywords=
Param_4_DefaultValue=DDDocumentID
Param_4_SaveTo=DDDocIDOS
Param_4_Description=Field in Workflow document that will contain the ID of the Domino.Doc New Document.
Param_4_Required=yes
Param_4_InputHelp=
Param_4_Hide=yes

Param_5_InternalName=DDAttachment
Param_5_DisplayName=Attachment field
Param_5_Type=FieldName
Param_5_Keywords=
Param_5_DisplayKeywords=
Param_5_DefaultValue=Body
Param_5_SaveTo=DDAttachmentOS
Param_5_Description=Field in Workflow document where attachments are located.
Param_5_Required=yes
Param_5_InputHelp=
Param_5_Hide=

Param_6_InternalName=DDRemoveAttachment
Param_6_DisplayName=Remove Attachment from WF Document?
Param_6_Type=Keywords
Param_6_Keywords=yes,no
Param_6_DisplayKeywords=Remove attachment,DO NOT remove attachment
Param_6_DefaultValue=yes
Param_6_SaveTo=DDRemoveAttachment
Param_6_Description=Set flag to whether or not remove Attachment from Workflow document after creating the Domino.Doc document.

document.
Param_6_Required=yes
Param_6_InputHelp=

Param_7_InternalName=DDVersionOrDraft
Param_7_DisplayName=Check-in Status
Param_7_Type=Keywords
Param_7_Keywords=consversion,consdraft
Param_7_DisplayKeywords=Create and Check-in As version,Create and Check-in As draft
Param_7_DefaultValue=consversion
Param_7_SaveTo=DDVersionOrDraftOS
Param_7_Description=Create new document and Check-In as a Version or a draft.
Param_7_Required=yes
Param_7_InputHelp=

Param_8_InternalName=DDAction
Param_8_DisplayName=NewDoc
Param_8_Type=
Param_8_DefaultValue=NewDoc
Param_8_SaveTo=DDActionOS
Param_8_Hide=yes
Param_8_Description=This is just an internal Field and will be hidden...

Next, update your Lotus Workflow application template with the necessary code to create the document in Domino.Doc. Follow these steps to update your Lotus Workflow Application template/database. The code that you need is available in a sample database from the Sandbox.
Configuring the Domino.Doc New Document feature
Use the Lotus Workflow Architect to configure the New Document feature for Domino.Doc. Follow these steps.
Conclusion
As we've shown, integration between Lotus Workflow and Domino.Doc has become much easier using the Lotus Workflow Architect. Standard actions, like check in and check out, take little time to complete. If you want to implement the New Document feature, this article provides all the code and steps you need to update your existing Lotus Workflow applications. In addition, we also updated two Lotus Workflow sample processes, Web Publishing and Expense Report, with the new features that we discussed in this article. You can download the new samples from the LDD Sandbox.

We hope that this article has provided you with the information you need to begin or upgrade your Domino.Doc and Lotus Workflow integration.


ABOUT THE AUTHOR
Luciano Resende is a PCLP Developer, and has been an Advisory Software Engineer in the Knowledge Management Products Group at IBM Software Group for almost two years. He was relocated from Lotus Professional Services in Brazil, where he worked as a Senior Consultant for eCommerce and ERP Integration projects.