iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 5
1
自我挑戰組

Aras PLM開發練功30天系列 第 5

[Aras Day5]RelationShips-寫一個簡單的表單關聯頁籤檢查

  • 分享至 

  • xImage
  •  

到了第5天,我想應該正式來提升程式難度,看得越多範例程式碼,才能體會出Aras真正的好處。

就讓我先新增 Work Order,並且在下方的Part頁籤Create Related的方式建立4筆資料。
建立關聯物件

然後在work order的ItemType Server Event新增事件
新增事件

程式碼內容

Innovator inn=this.getInnovator();

//讀取關聯表
Item related_part_items=inn.newItem("work_order_part","get");
related_part_items.setProperty("source_id",this.getID());
related_part_items=related_part_items.apply();

//判斷是否讀取錯誤
if(related_part_items.isError()==false){
    //建立迴圈
    for(int i=0 ; i< related_part_items.getItemCount();i++){
        Item related_table_item = related_part_items.getItemByIndex(i);//讀取關聯表物件
        Item part=related_table_item.getRelatedItem();//讀取關聯物件
        if(part.getProperty("name","")=="xxx1"){
            return inn.newError("Item is xxx1");
        }
        
    }
}
return this;

結果

Aras中,關聯表會自動產生source_id去記錄父親物件ID,related_id則記住子階物件或關聯物件。

父親物件  <------- (source_id)RelationShip關聯表(related_id) --------> 子階物件

因此程式上先用source_id條件篩選與此物件ID相同的關聯表物件,再來用迴圈執行自己所需要的功能,如驗證、修改資料等等,還有一個重點,關聯物件剛新增的時候,是不存在於資料庫上的,所以把程式放到onBeforeUpdate會讀取不到關聯表(此時還未建立),初學者可以自行嘗試看看。


上一篇
[Day4] AML ? 屬於Aras 的XML格式
下一篇
[Aras Day6] RelationShips-關聯表加總數字欄位檢查
系列文
Aras PLM開發練功30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
qoo456
iT邦新手 5 級 ‧ 2019-10-29 10:00:15

你文中提到:Aras中,關聯表會自動產生source_id去記錄父親物件ID,related_id則記住子階物件或關聯物件。
尤其是關聯表會自動產生source_id這句話,我自建反而不會自動產生source_id,只能自己手動建立,然後延用你的程式讀取source_id反而會出錯,為什麼??
再者新增資料後再刪除,反而主itemtype資料可以清除,但子itemtype卻無法刪除??
附上兩張主從itemtype的圖
https://ithelp.ithome.com.tw/upload/images/20191029/20122497u7dwJGMMk3.jpghttps://ithelp.ithome.com.tw/upload/images/20191029/201224979PRWK17WOz.jpg

iT邦新手 3 級 ‧ 2019-10-30 14:38:33 檢舉

哈囉~
關聯表是指你圖上的work_order_part這個名稱的itemtype
你的狀況是

work_order  <------- (source_id)work_order_part關聯表(related_id) --------> work_order_part2
qoo456 iT邦新手 5 級 ‧ 2019-11-07 15:28:41 檢舉

父workorder ; 子workorder_part2
workorder <------- (source_id)work_order_part關聯表(related_id) --------> workorder_part2
是的

Q1:你文中提到:Aras中,關聯表會自動產生source_id去記錄父親物件ID,related_id則記住子階物件或關聯物件。
尤其是關聯表會自動產生source_id???
我個人只能手動建立連結workorder_part2->source_id,如上圖(workorder_part2那張)所示。你是用什麼手法,可以自動生成source_id的關聯???

Q2:我建立父workorder與子workorder_part2,然後新增資料後,又刪除它但是workorder_part2的資料並沒有被刪除
前幾天,問了PLM顧問,他說:PLM刪除父workorder資料與父workorder和子workorder_part2關聯,子workorder_part2的資料要另外刪除,請問他的說法是對的嗎???

我要留言

立即登入留言