天啊... 過一個月了... 怎麼會忙成這樣? 滿腦子都是程式...
Partial 組織同步時新增使用者, 萬一使用者所屬部門不存在? 要不要順便考慮上層部門是否存在? 應該用 recursive 一層層往上加吧? 如果遇到虛擬機關規則為何? 遞迴回來之後使用者角色是不是部門主管? 如果部門內沒有主管是否要新增? 新增的使用者有沒有其他角色?
.
.
.
public void modifyData() {
String idx = null;
try {
stmt = conn.prepareStatement(context.getProperty("NEW_DATA"));
rs = stmt.executeQuery();
while (rs.next()) {
idx = rs.getString("Idx");
String userID = rs.getString("userID");
if (!processedUser.contains(userID)) {
try {
UserTO user = null;
user = oc.getUser(userID);
if (user != null) {
/*
* 使用者存在
* 刪除使用者及所有關聯資訊後再藉由 OrgSync 加入該使用者所有資訊
*/
delUserInfo(userID);
addUserInfo(userID);
} else {
/*
* 使用者不存在
* 藉由 OrgSync 加入該使用者所有資訊
*/
addUserInfo(userID);
}
} catch (Exception e) {
e.printStackTrace();
}
processedUser.add(userID);
}
// Update this record in OrgMod
stmt = conn.prepareStatement(context.getProperty("UPT_MOD_DATA"));
stmt.setString(1, idx);
stmt.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
.
.
.這就是這一個月來的生活... 客戶二月初突然要求的程式, 經過不斷地溝通, 協調, PM 跟客戶翻桌, 公司被迫換人跟客戶接觸, 到最後妥協, 老闆一句, "這很簡單啦! 你可以的!" 限期一個禮拜把程式完成, 客戶不斷催促, "表單都已經上線了, partial 組織同步再不快弄出來我們科長說要依合約罰錢啦! 其他先不要弄, 這現在是重點任務."
總算, 上週五下班前把程式寫完, 還不敢先測試, 怕一測出蟲來, 週末又陷入除蟲的深淵, 沒心情好好渡過週末假期. 禮拜一回公司試 run 一下, 果然有蟲, 還好蟲害不嚴重, 花一天好好 debug, 今天拿到客戶那上線執行... 才剛到客戶那, 馬上又有問題出現.
承辦: "ㄟ... 你做的組織同步一級跟二級機關之間的 report line 可以查得到嗎?"
我: "嗯... LDAP 那邊有一, 二級之間的關係, 我這邊沒有"
承辦: "怎麼會沒有? 你不是從 LDAP 同步過來的嗎?"
我: "ㄟ... LDAP 那邊一, 二級是打散在一起的, 我做同步程式之前有問妳要不要依據 report line 建組織, 妳說這樣 user 選單位的時候會分不清一, 二級, 所以要我把它們分開"
承辦: "對啊, 但是你的 report line 不能斷啊"
我: "分開來它們變平行單位, 在我們的組織裡是沒有主從關係的, 我有跟妳說過啊."
承辦: "那有? 我以為你只是表單上可以讓 user 分機關選, 沒想到你的組織也是長這樣. 科長一直都有說要 report line 啊"
我: "我之前就跟妳說過這樣做組織裡一, 二級會變平行的啊, 妳還說流程很少簽到一級機關, 沒關係, 如果有要流到一級機關再另外在流程裡設工作指派就好了."
承辦: "怎麼可能? 那我們中心的主任申請的時候給誰簽?"
我: "嗯... 這個問題我那時候也問過妳..."
承辦: "不管啦... 科長現在就是要 report line, 你回去想辦法"
我: "ok... 那個 partial 組織同步的程式我已經寫好放上測試機了, 過兩天測沒問題就可以放到正式機上面去跑了"
承辦: "同步出來的組織可以看到一, 二級之間的關係嗎?"
我: "這是照之前的需求做的, 當然沒有"
承辦: "那有什麼用? 你趕快把 report line 弄出來啦, 科長要看到這一段, 這才是現在的重點任務"
幹! 老子是做白工就是了啦. 好不容易寫好的程式變廢物? 現在科長的需求又成了重點任務? 身為廠商, 我只有兩種選擇...
if (pissedRate > 0.95) {
System.out.println("幹! 翻桌啦!");
} else {
System.out.println("認命...");
}