曾經(jīng)做項目沒有考慮那么多,對于級聯(lián)表操作都是正常的一步一步操作,沒有考慮過失敗情況,最近項目遇見了失敗的情況,導致碰到了相應的情況,特此mark一下,免得后期繼續(xù)踩坑。
需求如下:新建頁面,頁面中包含1.新建企業(yè),2.新建聯(lián)系人,3.新建機會。任何一步的邏輯或者DML操作失敗都會導致整體的回滾。只有當三步都正常插入成功了以后才會跳轉(zhuǎn)到新生成的機會的標準頁面。
1.NewOpportunityController:這里做了一個邏輯判斷,當聯(lián)系人為空情況下,不允許新建聯(lián)系人。當然,現(xiàn)實場景不會在這里判斷,但是現(xiàn)實場景會有很多的復雜的業(yè)務邏輯,這里只是簡單的處理。
1 public class newOpportunityController { 2 Account account; 3 Contact contact; 4 Opportunity opportunity; 5 OpportunityContactRole role; 6 7 public Account getAccount() { 8 if(account == null) 9 account = new Account(); 10 return account; 11 } 12 public Contact getContact() { 13 if(contact == null) 14 contact = new Contact(); 15 return contact; 16 } 17 public Opportunity getOpportunity() { 18 if(opportunity == null) 19 &