在消息验证策略中,对于使用 CheckLeadingZeroesInElement 方法来验证字段的情况,不会执行前导零验证。
症状
如果在字段中提交带有前导零的消息,则不会返回 BRE 验证错误,即使字段不允许前导零,并且验证策略包括执行此验证的字段的规则。
可能的原因
CheckLeadingZeroInElement 方法包含在消息类型的验证策略中的业务规则中。 不推荐使用此方法。 函数调用的目的是在函数调用中提供的元素中有前导零时导致验证失败。 但是,即使字段中存在前导零,此方法也不会导致验证失败。
解决方案
如果要检查前导零,则必须实现 CheckLeadingZero 方法,而不是 CheckLeadingZeroInElement 方法。 如果函数的字符串输入中有前导零,CheckLeadingZero 将导致验证错误。
若要实现 CheckLeadingZero 方法,必须创建一个自定义方法,该方法从自定义函数内部调用 CheckLeadingZero 方法,并将其作为字符串提供要验证的前导零的值。 这是因为 CheckLeadingZero 不会记录错误信息,但如果输入字符串不是有效的 SWIFT 号码字段或字符串输入有前导零,则只需返回布尔值假。 否则,返回 True。 然后,自定义方法可以相应地记录错误。
如果 SWIFT 数字字段具有前导零,则消息验证策略将返回错误
症状
如果提交的消息在字段中包含前导零,即使该字段允许使用前导零,仍会返回 BRE 验证错误。
可能的原因
如果使用以下方法之一来验证有关规则中的 SWIFT 号码字段,则可能会发生这种情况,通常这是在规则的操作部分中。 这可能发生在“金额”、“费率”、“价格”或“数量”字段中。
检查货币金额
检查有效金额
检查有效货币和价格代码 (CheckValidCurrencyAndPriceCode)
验证签名后的有效货币金额
检查有效签名日期货币金额
检查有效签名率
IsValidTransactionDetailsCurrencyAmount
解决方案
如果上述列表中的任一方法( CheckValidSignRate 除外)用于验证策略中的规则,请启用前导零,如 “数量字段验证中支持前导零”中所述。
如果在返回此错误的规则中使用 CheckValidSignRate 方法,则支持前导零的唯一方法是从验证策略中删除此规则。 按照以下步骤完成此作:
在业务规则编辑器中,右键单击包含使用 CheckValidSignRate 方法的规则的已部署策略的版本节点。 单击 “取消部署”。
右键单击同一策略的 “版本” 节点,然后单击“ 复制”。
右键点击 Validation_Policy 节点以选择同一策略,然后单击 粘贴。
展开新未保存版本的策略。 右键单击具有 CheckValidSignRate 方法调用的规则,然后单击“ 删除”。
右键单击策略的新未保存 版本 节点,然后单击“ 保存”。 右键单击同一节点,然后单击“ 发布”。 右键单击同一节点,然后单击“ 部署”。
A4SWIFT数据库需要存档
症状
A4SWIFT数据库增长过大。
可能的原因
A4SWIFT数据库中的 History 表不会自动存档。 此表存储有关消息修复和新提交的数据,包括执行了哪些任务以及有关业务流程流程的数据。 执行消息修复和新提交操作时,此表会持续增加。
解决方案
若要限制A4SWIFT数据库的增长,请使用标准存档过程定期将数据存档出 History 表。