1.級(jí)聯(lián)刪除子表
刪除數(shù)據(jù)的同時(shí),刪除引用這條記錄的子表的數(shù)據(jù),可以通過在數(shù)據(jù)表設(shè)計(jì)中,對(duì)于引用字段,勾選上級(jí)聯(lián)刪除來實(shí)現(xiàn)。
但如果不是簡(jiǎn)單的級(jí)聯(lián)刪除子表數(shù)據(jù),那么如何實(shí)現(xiàn)呢。
例如對(duì)于報(bào)銷流程的報(bào)銷單來說,希望刪除報(bào)銷單的同時(shí),刪除報(bào)銷單對(duì)應(yīng)的流程實(shí)例mis_process_execution(也就是流程實(shí)例)。
2.復(fù)雜的刪除
如刪除報(bào)銷單的時(shí)候,希望同時(shí)刪除該報(bào)銷單關(guān)聯(lián)的報(bào)銷流程的實(shí)例mis_process_execution的數(shù)據(jù)。
我們?cè)趫?bào)銷單列表下,按照建立立即執(zhí)行頁面的方法,建立一個(gè)報(bào)銷單的詳情頁面。
然后給該頁面建立 泛型(數(shù)據(jù)表)是 mis_process_execution 的數(shù)據(jù)集executions。
設(shè)置篩選條件為:
table.mis_process_execution.business_key==@it_id && table.mis_process_execution.process=="報(bào)銷流程"
表示篩選出流程實(shí)例表中,流程名為"報(bào)銷流程",而業(yè)務(wù)主鍵是傳遞過來的參數(shù)@it_id的數(shù)據(jù)。
接下來我們?cè)O(shè)計(jì)頁面,
- A1格 值中寫入
=@it_id, 保存至屬性寫入:save.delete(it.id)
A1格的值是參數(shù)it_id,也就是傳遞過來需要?jiǎng)h除的報(bào)銷表記錄的id。
保存至中寫入save.delete表示刪除,it.id表示按照it表的id去刪除。由于it是報(bào)銷表,所以這句話表示保存時(shí),刪除報(bào)銷表中id為格子值的記錄。
- A2格 值中寫入
.=executions.select(executions.id), 保存至屬性寫入:save.delete(executions.id),
這里A2格表示 數(shù)據(jù)集executions,展開后的多條記錄的id。也就是看到的多行流程實(shí)例id。保存至的公式里和上面相同的save.delete函數(shù)表示按照id去刪除mis_process_execution表的記錄。由于擴(kuò)展開多個(gè)格子,所以將會(huì)刪除多條記錄。
點(diǎn)擊翻譯 可以看到生成的更新屬性:

兩條del的更新屬性。
最后我們?cè)趫?bào)銷單的列表頁面配置一個(gè)立即執(zhí)行按鈕,指向這個(gè)頁面,并且把id傳遞到it_id中即可。
2.保存或立即執(zhí)行中的刪除
立即執(zhí)行相當(dāng)于其他編程語言中的服務(wù),可以完成各種復(fù)雜工作。
在一個(gè)普通的立即執(zhí)行中,可以通過這種save.delete的方式,來實(shí)現(xiàn)執(zhí)行過程中對(duì)于某些數(shù)據(jù)的刪除。
這些刪除命令,將會(huì)和其他更新命令一起,在用戶點(diǎn)擊保存,或者點(diǎn)擊立即執(zhí)行按鈕的時(shí)候同時(shí)執(zhí)行。如果執(zhí)行出錯(cuò),會(huì)回滾操作,拋出錯(cuò)誤。