Reza Savadkouhi

VB.net Wrapper for OpenText DM (ex-Hummingbird): Empowering Document Management Solutions

When it comes to managing documents, OpenText DM (formerly known as Hummingbird DM) is a widely used platform that allows users to store, organize, and retrieve digital files in a centralized manner. However, there are times when specific client applications or features are required, which means that seamless integration with the DM server is necessary. In such scenarios, the Wrapper Library for OpenText DM can be used to bridge the gap between client applications and the DM server, enabling a wide range of document management solutions.

OpenText DM provides its own API that can be used to develop customized client applications or integrate with third-party systems. However, there are cases where business limitations may restrict the use of the API by technical personnel. This is where the Wrapper Library for OpenText DM comes in handy as it provides an alternative way to access OpenText DM’s functionalities, allowing developers to create custom client applications or specialized features without needing to use the API directly.

Overview of OpenText DM

OpenText DM is a feature-rich and comprehensive platform that is designed to manage large repositories of digital assets. This platform was formerly known as Hummingbird Document Management System. It is an all-in-one solution that allows businesses to effortlessly organize, search, share, and control access to their digital assets. From documents and images to videos and other files, OpenText DM can handle everything with ease. It is suitable for businesses of all sizes, empowering them to keep their digital assets organized and readily accessible.

Currently, OpenText offers an enterprise solution for Enterprise Information Management (EIM). EIM is a comprehensive approach to managing an organization’s information, from creation and storage to distribution and archival. It involves integrating all types of information systems and data sources, including structured and unstructured data, to provide a complete view of the organization’s information assets.

OpenText’s EIM solution provides a range of capabilities, including content management, business process management, customer experience management, and analytics. It helps organizations to gain insights from their data, improve their business processes, and deliver better customer experiences.

To learn more about OpenText’s EIM solution, you can visit their website at www.opentext.com.

Purpose and Functionality of the Wrapper Library

Designed in VB.net, the Wrapper Library for OpenText DM serves as a middleware between client applications and the OpenText DM server. It provides a standardized interface for accessing and manipulating documents, profiles, and libraries stored on the server. This wrapper library offers several key functionalities:

  • Centralized Access: The wrapper library simplifies access to all libraries, document trees, document profiles, and contents on the OpenText DM server.
  • Advanced Search Capabilities: It enables advanced search operations across profile fields and the content of documents, facilitating comprehensive document retrieval.
  • Security and Authorization: The wrapper library adheres to OpenText DM’s security protocols, ensuring that only authorized users can access and manipulate documents based on their assigned roles and permissions.
' *************************
' Class Name: HBSearch
' Developed by: Reza Savadkouhi
' Editor(s): Reza Savadkouhi
' Created: --- Filtered ---
' Last Released Version: 4.0
' Last Update: --- Filtered ---
' ---- Description:
' Hummingbird DM Search. vb.net
' ---- Versions:
' 1.0__--- Filtered ---
' --- Filtered ---
' 4.0__--- Filtered ---
' *************************

Imports Microsoft.VisualBasic
Imports System.Reflection

Public Class HBSearch
    ' ####
    ' --- Constants
    Const AVAILABLE_SEARCH_FIELDS_COUNT = 13 ' Hummingbird API Search Tools maximum available return fields

    ' ####
    ' --- Variables
    Private vValidate As Boolean
    Private vLibrary As HBLibrary
    Private vName As String
    Private vSearchType As HBSearchType
    Private vSearchLibrary As String
    Private vProfile As HBProfile
    Private vCriteria As String ' For content search
    Private vCriteriaFields As List(Of HBProfileField) ' For profile search
    Private vReturnFields As List(Of HBProfileField)
    'Private vResult As List(Of HBProfile)
    Private vResult As List(Of HBDocument)
    Private vRowsFoundCount As Integer
    Private vResultTable As DataTable
    Private vFolderContent As PCDPropertyLists

    ' ####
    ' --- Methods
    Sub New()
        ResetAll()
    End Sub

    Private Sub ResetAll()
        vValidate = False
        vLibrary = New HBLibrary
        vName = ""
        vSearchType = HBSearchType.ST_UNKNOWN
        vSearchLibrary = ""
        vProfile = New HBProfile
        vCriteria = ""
        vCriteriaFields = New List(Of HBProfileField)
        vReturnFields = New List(Of HBProfileField)
        'vResult = New List(Of HBProfile)
        vResult = New List(Of HBDocument)
        vResultTable = New DataTable
        vResultTable.Columns.Add(HBConstant.HBPFDOCNAME)
        vResultTable.Columns.Add(HBConstant.HBPFDOCNUM)
        vResultTable.Columns.Add(HBConstant.HBPFFORMID)
        vFolderContent = New PCDPropertyLists
    End Sub

    Public Function SetLibrary(ByVal inLibrary As HBLibrary) As Boolean
        Dim FResult As Boolean = False
        SetLibrary = FResult
        vValidate = False

        Try
            vLibrary = inLibrary

            FResult = True
        Catch ex As Exception
        Finally
            SetLibrary = FResult
        End Try
    End Function

    Public Function AddCriteriaField(ByVal inFieldName As String, ByVal inFieldValue As String) As Boolean
        Dim FResult As Boolean = False
        AddCriteriaField = FResult
        vValidate = False

        Try
			--- Filtered ---
        Catch ex As Exception
        Finally
            AddCriteriaField = FResult
        End Try
    End Function

	--- Filtered ---

    Public Function ExecuteSearch(Optional ByVal inSearchType As HBSearchType = HBSearchType.ST_UNKNOWN, Optional ByVal inCriteria As String = "") As Boolean ', Optional ByVal inLibrary As String = "") As Boolean
        Dim FResult As Boolean = False
        ExecuteSearch = FResult
        vValidate = False

        Try
            If inSearchType <> HBSearchType.ST_UNKNOWN Then vSearchType = inSearchType

            Select Case vSearchType
                Case HBSearchType.ST_PROFILE ' only profile
                    FResult = ExecuteProfileSearch(vLibrary.Library)
                Case HBSearchType.ST_CONTENT ' only content
                    FResult = ExecuteContentSearch(vLibrary.Library, inCriteria)
                Case HBSearchType.ST_EASY_PROFILE ' full text profile
                    FResult = ExecuteEasyProfileSearch(vLibrary.Library, inCriteria)
                Case HBSearchType.ST_EASY_BOTH ' full text content and profile
                    FResult = ExecuteEasyContentProfileSearch(vLibrary.Library, inCriteria)
                Case HBSearchType.ST_BOTH ' content and profile
                    FResult = ExecuteContentProfileSearch(vLibrary.Library, inCriteria)
                Case Else
                    FResult = False
            End Select
        Catch ex As Exception
        Finally
            ExecuteSearch = FResult
            vValidate = FResult
        End Try
    End Function

	--- Filtered ---

    ' ####
    ' --- Utilities
    Public Function utlGetFolderContent_Set(ByVal inFolderDocNumber As String) As Boolean
        Dim FResult As Boolean = False
        utlGetFolderContent_Set = FResult

        Try
            vFolderContent = Nothing
            vFolderContent = New PCDPropertyLists
            With vFolderContent
                .SetDST(vLibrary.DST)
                .SetObjectType("ContentsCollection")
                .SetProperty("PARENT", CStr(inFolderDocNumber))
                .SetProperty("PARENT_VERSION", "0")
                .Execute()
                .BeginIter()
            End With

            FResult = True
        Catch ex As Exception
        Finally
            utlGetFolderContent_Set = FResult
        End Try
    End Function

	--- Filtered ---

    Public ReadOnly Property RowsFoundCount() As Integer
        Get
            RowsFoundCount = vRowsFoundCount
        End Get
    End Property

    Public ReadOnly Property ResultTable() As DataTable
        Get
            ResultTable = vResultTable
        End Get
    End Property
End Class
See More
Real-World Applications of the Wrapper Library

The Wrapper Library for OpenText DM has been instrumental in various document management projects, delivering enhanced functionality and customized solutions:

  • Comprehensive Search Platform: One noteworthy project involved creating a comprehensive search platform similar to an internal Google search for a major holding company. This platform consolidated documents from various libraries spread across different companies, making it possible to search and retrieve information efficiently across the entire organization.
  • Customized Client Applications: The wrapper library has also been leveraged to develop customized client applications for various document management tasks, tailored to specific client requirements.
Source Code

The source of the Wrapper Library is available upon request for presentation purposes. Please contact me for more information.

Leave a Comment

Your email address will not be published. Required fields are marked *