asked on May 19, 2021

Good day,

I get the following error from the Custom Activity template code:

System.InvalidCastException: Unable to cast object of type 'Laserfiche.RepositoryAccess.RepositoryRegistration' to type 'LFSO104Lib.ILFDatabase'.

 

I changed my wrapper from:

using (ConnectionWrapper wrapper = executionContext.OpenConnectionRA92())

to

using (ConnectionWrapper wrapper = executionContext.OpenConnectionRA104())

on the template code to reference my updated libraries for 10.4:

 

I am using the cast exactly as it is in the Building Custom Activities in Workflow C#(April 2018)

The rest of the code relies on this cast..

I am using Workflow 10.4.2.121 and SDK 10.4:

 

I could not find ILFDatabase in my current documentation.

using Laserfiche.Custom.Activities;
using Laserfiche.Custom.Activities.Design;
using Laserfiche.RepositoryAccess;
using Laserfiche.Workflow.Activities;
using Laserfiche.Workflow.ComponentModel;
using LFSO104Lib;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Workflow.ComponentModel;
using Laserfiche.DocumentServices;
using Laserfiche.Connection;

namespace RAExporter
{
    public class RAExporterActivity : CustomSingleEntryActivity
    {
        public const string ExtensionFileName = "ExtensionFile";

        /// <summary>The name of the Entry Path property.</summary>
        public const string EntryPathName = "EntryPath";

        private string pathInput = "";
        private string extensionInput = "";

        public string PathInput
        {
            get { return this.pathInput; }
            set { this.pathInput = value; }
        }

        public string ExtensionInput
        {
            get { return this.extensionInput; }
            set { this.extensionInput = value; }
        }

        /// <summary>
        /// Called when the activity is run by the workflow server. Implement the logic of your activity in this method. 
        /// Access methods for setting tokens, getting token values, and other functions from the base class or the execution 
        /// context parameter. 
        /// </summary>
        protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            using (ConnectionWrapper wrapper = executionContext.OpenConnectionRA104())
            {
                Session session = (Session)wrapper.Connection;
                // Note: You must add the Laserfiche.RepositoryAccess reference to this project for this to work.
                try
                {
                    ILFDatabase database = (ILFDatabase)wrapper.Database;

                    LaserficheEntryInfo entryInfo = this.GetEntryInformation(executionContext);
                    ILFEntry entry = (ILFEntry)database.GetEntryByID(entryInfo.Id);
                    //entry.Name = this.PathInput;

                    //database.GetAndLockEntryByID(uInput);
                    ILFDocument document = (ILFDocument)entry;

                    DocumentInfo docInfo = Document.GetDocumentInfo(entry.ID, session);

                    string expoExtension = this.ResolveTokensInText(executionContext, this.ExtensionInput);
                    string expoPath = this.ResolveTokensInText(executionContext, this.PathInput);

                    if (expoPath != "")
                    {
                        expoPath += docInfo.Name;

                        if (expoExtension == "tiff")
                        {

                            try
                            {
                                //DocumentInfo mydoc = Document.GetDocumentInfo(GetEntryInformation(executionContext).Id, session);
                                DocumentExporter exporter = new DocumentExporter();
                                exporter.PageFormat = DocumentPageFormat.Tiff;
                                exporter.ExportElecDoc(docInfo, (expoPath + ".tiff"));
                            }
                            catch (Exception ex)
                            {
                                this.TrackError(ex);
                            }

                        }
                        else if (expoExtension == "pdf")
                        {
                            try
                            {
                                DocumentExporter exporter = new DocumentExporter();
                                PageSet docPgs = docInfo.AllPages;
                                exporter.ExportPdf(docInfo, docPgs, PdfExportOptions.IncludeText, (expoPath + ".pdf"));
                            }
                            catch (Exception ex)
                            {
                                this.TrackError(ex);
                            }

                        }
                    }

                }
                catch (Exception ex)
                {
                    this.TrackError(ex);
                    return ActivityExecutionStatus.Closed;
                }
            }

            return base.Execute(executionContext);
        }


    }
}

I am simply trying to create a custom workflow for exporting an entry to a chosen windows directory with a selected file extension. angel

0 0