Mendix中Shift实体增删改时与数据库现有记录对比的验证逻辑问询
Mendix微流中Shift记录重复验证实现方案
核心逻辑
判断新增/编辑的Shift记录是否与数据库中现有记录重复(需区分新增、编辑场景,编辑时排除当前记录本身),重复则终止流程并提示用户。
分步实现
1. 明确重复判定规则
先确定业务上的唯一标识字段,比如用Name(或多字段组合,如Name+Description),以下以Name作为唯一字段示例。
2. 新增Shift的验证逻辑
- 在新增微流的起始位置,添加
Retrieve活动:- 数据源选择数据库,实体选
Shift - 查询条件设为:
Shift.Name = $NewShift.Name($NewShift是你创建的新增对象变量)
- 数据源选择数据库,实体选
- 添加
Decision活动,判断$RetrievedShifts的数量是否大于0:- 若是:添加
Show Message活动,内容填该班次记录已存在,然后用End Event终止微流 - 若否:继续执行后续的保存操作
- 若是:添加
3. 编辑Shift的验证逻辑
和新增逻辑类似,仅需调整查询条件以排除当前编辑的记录:
Retrieve活动的查询条件改为:Shift.Name = $EditShift.Name and Shift.ID != $EditShift.ID($EditShift是编辑的对象变量)- 后续的
Decision和提示逻辑和新增一致
4. 优化建议
- 把重复验证逻辑抽成子微流,新增、编辑微流直接调用,减少代码冗余
- 提示信息可以更精准,比如:
名称为【${$CurrentShift.Name}】的班次已存在 - 若需多字段组合验证,只需调整
Retrieve的查询条件,比如:Shift.Name = $CurrentShift.Name and Shift.Description = $CurrentShift.Description
内容的提问来源于stack exchange,提问作者fallenhamster
相关产品推荐
相关产品推荐

