Agile PLM 表结构说明
公共說明
數據庫使用(重要)
直連數據庫存在風險,使用時請謹慎!筆者曾今親身體驗,某個SQL寫的有性能問題導致數據庫服務器CPU占用率90%+,從而導致PLM服務不可用。
建議優先使用AgileApi的IQuery功能查詢數據庫。實在滿足不了業務要求,公司內部存在擅長數據庫性能優化的人員再考慮直連數據庫。在功能設計時應充分考慮隨著數據量增大后可能出現的性能問題,并在上線前進行充分測試。
如果要連PLM數據庫,建議另外創建新用戶并授予其AgilePLM_ROLE角色,而不是直接使用agile用戶。
第三方系統程序如果要訪問PLM的數據建議通過接口而不是直連PLM數據庫。上述性能風險是原因之一。還有就是權限難以管控,一旦有了數據庫用戶,他們想查詢任何數據都可以。有一種折衷的辦法是視圖,建立一個新用戶后,僅給他們某個視圖的權限。
未經授權和批準絕不能修改或泄漏agile用戶密碼。agile用戶密碼修改需要配套修改其他設置,否則Agile系統將無法使用.
時區問題
由于PLM要兼容各個國家的不同時區。PLM數據庫中存的所有時間字段都是零時區時間。查詢顯示時需要根據當地時區換算。
例如:我們國家屬于東8區,取出來之后要+8小時才是實際時間。參考sql如下:
--變更發布時間查詢 select C.CHANGE_NUMBER, c.release_date + 8/24 from agile.change cAgile表結構
數據表
物料
表說明
-- 物料表 select * from agile.item;-- 物料視圖 select * from agile.ITEM_query; select * from agile.ITEM_P2_QUERY; select * from agile.ITEM_P2P3_QUERY; select * from agile.ITEM_P2P3_QUERY_ALL_REV;-- 物料歷史記錄 select i.item_number,t.* from ITEM_HISTORY t inner join ITEM i on t.item = i.id where I.ITEM_NUMBER like '03.08.%'表結構說明
item_number 物料編碼
CLASS 一級分類
SUBCLASS 二級分類
DESCRIPTION 描述(物料名稱)
DEFAULT_CHANGE 最新的變更單ID
RELEASE_TYPE 生命周期ID
REV_NUMBER 版本號
BOM
表說明:
參考 ItemBom.map.xml
SELECT * FROM agile.bom b;--工位表(bom字段關聯bom表id字段,一個工位一行記錄,可能存在超過4000的問題) select * from REFDESIG t where bom = 72624583;-- 大文本字段存儲表,bom注釋(id為物料id,row_id為bom的id) select * from AGILE_FLEX t where t.text in ('sjj12','sjj');--PLM物料Bom查詢(只查一層)不帶工位, BOM注釋 SELECT b.*, ic.DESCRIPTION ,l.value AS sub_class_text ,ls.value AS life_cycle ,ip.ITEM_NUMBER AS parent_item_number ,lp.value as parent_life_cycle FROM agile.bom b INNER JOIN agile.ITEM_QUERY ip ON b.item = ip.id INNER JOIN agile.ITEM_QUERY ic ON b.component = ic.id left JOIN agile.LANGTABLE lp ON ip.RELEASE_TYPE = lp.id AND lp.type = 4450 AND lp.langid = 4 INNER JOIN agile.LANGTABLE l ON ic.SUBCLASS = l.id AND l.type = 4450 AND l.langid = 4 INNER JOIN agile.LANGTABLE ls ON ic.RELEASE_TYPE = ls.id AND ls.type = 4450 AND ls.langid = 4 WHERE NVL(b.CHANGE_OUT, 0) = 0 AND SUBSTR(b.FLAGS, 5, 1) = 1 and ls.value not in ('報廢','停產','退市') and lp.value in ('報廢','停產','退市') and ip.ITEM_NUMBER like '02.88.000026' and ic.ITEM_NUMBER like '03.%'表結構說明
ITEM 父物料ID
COMPONENT 子物料ID
ITEM_NUMBER 子物料編碼
QUANTITY:子料用量,文本字段??芍С址謹?#xff0c;例如:1/6
CHANGE_IN 新增時的變更單ID
CHANGE_OUT:刪除時的變更單ID
PRIOR_BOM:如果不為空,代表該行數據變更了另一行數據,值為另一行數據ID。
FIND_NUMBER:查找編號,目前沒用起來.
FLAGS,bom分錄狀態(第5位數為1代表有效)
活動
class表示大類(關口和活動), subclass表示小類(關口, 任務, 計劃, 階段)
subclass=18027:計劃(項目),
subclass=18028:階段,
subclass=18029:任務,
subclass=18401:關口,
業務關系:
計劃(項目)包含階段, 階段包含任務和關口, 某些任務完成以后, 關口才能打開, 才能進行下一階段的任務
PARENT_ID:上一層對象的id,比如任務的parent_id會指向階段,階段的parent_id指向計劃.
ROOT_ID:最上層對象的id,也就是計劃的id
status:狀態信息-狀態。
值的具體含義:(每個環境可能不一樣,建議使用statustype)
18516 未開始
18517 進程中
18518 完成
18519 已取消
18540 已取消
18539 已打開
18537 已關閉
18538 審閱中
價格
表說明
-- 價格主表 SELECT * FROM agile.PRICE p;-- 價格子行 SELECT * FROM agile.priceline pl;PRICE:對應價格
PRICELINE:對應價格的定價頁簽數據。也就是價格里面一行,即階梯價格。當價格新建之后會有一條很多字段都是null與之對應,往定價中新增記錄之后會是2條數據。
價格和BOM類似也存在版本管理,在流程中也能對價格進行增刪改操作,流程走到發布節點才會生效.
流程中未生效的數據也是存在PRICELINE表的.
PRICE表結構
price_type:價格類型。1:代表量產價,0:為樣品價;
price_number:價格編號。相當于物料編碼。
owner:創建人。
supplier:對應的供應商。
item:對應的物料。制造商部件型價格這個字段為空。
mfr_part:對應的制造商部件。物料型價格這個為空。
default_change:默認的最新的價格變更
delete_flag:刪除標識。0:代表未刪除。
flags:狀態標識。剛新建時第三位是1。加入變更單之后第4位變為1
part_number:物料型價格這個字段記錄物料編碼;制造商部件價格這個字段記錄:制造商名稱::制造商部件編號
PRICELINE表結構
price:外鍵,關聯price表ID。
change_in:價格行新增的表更單id,如果是0代表走變更之前就新增好的。如果是空則代表無效數據。
change_out:只要有值代表該行已被刪除且流程已發布。流程如果還未發布,則依然會是0。刪除別人的行in和out相等。
prior_row:如果該行修改了另一個行,這里記錄被操作行id。
flags:狀態標識。在變更中新增全為0,變更之前新增第4和第5位為1。不受PCO影響。
quantity:數量
effective_from_date:生效開始日期
effective_end_date:生效結束日期
currency_code:貨幣代碼
material_price:材料價格
變更
表說明:
-- 變更 2473549:EcoBOM select * from agile.change c where c.CHANGE_NUMBER in ('C0095253');--變更受影響物件查詢 SELECT c.change_number, i.* FROM AGILE.REV R INNER JOIN AGILE.ITEM I ON R.ITEM = I.ID INNER JOIN AGILE.CHANGE C ON R.CHANGE = C.ID INNER JOIN agile.LANGTABLE l on c.SUBCLASS = l.id and l.type = 4450 and l.langid = 4 WHERE I.CLASS = 10000 AND C.CREATE_DATE > '2018-01-01' and l.value in ('自制件料號申請與BOM發布流程','ECO-BOM變更流程')供應商
表說明:
--供應商 select * from ORGANIZATION where org_number in ('RM.00652');制造商
MANUFACTURERS:制造商
MANU_PARTS:制造商部件
MANU_BY:制造商和部件關系表
產品服務請求
表說明:
--缺陷 select * from PSR t where t.status = 2477843;文件
Attachment:附件表
Floder:文件夾表
所有數據
agile_objects對象視圖,僅有CLASS, SUBCLASS, KEY_FIELD, DESCRIPTION
--大部分數據對象表,但僅有很少字段 select * from agile_objects;歷史記錄
EVENT_HISTORY:事件歷史表
前文提到的:
CHANGE_HISTORY:變更歷史表
ITEM_HISTORY:物件歷史表
公共表
第二頁,第三頁
PLM中大部分數據對象都會有第二頁和第三頁。
第二頁中存儲的是分類中一二級分類的公共字段。對應的表是PAGE_TWO
第三頁中存儲的是三級分類中特殊字段。對應的表是PAGE_THREE
第二頁和第三頁跟對象表的關聯方式,根據對象表的ID和Class字段去第二頁,第三頁表中做關聯查詢。例如:
--第二頁 select * from agile.PAGE_TWO t2; --第三頁 select * from agile.PAGE_THREE t2; --物件關聯第二頁 select * from item i inner join page_two p2 on i.id=p2.id and i.class = p2.classPLM中很多常用對象的第二頁,第三頁信息已經做了視圖,可以直接用視圖來查詢
每個字段對應的含義或名稱請結合PLM管理控制臺查詢。
大文本字段
對于varchar2 4000以內的內容直接存儲在第二頁和第三頁。但如果超過4000則是存在下面的表中。
-- 大文本存儲表,bom注釋(id為物料id,row_id為bom的id) select * from AGILE_FLEX t inner join bom b on t.row_id = b.id and t.id = b.item where t.text in ('sjj2','sjj');多列表
多列表選擇的值數量比較小時是以",id1,id2,id3,"存儲在第二頁和第三頁中的。但如果超過一定數量這個字段會變成“-1”然后需要從msatt表查詢。
管理配置
列表
listname:列表表
Listentry:列表項
列表項id:entryid
列表項值:entryvalue
列表項之間父子關系:parent_entry
列表項分類:parentid
列表項分類id可以去后臺管理系統的“設置-數據設置-列表”中查詢
--列表定義表,層疊列表用parent_list鏈接父子列表 select * from agile.LISTNAME WHERE name like '%物料組%';--列表子行 父子記錄通過parent_entry關聯,parentid用于區分不同的列表項 select * from agile.LISTENTRY l where l.parentid in (2477261) and langid in (0,4);--修復生命周期專用SQL display值應該為0. select * from agile.listname where id = 301; update listname set display = 0 where id = 301;--生命周期查詢 select ip.*,lp.value from agile.ITEM_QUERY ip INNER JOIN agile.LANGTABLE lp ON ip.RELEASE_TYPE = lp.id AND lp.type = 4450 AND lp.langid = 4用戶
表說明:
-- plm用戶表 select * from agile.AGILEUSER where loginid = 'zhangsan'-- 用戶組 select * from agile.user_group where id = 6039858貨幣轉換
CONVERSION:貨比轉換配置
-- 轉換(貨幣) select * from agile.CONVERSION c where c.CONV_EFFECTIVE_TO_DATE is null;系統配置
表說明:
-- 查詢PLM進程擴展 select * from PROPERTYTABLE p inner join NODETABLE n on p.parentid = n.id where n.PARENTID = 10025 and p.value like '%PCBCreateItem%'-- 查詢PLM事件程序 select * from agile.PROPERTYTABLE p inner join agile.NODETABLE n on p.parentid = n.id and propertyid = 885 where n.PARENTID = 2000011631 and p.value like '%CheckSCSupplier%'總結
以上是生活随笔為你收集整理的Agile PLM 表结构说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cisco Vlan trunk
- 下一篇: kalibr源码解析之fov模型重投影误