務(wù)對(duì)象 (BO) 與邏輯實(shí)體 (LE)【組合關(guān)系】深度詳解## 前置基礎(chǔ)定義(嚴(yán)格區(qū)分術(shù)語,限定 EBS 語境)> > 1. *)
Oracle EBS R12 AP業(yè)務(wù)對(duì)象 (BO) 與邏輯實(shí)體 (LE)【組合關(guān)系】深度詳解前置基礎(chǔ)定義嚴(yán)格區(qū)分術(shù)語限定 EBS 語境組合關(guān)系 CompositionUML 建模標(biāo)準(zhǔn)整體擁有部分部分不能脫離整體獨(dú)立存在整體生命周期決定部分生命周期整體刪除部分級(jí)聯(lián)刪除。 區(qū)別于聚合弱包含聚合只是分組容器成員可獨(dú)立存在組合是強(qiáng)所有權(quán)綁定。EBS AP 邊界約定業(yè)務(wù)對(duì)象 BO業(yè)務(wù)視角單據(jù) / 檔案應(yīng)付發(fā)票、付款等面向流程與用戶邏輯實(shí)體 LEETRM 數(shù)據(jù)模型單元一一映射XXX_ALL物理表組合關(guān)系 BO整體 ←→ LE組成部分強(qiáng)歸屬重要區(qū)分 ?組合LE 是 BO 不可分割組成部分離開 BO 無業(yè)務(wù)意義 ?關(guān)聯(lián)兩個(gè)獨(dú)立 BO 之間互相引用供應(yīng)商 ? 發(fā)票不屬于組合 ?聚合付款批包含付款屬于聚合不屬于組合。本文只聚焦【組合關(guān)系】聚合、跨 BO 關(guān)聯(lián)僅作對(duì)比排除。一、核心判定規(guī)則EBS AP 內(nèi)部組合識(shí)別標(biāo)準(zhǔn)同時(shí)滿足以下全部條件才認(rèn)定為組合關(guān)系邏輯實(shí)體存在指向業(yè)務(wù)對(duì)象根實(shí)體的外鍵不存在 “脫離父 BO 單獨(dú)創(chuàng)建該 LE” 合法業(yè)務(wù)場景在標(biāo)準(zhǔn)功能刪除父單據(jù)時(shí)系統(tǒng)級(jí)聯(lián)刪除子 LE子 LE 的業(yè)務(wù)語義依附父單據(jù)存在。二、逐個(gè)核心業(yè)務(wù)對(duì)象拆解內(nèi)部組合結(jié)構(gòu)BO1應(yīng)付發(fā)票 Invoice最核心 BO大量組合關(guān)系整體應(yīng)付發(fā)票 BO整體所有下屬 LE 均為【組合成員】 根邏輯實(shí)體發(fā)票頭 LEAP_INVOICES_ALL是整個(gè) BO 的根節(jié)點(diǎn)。組合成員清單 關(guān)系說明發(fā)票行 LE AP_INVOICE_LINES_ALL組合關(guān)系1 發(fā)票頭 → 一對(duì)多 → 發(fā)票行業(yè)務(wù)語義發(fā)票商務(wù)明細(xì)商品、運(yùn)費(fèi)、行級(jí)稅費(fèi)組合依據(jù)不能無發(fā)票頭單獨(dú)創(chuàng)建發(fā)票行刪除發(fā)票發(fā)票行級(jí)聯(lián)刪除。發(fā)票分配 LE AP_INVOICE_DISTRIBUTIONS_ALL組合關(guān)系1 發(fā)票行 → 一對(duì)多 → 發(fā)票分配組合依據(jù)分配行依附發(fā)票行 / 發(fā)票頭是會(huì)計(jì)維度載體無發(fā)票則分配行無意義刪除發(fā)票級(jí)聯(lián)清除分配行。R12 分層設(shè)計(jì)發(fā)票行業(yè)務(wù)明細(xì)與分配行財(cái)務(wù)分?jǐn)們杉?jí)組合。付款計(jì)劃 LE AP_PAYMENT_SCHEDULES_ALL組合關(guān)系1 發(fā)票頭 → 一對(duì)多 → 付款計(jì)劃關(guān)鍵認(rèn)知付款計(jì)劃屬于應(yīng)付發(fā)票 BO 的組成部分不屬于付款 BO組合依據(jù)由發(fā)票驗(yàn)證程序基于發(fā)票信息自動(dòng)生成依附發(fā)票生命周期發(fā)票取消 / 刪除付款計(jì)劃同步清除代表 “發(fā)票產(chǎn)生的負(fù)債分期計(jì)劃”。發(fā)票暫掛 LE AP_HOLDS_ALL組合關(guān)系1 發(fā)票頭 → 一對(duì)多 → 發(fā)票暫掛可選組合成員一張發(fā)票可以沒有暫掛也可以多條暫掛組合依據(jù)暫掛是針對(duì)這張發(fā)票的凍結(jié)控制不能脫離發(fā)票獨(dú)立存在發(fā)票刪除暫掛記錄一并刪除。應(yīng)付發(fā)票 BO 內(nèi)部完整組合鏈應(yīng)付發(fā)票BO【整體】 └──【組合】發(fā)票頭LE根 ├──【組合】發(fā)票行LE │ └──【組合】發(fā)票分配LE ├──【組合】付款計(jì)劃LE └──【組合】發(fā)票暫掛LE可選特殊擴(kuò)展預(yù)付款發(fā)票INVOICE_TYPEPREPAYMENT預(yù)付款依然是應(yīng)付發(fā)票 BO 的子類不產(chǎn)生新 BOAP_PREPAYMENTS_ALL預(yù)付款擴(kuò)展 LE ?? 注意該實(shí)體是聚合不是組合理由刪除預(yù)付款發(fā)票時(shí)受歷史核銷數(shù)據(jù)約束系統(tǒng)不會(huì)直接級(jí)聯(lián)刪除預(yù)付款擴(kuò)展記錄存在保留歷史的業(yè)務(wù)規(guī)則因此不屬于嚴(yán)格組合。AP_PREPAY_HISTORY_ALL預(yù)付款歷史屬于跨 BO 關(guān)聯(lián)橋接實(shí)體不屬于組合。小結(jié)預(yù)付款只是在標(biāo)準(zhǔn)發(fā)票組合結(jié)構(gòu)之上附加擴(kuò)展實(shí)體基礎(chǔ)組合鏈不變。會(huì)計(jì)衍生補(bǔ)充AP_ACCOUNTING_EVENTS_ALLAP 會(huì)計(jì)事件 LE 屬于應(yīng)付發(fā)票 BO、付款 BO 共同衍生的組合子實(shí)體交易發(fā)生后生成依附原始單據(jù)。BO2付款 PaymentCheck整體付款 BO【整體】根邏輯實(shí)體付款頭 LE AP_CHECKS_ALL組合成員發(fā)票付款核銷 LE AP_INVOICE_PAYMENTS_ALL組合關(guān)系1 付款頭 → 一對(duì)多 → 發(fā)票付款核銷組合判定依據(jù)核銷記錄描述 “這筆付款清償了多少負(fù)債”不能脫離付款單獨(dú)存在刪除付款取消付款系統(tǒng)級(jí)聯(lián)清除對(duì)應(yīng)的核銷記錄核銷記錄主鍵依賴 CHECK_ID。重要邊界 核銷 LE 外鍵同時(shí)指向【付款計(jì)劃 LE歸屬應(yīng)付發(fā)票 BO】 這是兩個(gè) BO 之間的關(guān)聯(lián)橋梁并不改變核銷 LE 是付款 BO 內(nèi)部組合成員這一事實(shí)。組合結(jié)構(gòu)簡圖付款BO【整體】 └──【組合】付款頭LE根 └──【組合】發(fā)票付款核銷LEBO3供應(yīng)商 Supplier主數(shù)據(jù) BO整體供應(yīng)商 BO【整體】根邏輯實(shí)體供應(yīng)商頭 LE AP_SUPPLIERS 組合成員供應(yīng)商地點(diǎn) LE AP_SUPPLIER_SITES_ALL組合關(guān)系1 供應(yīng)商頭 → 一對(duì)多 → 供應(yīng)商地點(diǎn)判定依據(jù)供應(yīng)商地點(diǎn)是供應(yīng)商不可分割組成檔案業(yè)務(wù)上不存在無供應(yīng)商頭的地點(diǎn)刪除供應(yīng)商清理主數(shù)據(jù)會(huì)級(jí)聯(lián)處理地點(diǎn)。供應(yīng)商BO【整體】 └──【組合】供應(yīng)商頭LE根 └──【組合】供應(yīng)商地點(diǎn)LE業(yè)務(wù)強(qiáng)規(guī)則發(fā)票綁定【供應(yīng)商地點(diǎn) LE】而非供應(yīng)商頭供應(yīng)商地點(diǎn)作為「供應(yīng)商 BO ? 應(yīng)付發(fā)票 BO」的關(guān)聯(lián)橋梁。BO4發(fā)票批 Invoice Batch導(dǎo)入管控 BO根邏輯實(shí)體發(fā)票批頭 LE 組合成員一批接口生成的多張應(yīng)付發(fā)票 BO注意發(fā)票批與發(fā)票之間屬于聚合不是組合。 刪除發(fā)票批不會(huì)刪除發(fā)票因此不屬于組合關(guān)系。BO5付款批 Payment Batch容器 BO付款批頭 LE 和 付款 BO 之間聚合關(guān)系? 不屬于組合 核心區(qū)分點(diǎn)刪除付款批付款單據(jù)完整保留付款擁有獨(dú)立生命周期可以加入其他付款批。三、關(guān)鍵對(duì)比組合 VS 聚合 VS 跨 BO 關(guān)聯(lián)避坑清單表格關(guān)系類型歸屬場景典型例子核心特征組合 CompositionBO 內(nèi)部構(gòu)成發(fā)票頭→發(fā)票行付款→發(fā)票付款核銷刪除父 BO子 LE 級(jí)聯(lián)刪除子不能獨(dú)立存在聚合 Aggregation容器 - 成員付款批→付款發(fā)票批→發(fā)票刪除容器成員保留關(guān)聯(lián) Association兩個(gè)獨(dú)立 BO 之間供應(yīng)商 BO ? 應(yīng)付發(fā)票 BO預(yù)付發(fā)票 ? 標(biāo)準(zhǔn)發(fā)票雙方互相獨(dú)立依靠外鍵引用高頻誤區(qū)澄清誤區(qū) 1付款計(jì)劃屬于付款 BO?錯(cuò)誤。付款計(jì)劃是應(yīng)付發(fā)票 BO 內(nèi)部組合 LE代表負(fù)債付款只是使用負(fù)債進(jìn)行清償。誤區(qū) 2AP_INVOICE_PAYMENTS_ALL 屬于應(yīng)付發(fā)票 BO?錯(cuò)誤。核銷記錄描述 “本次付款的分?jǐn)偯骷?xì)”所有權(quán)歸屬付款 BO是付款的組合子實(shí)體只是通過外鍵關(guān)聯(lián)發(fā)票的付款計(jì)劃。誤區(qū) 3預(yù)付款歷史屬于應(yīng)付發(fā)票內(nèi)部組合?錯(cuò)誤。預(yù)付款歷史是兩張獨(dú)立發(fā)票 BO 之間的橋接實(shí)體屬于跨 BO 關(guān)聯(lián)不屬于任何一方的組合成員。誤區(qū) 4發(fā)票暫掛可以獨(dú)立存在?錯(cuò)誤。發(fā)票暫掛 LE 必須依附某一張發(fā)票頭屬于應(yīng)付發(fā)票可選組合組件。四、組合關(guān)系帶來的系統(tǒng)行為開發(fā) / 實(shí)施價(jià)值級(jí)聯(lián)刪除機(jī)制根源正是因?yàn)槎x了組合關(guān)系EBS 標(biāo)準(zhǔn) API 刪除發(fā)票時(shí)自動(dòng)刪除發(fā)票行、分配行、付款計(jì)劃、暫掛 如果繞過 API 直接刪發(fā)票頭會(huì)產(chǎn)生大量孤立子實(shí)體引發(fā)數(shù)據(jù)完整性錯(cuò)誤。API 設(shè)計(jì)思想EBS 標(biāo)準(zhǔn) API 按照 “BO 整體” 設(shè)計(jì)創(chuàng)建發(fā)票 API 自動(dòng)創(chuàng)建全套組合 LE不允許單獨(dú)插入發(fā)票行、分配行。SLA 會(huì)計(jì)溯源邏輯會(huì)計(jì)分錄源頭來自應(yīng)付發(fā)票 BO 內(nèi)部的【發(fā)票分配 LE】分配行作為 BO 固有組成部分保證每一筆負(fù)債都有會(huì)計(jì)維度。狀態(tài)聯(lián)動(dòng)邏輯發(fā)票驗(yàn)證APPRV本質(zhì)是修改發(fā)票頭 LE 狀態(tài)并自動(dòng)生成組合成員【付款計(jì)劃 LE】 體現(xiàn)整體狀態(tài)變更驅(qū)動(dòng)內(nèi)部組成實(shí)體生成。五、完整匯總表可直接放進(jìn)設(shè)計(jì)文檔頂層業(yè)務(wù)對(duì)象 BO根邏輯實(shí)體 LE內(nèi)部組合邏輯實(shí)體 LE應(yīng)付發(fā)票 Invoice發(fā)票頭 AP_INVOICES_ALL發(fā)票行、發(fā)票分配、付款計(jì)劃、發(fā)票暫掛付款 Payment付款頭 AP_CHECKS_ALL發(fā)票付款核銷 AP_INVOICE_PAYMENTS_ALL供應(yīng)商 Supplier供應(yīng)商頭 AP_SUPPLIERS供應(yīng)商地點(diǎn) AP_SUPPLIER_SITES_ALL