Kofax KTM 验证路由
Kofax KTM Validation Routing
我正在处理一个 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
这本身不是错误,而是一条信息性消息,告诉您该批次没有错误,您不妨立即在验证中关闭该批次。没有看过该项目,这可能有点牵强 - 但它可以解释为什么您会在验证的第一个实例中看到上述消息。这是基于假设你的项目中没有验证规则,没有设置需要手动确认的字段,因此所有文档在任何时候都是有效的。
在验证 1 中打开批处理时,none 个文档将出现错误 - 因此,KTM 使整个 xfolder 对象有效。但是,您的代码中只有一行:pXRootFolder.Valid = False
- 这意味着您手动将根文件夹设置为对所有其他验证实例无效。
要验证我的假设,只需将其中一个字段设置为 "manual confirmation required",或者将根文件夹的有效 属性 设置为 false - 这应该会导致验证 1 显示类似的行为所有其他实例。此外,在验证中打开批次时,仔细查看屏幕左侧树中的文件夹(如果只有一个文件夹,则为批次)符号 - 验证 1 和验证 2 应该有所不同.
如果您想绝对确定,请在验证 1 和 2 之前处理两个批次,但先不要打开它们。导航到您的服务器文件共享,通常是 \{Server}\CaptureSV\Images
,然后将两个最新的文件夹复制到任意位置。在 Project Builder 中打开这些文件夹(确保 select 包含 xfd 文件的文件夹或文件夹对象),并观察一批有效而另一批无效(例如通过在 Project 中测试验证生成器,或 F8)。
我发现了问题:
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
我正在处理一个 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
这本身不是错误,而是一条信息性消息,告诉您该批次没有错误,您不妨立即在验证中关闭该批次。没有看过该项目,这可能有点牵强 - 但它可以解释为什么您会在验证的第一个实例中看到上述消息。这是基于假设你的项目中没有验证规则,没有设置需要手动确认的字段,因此所有文档在任何时候都是有效的。
在验证 1 中打开批处理时,none 个文档将出现错误 - 因此,KTM 使整个 xfolder 对象有效。但是,您的代码中只有一行:pXRootFolder.Valid = False
- 这意味着您手动将根文件夹设置为对所有其他验证实例无效。
要验证我的假设,只需将其中一个字段设置为 "manual confirmation required",或者将根文件夹的有效 属性 设置为 false - 这应该会导致验证 1 显示类似的行为所有其他实例。此外,在验证中打开批次时,仔细查看屏幕左侧树中的文件夹(如果只有一个文件夹,则为批次)符号 - 验证 1 和验证 2 应该有所不同.
如果您想绝对确定,请在验证 1 和 2 之前处理两个批次,但先不要打开它们。导航到您的服务器文件共享,通常是 \{Server}\CaptureSV\Images
,然后将两个最新的文件夹复制到任意位置。在 Project Builder 中打开这些文件夹(确保 select 包含 xfd 文件的文件夹或文件夹对象),并观察一批有效而另一批无效(例如通过在 Project 中测试验证生成器,或 F8)。
我发现了问题:
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