# 后台验证
在流程应用中,后台验证是一种在流程提交时执行的验证方式,具有更高的安全性和不可绕过的特点。与提交验证不同,后台验证的代码写在流程提交的线上,适用于需要确保数据完整性和安全性的场景。本文将详细介绍如何实现后台验证,并通过示例演示其使用方法。
# 1. 后台验证的特点
# 优点
- 更高的安全性:后台验证无法被绕过,确保数据合法性。
- 不可绕过:验证逻辑在服务器端执行,客户端无法篡改。
- 适合复杂验证:适用于需要调用数据库或其他后台服务的验证。
# 适用场景
- 验证申请金额是否超过预算。
- 验证输入的数据是否符合复杂的业务规则。
- 调用数据库或其他后台服务验证数据的唯一性或合法性。
# 2. 后台验证的实现步骤
# 2.1 打开流程设计器
- 打开需要设置后台验证的流程。
- 找到提交线(即流程提交的路径)。
# 2.2 设置后台验证
- 在提交线上右键点击,选择 属性。
- 进入 事件 页签。
- 找到 OnSubmitValidation 事件。
- 在事件中编写验证逻辑。
# 2.3 编写验证逻辑
- 使用 C# 语法编写验证代码。
▲ 编写验证逻辑
- 示例代码:
var amount = Convert.ToDecimal(Context.FormRootRow["总金额"]); if (amount > 500) throw new Exception("超出预算");Context.FormRootRow:获取表单的根行数据。Convert.ToDecimal:将字段值转换为数值类型。throw new Exception:验证失败时抛出异常,阻止提交。
# 2.4 保存并测试
- 保存流程后,进入流程发起界面。
- 填写表单数据,点击提交,测试验证效果。
- 金额≤500:正常提交
- 金额>500:阻止提交并提示错误
# 3. 后台验证的注意事项
- 安全性:
- 后台验证在服务器端执行,无法被客户端绕过,具有更高的安全性。
- 性能优化:
- 如果验证逻辑涉及数据库或其他后台服务调用,确保接口性能良好,避免影响用户体验。
- 错误提示:
- 使用
throw new Exception抛出错误信息,用户会看到弹出的提示。
- 使用
# 4. 后台验证与提交验证的比较
| 特性 | 后台验证 | 提交验证 |
|---|---|---|
| 执行位置 | 服务器端 | 客户端(浏览器) |
| 安全性 | 高,无法被绕过 | 较低,可能被绕过 |
| 适用场景 | 复杂验证、涉及后台服务的验证 | 简单验证、前端逻辑验证 |
| 实现难度 | 需要熟悉 C# 和流程上下文 | 需要熟悉 JavaScript 和表单数据 |
| 性能影响 | 可能影响服务器性能 | 对服务器性能影响较小 |
# 5. 总结
- 后台验证 是一种在服务器端执行的验证方式,具有更高的安全性和不可绕过的特点。
- 实现方法:
- 在流程提交线的 OnSubmitValidation 事件中编写验证逻辑。
- 使用
Context.FormRootRow获取表单数据。 - 使用
throw new Exception抛出错误信息。
- 适用场景:
- 验证申请金额是否超过预算。
- 调用数据库或其他后台服务验证数据合法性。
通过合理使用后台验证,可以确保表单数据的安全性和完整性,同时满足复杂的业务规则需求。