網路城邦
上一篇 回創作列表 下一篇   字體:
AgentFlow-Server端範例-使用 API 取得會簽意見相關資料表格
2014/06/27 16:28:47瀏覽3296|回應0|推薦0

宏亞簽核流程中的寫法
//每個簽核人,各一次
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這兩個表格。


========================================================================================

( 知識學習其他 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=shfm1969&aid=14577414