1

我为我的自定义模块创建了一个设置表单。batchClass.get_CustomStorageString("key");启动管理模块时,我可以使用(get a value by key) 和batchClass.set_CustomStorageString("key", "value");(set a value by key)为自定义模块运行时设置一些设置。在管理模块中,我可以在多次启动时访问存储数据,所以一切都很好。

在运行时运行批处理管理器时,自定义模块尝试使用相同的键访问数据并抛出此错误

System.Runtime.InteropServices.COMException:“[24] KdoLib:未知错误。”

错误消息本身没有提供任何信息出现问题。设置表单处理一批类型IBatchClass,运行时处理类型IBatch。所以运行时使用batch.get_CustomStorageString("key");. 这种访问数据的方式不正确吗?

4

1 回答 1

2

看来我自己解决了。在运行时,我必须提取设置数据。这将返回批处理类,而这些返回给我当前的批处理类。批处理类本身包含要访问的自定义存储字符串。

代码是

    private const string BATCH_CLASSES = "BatchClasses";
    private const string BATCH_CLASS = "BatchClass";
    private const string BATCH_CLASS_CUSTOM_STORAGE_STRINGS = "BatchClassCustomStorageStrings";
    private const string BATCH_CLASS_CUSTOM_STORAGE_STRING = "BatchClassCustomStorageString";

    public void ProcessBatch(IBatch batch)
    {
        IACDataElement setupElement = batch.ExtractSetupACDataElement(0);
        IACDataElementCollection batchClasses = setupElement.FindChildElementByName(BATCH_CLASSES).FindChildElementsByName(BATCH_CLASS);
        IACDataElement batchClass = batchClasses[1]; // Kofax starts at 1 // always take the first item because there is only one?
        IACDataElement customStorageStrings = batchClass.FindChildElementByName(BATCH_CLASS_CUSTOM_STORAGE_STRINGS);

        IACDataElement customStorageItem = customStorageStrings.FindChildElementByAttribute(BATCH_CLASS_CUSTOM_STORAGE_STRING, "Name", "-- myKey --");
        string customStorageItemValue = customStorageItem["Value"];
    }

我在以下位置找到了示例代码

...\CaptureSV\Source\Sample Projects\Workflow\WFSample

于 2019-05-03T08:09:34.050 回答