iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 4
0
自我挑戰組

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

[Day4] AML ? 屬於Aras 的XML格式

  • 分享至 

  • xImage
  •  

在Aras世界中,物件傳遞給資料庫都是透過AML完成,在前幾次的簡易程式碼中,是否能看出一些端倪呢?

先來看幾個例子

AML Get

新增一支空白Method
新增Method
設定Method
設定Method
新增程式碼
新增程式碼

Innovator inn=this.getInnovator();

Item itm=inn.newItem("work order","get");
itm=itm.apply();

return itm;

跳出結果畫面
跳出結果畫面

透過第一行程式碼,會組串一段AML的文字,action="get"表示讀取,並且第二行apply將AML送給後端處理,回傳結果如上圖有兩筆資料,之後便可以使用迴圈把兩筆資料依序讀取。

同樣地,現在把程式換一個方式來讀取兩筆資料,而且要利用AML的方式來達成

Innovator inn=this.getInnovator();

Item itm=inn.applyAML("<AML><Item type='work order' action='get'></Item></AML>");

return itm;

AML Add

Innovator inn=this.getInnovator();

Item itm=inn.newItem("work order","add");
itm.setProperty("cost","1234"); //新增的欄位值
itm.setProperty("name","my_name"); //新增的欄位值
itm=itm.apply();

return itm;
Innovator inn=this.getInnovator();

Item itm=inn.applyAML("<AML><Item type='work order' action='get'><cost>222</cost><name>my_name2</name></Item></AML>");

return itm;

AML Edit

Edit和Update做的事情一樣是修改,但是有個差別點,Update必須執行前讓物件成為上鎖狀態,修改後再執行解鎖,保護資料修改的當下沒有其他人正在操作。

Innovator inn=this.getInnovator();

Item itm=inn.newItem("work order","edit");
itm.setAttribute("where","[work_order].id='2B80CBF7D41643E6AB111086C0627BCD'"); //修改的物件ID值為多少
itm.setProperty("cost","555"); //修改的欄位值
itm=itm.apply();

return itm;
Innovator inn=this.getInnovator();

Item itm=inn.applyAML("<AML><Item type='work order' action='edit' where=\"[work_order].id='2B80CBF7D41643E6AB111086C0627BCD'\"><cost>222</cost></Item></AML>");

return itm;

上面是舉例了簡單的部分,比較一下AML與C#的寫法,理解Aras是如何對資料庫存取,不少人剛學習的時候對於XML完全不了解,所以也不懂AML到底在處理什麼,因此Aras提供一個C#、VB、JavaScript的函式庫,讓工程師不用在意AML就能開始對資料庫進行操作。

還有一個applySQL("SQL語法")這是可以直接使用SQL語法存取資料,但是回傳值Item物件,這個API也常常使用到串表上,因為真的很方便!!不過只能限定在C#與VB才能使用,JavaScript在前端機制上是不採用的,要注意一下。

最後放上Aras AML的類別大概有哪些
Aras AML Action

下一回 用迴圈讀取關聯頁籤物件


上一篇
[Aras Day3] Server Event-OnAfterUpdate & this物件
下一篇
[Aras Day5]RelationShips-寫一個簡單的表單關聯頁籤檢查
系列文
Aras PLM開發練功30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言