【问题标题】:Kofax KTM Validation RoutingKofax KTM 验证路由
【发布时间】:2021-08-03 15:22:09
【问题描述】:

我正在开发一个包含多个验证步骤的 Kofax KTM 项目。 在 KTM 服务器模块之后,批次将根据批次名称路由到另一个验证步骤。

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

有人知道如何解决这个问题吗? 谢谢

这是我的代码:

' 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

【问题讨论】:

    标签: vba kofax


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢您的回答!但是如果我像你告诉我的那样测试它,一切都一样......
    • 还有一些字段需要手动字段确认,所以我不明白为什么我会看到该消息
    【解决方案2】:

    我发现了问题:

    KTM_DOCUMENTROUTING_QUEUE_ 的值不能和下一个验证实例一样...

    这就是有效的代码:

    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
    

    【讨论】:

      猜你喜欢
      • 2021-05-20
      • 2018-01-18
      • 1970-01-01
      • 2021-01-17
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多