# 后台验证

在流程应用中,后台验证是一种在流程提交时执行的验证方式,具有更高的安全性和不可绕过的特点。与提交验证不同,后台验证的代码写在流程提交的线上,适用于需要确保数据完整性和安全性的场景。本文将详细介绍如何实现后台验证,并通过示例演示其使用方法。

# 1. 后台验证的特点

# 优点

  1. 更高的安全性:后台验证无法被绕过,确保数据合法性。
  2. 不可绕过:验证逻辑在服务器端执行,客户端无法篡改。
  3. 适合复杂验证:适用于需要调用数据库或其他后台服务的验证。

# 适用场景

  • 验证申请金额是否超过预算。
  • 验证输入的数据是否符合复杂的业务规则。
  • 调用数据库或其他后台服务验证数据的唯一性或合法性。

# 2. 后台验证的实现步骤

# 2.1 打开流程设计器

  1. 打开需要设置后台验证的流程。
  2. 找到提交线(即流程提交的路径)。

# 2.2 设置后台验证

  1. 在提交线上右键点击,选择 属性
  2. 进入 事件 页签。
  3. 找到 OnSubmitValidation 事件。
  4. 在事件中编写验证逻辑。

# 2.3 编写验证逻辑

  1. 使用 C# 语法编写验证代码。

编写验证逻辑 ▲ 编写验证逻辑

  1. 示例代码:
    var amount = Convert.ToDecimal(Context.FormRootRow["总金额"]);
    if (amount > 500)
        throw new Exception("超出预算");
    
    • Context.FormRootRow:获取表单的根行数据。
    • Convert.ToDecimal:将字段值转换为数值类型。
    • throw new Exception:验证失败时抛出异常,阻止提交。

# 2.4 保存并测试

  1. 保存流程后,进入流程发起界面。
  2. 填写表单数据,点击提交,测试验证效果。
    • 金额≤500:正常提交
    • 金额>500:阻止提交并提示错误

# 3. 后台验证的注意事项

  1. 安全性
    • 后台验证在服务器端执行,无法被客户端绕过,具有更高的安全性。
  2. 性能优化
    • 如果验证逻辑涉及数据库或其他后台服务调用,确保接口性能良好,避免影响用户体验。
  3. 错误提示
    • 使用 throw new Exception 抛出错误信息,用户会看到弹出的提示。

# 4. 后台验证与提交验证的比较

特性 后台验证 提交验证
执行位置 服务器端 客户端(浏览器)
安全性 高,无法被绕过 较低,可能被绕过
适用场景 复杂验证、涉及后台服务的验证 简单验证、前端逻辑验证
实现难度 需要熟悉 C# 和流程上下文 需要熟悉 JavaScript 和表单数据
性能影响 可能影响服务器性能 对服务器性能影响较小

# 5. 总结

  • 后台验证 是一种在服务器端执行的验证方式,具有更高的安全性和不可绕过的特点。
  • 实现方法
    1. 在流程提交线的 OnSubmitValidation 事件中编写验证逻辑。
    2. 使用 Context.FormRootRow 获取表单数据。
    3. 使用 throw new Exception 抛出错误信息。
  • 适用场景
    • 验证申请金额是否超过预算。
    • 调用数据库或其他后台服务验证数据合法性。

通过合理使用后台验证,可以确保表单数据的安全性和完整性,同时满足复杂的业务规则需求。