首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kofax KTM验证路由

Kofax KTM验证路由
EN

Stack Overflow用户
提问于 2020-05-05 23:28:55
回答 2查看 308关注 0票数 3

我正在做一个Kofax项目,它有多个验证步骤。在KTM服务器模块之后,批次将根据批次名称被路由到另一个验证步骤。

现在路由运行良好,但如果不是第一个验证步骤,则会出现以下错误:

有谁知道怎么解决这个问题吗?thx

下面是我的代码:

代码语言:javascript
复制
' Rout Document to the Correct Validation step.
Private Sub Batch_Close(ByVal pXRootFolder As CASCADELib.CscXFolder, ByVal CloseMode As 
CASCADELib.CscBatchCloseMode)
   Dim i As Long
   Dim mandat As String
   Dim lVal As Long
   Dim strVal As String
   Dim oXDocInfo As CASCADELib.CscXDocInfo
   Dim folder As CASCADELib.CscXFolder

   ' only enter after extraction and after validation
If CloseMode = CASCADELib.CscBatchCloseFinal Then
  If Project.ScriptExecutionMode = CscScriptModeServer Or Project.ScriptExecutionMode = CscScriptModeValidation Then
           ' get root folder
     Set folder = pXRootFolder
     While Not folder.IsRootFolder
        Set folder = folder.ParentFolder
     Wend

     ' get batch name
     mandat = folder.XValues.ItemByName("AC_BATCH_CLASS_NAME").Value
     lVal = 0
     strVal = ""

     Select Case mandat
        Case "x"
           lVal = 0
        Case "y"
           lVal = 2
     End Select

     strVal = CStr(lVal)

     If Project.ScriptExecutionMode = CscScriptModeValidation Then
        For i = 0 To folder.GetTotalDocumentCount - 1
           Set oXDocInfo = folder.GetDocInfoByGlobalIndex(i)
           oXDocInfo.XValues.Set("KTM_DOCUMENTROUTING", strVal)
        Next
        folder.XValues.Set("KTM_DOCUMENTROUTING_QUEUE_" & strVal, "kfxpdf.exe")
     ElseIf Project.ScriptExecutionMode = CscScriptModeServer Then
        For i = 0 To folder.GetTotalDocumentCount - 1
           Set oXDocInfo = folder.GetDocInfoByGlobalIndex(i)
           oXDocInfo.XValues.Set("KTM_DOCUMENTROUTING", strVal)
           oXDocInfo.XDocument.NextValidationInstance = lVal
        Next
        ' validation is not done => rout to the depending validation instance
        If(lVal = 0) Then
           folder.XValues.Set("KTM_DOCUMENTROUTING_QUEUE_" & strVal, "KTM.Validation")
        Else
           folder.XValues.Set("KTM_DCOUMENTROUTING_QUEUE_" & strVal, "KTM.Validation")
           folder.XValues.Set("KTM_DOCUMENTROUTING_QUEUE_" & strVal, "KTM.Validation" & strVal)
           pXRootFolder.Valid = False
        End If
     End If
  End If
End If
End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-15 19:21:07

我发现了问题:

KTM_DOCUMENTROUTING_QUEUE_的值不能与下一个验证实例相同...

这就是起作用的代码:

代码语言:javascript
复制
Private Sub Batch_Close(ByVal pXRootFolder As CASCADELib.CscXFolder, ByVal CloseMode As CASCADELib.CscBatchCloseMode)
Dim i As Long
Dim mandat As String
Dim lVal As Long
Dim strVal As String
Dim oXDocInfo As CASCADELib.CscXDocInfo
Dim folder As CASCADELib.CscXFolder

' only enter after extraction and after validation
If CloseMode = CASCADELib.CscBatchCloseFinal Then
  If Project.ScriptExecutionMode = CscScriptModeServer Or Project.ScriptExecutionMode = CscScriptModeValidation Then
           ' get root folder
     Set folder = pXRootFolder
     While Not folder.IsRootFolder
        Set folder = folder.ParentFolder
     Wend

     ' get batch name
     mandat = folder.XValues.ItemByName("AC_BATCH_CLASS_NAME").Value
     lVal = 0
     strVal = ""

     Select Case mandat
        Case "x"
           lVal = 0
        Case "y"
           lVal = 1
     End Select

     strVal = CStr(lVal)
        folder.XValues.Set("KTM_DOCUMENTROUTING_QUEUE_" & strVal, "kfxpdf.exe")
     ElseIf Project.ScriptExecutionMode = CscScriptModeServer Then
        For i = 0 To folder.GetTotalDocumentCount - 1
           Set oXDocInfo = folder.GetDocInfoByGlobalIndex(i)
           oXDocInfo.XValues.Set("KTM_DOCUMENTROUTING", strVal)
           oXDocInfo.XDocument.NextValidationInstance = lVal
           oXDocInfo.XDocument.Valid = False
        Next
        ' validation is not done => rout to the depending validation instance
        If(lVal = 0) Then
           folder.XValues.Set("KTM_DOCUMENTROUTING_QUEUE_" & strVal, "KTM.Validation")
        Else
           folder.XValues.Set("KTM_DCOUMENTROUTING_QUEUE_" & strVal, "KTM.Validation")
           folder.XValues.Set("KTM_DOCUMENTROUTING_QUEUE_" & strVal, "KTM.Validation" & CStr(lVal + 1))
           pXRootFolder.Valid = False
        End If
     End If
  End If
End If
End Sub
票数 0
EN

Stack Overflow用户

发布于 2020-05-08 04:20:43

这本身不是一个错误,而是一条信息性消息,告诉您批处理没有错误,您最好立即在验证中关闭批处理。没有看过这个项目,这可能有点牵强--但它解释了为什么你会在验证的第一个实例中看到上述消息。这是基于这样的假设:您的项目中没有验证规则,没有设置需要手动确认的字段,因此所有文档在任何时候都是有效的。

在Validation 1中打开批次时,您的任何文档都不会有错误-因此,KTM会使整个xfolder对象有效。但是,您的代码中只有一行代码:pXRootFolder.Valid = False -这意味着您手动将根文件夹设置为对所有其他验证实例无效。

要验证我的假设,只需将其中一个字段设置为“需要手动确认”,或者将根文件夹的有效属性设置为false -这将导致验证1显示出与所有其他实例类似的行为。此外,在验证中打开批次时,请仔细查看屏幕左侧树中的文件夹(如果只有一个文件夹,则为批次)符号-验证1和验证2之间应该存在差异。

如果您想绝对确定,请在验证1和验证2之前处理两个批次,但不要打开它们。导航到您的服务器文件共享,通常是\\{Server}\CaptureSV\Images,然后将两个最新的文件夹复制到任意位置。在项目生成器中打开这些文件夹(确保选择保存xfd文件的文件夹或文件夹对象),并观察到一个批次有效而另一个批次无效(例如,通过在项目生成器或F8中测试验证)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61616825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档