宏亞簽核流程中的寫法
//每個簽核人,各一次
java.lang.System.out.println("********加會簽-後置動作");
appendCSNoteToProcessTable_table3();//ServerAction 會簽紀錄 寫入Table3
function appendCSNoteToProcessTable_table3() {
var realExecutor = MyTask.getRealExecutor();
var realMbr = Server.getMemberByID(realExecutor);
var realName = realMbr.getName();
var thisForm = MyTask.getArtInstance();
var thisTaskName = MyTask.getName();
var tskID = MyTask.getID();
var addSignTskList = Server.getAddSignTaskList(tskID); //取得加會簽工作
var asTskSize = addSignTskList.size(); //取得加會簽數量
if(asTskSize > 0){ //若加會簽大於0才要執行
for(var i=0;i
var signTskList = addSignTskList.get(i); //得到各別加會簽資料
var memName = signTskList.getName(); //取得簽核者名稱
var processName = signTskList.getProcessName(); //取得簽核節點名稱
if ((realName == memName) && (thisTaskName == processName)) { //利用姓名及簽核節點名稱來判斷是否已寫入Table3
var type = signTskList.getATaskType(); //取得加會簽工作種類
if(type.equals(MyTask.ADD_PARALLEL_ANNOUNCE)) type = "分會";
else if(type.equals(MyTask.ADD_SEQUENTIAL_ANNOUNCE)) type = "串會";
else if(type.equals(MyTask.ADD_SEQUENTIAL_SIGN)) type = "串簽";
var roleName = signTskList.getRole(); //取得會簽職務名稱
var result = getSingResultCName(signTskList.getSignResult()); //取得會簽結果之中文名稱
var msg = signTskList.getMsg(); //該加會簽關卡意見
msg = "[" + result + "]," + msg;
var format = new Packages.java.text.SimpleDateFormat();
format.applyPattern("yyyy/MM/dd HH:mm");
var time = format.format(Server.getServerTime());//取得會簽時間
//寫入TABLE3
var dataMap = thisForm.getAppDataMap();
var tableVector = dataMap.get("Table3");
var row = tableVector.size();
var seq = row + 1 ;
var rowMap = new java.util.HashMap();
rowMap.put("ITEM7",seq);
rowMap.put("ITEM8",processName);
rowMap.put("ITEM5",time);
rowMap.put("ITEM6",roleName);
rowMap.put("ITEM4",memName);
rowMap.put("ITEM3",false);
rowMap.put("ITEM2",false);
rowMap.put("ITEM1",msg);
tableVector.add(rowMap);
}
}//end of for
}//end of if
}//end of function
function getSingResultCName(result,fgAgree,fgDeny){ //將會簽結果轉換為中文
if(result.equals("Agree")) result = "同意";
else if(result.equals("Disagree")) result = "不同意";
else if(result.equals("ok")) result = "核准";
else if(result.equals("reject")) result = "駁回";
else result = "沒意見";
return result;
}
==================================================================================
問題:如果我要在server端將原有table 的data 清空,那應該怎麼做,
因為我發現每次執行完setAppDataMap("Table")之後,原本的data都還是存在,
造成越來越多資料.可否提供正確程式範例?
PS.目前我們知道 Client 端 table 元件只要呼叫 table.clear();即可。
回覆:
Case 1.若您要清空 table 元件所有資料者,請使用下列程式範例,如下:
//如欲全部清空
var artIns = MyTask.getArtInstance();
var dataMap = artIns.getAppDataMap();
var tableVector = dataMap.get("tableName");
tableVector.removeAllElements();
Case2. 針對Server 端清空 table 元件欲清空某一筆資料,
並不能應用add而是要get原有的hashmap
//正確寫法應修正如下
var artIns = MyTask.getArtInstance();
var dataMap = artIns.getAppDataMap();
var tableVector = dataMap.get("tableName");
//ex.清空第5筆資料
var rindex = 5;
var rowMap = tableVector.get(rindex);
if(rowMap!=null){
rowMap.put("ITEM1","");
rowMap.put("ITEM2","");
rowMap.put("ITEM3","");
}
Case3.其他補充說明事項:
Server 端程式範例說明如下:
var artIns = MyTask.getArtInstance();
var dataMap = artIns.getAppDataMap();
var tableVector = dataMap.get("tableName");
var rowMap = new java.util.HashMap();
rowMap.put("ITEM1","");
rowMap.put("ITEM2","");
rowMap.put("ITEM3",""); //請注意:table的每個欄位都要put ,即使是不填資料也要放空字串,其中ITEM1代表ART123456789012Item52對應Columnheader欄位名稱。
tableVector.add(rowMap);
//另外可參考另外一個寫法方法如下:
var vc1 = new java.util.Vector();
artIns.setAppValue("tableName",tableVector);
artIns.setAppValue("tableName",vc1);
其它補充說明如下:
流程實際執行啟動Task 之表單存檔後,其資料庫內會產生5個Table代表此一表單,下列表單編號定義 請參照PDE 文件設定~ 編輯此文件查詢 隸屬該專案表單編號。
ART123456789012_Form 表單元件屬性
ART123456789012_Ins 表單目前所存資料
ART123456789012_Log 表單各關當時資料
ART123456789012Item52 表單內table元件目前所存資料
ART123456789012Item52Log 表單內table元件各關當時資料
所以我們設計之專案範例本身e-Form 就有Table 元件。故
會自動產生 ART123456789012Item52Log、ART123456789012Item52這兩個表格。
========================================================================================