访问自定义模块中的索引字段、批处理字段和批处理变量
access indexfields, batchfields and batch variables in custom module
在我的设置表单中,我为自定义模块配置了一些设置。设置存储在批处理 class 的自定义存储中。给定变量 IBatchClass batchClass
我可以通过执行
来访问数据
string data = batchClass.get_CustomStorageString("myKey");
并通过执行
设置数据
batchClass.set_CustomStorageString("myKey", "myValue");
执行自定义模块后,我想从存储中访问此数据。我返回的值是 batchfield 集合 or indexfield 集合 or 批处理变量集合的键。创建 Kofax Export Connector 脚本时,我可以访问包含这些集合的 ReleaseSetupData
对象。
是否可以在运行时访问这些字段?
private string GetFieldValue(string fieldName)
{
string fieldValue = string.Empty;
try
{
IIndexFields indexFields = null; // access them
fieldValue = indexFields[fieldName].ToString();
}
catch (Exception e)
{
}
try
{
IBatchFields batchFields = null; // access them
fieldValue = batchFields[fieldName].ToString();
}
catch (Exception e)
{
}
try
{
dynamic batchVariables = null; // access them
fieldValue = batchVariables[fieldName].ToString();
}
catch (Exception e)
{
}
return fieldValue;
}
格式包含类似
的字符串
"{@Charge}; {Current Date} {Current Time}; Scan Operator: {Scan
Operator's User ID}; Page: x/y"
并且由 {...} 包裹的每个字段代表来自这 3 个集合之一的字段。
Kofax 将批处理公开为 XML,而 DBLite
基本上是所述 XML 的包装器。该结构在 AcBatch.htm 和 AcDocs.htm 中进行了解释(可在 CaptureSV 目录下找到)。这是基本思想(仅显示文档):
- AscentCaptureRuntime
- 批量
- 文件
- 文档
对于标准服务器安装,该文件位于此处:\servername\CaptureSV\AcBatch.htm
。单个文档本身具有子元素(例如索引字段)和多个属性(例如 Confidence
、FormTypeName
和 PDFGenerationFileName
.
以下是从活动批次(您的 IBatch
实例)中提取元素以及访问所有批次字段的方法:
var runtime = activeBatch.ExtractRuntimeACDataElement(0);
var batch = runtime.FindChildElementByName("Batch");
foreach (IACDataElement item in batch.FindChildElementByName("BatchFields").FindChildElementsByName("BatchField"))
{
}
索引字段也是如此。但是,由于它们位于文档级别,因此您需要首先深入到 Documents 元素,然后检索所有 Document 子元素。以下示例也访问所有索引字段,将它们存储在名为 IndexFields
:
的字典中
var documents = batch.FindChildElementByName("Documents").FindChildElementsByName("Document");
var indexFields = DocumendocumentstData.FindChildElementByName("IndexFields").FindChildElementsByName("IndexField");
foreach (IACDataElement indexField in indexFields)
{
IndexFields.Add(indexField["Name"], indexField["Value"]);
}
关于{Scan Operator's User ID}
等批处理变量,我不太确定。最坏的情况是将它们作为默认值分配给索引或批处理字段。
在我的设置表单中,我为自定义模块配置了一些设置。设置存储在批处理 class 的自定义存储中。给定变量 IBatchClass batchClass
我可以通过执行
string data = batchClass.get_CustomStorageString("myKey");
并通过执行
设置数据batchClass.set_CustomStorageString("myKey", "myValue");
执行自定义模块后,我想从存储中访问此数据。我返回的值是 batchfield 集合 or indexfield 集合 or 批处理变量集合的键。创建 Kofax Export Connector 脚本时,我可以访问包含这些集合的 ReleaseSetupData
对象。
是否可以在运行时访问这些字段?
private string GetFieldValue(string fieldName)
{
string fieldValue = string.Empty;
try
{
IIndexFields indexFields = null; // access them
fieldValue = indexFields[fieldName].ToString();
}
catch (Exception e)
{
}
try
{
IBatchFields batchFields = null; // access them
fieldValue = batchFields[fieldName].ToString();
}
catch (Exception e)
{
}
try
{
dynamic batchVariables = null; // access them
fieldValue = batchVariables[fieldName].ToString();
}
catch (Exception e)
{
}
return fieldValue;
}
格式包含类似
的字符串"{@Charge}; {Current Date} {Current Time}; Scan Operator: {Scan Operator's User ID}; Page: x/y"
并且由 {...} 包裹的每个字段代表来自这 3 个集合之一的字段。
Kofax 将批处理公开为 XML,而 DBLite
基本上是所述 XML 的包装器。该结构在 AcBatch.htm 和 AcDocs.htm 中进行了解释(可在 CaptureSV 目录下找到)。这是基本思想(仅显示文档):
- AscentCaptureRuntime
- 批量
- 文件
- 文档
- 文件
- 批量
对于标准服务器安装,该文件位于此处:\servername\CaptureSV\AcBatch.htm
。单个文档本身具有子元素(例如索引字段)和多个属性(例如 Confidence
、FormTypeName
和 PDFGenerationFileName
.
以下是从活动批次(您的 IBatch
实例)中提取元素以及访问所有批次字段的方法:
var runtime = activeBatch.ExtractRuntimeACDataElement(0);
var batch = runtime.FindChildElementByName("Batch");
foreach (IACDataElement item in batch.FindChildElementByName("BatchFields").FindChildElementsByName("BatchField"))
{
}
索引字段也是如此。但是,由于它们位于文档级别,因此您需要首先深入到 Documents 元素,然后检索所有 Document 子元素。以下示例也访问所有索引字段,将它们存储在名为 IndexFields
:
var documents = batch.FindChildElementByName("Documents").FindChildElementsByName("Document");
var indexFields = DocumendocumentstData.FindChildElementByName("IndexFields").FindChildElementsByName("IndexField");
foreach (IACDataElement indexField in indexFields)
{
IndexFields.Add(indexField["Name"], indexField["Value"]);
}
关于{Scan Operator's User ID}
等批处理变量,我不太确定。最坏的情况是将它们作为默认值分配给索引或批处理字段。