Click or drag to resize

Exporting documents from a case

Demonstrates
Example - Start Export Processing

This example creates a new export, configures it, and begins the export process.

Note Note
Native exports are the only type of export currently supported by the Integration Library.
C#
using Law.EdaIntegration;
using Law.EdaIntegration.Case;
using Law.EdaIntegration.Exports;

class Sample
{
    public static void Main()
    {
        // Initialize the environment
        EdaIntegration edaIntegration = EdaIntegration.ConnectToExplore();

        // Select the case where the new documents belong.
        string caseName = "My Case";
        Case edaCase = edaIntegration.Cases.OpenCaseByName(caseName);

        // Create an new export for the case.
        Export export = edaCase.Exports.Create("Export-001");

        // Set the properties of the export

        // Configure it to export all filtered documents
        export.Config.Scope = ExportScope.Filtered; 

        /* 
        // Alternatively you could export only documents that have been
        // tagged with one or more tags.
        export.Config.Scope = ExportScope.Tagged;
        export.Config.TagsToInclude = new List<Tag> { edaCase.Tags.ByName("Relevant"), edaCase.Tags.ByName("FurtherReview") };
        export.Config.TagsToExclude = new List<Tag> { edaCase.Tags.ByName("Privileged") }; 
        */

        export.Config.AlphaNumericNumbering = true;
        export.Config.NumberingSeed = "Exp-1A";
        export.Config.IncludeNativeFiles = true;
        export.Config.ExportTextToFile = false;
        export.Config.GeneratedLoadFileFormat = LoadFileFormat.None;
        edaCase.Exports.Update(export);

        // Start the export processing.
        edaCase.Exports.Start(export.Id);
    }
}
Example - Checking the Status of Export Processing

You can check the status of the export processing in several ways. One possible way to do this is to continuously check the state of the export itself. This example opens the export in question and continuously loops checking the status.

C#
using System;
using System.Threading;
using Law.EdaIntegration;
using Law.EdaIntegration.Case;
using Law.EdaIntegration.Exports;

class Sample
{
    public static void Main()
    {
        // Initialize the environment
        EdaIntegration edaIntegration = EdaIntegration.ConnectToExplore();

        // Open the case
        Case edaCase = edaIntegration.Cases.OpenCaseByName("My Case");

        bool check = true;
        while (check)
        {
            // Export processing may take some time to complete so choose a time interval 
            // appropriate to the number of documents being exported.
            Thread.Sleep(10000);

            // Refresh the export data
            Export export = edaCase.Exports.ByName("Export-001");

            // Check the status of the export
            switch (export.State)
            {
                case ExportState.ExceptionOccurred:
                    // Print out the exception info
                    Console.WriteLine("Exception occurred: {0}", export.Exception.ToString());
                    check = false;
                    break;
                case ExportState.Complete:
                    Console.WriteLine("Total Documents: {0}", export.TotalDocuments);
                    Console.WriteLine("Total Exported: {0}", export.NumExported);
                    Console.WriteLine("Error Count: {0}", export.NumErrors);
                    check = false;
                    break;
            }
        }
    }
}
Example - Retrieving Export Errors

This example shows how to view any errors that occurred during the export processing.

C#
using System;
using Law.EdaIntegration;
using Law.EdaIntegration.Case;
using Law.EdaIntegration.Exports;

class Sample
{
    public static void Main()
    {
        // Initialize the environment
        EdaIntegration edaIntegration = EdaIntegration.ConnectToExplore();

        // Get the export
        Case edaCase = edaIntegration.Cases.OpenCaseByName("My Case");
        Export export = edaCase.Exports.ByName("Export-001");

        // Display the errors on the console
        foreach (ExportError err in export.Errors.All())
        {
            Console.WriteLine("{0}:  {1}", err.DocumentId, err.Message);
        }
    }
}
Example - Retrieving Exported Documents

This example shows how to retrieve the documents and/or metadata that have been exported.

Additionally, this example demonstrates calling MarkAsReceived to indicate which documents have been successfully processed through the Integration Library. By default, ExportDocumentManager.All returns only those that have not been marked as received. Calling MarkAsReceived is optional but provides the benefit that should your processing halt for any reason then the next call to ExportDocumentManager.All will pick up where it left off with minimal overlap. If this is not a concern then eliminating the call to MarkAsReceived may reduce your overall processing time.

Note Note
When ExportDocumentManager.All is called it takes as snapshot of all the documents ids that are currently available for export. If this method is called while the export processing is still occurring then the list may not include all documents. Repeating the call after the export processing has completed will include the remaining documents.
C#
using System;
using System.Collections.Generic;
using Law.EdaIntegration;
using Law.EdaIntegration.Case;
using Law.EdaIntegration.Exports;

class Sample
{
    public static void Main()
    {
        // Initialize the environment
        EdaIntegration edaIntegration = EdaIntegration.ConnectToExplore();

        // Get the export
        Case edaCase = edaIntegration.Cases.OpenCaseByName("My Case");
        Export export = edaCase.Exports.ByName("Export-001");

        // Create a list to hold the ids of the documents that are received from the
        // export.  This list will ensure that if our processing is aborted for any
        // reason that we can pick up where we left off.
        List<int> docsReceived = new List<int>();

        // Set the number of document to process before we update their received state
        const int batchSize = 10;

        // Retrieve the list of documents that were exported
        ExportDocumentManager mgr = export.Documents;

        // Loop through each document and display the export number and file
        // name on the system console
        foreach (IExportDocument doc in mgr.All())
        {
            Console.WriteLine("{0}:  {1}", doc.ExportNumber, doc.FileName);

            // Accumulate the document ids so we can mark them as received
            docsReceived.Add(doc.Id);
            if (docsReceived.Count >= batchSize)
            {
                // Mark items as received 
                mgr.MarkAsReceived(docsReceived);

                // Clear the received list
                docsReceived.Clear();
            }
        }
    }
}
See Also