Kofax Export Connector - получить значение из IndexField - PullRequest
0 голосов
/ 29 октября 2018

Я создал отображение для моего Kofax Export Connector. Этот соединитель взаимодействует с внешним приложением с помощью веб-служб.

Я хочу связать значения полей индекса с идентификаторами полей внешнего приложения. В настоящее время у меня есть словарь, содержащий идентификатор внешнего приложения и идентификатор поля индекса.

Dictionary<double, double?> // external fieldID <-> indexfieldID

Ключ обнуляется, поскольку поле может быть не назначено. Вместо передачи indexfieldID во внешнее приложение я хочу передать значение этого indexfield.

В настоящее время у меня есть это

releaseSetupData.CustomProperties.Add("MetaFieldID", "IndexFieldID");

и желаемый результат будет

releaseSetupData.CustomProperties.Add("MetaFieldID", "IndexFieldValue");

Как получить значение поля индекса? Само по себе индексное поле не имеет свойства «value», и пользователь Kofax может настроить пользовательское поле с пользовательским dataType. Так как же будет выглядеть значение?

Я не получил его из Справочного руководства API библиотеки типов экспорта Kofax Capture 1017 *

1 Ответ

0 голосов
/ 29 октября 2018

Вообще говоря, Kofax организует любые виды отображаемых данных как так называемые Links. Тем не менее, он не заботится о том, чтобы составлять карту самостоятельно, это наша работа (по некоторым причинам). В вашем распоряжении два разных объекта:

  1. Ваш скрипт установки будет содержать ссылку на ReleaseSetupData объект, обычно называемый SetupData.
  2. Ваш скрипт выпуска имеет другую ссылку на объект ReleaseData, а именно DocumentData.

Теперь все ссылки, установленные во время установки, станут доступны во время выпуска. Указанные ссылки могут содержать данные различного типа, например поля индекса, поля пакета, значения Kofax или пользовательские свойства. Теперь предположим, что у вас есть индексное поле «FirstName» в классе документа, и вы хотите получить доступ к его значению во время выпуска - вот что вам нужно сделать.

Сценарий установки

setupData.Links.Add(
        setupData.IndexFields["FirstName"].Name, 
        KfxLinkSourceType.KFX_REL_INDEXFIELD,
        setupData.IndexFields["FirstName"].Name);
setupData.Apply();

Имейте в виду, что эти ссылки похожи на словарные записи, поэтому вы не можете связать один и тот же элемент дважды. Мне обычно нравится удалять все ссылки, когда загружается мой скрипт установки, и добавлять их снова, когда он снова выгружается (и учтите, что вы можете безопасно перебрать коллекцию setupData.Indefields, чтобы добавить все поля вместо одного).

Время выпуска (прогона)

Во время выпуска все ссылки становятся доступны в коллекции DocumentData.Values. Чтобы получить доступ к полю индекса и его значению, вот что вам нужно сделать. Далее предполагается, что вы уже настроили Dictionary<string, string> с именем IndexFields, и далее показано, как получить доступ ко всем другим видам ссылок (поля пакета, пользовательские свойства и т. Д.):

foreach (Value v in DocumentData.Values)
{
    switch (v.SourceType)
    {
        case KfxLinkSourceType.KFX_REL_BATCHFIELD:
            BatchFields.Add(v.SourceName, v.Value);
            break;
        case KfxLinkSourceType.KFX_REL_DOCUMENTID:
            break;
        case KfxLinkSourceType.KFX_REL_INDEXFIELD:
            // index fields may also contain table fields
            if (v.TableName == "")
            {
                // this is a regular index field
                IndexFields.Add(v.SourceName, v.Value); 
            }
            else
            {
                // this is a table field! 
            }
            break;
        case KfxLinkSourceType.KFX_REL_TEXTCONSTANT:
            TextConstants.Add(v.SourceName, v.Value);
            break;
        case KfxLinkSourceType.KFX_REL_UNDEFINED_LINK:
            break;
        case KfxLinkSourceType.KFX_REL_VARIABLE:
            break;
    }
}

Если вы хотите сопоставить поля индекса Kofax с каким-либо внешним идентификатором, вы можете безопасно сделать это с помощью пользовательских свойств. Пример: вы можете присвоить идентификатору 42 имя FirstName во время установки (просто создайте сетку свойств с пользовательским классом), добавить пользовательское свойство во время настройки, а затем получить доступ к его значению во время выпуска. Таким образом, вы можете поддерживать идентификаторы с помощью формы установки без необходимости перестраивать свое решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...