FileNet Open Client provides a fully-functional out-of-the-box (OOTB) ASP.NET HTML Step Processor (...\FnOpenClient\eProcess\StepProcs\ HTML\OOTB\FnStepProcessor.aspx is the top-level HTML Step Processor ASPX page) that you can use as is, or you can copy, deploy, and customize it according to your business requirements.
Customization can range from relatively simple changes that modify the "look and feel" of the OOTB HTML Step Processor to more complex changes that modify the layout and controls for specific business logic requirements, to even more extensive changes involving content integration, accessing different data sources, modifying access (for example, by hiding controls), making authentication changes, and so on. You can also, using the Open Client and FileNet Open Client ASPX pages, utilities, Data Providers, User Controls, plus the .NET Web and Server Controls and classes, create your own customized-from-scratch HTML Step Processor ASPX page and controls.
The following topics describe how to develop a custom HTML Step Processor for Open Client:
To customize and deploy an HTML Step Processor, use the following procedure:
In order to develop a custom HTML Step Processor, it is important to understand the basic HTML Step Processor page data flow. An FileNet Open Client Step Processor (such as the OOTB FnStepProcessor) is invoked by the Personal Workflow Manager (PWM). When an end user in the PWM selects either the "Inbox" user queue (a user involved in an Process workflow will typically receive new assignments in a workflow user Inbox) or a public "work" queue, the queue's contents are displayed in the PWM window. When the user selects a particular step assignment from the displayed queue contents, the appropriate Step Processor client application is launched in a browser popup window.
The following figure illustrates the basic page data flow for the OOTB HTML Step Processor.
As indicated in the figure, when the end user completes the step with any of the following actions: Complete, Save, Return, Move, or Cancel, the user is redirected back to the Personal Work Manager (PWM) queue content page. If the user elects to reassign the step assignment, the Step Reassignment application is launched. From the Step Reassignment page, the user can then either cancel (returning to the popup Step Processor application) or apply the reassignment, in which case the user is redirected back to the PWM queue.
The following table provides a summary description of the FileNet Open Client controls, resources, pages, and other files you will need to modify/use to customize the OOTB Step Processor, according to the type of customization and the example change to be made. For details, click on the link in the table.
Note No description can be all-inclusive. This table summarizes some, but not all, of the many ways that you can customize an Open Client Step Processor.
Customize |
Changes |
Files To Use |
Description |
---|---|---|---|
User Interface | Modify the basic "look and feel" of the user interface. | ASPX pages, User Process and Open Client Controls, other files as appropriate. | Modify the top-level ASPX page, its associated .aspx.vb code-behind file, and other files as needed, for the OOTB HTML Step Processor. |
Change the banner of the OOTB Step Processor. |
FnBannerUC.ascx |
Modify the FnBannerUC Open Client User Control. |
|
Change the colors of the OOTB Step Processor. |
FnStepProcessor.aspx.vb; appropriate User Controls |
Modify the OOTB HTML Step Processor ASPX code-behind file and the User control whose color you want to change. | |
Change the images in the OOTB Step Processor. |
FnStepProcessor.aspx.vb; appropriate image files, .gifs, etc. |
Modify the OOTB HTML Step Processor ASPX code-behind file and the image files you wish to use or change. | |
Modify the page layout or structure of the OOTB Step Processor. |
FnStepProcessor.aspx; FnStepProcessor.aspx.vb; appropriate User Controls |
Copy, deploy, and modify the OOTB HTML Step Processor ASPX page and its code-behind file; use the User controls you want to add, change, or delete (see next two items). | |
Add new User Controls. |
FnStepProcessor.aspx; FnStepProcessor.aspx.vb; appropriate User Controls |
Copy, deploy, and modify the OOTB HTML Step Processor ASPX page and its code-behind file; use the Process, Open Client, Factory, .NET or other controls controls you want to add. This may require customizing business logic in the new FnStepProcessor.aspx.vb and other files. | |
Hide existing User Controls. |
FnStepProcessor.aspx; FnStepProcessor.aspx.vb |
Copy, deploy, and modify the OOTB HTML Step Processor ASPX page and its code-behind file, removing (better than commenting out) the existing User controls you do not want. | |
Content Integration | Modify content integration of the FileNet P8 Image Manager/COM API Foundation objects or from other data sources. | FnStepProcessor.aspx; FnStepProcessor.aspx.vb; appropriate User Controls; Process and Open Client Data Providers |
Copy, deploy, and modify the OOTB HTML Step Processor ASPX page and its code-behind file; modify the User controls as needed; modify/use the Process Open Client and general Open Client Data Providers. You may wish to use FileNet P8 Image Manager eForms to facilitate HTML form content integration. |
Build From Scratch | Create customer-based framework integrating custom user interface, content, and Process. | FnStepProcessor.aspx; FnStepProcessor.aspx.vb; appropriate User Controls; Process and Open Client Data Providers; Web application server; other files | Either copy, deploy, and modify the OOTB HTML Step Processor ASPX page and its code-behind file or create your own. Create new User Controls using the Open Client Controls and the .NET Controls; modify/use the FileNet Open Client and general Open Client Data Providers or create your own (you may wish to use the Process public class Data Provider FneProcessSessionDP to handle Process authentication, logon and logoff (inherits FneProcessBaseDP). Requires interface to Web application server for authentication. |
JiGlue Issues | Customizing a Data Provider. | FnStepProcessor.aspx; FnStepProcessor.aspx.vb; FneProcessStepProcDP Data Provider | The JiGlue COM Bridge enables you to make VB.NET calls for Process APIs with the effect of native Java statements The FneProcessStepProcDP Data Provider provides the interface to JiGlue. If you customize a Data Provider, there are JiGlue-related issues you will need to take into account (see JiGlue Issues below). |
For simple customization of the FileNet Open Client OOTB HTML Step Processor user interface, such as changing the banner, changing colors, or images, you can either customize the existing OOTB HTML Step Processor ASPX page (FnStepProcessor.aspx), its code-behind file (FnStepProcessor.aspx.vb), and the appropriate User Controls according to which items in the Step Processor you wish to modify. For more complex customization of the user interface, you can copy, rename, deploy, and then modify the new ASPX pages, including restructuring and customizing the ASPX page layout.
The following topics provide guidelines on customizing the user interface:
For details and sample code for specific examples, see User Interface Customization: Changing the Basic "Look and Feel" below.
The following figure illustrates the relationship between the OOTB Step Processor ASPX Main Page (FnStepProcessor.aspx) and the UI User controls that provide the page's "look and feel". Descriptions of the UI User control modules are provided below the figure.
Note The public class FnStepProcessor implements the top level HTML Step Processor page; the class inherits System.Web.UI.Page.
As indicated in the figure, the UI Controls do not directly access the Process Open Client Step Processor Data Provider (and other Data Providers, as needed). Instead, the ASPX page retrieves the data from the Data Provider for the UI controls. (The Data Provider provides an abstraction layer between the ASPX page and the FileNet Web Services server; for additional information, see Process Open Client Architecture). If a change needs to be persisted, the ASPX page requests the UI control to provide an updated set of data, which the ASPX page uses to update the data to the Data Provider. This approach fulfills the intent of the model by decoupling the user interface from the data, thereby enhancing the developer's ability to reuse the UI controls when customizing.
For additional information about the UI Modules (User Controls) shown in this figure, see the next topic below, Open Client Step Processor User Controls.
The UI Modules shown in the figure above are described in the following table:
Notes
UI User Control Module |
User Control |
Description |
---|---|---|
General Information UI Module |
FnStepProcGeneralInfoUC.ascx |
Implements the Process HTML Step Processor General Information page User Control; inherits FnStepProcBaseUC; implements IFnStepUIModel. |
Fields UI Module |
FnStepProcDataFieldsUC.ascx |
Implements the Process HTML Step Processor Data Fields page User Control; inherits FnStepProcBaseUC; implements IFnStepUIModel. |
Workflow Groups UI Module |
FnStepProcWorkGroupsUC.ascx |
Implements the Process HTML Step Processor Workflow Groups page User Control; inherits FnStepProcBaseUC; implements IFnStepUIModel. |
Milestones UI Module |
FnStepProcMilestones.ascx |
Implements the Process HTML Step Processor Milestones page User Control; inherits FnStepProcBaseUC; implements IFnStepUIModel. |
Attachments UI Module |
FnStepProcAttachmentsUC.ascx |
Implements the Open Client attachments page User Control; inherits FnStepProcBaseUC; implements IFnStepUIModel. |
Folder View UI Module |
FnFolderViewUC.ascx |
Implements the Open Client attachments Folder View page User Control; inherits System.Web.UI.UserControl and FnBaseUC. |
List View UI Module | FnListViewUC.ascx | Implements the Open Client attachments List View page User Control; inherits System.Web.UI.UserControl and FnBaseUC. |
Banner UI Module |
FnBannerUC.ascx |
Provides the Open Client Banner User Control; inherits FnBaseUC and System.Web.UI.UserControl. |
Current Path UI Module | fnpathuc.ascx | Provides the Open Client Banner User Control; inherits FnBaseUC and System.Web.UI.UserControl. |
Instruction UI Module |
FnBannerUC.ascx |
Provides the Open Client Banner User Control and sets the Instruction UI Module; inherits FnBaseUC and System.Web.UI.UserControl. |
Toolbar UI Module | FnToolBarUC.ascx | Provides the Toolbar User Control; inherits FnBaseUC and System.Web.UI.UserControl. |
Tab Bar UI Module | FnTabBarUC.ascx | Provides the Tab bar User Control; inherits FnBaseUC and System.Web.UI.UserControl. |
Additional User Controls | FnStepProcBaseUC.ascx | Implements the base Open Client Step Processor User Control; inherits FnBaseUC. |
FnStepProcAttachmentEditorUC.ascx | Implements editing (e.g., finalize page) for the Open Client General Information page User Control (FnStepProcGeneralInfoUC.ascx); inherits FnStepProcBaseUC; implements IFnStepUIModel. | |
FnStepProcOtherAttachmentUC.ascx | Implements the Open Client User Control for each additional attachment page (such as, obtaining the current attachment value); inherits FnStepProcBaseUC; implements IFnStepUIModel. | |
FnStepProcArrayEditUC.ascx | Implements the Open Client Step Processor data field page User Control; inherits FnStepProcBaseUC; implements IFnStepUIModel. | |
FnPlugInUC.ascx | Generates HTML tags for the Java Plug-in; inherits System.Web.UI.UserControl. |
Basic customization of the OOTB HTML Step Processor involves making relatively straightforward changes to the user interface, such as:
These changes are primarily made in the ASPX page (FnStepProcessor.aspx) see Note, its code-behind file (FnStepProcessor.aspx.vb), and the relevant User Control. To make global changes, edit the Cascading Style Sheet, FnStyleSheet.css, in the FnOpenClient directory.
Note The public class FnStepProcessor implements the top level HTML Step Processor page; the class inherits System.Web.UI.Page.
The examples which follow illustrate these types of customization.
Note A number of these modules implement the IFnStepUIModel interface, which you can use for the OOTB modules, or for your own custom UI modules. The IFnStepUIModel interface is as follows:
Public Interface IFnStepProcUIModel
' --------------------------------------------------------------------------
' Sub SetData()
'
' Purpose: Set the data for UC model
' Parameters:
' ByVal strXML As String
' Throws:
' --------------------------------------------------------------------------
Sub SetData(ByVal aFnEpStepElement As Object) ' ----------------------------------------------------------------------------- ' Function GetData() ' ' Purpose: Get the serializable .NET class as output of the UC model ' Parameters: ' Returns: serializable .NET class ' Throws: ' --------------------------------------------------------------------------- Function GetData() As Object ' ----------------------------------------------------------------------------- ' Function IsModified() ' ' Purpose: Return the state of the user control ' Parameters: ' Returns: Boolean ' Throws: ' --------------------------------------------------------------------------- Function IsModified() As Boolean ' ----------------------------------------------------------------------------- ' Function GetId() ' ' Purpose: Get the User Control id ' Parameters: ' Returns: serializable .NET class ' Throws: ' ---------------------------------------------------------------------------- Function GetId() As Integer ' ------------------------------------------------------------------------------ ' Function SetVisible() ' ' Purpose: Get the User Control id ' Parameters: ' Returns: serializable .NET class ' Throws: ' ---------------------------------------------------------------------------- Sub SetVisible(ByVal bVisible As Boolean) End Interface ' *** Public Interface IFnStepProcUIModel ***
The banner of the OOTB Open Client Step Processor is specified by the following code in the FnStepProcessor.aspx.vb file:
Private Sub SetBannerBar()
aFnBannerUC.TitleBarText = GetLabel()
Dim aFnBannerDataUtil As New FnBannerDataUtil()
' Set the headline for the banner aFnBannerDataUtil.AddTopLinks("eProcess", m_aFnQueryString.LibraryName) aFnBannerUC.DataSource = aFnBannerDataUtil.LinkArrayList()
End Sub
To modify the banner, modify the code in the FnBannerUC.ascx User Control. For example, modify the following table cell code to change the Banner navigation link:
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td width="40%">
<img src="<%=m_aFnUIBlock.SpacerImage%>" width="10" height="1" border="0"><img src="<%=m_aFnUIBlock.LogoImage%>" width="112" height="49" alt="FileNet Logo" border="0">
</td>
<td>
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td height="31" width="1%">
</td>
<td align="right" width="99%">
<asp:datalist id="dlGlobalNavigation" runat="server" repeatdirection="horizontal" EnableViewState="False">
<ItemTemplate>
<asp:HyperLink id="HyperLink1" runat="server" NavigateUrl='<%# GetHRef(CType(Container.DataItem, FnBannerNavigationItem)) %>' target="<%# (CType(Container.DataItem, FnBannerNavigationItem).Target) %>" Enabled='<%# (CType(Container.DataItem, FnBannerNavigationItem).IsEnabled) %>'>
<%# (CType(Container.DataItem, FnBannerNavigationItem).Label) %>
</asp:HyperLink>
|
</ItemTemplate>
</asp:datalist>
</td>
</tr>
You can change the colors of the OOTB Step Processor by modifying the appropriate User Control, depending on which item's color you want to change. For example, to change the banner's background color, modify the tag argument bgcolor in the FnBannerUC.ascx User Control file:
<tr>
<td class="BaseDarkColor" valign="top">
<table cellSpacing="0" cellPadding="0" width="100%" height="100%" border="0" class="BaseDarkColor">
<tr height="1%" valign="top">
<td bgcolor="#FFFFFF"><img src="<%=m_aFnUIBlock.TabCornerLeftImage%>" border="0"></td>
</tr> ...
Change the image of an item in the OOTB Step Processor (for example, to change a banner image, an icon image, a logo, etc.) by using your own image in its place as referenced by that User Control. For example, to modify the image used for the banner, modify the following table cell in the FnBannerUC.ascx User Control file, specifying the image you want to use as the src= value:
<td class="BaseDarkColor" align="right" valign="top">
<asp:datalist id="dlMainTabs" runat="server" repeatdirection="horizontal" EnableViewState="False">
<ItemTemplate>
<asp:HyperLink class="tasksNav" id="TabRef" runat="server" NavigateUrl='<%# GetHRef(CType(Container.DataItem, FnBannerNavigationItem)) %>' Enabled='<%# (CType(Container.DataItem, FnBannerNavigationItem).IsEnabled) %>'>
<asp:Image id="Image1" src='<%# (CType(Container.DataItem, FnBannerNavigationItem).ImageURL) %>' runat="server" border="0" align="absmiddle" />
<asp:Label id="Label1" runat="server" valign="top">
<%# (CType(Container.DataItem, FnBannerNavigationItem).Label) %>
</asp:Label>
<img src="<%=m_aFnUIBlock.SpacerImage%>" width="10" height="1" border="0">
</asp:HyperLink>
</ItemTemplate>
</asp:datalist>
</td>
More complex customization of the OOTB HTML Step Processor user interface involves making changes to the basic layout and structure of the ASPX page, adding new User Controls, and hiding existing User Controls. These topics are described in the following subsections:
These changes are primarily made in the ASPX page (FnStepProcessor.aspx), its code-behind file (FnStepProcessor.aspx.vb), and the appropriate User Control. The examples which follow illustrate these types of customization.
If you need to customize the layout of the OOTB HTML Step Processor, the best approach is to copy and deploy the OOTB Step Processor, then modify the ASPX page layout and structure, its code-behind file, and the appropriate User Controls.
For example, restructuring the page by placing the Toolbar above the Banner, as illustrated by the HTML modified in the following example FnStepProcessor.aspx page code fragment:
<form id="Main" enctype="multipart/form-data" method="post" runat="server">
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td>
<table cellSpacing="0" cellPadding="4" width="100%" border="0">
<tr vAlign="top">
<td id="ToolBarPane" noWrap align="left" width="*" runat="server" NAME="ToolBarPane" Visible="false
</td>
</tr>
</table>
</td>
</tr> <tr valign="top">
<td>
<OpenClient:FnBannerUC Id="aFnBannerUC" runat="server" NAME="aFnBannerUC" />
</td>
</tr>
To add a new Step Processor User Control, you will need to create the new User Control (for example, using Visual Studio), then modify your custom ASPX page (copied from FnStepProcessor.aspx and deployed) and its custom code-behind file (modified from FnStepProcessor.aspx.vb).
Note When creating a User Control, it is recommended that you transfer XML data.
Guidelines on adding a new User Control (for example, for a "Special Attachments" control) are as follows:
FnStepProcSpecialAttachmentsUC.ascx
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="FnStepProcSpecialAttachmentsUC.ascx.vb" Inherits="FnOpenClient.FnStepProcAttachmentsUC" %>
<!--
' ------------------------------------------------------------
' FnStepProcAttachmentsUC.aspx
' ------------------------------------------------------------
' VCS INFO:
'
' $Revision: 1.4 $
' $Date: 20 Feb 2004 16:23:30 $
' $Workfile: oc_dev_custom_html_step_processor.htm $
' ------------------------------------------------------------
'
-->
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td id="SpecialAttachmentsTab" runat="server">
</td>
</tr>
</table>FnStepProcSpecialAttachmentsUC.ascx.vb
Define the class, SetData, etc. for this User Control. Some of these are indicated by the following code fragments:
Public MustInherit Class FnStepProcSpecialAttachmentsUC
'Inherits System.Web.UI.UserControl
Inherits FnStepProcBaseUC
Implements IFnStepProcUIModelProtected WithEvents AttachmentsTab As System.Web.UI.HtmlControls.HtmlTableCell Private m_colParameters As New FnEpParameterList() Private m_colModifiedParameters As New FnEpParameterList()where you set the data for XML strings, and so on:
' ----------------------------------------------------------------------------[-
' Sub SetData()
'
' Purpose: Set the data for FnStepProcSpecialAttachmentsUC model
' Parameters:
' ByVal strXML As String
' Throws:
' ----------------------------------------------------------------------------]-
Public Sub SetData(ByVal aFnEpStepElement As Object) Implements IFnStepProcUIModel.SetData
m_colParameters = aFnEpStepElement.Parameters
End Sub
Private m_aFnStepProcGeneralInfoUC As FnStepProcGeneralInfoUC
Private m_aFnStepProcAttachmentsUC As FnStepProcAttachmentsUC Private m_aFnStepProcSpecialAttachmentsUC As FnStepProcSpecialAttachmentsUC
Private m_aFnStepProcDataFieldsUC As FnStepProcDataFieldsUC
Private m_aFnStepProcWorkGroupsUC As FnStepProcWorkGroupsUC
Private m_aFnStepProcMilestonesUC As FnStepProcMilestonesUC
Private m_nTabId As Integer = FnStepProcBaseUC.TAB_GENERALINFO_ID
Private m_bRestoredState As Boolean = False
Private m_aFnPageStateMgr As FnPageStateManager ...
Private Sub SavePageData()
If m_currentTab Is Nothing Then
Return
End If
Dim nId As Integer = m_currentTab.GetId If nId = FnStepProcBaseUC.TAB_GENERALINFO_ID Then SaveGeneralInfo() ElseIf nId = FnStepProcBaseUC.TAB_ATTACHMENTS_ID Then SaveAttachments() ElseIf nId = FnStepProcBaseUC.TAB_SPECIALATTACHMENTS_ID Then SaveAttachments() ElseIf nId = FnStepProcBaseUC.TAB_DATAFIELDS_ID Then SaveDataFields() ElseIf nId = FnStepProcBaseUC.TAB_WORKGROUPS_ID Then SaveWorkGroups() End If m_currentTab.SetVisible(False) End Sub ... 'Set the new Special Attachments tab in the main tab bar aTabBarDataUtil.AddItem("Attachments", m_rm.GetResourceString("Special Attachments"), FnStepProcBaseUC.TAB_SPECIALATTACHMENTS_ID) ...
and so on.
To hide an existing Step Processor User Control, you will need to either delete (preferred) or comment out the control in your custom ASPX page (copied from FnStepProcessor.aspx and deployed) and its custom code-behind file (modified from FnStepProcessor.aspx.vb). For example, to hide the Tab bar control:
<!--tr>
<td>
<table cellSpacing="0" cellPadding="4" width="100%" border="0">
<tr vAlign="top">
<td id="TabBarPane" align="left" width="*" runat="server" NAME="TabBarPane" Visible="false">
</td>
</tr>
</table>
</td>
</tr-->
'Protected WithEvents TabBarPane As System.Web.UI.HtmlControls.HtmlTableCell ... 'Private m_aTabBar As FnTabBarUC ...
'Private Const CURRENT_TAB_ID As String = "CurrentTabID"
'Private Const EP_SP_PAGEKEY As String = "EP_StepProcessorPageKey"
'Private Const EP_SP_TABIDKEY As String = "EP_StepProcessorTabIdKey" ... 'Private m_nTabId As Integer = FnStepProcBaseUC.TAB_GENERALINFO_ID ...
and so on.
Customizing content integration involves modifying how you use the Step Processor Data Provider, for example to provide more dynamic content, or to integrate content from other data sources. To customize content, you will need to copy, deploy, and modify the OOTB HTML Step Processor ASPX page and its code-behind file and modify the FileNet Open Client and general Open Client Data Providers as needed.
Note You may also wish to use FileNet P8 Image Manager eForms to facilitate HTML form content integration. For details, see the FileNet P8 Image Manager eForms documentation.
Building a Step Processor from scratch involves creating custom ASPX pages and User Controls. When building a new Step Processor from scratch, keep the following guidelines in mind:
Note For general guidelines on creating/modifying ASPX pages, see Developing ASPX Pages for Open Client, elsewhere in the Open Client Developer's Guide.
The JiGlue COM Bridge provides the ability to make VB.NET calls to the Java API with the effect of native Java statements for most Win32 programming tasks. For FileNet Open Client, JiGlue provides the COM Bridge between the Data Providers and Process services. There are a number of JiGlue-related and COM-related issues to keep in mind when creating your ASPX pages and User Controls, as follows:
The following JiGlue-related issues and guidelines should be kept in mind when developing an FileNet Open Client Processor:
JiglueObject1.setABC(JiglueObject2.getXYZ())
will fail in some cases. If failure does occur, the symptoms and exceptions can be obscure.
Imports Jiglue Public Class FnJiglueSample Protected m_aJiglue As New JiglueUtil() Public Function Logon() As Boolean ... 'Use JiGlue to create a VWSession object and logon Dim aVWSession As Object aVWSession = m_aJiglue.newinstance("filenet.vw.api.VWSession") SetVWSession(aVWSession) aVWSession.logon(strUserName,strPassWord,strRouterURL) ... End Function ... End Class
where strRouterURL is the URL of the router for the FileNet Web Services server.
Dim integerArray(2)
integerArray(0)=10
integerArray(1)=20
integerArray(2)=30wob.setFieldValue "integerArrayField", integerArray, false
dataFields = wob.getDataFields(127,1)
wob.setDataFields dataFields, falseHowever, if you change the array to 4-byte integers as follows, the call to setDataFields succeeds:
Dim integerArray(2)
integerArray(0)=CLng(10)
integerArray(1)=CLng(20)
integerArray(2)=CLng(30)wob.setFieldValue "integerArrayField", integerArray, false
dataFields = wob.getDataFields(127,1)
wob.setDataFields dataFields, false
Tip Alternatively, you may wish to use the VB.NET Convert.ToInt32 Method (Int16) method, which converts the value of the specified 16-bit signed integer to an equivalent 32-bit signed integer.
For additional information on JiGlue (including guidelines and the JiGlue COM Bridge conversions between COM data types and Java data types), see the Help for Process Development document.
The following COM-related issues and guidelines should be kept in mind when developing an FileNet Open Client Processor:
oGeneric=oLib.GetObject(...) oDoc=CType(oGneeric,IDMObjects.IFnDocumentDual)