一般導入Agentflow的公司大多會開發請假系統。雖然它會讓人覺得沒有甚麼效益,但是它卻是公司用最多且不可或缺的電子表單機制。筆者幫客戶開發了許多差勤相關的系統,以我們的經驗大概可以分成三類。
1.
假卡型
這類型的公司多半沒有處理請假的人事系統,人事系統多半是應用來計算薪資,而沒有結合請假處理機制。請假的方式多由請假人向人事單位拿自己的假卡,看看自己目前所剩的假期,再透過紙本的方式向老闆請假,請完假後再註記於假卡中,交還給人事單位。
人事單位每年年初會註記每個人假卡上可被允許的假。每個月依照假卡的請假資料,來計算同仁在該月的薪資。
解決方案:遇到這類型的客戶,我們會讓人事單位與同仁將原本在紙上的作業,完全改換為系統畫面。透過具有假卡功能的差勤資料庫,來記錄每個人的請假紀錄,並且利用系統自動計算請假時數與調整每年度個人允許的假期天數,當然少不了的是請假流程與表單。
對於同仁:可以線上填寫自己的請假單,並且查詢自己剩餘的假期,當然很重要的就是送交代理人與主管審核的機制,還有目前自己的請假單送到哪了。
對於人事單位:可以在每月計算出每個人被審核通過的假數,每年年初可以調整每個同仁各類假期的天數。把原本年初假卡填寫與每月計算請假天數的工作交給電腦來做。人事單位主要與請假單有關的工作,就是到月底前要盡快地催促請假單要審核完成,避免要算薪水時,還有請假單還未通過。
2.
半自動型
這類型的公司多半已有計算假期的人事系統,但是請假單是採用人工的方式,因此透過Agentflow來把紙本的請假單改為線上系統。但由於人事系統是封閉型式,無法將同仁的請假資訊取出查詢或是當請假單完成後更新至人事系統。因此請假單電子化的機制幫助了流程的自動化與效率,但是對於人事單位在假數的計算上,幫助較少。
3.
全自動型
這類型的公司與半自動型很像,只是它的人事系統是可以被整合的,因此從請假單的填寫到差勤的計算都是一氣呵成,人事單位在請假上需要花費時間的部分,應該是每月底趕著同仁把未結的請假單趕快跑完,讓人事可以來計算薪資。
除了請假的全自動化外,有的客戶還會結合刷卡機制、加班單、出差單等,讓差勤資料的計算更完整也更人性化。當然,整合的方式得因地制宜,端看客戶現行環境來調整才是。
代理人應用
不管公司是哪一種類型,請假單都會與「代理人」機制有關,透過Agentflow的代理人機制,可以讓以前紙本的假代理機制,變成真代理。請假單中會提供代理人的欄位,等到請假單審核通過後,Agentflow系統可以在指定的請假區間終將代理人機制啟動,這樣原本送到請假人手中的工作,都會轉送給代理人處理,等到請假結束,代理人還未介入處理的工作就又會還給請假人了。
不過,這些機制必須是在請假單這個流程上設計才會有效果。在流程審核通過後,要記得將請假單上的代理人以及請假日期,透過API的方式通知Agentflow流程引擎,這樣Agentflow才會記得當請假開始時,將請假人的代理人設定給表單中的代理人,並且啟動代理。
你可以在流程結束的後置動作,撰寫指定區間代理的程式碼。程式碼片段如下
setDeputy(App_MemID,
Agent_ID, startDate, startHour, startMin, endDate, endHour, endMin);
}
function
setDeputy(mID,deputyID,startDate,startHour,startMin,endDate,endHour,endMin){
var mr =
Server.getMemberByID(mID);
mr.setDeputyID(deputyID);
mr.setExeucteDeputyDuration(true);
mr.setStartExecuteDeputyTime(startDate+"
"+startHour+":"+startMin);
mr.setEndExecuteDeputyTime(endDate+"
"+endHour+":"+endMin);
Server.updateMemberRecord(mr);
}
這樣就可以依照請假單中填寫的資訊,自動啟動代理人機制了。當然,我們也可以採用手動啟動代理人,就不用寫這段程式碼了(不過,這樣就有點遜了呢!)。
另外在請假單中,要如何選擇代理人呢?最簡單的方式就是讓使用者可要選擇公司組織的任一個人來當成代理人。這時候,我們可以利用Agentflow的Role Tree功能,跳出全公司的組織來選擇。程式碼如下
Form.openRoleTreeCustom(false,
"","member","","","forms[0].Agent_Name","forms[0].Agent_ID","1");
若不喜歡組織樹的話,也可以用下拉式選單來供選擇。
這時候,可能有人會問「咦!這樣不就可以亂選代理人來代理了?」,關於這個問題,我想選定代理人後,請假單通常會送給代理人來確認是否同意,因此若選了一個不會同意的代理人,那不是讓自己的請假單一直在路上跑?通常是不會發生這種事情,我常常說「若你真的敢選總經理當你的代理人,那可能你很快就不在公司了!」,雖然這是個玩笑話,但是系統限制得越多,會越不彈性,有時候系統無法取代人,人的管理制度與文化才是最有效的。
有些公司希望代理人至少需要是自己部門的,這樣比較能夠處理請假人的工作。這時候,我們可以依然使用Agentflow的Role Tree功能來讓使用者選擇代理人,但是我們將RoleTree的範圍縮小,只允許抓取請假人同部門的人員。程式碼如下
var cMember =
Client.getCurrentMember();
var roleID =
cMember.getMainRoleID();
var memDR =
cMember.getMemberDR(roleID);
var depid =
memDR.getDepartmentID();
var myid =
Form.getValue("App_Dep_ID");
Form.openRoleTreeCustom(false,depid,"member","","","forms[0].Agent_Name","forms[0].Agent_ID","1");
當然,有時候我們希望每個人可被允許的代理人是固定的,可能是同部門,也有可能是跨部門。這時候,就建議自己設計個代理人的資料庫來設定每個人所被允許的代理人列表。在請假單的代理人下拉式選單中就只提供代理人列表中的資料供選擇。
另外設計的代理人設定資料庫
以上就請假單的代理人應用做個說明,希望能拋磚引玉,給各位同好做個參考。在代理人的部分,除了請假單上代理人的應用外,有時候,同仁會臨時請假,根本就沒送請假單。這時候,又希望能夠把他的工作轉給代理人,避免工作沒人處理。這時候就只能請IT人員透過管理工具(Administrator)來幫請假人啟動代理機制了(甚麼?你不會用?那記得去上Agentflow的課程吧!)。
可是誰要給誰代理,IT人員又不太清楚:< 嗯,這時候你可以考慮對於我們上面所提供的代理人列表機制再加工一番,加上啟動代理的機制就可以啦!如果能夠再加上讓各部門的助理可以自行設定自己部門內成員的代理人列表與啟動代理,這樣就更完美了(使用者有問題的時候,就不用打電話給IT,請IT來設定啦!)。聰明如你,一定知道怎麼做吧?我下次再跟各位分享囉!




