在Aras世界中,物件傳遞給資料庫都是透過AML完成,在前幾次的簡易程式碼中,是否能看出一些端倪呢?
先來看幾個例子
新增一支空白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;
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;
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的類別大概有哪些
下一回 用迴圈讀取關聯頁籤物件