1.级联删除子表
删除数据的同时,删除引用这条记录的子表的数据,可以通过在数据表设计中,对于引用字段,勾选上级联删除来实现。
但如果不是简单的级联删除子表数据,那么如何实现呢。
例如对于报销流程的报销单来说,希望删除报销单的同时,删除报销单对应的流程实例mis_process_execution(也就是流程实例)。
2.复杂的删除
如删除报销单的时候,希望同时删除该报销单关联的报销流程的实例mis_process_execution的数据。
我们在报销单列表下,按照建立立即执行页面的方法,建立一个报销单的详情页面。
然后给该页面建立 泛型(数据表)是 mis_process_execution 的数据集executions。
设置筛选条件为:
table.mis_process_execution.business_key==@it_id && table.mis_process_execution.process=="报销流程"
表示筛选出流程实例表中,流程名为"报销流程",而业务主键是传递过来的参数@it_id的数据。
接下来我们设计页面,
- A1格 值中写入
=@it_id
, 保存至属性写入:save.delete(it.id)
A1格的值是参数it_id,也就是传递过来需要删除的报销表记录的id。
保存至中写入save.delete表示删除,it.id表示按照it表的id去删除。由于it是报销表,所以这句话表示保存时,删除报销表中id为格子值的记录。
- A2格 值中写入
.=executions.select(executions.id)
, 保存至属性写入:save.delete(executions.id)
,
这里A2格表示 数据集executions,展开后的多条记录的id。也就是看到的多行流程实例id。保存至的公式里和上面相同的save.delete函数表示按照id去删除mis_process_execution表的记录。由于扩展开多个格子,所以将会删除多条记录。
点击翻译 可以看到生成的更新属性:

两条del的更新属性。
最后我们在报销单的列表页面配置一个立即执行按钮,指向这个页面,并且把id传递到it_id中即可。
2.保存或立即执行中的删除
立即执行相当于其他编程语言中的服务,可以完成各种复杂工作。
在一个普通的立即执行中,可以通过这种save.delete的方式,来实现执行过程中对于某些数据的删除。
这些删除命令,将会和其他更新命令一起,在用户点击保存,或者点击立即执行按钮的时候同时执行。如果执行出错,会回滚操作,抛出错误。
网友评论