示例: 在桌面 Process Designer 中验证传统人员服务中的页面数据 (不推荐)
此示例显示如何使用桌面 Process Designer中的验证常规系统服务来验证传统人员服务中的页面数据。
此示例包含用于收集信用卡申请信息的信用应用程序页面。 为了简化此示例,页面只有 名称 字段, 工资 字段, 信用限制 字段和 提交 按钮。 名称和薪水字段必须包含值, 并且贷记限额最大值是薪水字段值的两倍。
该示例使用 General System Service 来验证页面数据。 您可以使用 Ajax 服务和人员服务以外的任何其他服务类型,并且不会限制服务执行验证的方式。 但是,该服务必须构造 CoachValidation 业务对象以包含作为输出返回到页面的验证信息。 此样本使用 addCoachValidationError API 构造业务对象。 为简单起见,示例中的服务使用脚本来验证数据。
有关如何在 Process Designer中验证传统人员服务中的页面的信息,请参阅 示例: 在 Web Process Designer中验证传统人员服务中的 Coach 数据。 有关验证客户端人员服务中的页面的更多信息,请参阅 验证 Coach 数据而不退出 Coach。
- 通过以下参数创建
CreditCardApplication业务对象:name(String)salary(Decimal)creditLimit(Decimal)
- 创建
CreateCreditApplication传统人员服务。 - 将
application(CreditCardApplication)添加为专用变量。
- 在图中,添加“创建应用程序”页面,然后打开该页面。
- 从选用板的变量部分,将
name、salary和creditLimit参数拖至该页面。 将缺省 确定 按钮重新标记为 Submit。
- 在图中,将信用应用程序页面连接到开始和结束节点。
- 选择信用应用程序页面和结束节点之间的连接。 将 "触发验证" 设置为 Before。 现在,连接在其启动时具有一个选中标记。 该页面有一个图标
,用于指示您现在可以将该页面连接到验证服务。 此更改意味着,在用户单击提交按钮时,流首先转至验证服务以执行数据验证。 如果数据有效,那么流转至结束节点。 如果将 Fire Validation 保留为其缺省值 Never,那么不会进行数据验证,并且流将直接转至结束节点。 - 创建服务以验证页面数据:
- 从库中创建名为
CreditApplicationFormValidation的 General System Service。 - 在服务的“变量”页面上,添加
application(CreditCardApplication)作为服务的输入。要点: 服务输入的名称和类型必须与包含要验证的数据的页面变量的名称和类型相匹配。添加validate(CoachValidation)作为服务的输出。 服务只能有一个输出,且输出类型为CoachValidation。 存在此输出指示服务是验证服务。 在这种情况下,该示例使用输入来提供服务验证的数据。
- 向服务图添加服务器脚本,并将开始和结束节点连接到脚本。
- 在服务器脚本的实施中,添加以下代码以构造
CoachValidation业务对象:tw.local.validate = new tw.object.CoachValidation(); if (tw.local.application.name == ""){ tw.system.addCoachValidationError(tw.local.validate, "tw.local.application.name", "The name cannot be empty."); } if ( tw.local.application.salary <= 0){ tw.system.addCoachValidationError(tw.local.validate, "tw.local.application.salary", "The salary must be above 0."); } if (tw.local.application.creditLimit > 2 * tw.local.application.salary){ tw.system.addCoachValidationError(tw.local.validate, "tw.local.application.creditLimit", "The credit limit cannot be more than double the salary. " + "The maximum credit limit is $" + 2 * tw.local.application.salary + "."); }tw.local.validate参数是包含验证信息的CoachValidation业务对象。 第一个字符串包含的完整变量路径指向有问题数据的数据元素。 第二个字符串是面向用户的消息。 消息应标识数据哪里发生错误或者告知用户如何修订问题。重要说明:- 页面只能使用一个验证服务或服务器脚本来验证其数据。 然而,多个页面可使用相同的验证服务或脚本。
- 如果验证的数据元素未绑定到视图,那么若发生验证错误将无处显示。
- 如果验证的视图包含富文本,那么验证服务必须除去任何格式化信息,然后才能验证内容。
- 从库中创建名为
- 将
CreditApplicationFormValidation服务添加到CreateCreditApplication传统人员服务图。 - 选择
CreditApplicationFormValidation服务并打开数据映射属性。 要向验证服务提供数据,请添加application私有变量作为输入映射。 要将验证服务的输出映射至CoachValidation对象,请添加以下变量作为输出映射:tw.system.coachValidation重要信息: 要使页面将服务用作验证服务,必须将输出映射到系统变量。tw.system.coachValidation参数是包含验证信息的系统变量。 - 将 "信用应用程序" 页面的验证节点
连接到 CreditApplicationFormValidation服务。 - 将 Stay on Page 节点添加到图中。
- 将
CreditApplicationFormValidation服务连接到“留在页面上”节点。 如果页面中的数据无效,那么此构造将此流程返回到页面。 系统将错误信息传递回页面,然后用户将在包含问题数据的视图旁边看到指示符。 如果验证服务提供错误消息,那么用户在指示符上悬停鼠标时将看到相应的消息。 如果数据有效,那么系统将处理边界事件,以移至下一步。 - 保存更改,然后通过单击
按钮来运行传统人员服务。 - 在显示页面的浏览器中,通过执行以下操作来测试验证:
- 将 名称 字段留空,在 工资 字段和 贷记限额 字段中输入 1 。 单击 提交。 浏览器显示一条消息,表明“名称”字段不能为空。
- 在 Name 字段中输入名称,并将 Salary 字段中的 1 替换为 0。 单击 提交。 浏览器显示一条消息,表明薪水必须大于 0。
- 将“薪水”字段中的 0 替换为 1。 将“贷记限额”字段中的 1 替换为 3。 单击 提交。 浏览器显示一条消息,表明贷记限额不能超过两倍薪水。
- 将“贷记限额”字段中的 3 替换为 2。 单击 提交。 该人员服务现在已完成,因为所有三个值均有效。
限制:
在页面服务正在运行时调试页面并分步执行流程中的每个活动时,请注意以下行为:如果某个步骤需要页面数据验证,那么验证边界事件路径会循环回去,打开新的页面。 因为在调试期间验证边界事件响应并不能返回到起始页面,所以您在调试过程中看不到可视错误。 您可以分步执行页面,在调试页面查看验证错误,但是流程总会返回到新的页面。
调试验证路径并查看调试信息页面 (包括
tw.system.coachValidation 错误信息) 后,请选择下列其中一个选项:- 继续运行。
- 运行到在常规边界事件流中的下一步定义的下一个断点。 该选项会移动到常规边界事件流中的下一步。
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-01-20 10:38