Kofax Export Connector - 从 IndexField 获取值

Kofax Export Connector - get value from IndexField

我为我的 Kofax 导出连接器创建了一个映射。此连接器使用 Web 服务与外部应用程序交互。

我想将索引字段值连接到外部应用程序的字段 ID。目前我有一个包含外部应用程序ID和索引字段ID的字典。

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

该键可以为空,因为可能未分配字段。我不想将 indexfieldID 传递给外部应用程序,而是想传递此 indexfield 的值。

目前我有这个

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

期望的结果是

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

如何获取索引字段的值?索引字段本身没有 "value" 属性,Kofax 用户可以使用自定义数据类型设置自定义字段。那么值会是什么样子呢?

我没有从 Kofax Capture 导出类型库 API 参考指南

中获取它

一般来说,Kofax 将任何类型的映射数据组织为所谓的 Links。然而,它本身并不负责映射任何东西,这是我们的工作(出于某种原因)。您会发现两个不同的对象供您使用:

  1. 您的安装脚本将包含对 ReleaseSetupData 对象的引用,通常命名为 SetupData
  2. 您的发布脚本有另一个对 ReleaseData 对象的引用,即 DocumentData.

现在,所有在设置期间建立的 link 都将在发布期间可用。所述 link 可以包含不同类型的数据,例如索引字段、批处理字段、Kofax 值或自定义属性。现在,假设您的文档 class 上有索引字段 "FirstName",并且您确实希望在发布期间访问它的值 - 这是您需要做的。

设置脚本

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

请记住,那些 link 类似于字典条目,因此您不能 link 相同的条目两次。我通常喜欢在我的设置脚本加载时删除所有 links,并在它再次卸载时再次添加它们(请注意,您可以安全地遍历 setupData.Indefields 集合以添加所有字段而不是仅添加一个字段一个)。

发布(运行)时间

在发布期间,所有 link 都将在 DocumentData.Values 集合中可用。要访问您的索引字段及其值,您需要执行以下操作。以下假设您已经设置了一个名为 IndexFieldsDictionary<string, string>,它进一步向您展示了如何访问所有其他类型的 link(批处理字段、自定义属性等):

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 索引字段映射到某个外部 ID,您可以使用自定义属性安全地进行此操作。示例:您可以在设置期间将 id 42 分配给 FirstName(只需创建一个带有自定义 class 的 属性 网格),在设置期间添加自定义 属性,然后在期间访问其值发布。这样您就可以通过设置表单维护 ID,而无需重新构建您的解决方案。