Running a Data Mapping Operation for PDF/VT File (to Content Set)

Problem

You want to run a data mapping operation to produce a Content Set using only a PDF/VT file as input.

Solution

The solution is to make a series of requests using the following URIs and method types to submit, monitor progress and ultimately retrieve the result of the data mapping operation. There is also the option of cancelling an operation during processing if required. These requests can be submitted via the Data Mapping REST service:

Process Data Mapping (PDF/VT to Content Set) /rest/serverengine/workflow/datamining/pdfvtcs/{dataFileId} POST
Get Progress of Operation /rest/serverengine/workflow/datamining/getProgress/{operationId} GET
Get Result of Operation /rest/serverengine/workflow/datamining/getResult/{operationId} POST
Cancel an Operation /rest/serverengine/workflow/datamining/cancel/{operationId} POST

Example

HTML5

dm-process-pdfvt-cse.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Process Data Mapping (PDF/VT to Content Set) Example</title>
        <script src="../../common/lib/js/jquery-3.4.1.min.js"></script>
        <script src="../../common/js/common.js"></script>
        <script src="js/dm-process-pdfvt-cse.js"></script>
        <link rel="stylesheet" href="../../common/css/styles.css">
    </head>
    <body>
        <h2>Data Mapping Service - Process Data Mapping (PDF/VT to Content Set) Example</h2>
        <form>
            <fieldset>
                <legend>Inputs</legend>
                <div>
                    <label for="datafile">Data File ID/Name:</label>
                    <input id="datafile" type="text" placeholder="1234 or Filename" required>
                </div>
            </fieldset>
            <fieldset>
                <legend>Progress &amp; Actions</legend>
                <div>
                    <progress value="0" max="100"></progress>
                </div>
                <div>
                    <input id="cancel" type="button" value="Cancel" disabled>
                    <input id="submit" type="submit" value="Submit">
                </div>
            </fieldset>
        </form>
    </body>
</html>

JavaScript/jQuery

dm-process-pdfvt-cse.js

/* Data Mapping Service - Process Data Mapping (PDF/VT to Content Set) Example */
(function ($, c) {
    "use strict";
    $(function () {

        c.setupExample();

        var $submitButton = $("#submit"),
            $cancelButton = $("#cancel"),
            $progressBar = $("progress"),
            operationId = null;

        $cancelButton.on("click", function () {
            if (operationId !== null) {

                /* Cancel an Operation */
                $.ajax({
                    type: "POST",
                    url:  "/rest/serverengine/workflow/datamining/cancel/" + operationId
                })
                    .done(function (response) {
                        c.displayInfo("Operation Cancelled!");
                        operationId = null;
                        setTimeout(function () {
                            $progressBar.attr("value", 0);
                            $submitButton.prop("disabled", false);
                            $cancelButton.prop("disabled", true);
                        }, 100);
                    })
                    .fail(c.displayDefaultFailure);
            }
        });

        $("form").on("submit", function (event) {

            event.preventDefault();
            if (!c.checkSessionValid()) return;

            var dataFileId = $("#datafile").val();

            var getFinalResult = function () {

                /* Get Result of Operation */
                $.ajax({
                    type: "POST",
                    url:  "/rest/serverengine/workflow/datamining/getResult/" + operationId
                })
                    .done(function (response, status, request) {
                        c.displayHeading("Operation Result");
                        c.displaySubResult("Content Set ID", response);
                    })
                    .fail(c.displayDefaultFailure);
            };

            /* Process Data Mapping (PDF/VT to Content Set) */
            $.ajax({
                type: "POST",
                url:  "/rest/serverengine/workflow/datamining/pdfvtcs/" + dataFileId
            })
                .done(function (response, status, request) {

                    var progress = null;
                    operationId = request.getResponseHeader("operationId");

                    $submitButton.prop("disabled", true);
                    $cancelButton.prop("disabled", false);

                    c.displayStatus("Data Mapping Operation Successfully Submitted");
                    c.displayResult("Operation ID", operationId);

                    var getProgress = function () {
                        if (operationId !== null) {

                            /* Get Progress of Operation */
                            $.ajax({
                                type:  "GET",
                                cache: false,
                                url:   "/rest/serverengine/workflow/datamining/getProgress/" + operationId
                            })
                                .done(function (response, status, request) {

                                    if (response !== "done") {
                                        if (response !== progress) {
                                            progress = response;
                                            $progressBar.attr("value", progress);
                                        }
                                        setTimeout(getProgress, 1000);
                                    } else {
                                        $progressBar.attr("value", (progress = 100));
                                        c.displayInfo("Operation Completed");
                                        getFinalResult();
                                        operationId = null;
                                        setTimeout(function () {
                                            $progressBar.attr("value", 0);
                                            $submitButton.prop("disabled", false);
                                            $cancelButton.prop("disabled", true);
                                        }, 100);
                                    }
                                })
                                .fail(c.displayDefaultFailure);
                        }
                    };
                    getProgress();
                })
                .fail(c.displayDefaultFailure);
        });
    });
}(jQuery, Common));

Screenshot & Output

Usage

To run the example simply enter the Managed File ID or Name for your PDF/VT file (previously uploaded to the file store) into the appropriate text field, and then select the Submit button to start the data mapping operation.

Once the operation has started processing, the Operation ID will be displayed in the Results area and the Cancel button will become enabled, giving you the option to cancel the running operation.

The progress of the operation will be displayed in the progress bar, and once the data mapping operation has completed, the ID of the Content Set created will be returned and displayed to the Results area.

Further Reading

See the Data Mapping Service page of the REST API Reference section for further detail.