戰(zhàn):從 ItemType 建模到表單權(quán)限配置)
簡(jiǎn)介這份 Aras PLM 學(xué)習(xí)文檔面向剛接觸產(chǎn)品生命周期管理系統(tǒng)的工程師、實(shí)施人員與運(yùn)維管理者幫助其系統(tǒng)掌握 Aras PLM 的用戶、權(quán)限與數(shù)據(jù)建模機(jī)制。資源包內(nèi)含 1 個(gè) docx 文件壓縮包約 11.06MB以 Word 手冊(cè)形式組織便于檢索與打印。文檔圍繞系統(tǒng)管理展開涵蓋用戶管理中的用戶頁面、登錄用戶、創(chuàng)建參與者與特殊參與者權(quán)限部分的權(quán)限創(chuàng)建、發(fā)現(xiàn)權(quán)限、可創(chuàng)建者權(quán)限、創(chuàng)建子類對(duì)象權(quán)限及 TOC 訪問權(quán)限以及數(shù)據(jù)類型中的列表創(chuàng)建、外部數(shù)據(jù)類型與序列配置并延伸至對(duì)象類型等模塊目錄層級(jí)清晰適合按章節(jié)逐項(xiàng)查閱。目前已有 1278 人學(xué)習(xí)下載可作為日常配置與權(quán)限排查的案頭參考。1. Aras 學(xué)習(xí)文檔從“裝完就懵”到能自己改表單的入門路徑很多團(tuán)隊(duì)第一次接觸 Aras 的場(chǎng)景都差不多老板說這套 PLM 能免費(fèi)下載IT 把安裝包裝上瀏覽器打開登錄頁然后所有人對(duì)著那個(gè)叫“Innovator”的界面發(fā)愣——菜單在哪、數(shù)據(jù)存哪、想加個(gè)字段為什么要點(diǎn)進(jìn)三層配置。Aras 學(xué)習(xí)文檔之所以被反復(fù)搜不是因?yàn)橘Y料少而是因?yàn)楣俜轿臋n偏“參考手冊(cè)”風(fēng)格它告訴你每個(gè)按鈕是什么卻不告訴你一個(gè)新人該按什么順序把整套東西跑起來。這篇筆記面向的是需要在一到兩周內(nèi)把 Aras 用起來的開發(fā)者或?qū)嵤┤藛T目標(biāo)很具體能自己建一個(gè) ItemType、掛上表單、配好權(quán)限、跑通一次增刪改查而不是停留在“知道它是個(gè) PLM 平臺(tái)”。下面按我實(shí)際帶人時(shí)用的順序展開每一步都落到可復(fù)現(xiàn)的操作和參數(shù)上。2. 先把 Aras 的“數(shù)據(jù)模型”這件事想明白為什么改表單之前必須先懂 ItemTypeAras 最勸退新人的地方是它把“數(shù)據(jù)庫表”“業(yè)務(wù)對(duì)象”“界面表單”這三樣?xùn)|西用一套概念串起來了。你如果拿傳統(tǒng) CRUD 的思路去理解會(huì)一直卡在“我字段加哪了”。這一章先把這套模型講透再動(dòng)手建第一個(gè)自定義對(duì)象。2.1 ItemType、Item、Property 三者的關(guān)系在 Aras 里ItemType 相當(dāng)于一張業(yè)務(wù)表的定義比如 Part、Document 都是內(nèi)置 ItemType。一個(gè) ItemType 下面有很多 PropertyProperty 就是字段定義它決定了這個(gè)對(duì)象能存哪些數(shù)據(jù)、字段類型是什么、是否必填。而 Item 是 ItemType 的實(shí)例也就是一條具體記錄。你新建一個(gè)零件就是創(chuàng)建了一個(gè) Part 這個(gè) ItemType 的 Item。關(guān)鍵點(diǎn)在于Property 不只是數(shù)據(jù)庫列它還攜帶了界面渲染信息。也就是說你在 ItemType 里加一個(gè) Property表單設(shè)計(jì)器里就能把它拖出來不需要另外去改前端代碼。這是 Aras 低代碼能力的核心也是新人最容易忽略的地方——很多人以為改界面要去動(dòng) HTML其實(shí)大部分場(chǎng)景在 ItemType 配置里就完成了。理解這層關(guān)系之后你再看 Aras 的目錄結(jié)構(gòu)就不會(huì)迷路Administration 下面管 ItemType 和權(quán)限D(zhuǎn)esign 下面管表單和界面實(shí)際業(yè)務(wù)數(shù)據(jù)在各自的業(yè)務(wù)菜單里。三者是配置與運(yùn)行時(shí)的關(guān)系不是三套獨(dú)立系統(tǒng)。2.2 用 AML 查詢驗(yàn)證你對(duì)模型的理解光看概念容易飄最快的驗(yàn)證方式是直接用 AMLAras Markup Language查一次數(shù)據(jù)。AML 是 Aras 的查詢語言長(zhǎng)得像 XML服務(wù)端和客戶端都用它通信。下面這段是在瀏覽器地址欄或客戶端 AML 控制臺(tái)里都能跑的查詢作用是列出當(dāng)前系統(tǒng)里所有自定義 ItemType!-- 查詢所有非系統(tǒng)內(nèi)置的 ItemTypeis_system 為 0 表示用戶自定義 -- AML Item typeItemType actionget selectname,label,is_system is_system0/is_system /Item /AML這段 AML 的邏輯很直白typeItemType指定查哪種對(duì)象actionget表示讀取select列出要返回的字段is_system0/is_system是過濾條件。跑完之后你會(huì)看到系統(tǒng)里所有自定義類型如果剛裝完這個(gè)列表大概率是空的。參數(shù)上要注意is_system這個(gè)屬性在部分版本里叫法一致但如果你查不到結(jié)果先確認(rèn)登錄賬號(hào)有沒有管理員權(quán)限普通用戶看不到 ItemType 定義。2.3 建第一個(gè)自定義 ItemType 的完整步驟現(xiàn)在動(dòng)手建一個(gè)。假設(shè)我們要做一個(gè)“設(shè)備臺(tái)賬”對(duì)象用來記錄實(shí)驗(yàn)室里的儀器。步驟按順序來第一步進(jìn)入 Administration → ItemTypes點(diǎn)新建。Name 填Equipment這是程序內(nèi)部標(biāo)識(shí)只能用英文和數(shù)字一旦保存不建議改因?yàn)楹竺?AML 和權(quán)限都引用它。Label 填“設(shè)備臺(tái)賬”這是界面上顯示的名字可以隨時(shí)改。第二步保存后切到 Properties 標(biāo)簽頁逐個(gè)加字段。至少加這幾個(gè)equipment_code設(shè)備編號(hào)String必填、equipment_name設(shè)備名稱String、purchase_date采購日期Date、status狀態(tài)List選項(xiàng)為在用/維修/報(bào)廢。加 Property 時(shí)注意 Data Type 要和業(yè)務(wù)匹配Date 類型在表單上會(huì)自動(dòng)渲染成日期選擇器List 類型需要你先在 List 配置里定義好選項(xiàng)再引用。第三步給 ItemType 設(shè)置權(quán)限。切到 Permissions 標(biāo)簽至少給當(dāng)前管理員組全部權(quán)限給普通用戶組讀權(quán)限。Aras 的權(quán)限是按 Identity 配的Identity 可以理解成用戶組后面章節(jié)會(huì)細(xì)說。第四步回到主菜單你會(huì)發(fā)現(xiàn)“設(shè)備臺(tái)賬”還沒出現(xiàn)在導(dǎo)航里。這是因?yàn)?ItemType 建好之后還需要掛到某個(gè) TOC目錄或者通過搜索訪問。最快的驗(yàn)證方式是直接在搜索框里搜 Equipment能搜到就說明對(duì)象建成了。提示ItemType 的 Name 一旦被 AML 或權(quán)限引用改名會(huì)導(dǎo)致引用失效。我一般建議先用一個(gè)臨時(shí)名建好驗(yàn)證流程確認(rèn)字段設(shè)計(jì)沒問題后再正式命名。3. 表單和界面怎么改從默認(rèn)表單到自定義布局的落地操作ItemType 建好之后系統(tǒng)會(huì)給一個(gè)默認(rèn)表單字段按字母序排列能用但不好看。這一章講怎么把表單改成業(yè)務(wù)人員愿意用的樣子以及改界面時(shí)哪些操作會(huì)觸發(fā)緩存問題。3.1 表單設(shè)計(jì)器的基本操作和字段綁定進(jìn)入 Design → Forms找到剛才那個(gè) Equipment 對(duì)應(yīng)的表單。Aras 的表單設(shè)計(jì)器是拖拽式的左側(cè)是可用字段列表右側(cè)是畫布。你把字段從左側(cè)拖到畫布上就完成了綁定。每個(gè)字段在畫布上是一個(gè) HTML 控件可以調(diào)寬度、換行、分組。這里有個(gè)容易翻車的點(diǎn)字段拖上去之后屬性面板里的“Field Name”必須和 ItemType 里的 Property Name 完全一致大小寫敏感。如果對(duì)不上表單能保存但運(yùn)行時(shí)字段是空的而且不報(bào)錯(cuò)。我見過有人把equipment_code寫成Equipment_Code排查了半天以為是權(quán)限問題。表單布局建議按業(yè)務(wù)分組比如“基本信息”放編號(hào)、名稱“采購信息”放日期“狀態(tài)信息”放狀態(tài)字段。Aras 支持 Field Group 容器把相關(guān)字段放一個(gè)組里界面上會(huì)顯示成一個(gè)帶標(biāo)題的區(qū)塊比一堆字段平鋪好看得多。3.2 用 CSS 和事件做最小化定制表單設(shè)計(jì)器能覆蓋大部分場(chǎng)景但有些交互它做不了比如“選了報(bào)廢狀態(tài)之后采購日期變灰”。這種需求要用表單事件。Aras 的表單支持在字段上掛 onchange 事件寫 JavaScript。下面這段是給 status 字段掛的事件邏輯是當(dāng)狀態(tài)為“報(bào)廢”時(shí)禁用 purchase_date// 掛在 status 字段的 onchange 事件上 // 參數(shù) sender 是觸發(fā)事件的字段對(duì)象value 是當(dāng)前選中的值 var purchaseDateField document.getFieldByName(purchase_date); if (value 報(bào)廢) { // 禁用字段用戶無法編輯 purchaseDateField.disabled true; // 視覺上置灰避免用戶困惑 purchaseDateField.style.backgroundColor #f0f0f0; } else { purchaseDateField.disabled false; purchaseDateField.style.backgroundColor ; }這段代碼的關(guān)鍵是document.getFieldByName它按 Property Name 拿到表單上的字段對(duì)象。disabled屬性控制是否可編輯style控制外觀。參數(shù)上要注意value是 List 字段選中項(xiàng)的 value 而不是 label如果你在 List 配置里 value 和 label 不一樣這里要寫 value。改完表單和事件之后一定要清緩存。Aras 客戶端緩存很頑固不清緩存你會(huì)以為代碼沒生效。清緩存的方式是在客戶端里按 CtrlShiftR或者退出重新登錄。我一般改一次清一次不省這一步。3.3 表單改動(dòng)后必須驗(yàn)證的三件事改完表單別急著交付按這三條過一遍第一用不同權(quán)限的賬號(hào)登錄確認(rèn)字段的可見性和可編輯性符合預(yù)期。管理員能看到所有字段普通用戶可能只能看不能改這個(gè)要在 ItemType 的 Permissions 和表單的字段級(jí)權(quán)限里同時(shí)配。第二新建一條記錄填完所有必填字段保存再打開編輯確認(rèn)數(shù)據(jù)回顯正確。這一步能抓出字段綁定錯(cuò)誤和數(shù)據(jù)類型不匹配的問題。第三觸發(fā)一次你寫的事件邏輯確認(rèn)行為符合預(yù)期。比如上面那個(gè)報(bào)廢禁用日期的例子把狀態(tài)改成報(bào)廢看日期字段是不是真的灰了。注意表單設(shè)計(jì)器里的改動(dòng)是即時(shí)保存的沒有“撤銷”按鈕。改之前最好在測(cè)試環(huán)境先做一遍或者至少記下改了什么出問題能回退。4. 權(quán)限和身份體系為什么你配了權(quán)限但用戶還是看不到數(shù)據(jù)權(quán)限是 Aras 學(xué)習(xí)曲線里第二陡的地方第一陡的是數(shù)據(jù)模型。很多人配完權(quán)限發(fā)現(xiàn)用戶還是看不到數(shù)據(jù)或者能看到但改不了問題往往出在 Identity 的繼承關(guān)系上。這一章把權(quán)限模型拆開講并給出排查順序。4.1 Identity、Permission、Access 三者的關(guān)系A(chǔ)ras 的權(quán)限體系有三個(gè)層次Identity 是身份可以理解成用戶或用戶組Permission 是權(quán)限條目把某個(gè) Identity 和某個(gè) ItemType 關(guān)聯(lián)起來指定這個(gè) Identity 對(duì)這個(gè) ItemType 有什么權(quán)限Access 是具體的權(quán)限級(jí)別比如 get、update、delete、create。關(guān)鍵點(diǎn)在于 Identity 可以嵌套。比如“研發(fā)組”這個(gè) Identity 下面有“結(jié)構(gòu)工程師”和“電子工程師”兩個(gè)子 Identity那么給“研發(fā)組”配的權(quán)限子 Identity 自動(dòng)繼承。這個(gè)繼承關(guān)系是單向的子繼承父父不繼承子。很多人配權(quán)限時(shí)給子組配了但用戶屬于父組結(jié)果用戶沒權(quán)限就是沒搞清楚繼承方向。另外Aras 有一個(gè)“World” Identity代表所有登錄用戶。如果你給 World 配了讀權(quán)限那所有用戶都能讀。這個(gè)在設(shè)計(jì)公開數(shù)據(jù)時(shí)有用但要注意別不小心把敏感數(shù)據(jù)的讀權(quán)限給了 World。4.2 配一次完整的權(quán)限并驗(yàn)證假設(shè)我們要讓“設(shè)備臺(tái)賬”滿足管理員能增刪改查普通用戶只能查和改狀態(tài)字段不能刪。步驟第一步在 Administration → Identities 里確認(rèn)有“管理員組”和“普通用戶組”兩個(gè) Identity沒有就新建。把對(duì)應(yīng)用戶賬號(hào)分別加進(jìn)這兩個(gè)組。第二步回到 Equipment 這個(gè) ItemType 的 Permissions 標(biāo)簽添加兩條權(quán)限條目。第一條Identity 選管理員組Access 勾選 get、update、delete、create。第二條Identity 選普通用戶組Access 只勾 get 和 update。第三步字段級(jí)權(quán)限。普通用戶雖然能 update但我們只想讓他改 status。這個(gè)要在表單的字段屬性里配找到 status 字段在權(quán)限設(shè)置里只給普通用戶組可編輯其他字段設(shè)為只讀。第四步驗(yàn)證。用普通用戶賬號(hào)登錄打開一條設(shè)備記錄確認(rèn)能改狀態(tài)、不能改編號(hào)、看不到刪除按鈕。如果刪除按鈕還在檢查 ItemType 權(quán)限里普通用戶組是不是誤勾了 delete。4.3 權(quán)限排查的固定順序用戶反饋“看不到數(shù)據(jù)”時(shí)按這個(gè)順序查能省很多時(shí)間先查用戶屬于哪個(gè) Identity再查這個(gè) Identity 對(duì)目標(biāo) ItemType 有沒有 get 權(quán)限然后查這個(gè) Identity 有沒有被嵌套在某個(gè)有權(quán)限的父 Identity 下最后查數(shù)據(jù)本身有沒有被“Can View”之類的字段級(jí)權(quán)限擋住。這四步走完九成權(quán)限問題能定位。提示Aras 的權(quán)限改動(dòng)有時(shí)需要用戶重新登錄才生效因?yàn)闄?quán)限在會(huì)話初始化時(shí)加載。改完權(quán)限讓用戶退出重進(jìn)別在緩存上浪費(fèi)時(shí)間。5. 避坑與常見問題Aras 上手階段最容易翻車的五個(gè)點(diǎn)這一章是我?guī)诉^程中反復(fù)遇到的坑每個(gè)都按“現(xiàn)象 → 原因 → 解決”寫你對(duì)照自己的情況看。現(xiàn)象一AML 查詢返回空但數(shù)據(jù)明明存在。原因通常是查詢條件里的屬性名寫錯(cuò)了或者權(quán)限不夠?qū)е路?wù)端過濾掉了結(jié)果。解決先用管理員賬號(hào)跑同樣的 AML如果管理員能查到就是權(quán)限問題如果管理員也查不到檢查屬性名大小寫和 ItemType 的 Name 是否一致?,F(xiàn)象二表單改了但界面沒變化。原因是客戶端緩存。解決CtrlShiftR 強(qiáng)制刷新或者退出重新登錄。如果還不行檢查你改的是不是當(dāng)前用戶所屬的 FormAras 支持按 Identity 分配不同表單可能你改的表單不是用戶實(shí)際看到的那個(gè)?,F(xiàn)象三新建 ItemType 后搜索不到。原因是 ItemType 沒有加入任何 TOC 或搜索索引。解決在 ItemType 配置里確認(rèn)“Search”相關(guān)選項(xiàng)已啟用或者手動(dòng)把它加到某個(gè)目錄下。最直接的方式是用 AML 查一次確認(rèn)對(duì)象存在然后通過搜索框的“高級(jí)搜索”找到它?,F(xiàn)象四字段類型改了但舊數(shù)據(jù)報(bào)錯(cuò)。比如把 String 改成 Date舊數(shù)據(jù)里存的是文本轉(zhuǎn)換會(huì)失敗。解決Aras 不允許直接改已有數(shù)據(jù)的字段類型正確做法是新建一個(gè) Property用 AML 或腳本把舊數(shù)據(jù)轉(zhuǎn)換后寫入新字段再刪舊字段。這個(gè)操作不可逆改之前備份數(shù)據(jù)庫。現(xiàn)象五事件代碼不執(zhí)行。原因可能是事件掛錯(cuò)了字段或者代碼里有語法錯(cuò)誤被靜默吞掉了。解決打開瀏覽器開發(fā)者工具的控制臺(tái)看有沒有報(bào)錯(cuò)。Aras 的事件代碼報(bào)錯(cuò)不會(huì)彈窗只在控制臺(tái)輸出不看控制臺(tái)等于閉著眼睛調(diào)試。6. 進(jìn)階技巧用 AML 腳本批量導(dǎo)入數(shù)據(jù)并做一次完整性校驗(yàn)當(dāng)你把模型、表單、權(quán)限都跑通之后下一步通常是要把現(xiàn)有 Excel 里的設(shè)備臺(tái)賬導(dǎo)進(jìn)去。手工一條條建不現(xiàn)實(shí)用 AML 腳本批量導(dǎo)入是標(biāo)準(zhǔn)做法。這一章給一個(gè)可復(fù)現(xiàn)的導(dǎo)入加校驗(yàn)方案。6.1 從 CSV 生成 AML 導(dǎo)入腳本假設(shè)你有一個(gè)equipment.csv三列編號(hào)、名稱、采購日期。下面這段 Python 讀 CSV 并生成 AML 文件import csv # 讀取 CSV生成 Aras 可執(zhí)行的 AML 導(dǎo)入文件 # 每行數(shù)據(jù)生成一個(gè) Item 節(jié)點(diǎn)type 對(duì)應(yīng)之前建的 Equipment with open(equipment.csv, encodingutf-8) as f, open(import.aml, w, encodingutf-8) as out: out.write(AML\n) reader csv.DictReader(f) for row in reader: out.write( Item typeEquipment actionadd\n) out.write(f equipment_code{row[編號(hào)]}/equipment_code\n) out.write(f equipment_name{row[名稱]}/equipment_name\n) out.write(f purchase_date{row[采購日期]}/purchase_date\n) out.write( /Item\n) out.write(/AML\n)這段腳本的邏輯是拼 XML 字符串a(chǎn)ctionadd表示新增。參數(shù)上要注意日期格式Aras 默認(rèn)接受yyyy-MM-dd如果你的 CSV 里是2024/1/5這種要先在 Python 里轉(zhuǎn)格式否則導(dǎo)入會(huì)失敗或存成空值。6.2 導(dǎo)入后做一次完整性校驗(yàn)導(dǎo)入完成不代表數(shù)據(jù)沒問題。用下面這段 AML 查一次找出所有必填字段為空的記錄!-- 查找 equipment_code 為空的記錄這類數(shù)據(jù)屬于導(dǎo)入異常 -- AML Item typeEquipment actionget selectequipment_code,equipment_name equipment_code conditionis null/equipment_code /Item /AMLconditionis null是 AML 的空值判斷語法。跑完之后如果返回結(jié)果說明 CSV 里有空編號(hào)的行需要回源頭補(bǔ)數(shù)據(jù)再重新導(dǎo)入。這個(gè)校驗(yàn)步驟我每次導(dǎo)入都會(huì)做比導(dǎo)入完再人工翻列表靠譜得多。6.3 把校驗(yàn)做成習(xí)慣批量操作最怕的是“以為成功了”。我的習(xí)慣是任何批量導(dǎo)入之后至少跑三條校驗(yàn)——總數(shù)對(duì)不對(duì)、必填字段有沒有空、關(guān)鍵字段的值域?qū)Σ粚?duì)。這三條用 AML 都能查花不了幾分鐘但能避免把臟數(shù)據(jù)帶進(jìn)正式環(huán)境。Aras 學(xué)習(xí)文檔里很少強(qiáng)調(diào)這一點(diǎn)但實(shí)際項(xiàng)目里數(shù)據(jù)質(zhì)量出問題比功能不會(huì)用更麻煩。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取