一般来说,Kofax 将任何类型的映射数据组织为所谓的Links
. 然而,它自己并不负责映射任何东西,这是我们的工作(出于某种原因)。你会发现两个不同的对象供你使用:
- 您的安装脚本将包含对一个
ReleaseSetupData
对象的引用,通常命名为SetupData
.
- 您的发布脚本有另一个对
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>
named 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 索引字段映射到某个外部 ID,您可以使用自定义属性安全地执行此操作。示例:您可以在设置期间将 id 42 分配给 FirstName(只需使用自定义类创建属性网格),在设置期间添加自定义属性,然后在发布期间访问其值。这样您就可以通过设置表单维护 ID,而无需重新构建您的解决方案。