大話工作流:什么是工作流(上)

人物設定:

小菜:具備基礎的計算機理論知識,剛畢業(yè)參加工作初斑,從事Java開發(fā)辛润,對技術很有熱情,凡事愛問個為什么见秤,但是缺少項目實戰(zhàn)經(jīng)驗砂竖,需要進一步培養(yǎng)。

老鳥:高級Java開發(fā)鹃答,在工作流方面有較多研究乎澄,在編程的過程中走過很多彎路,踩過很多坑之后测摔,愿意把自己的經(jīng)驗置济、教訓分享給大家解恰。

小菜加入公司之后,就參與一個OA系統(tǒng)的請假業(yè)務的開發(fā)浙于,業(yè)務場景如下:

請假人填報請假類型护盈、請假天數(shù)、開始時間羞酗、請假原因后腐宋,根據(jù)請假天數(shù),小于等于2天由本部門部門經(jīng)理審批檀轨,大于2天由人事部門審批胸竞,審批拒絕后退回到填報人修改,通過后請假生效参萄,在請假到期后卫枝,請假人及時在系統(tǒng)中辦理銷假。

請假流程示例

小菜拿到需求后讹挎,二話不說就開始寫代碼了校赤,首先定義個請假實體

ID,userId(請假人)淤袜,days(請假天數(shù))痒谴,startDate(開始時間),reason(請假原因)铡羡,vacationType(請假類型)

然后編寫了請假申請的頁面积蔚,部門經(jīng)理審批、人事部門審批烦周,辦理銷假的頁面尽爆;一天過去了,小菜做得很有成就感读慎,這樣明天再完善漱贱,測試一下就應該差不多了。

快到下班的時候夭委,小菜很自信的通過svn提交了自己的代碼幅狮,看來今天不用加班了。這時老鳥從小菜身旁走過株灸,問了下小菜今天的工作崇摄,小菜說今天做了個請假流程,定義了實體慌烧,編寫了頁面逐抑,完成基本的CURD操作,明天再努力一把屹蚊,爭取做完厕氨。老鳥笑道:小伙子效率挺高的嗎进每,讓我看看你的代碼。小菜拿過自己電腦命斧,熟練的打開了intellij田晚,黑色的主題色立馬讓桌面顯得高達上。老鳥看著代碼国葬,臉上的笑容慢慢收斂肉瓦,眉頭緊鎖,程序員特有專注的表情在他臉上蔓延胃惜。旁邊的小菜也跟著認真緊張起來。

5分鐘后哪雕,老鳥轉(zhuǎn)向小菜船殉,問道

  • 請假人能隨時修改請假信息嗎?比如我請假2天斯嚎,請假審批通過后利虫,我能改成10天嗎?
  • 怎么確定是由部門經(jīng)理審批堡僻、還是人事部門審批糠惫?
  • 部門經(jīng)理、人事部如何獲取待辦钉疫?
  • 審批人拒絕后請假人怎么修改硼讽?

一連串的問題,問的小菜有點不知所措牲阁,果然不愧是老鳥固阁,一下子就問到問題的關鍵。小菜略微尷尬的回答:“這個問題我還沒想好城菊,我打算明天邊做邊想备燃,不過我……”×杌#“你最好要改掉邊做邊想的毛病”并齐,不等小菜說完,老鳥打斷了他客税,“編程需要抽象性思維况褪、全局性思維,當你拿到一個需求或者碰到一個問題的時候霎挟,首先是要進行充分的思考窝剖,理解問題的本質(zhì),而不是倉促的動手酥夭,倉促編程的結(jié)果是設計缺少完整性和連貫性赐纱,后期會面臨大概率的返工脊奋,還有編程不是代碼越多越好,也不是越快越好疙描,而是又快又好诚隙,編程就像寫作,不只是自己看懂起胰,也要讓別人看懂久又,你的代碼還有很多可以精簡的地方”。小菜認真地聽著效五,很肯定地“嗯”了一聲地消,若有所思的點點頭,心里想到畏妖,要是拿到需求的時候能請教下老鳥就好了脉执。

“你剛才說,不過什么”戒劫,老鳥接著問道半夷。“不過我剛想到一個解決辦法迅细,就是在請假實體上新增一個字段state巫橄,用于標識不同流程狀態(tài),然后根據(jù)不同的狀態(tài)茵典,限制表單是不是可以編輯”湘换,說完,小菜拿起筆在紙上寫了起來敬尺。

0=草稿狀態(tài)枚尼;填報人可編輯,可提交
1=審批中砂吞;部門經(jīng)理審批署恍,填報人只讀
2=審批中;人事部門審批蜻直,填報人只讀
3=審批退回盯质;填報人可編輯,可提交
4=審批結(jié)束概而;填報人只讀

小菜寫完后呼巷,看了看老鳥,他的表情不像先前那么嚴肅赎瑰,仿佛示意他說下去王悍,小菜接著說道:“在獲取待辦的時候,可以根據(jù)不同的狀態(tài)來識別是部門經(jīng)理的待辦還是人事部門的待辦”餐曼,

“那填報人的銷假待辦呢压储,如果現(xiàn)在需求變了鲜漩,大于2天小于10天的請假依然由人事部門審批,但是大于10天的請假人事部門審批后集惋,還需要總經(jīng)理審批孕似,該如何處理?”老鳥問道刮刑。

大于10天總經(jīng)理審批

小菜又陷入沉思喉祭,看著那張紙,突然靈光一閃雷绢,拿起來在原來的那張紙又畫了起來:

0=草稿狀態(tài)泛烙;填報人可編輯,可提交
10=審批中翘紊;部門經(jīng)理審批胶惰,填報人只讀
20=審批中;人事部門審批霞溪,填報人只讀
30=審批中;總經(jīng)理審批(大于10天)中捆,填報人只讀
40=審批退回鸯匹;填報人可編輯,可提交
50=銷假泄伪;填報人銷假
60=審批結(jié)束殴蓬;填報人只讀

“加大狀態(tài)碼之間的間隔,這樣隨時便于插入新的節(jié)點蟋滴,可以應對流程的變化”染厅,小菜自豪地說道。

“這確實是一種解決流程問題的思路津函,很多業(yè)務在相對固定的業(yè)務流程中使用狀態(tài)標識的方式來做流程肖粮,但是在一些流程頻繁變化的業(yè)務中,這樣的處理方法卻不合適尔苦,這里面會存在一些問題涩馆,你能說說嗎?”

剛才在紙上寫的時候允坚,小菜已經(jīng)意識到這樣做似乎有些不妥魂那,正好借著這個問題,他說道:“最大的問題是稠项,業(yè)務流程變化總導致代碼的修改涯雅,還有就是,多一個節(jié)點就要多做一個界面展运,界面相似活逆,卻要通過Ctrl+C,Ctrl+V來操作”精刷。

“重要的兩點都說對了,你說的核心關鍵字是解耦復用划乖,如何保證流程能夠隨需應變贬养,面對需求的變化,盡量少地去修改代碼琴庵,通過業(yè)務和流程盡可能地解耦误算,來達到代碼盡量地復用,這是流程需要重點考慮的問題迷殿《瘢”老鳥果然是老鳥,侃侃而談庆寺,專業(yè)術語一個個蹦出來蚊夫。

業(yè)務表單在多個環(huán)節(jié)處理流轉(zhuǎn),從而使得業(yè)務得到自動化處理懦尝,這就是工作流知纷,其實類似的流程處理都可以用工作流來處理”,老鳥說道陵霉。

工作流琅轧?這個概念小菜還是第一次聽到,恨不得立馬百度一番踊挠,看看到底是個什么東西乍桂?

“交給你一個任務,晚上查查工作流的概念效床,建議用工作流把重新做一遍睹酌,會比現(xiàn)在要好多,我以前剛做類似業(yè)務的時候剩檀,和你一樣憋沿,也是用狀態(tài)標記業(yè)務狀態(tài),到后來狀態(tài)越來越多沪猴,程序內(nèi)部變得越來越臃腫卤妒,難以維護”,老鳥說著字币,仿佛從小菜的身上看到了當年的影子则披。

“但是我今天寫了一天,重寫的話怪可惜的洗出,能不能把這個做完士复,后面如果有新的類似需求再用工作流”,小菜想著今天的任務要推到重來,有些不情愿地說道阱洪。

“作為一個剛?cè)肼毜膯T工便贵,想盡快地做出成果,完成工作任務固然重要冗荸,但作為一個程序員承璃,必須要對自己要有嚴格的要求,要時刻想著有沒有更好的設計蚌本,有沒有更好的編碼實現(xiàn)盔粹,有沒有更好的算法提高系統(tǒng)性能,能不能通過自動化的工具來減少自己的重復工作程癌,這些對程序員未來的發(fā)展很重要舷嗡,所謂經(jīng)驗,就是由不斷踩坑不斷填坑的過程嵌莉,坑填多了进萄,總結(jié)多了,下次碰到坑就能繞過去锐峭,經(jīng)驗就漲了中鼠,如果只踩坑,不填坑沿癞,不總結(jié)就光漲工作年限兜蠕,如果我現(xiàn)在告訴你前面有坑,你又什么要跳進去抛寝?,我見過很多程序員曙旭,有的工作了幾年盗舰,和畢業(yè)相比沒什么長進,有的短短一年就比有三年工作經(jīng)驗的進步快桂躏,這正是對自我嚴格要求钻趋,對新技術保持足夠的熱枕,并勇于實踐剂习÷唬”老鳥語重心長地說道。

“好的鳞绕,我晚上就看工作流”失仁,停了老鳥一席話,小菜的戰(zhàn)斗力又回來们何。

老鳥看看了時間萄焦,不自覺已經(jīng)和小菜談了一個多小時,收拾了下,和收獲滿滿的小菜下班了拂封。

“要是拿到需求多問一下茬射,多研究思考下,說不定今天的工作就不用白做了” 小菜想到冒签。

下篇文章談談如果自己實現(xiàn)一個工作流在抛,應該如何設計并實現(xiàn)。

向《大話設計模式》致敬萧恕。歡迎訪問我的網(wǎng)站
JavaCodehttp://code.admineap.com
AdminEAPhttp://www.admineap.com

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刚梭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子廊鸥,更是在濱河造成了極大的恐慌望浩,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惰说,死亡現(xiàn)場離奇詭異磨德,居然都是意外死亡,警方通過查閱死者的電腦和手機吆视,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門典挑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人啦吧,你說我怎么就攤上這事您觉。” “怎么了授滓?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵琳水,是天一觀的道長。 經(jīng)常有香客問我般堆,道長在孝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任淮摔,我火速辦了婚禮私沮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘和橙。我一直安慰自己仔燕,他們只是感情好,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布魔招。 她就那樣靜靜地躺著晰搀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪办斑。 梳的紋絲不亂的頭發(fā)上厕隧,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音,去河邊找鬼吁讨。 笑死髓迎,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的建丧。 我是一名探鬼主播排龄,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼翎朱!你這毒婦竟也來了橄维?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤拴曲,失蹤者是張志新(化名)和其女友劉穎争舞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澈灼,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡竞川,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了叁熔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片委乌。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖荣回,靈堂內(nèi)的尸體忽然破棺而出遭贸,到底是詐尸還是另有隱情,我是刑警寧澤心软,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布壕吹,位于F島的核電站,受9級特大地震影響删铃,放射性物質(zhì)發(fā)生泄漏耳贬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一泳姐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧暂吉,春花似錦胖秒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肮街,卻和暖如春风题,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工沛硅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留眼刃,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓摇肌,卻偏偏與公主長得像擂红,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子围小,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 很多人應該見到過這樣的會議肯适,公司組織人力資源部門和各個部門進行績效考核变秦,或者分解下個月的目標,劃分指標給各個部門框舔。...
    Ctrlbox可卓閱讀 2,626評論 2 19
  • 前天從老家回天津的路上,就有朋友說要熬阿膠额港, 這個朋友剛生完孩子三個月饺窿,問我能不能吃阿膠,我說當然可以吃啊移斩,母親的...
    請叫我陳姐閱讀 340評論 0 0
  • 戰(zhàn)爭之苦 祭河邊骨 洪流忠魂千堆雪肚医,孤雁長鳴黃云際。殘燭閨閣粉桃花向瓷,歸夢楊柳依依時肠套。殘...
    鏡花水月_3cc9閱讀 213評論 0 0
  • 記得曾經(jīng)參加一個培訓活動,會議的組織者最后請來了一個身居黨派高位的領導人來分享他的工作經(jīng)歷猖任,這位領導一路上從一個普...
    紅袖飛揚閱讀 809評論 0 1
  • 裝飾器的作用是你稚,對于有切面需求的場景,例如:調(diào)用函數(shù)的日志等朱躺,采用其他方式顯得繁瑣刁赖。而使用裝飾器可以美觀有快捷...
    Biniks閱讀 164評論 0 0