十一第练、實現(xiàn)頁面靜態(tài)化業(yè)務(wù)場景
我們在做某項目時,涉及到程序訪問的性能問題擎椰,這時候我們想到可以通過靜態(tài)化來提高用戶訪問時候的性能逻住,所以我們就采用了freemarker模板引擎钟哥,考慮到頁面也是要有動態(tài)的變化的,所以我們采用spring定時器在每天晚上2點鐘的時候定時再次生成html靜態(tài)頁面瞎访,考慮發(fā)布時候的性能問題腻贰,我們又采取線程池技術(shù),讓多個線程同時發(fā)布扒秸,從而縮減發(fā)布時間播演。
十二、servlet線程安全描述
servlet是單列的伴奥,對于所有請求都使用一個實例写烤,所以如果有全局變量被多
線程使用的時候,就會出現(xiàn)線程安全問題拾徙。
解決這個問題有三種方案:
1.實現(xiàn)singleThreadModel接口洲炊,這樣對于每次請求都會創(chuàng)建一個新的servlet實例,這樣就會消耗服務(wù)端內(nèi)存尼啡,降低性能暂衡,但是這個接口已經(jīng)過時,不推薦使用崖瞭。
2.可以通過加鎖(synchroniezd關(guān)鍵字)來避免線程安全問題狂巢。這個時候雖然還是單列,但是對于多線程的訪問书聚,每次只能有一個請求進行方法體內(nèi)執(zhí)行隧膘,只有執(zhí)行完畢后,其他線程才允許訪問寺惫,降低吞吐量。
3.避免使用全局變量蹦疑,使用局部變量可以避免線程安全問題西雀,強烈推薦使用此方法來解決servlet線程安全的問題。
十三歉摧、(jbpm4)工作流引擎描述:
JPBM是JBOSS旗下的一個開源的基于hibernate的工作流引擎艇肴。工作流就是在日常生活中腔呜,我們一些常見的如請假流程、采購流程再悼、入職流程核畴,通俗的來講就是一些在現(xiàn)實生活中的流程以信息化以程序的方式實現(xiàn)。
一個工作流首先需要進行流程定義冲九,流程定義是由節(jié)點和跳轉(zhuǎn)組成的谤草,節(jié)點又可以稱為環(huán)節(jié)、活動節(jié)點莺奸、活動環(huán)節(jié)丑孩,并且節(jié)點也可以分為兩大類型:人工節(jié)點和自動節(jié)點,人工節(jié)點有start開始節(jié)點灭贷、end結(jié)束節(jié)點温学、task任務(wù)節(jié)點,自動節(jié)點有decision判斷節(jié)點甚疟、fork分支節(jié)點仗岖、join聚合節(jié)點和state狀態(tài)節(jié)點,并且一個流程有且只有一個開始節(jié)點览妖,但可以有多個結(jié)束節(jié)點轧拄。
流程定義是靜止的,它在運行狀態(tài)時會轉(zhuǎn)換成流程實例黄痪,一個流程定義可以對應(yīng)多個流程實例紧帕。流程運行后,會產(chǎn)生兩個文件桅打,*.jdpl.xml文件和*.png圖片文件是嗜,也會生成18張數(shù)據(jù)庫表,常用且核心的表有JBPM4_LOB 存儲表挺尾,主要存儲xml文件和png圖片鹅搪、JBPM4_TASK 任務(wù)表、JBPM4_EXECUTION 流程實例表遭铺、JBPM4_VARIABLE變量表丽柿。
圖形化的靈活定制(主動說)
可以根據(jù)需求進行流程圖的改變的,即定義的流程圖是可以根據(jù)需要改變的魂挂,而不是死的甫题。
可以進行圖形化的監(jiān)控(主動說)
輸出圖片
獲取活動節(jié)點的坐標
進行疊加
判斷節(jié)點:(主動說,也可以了解)
實現(xiàn)implements DecisionHandler接口并重寫decide方法,
返回的字符串要和xml中配置的transition的name保持一致涂召。
分支判定節(jié)點
JBPM有五大核心類:
ProcessEngine:主要獲取各種的Service
RepositoryService:主要發(fā)布流程定義
ExecutionService:主要操作流程實例
TaskService:主要操作人工服務(wù)
HistoryService:主要操作歷史服務(wù)坠非。
核心方法:
讀取jbpm定義的文件生成zip包存到lob表中:createDeployment()
獲取流程定義列表:createProcessDefinitionQuery
根據(jù)定義的key或id來啟動流程實例:startProcessInstanceByKey(id)
獲取待辦任務(wù)列表:findPersonalTasks(userName)
完成指定任務(wù)列表:completeTask(*.getActivityId())
獲取歷史任務(wù)列表:createHistoryTaskQuery()
獲取流程實例的ID:task.getExecutionId()
(了解的表)
JBPM4_HIST_ACTINST 流程活動(節(jié)點) 實例表
JBPM4_HIST_DETAIL 流程歷史詳細表
JBPM4_HIST_PROCINST 流程實例歷史表
JBPM4_HIST_TASK 流程任務(wù)實例歷史表
JBPM4_HIST_VAR 流程變量( 上下文) 歷史表
十四、JPBM業(yè)務(wù)場景
首先進行請假的流程定義果正,我們流程的定義是(員工提交請假單---》經(jīng)理審批---》總監(jiān)審批---》總經(jīng)理審批---》結(jié)束)炎码,通過repositoryService將其發(fā)布部署到j(luò)bpm4_lob表中盟迟,
之后獲取流程定義列表,選中請假的流程定義潦闲,員工開始進行請假單的填寫攒菠,保存并通過executionService開啟流程實例,然后用taskService獲取經(jīng)理的待辦任務(wù)列表歉闰,選中待辦任務(wù)辖众,進行審批,通過調(diào)用taskService.completeTask()進入到總監(jiān)審批環(huán)節(jié)新娜,然后用總監(jiān)進行登錄赵辕,同樣獲取待辦任務(wù)列表,然后調(diào)用taskService.completeTask()進入總經(jīng)理審批環(huán)節(jié)概龄,總經(jīng)理審批之后还惠,結(jié)束流程。在這個過程中我們還可以根據(jù)historyService查看當(dāng)前登錄人已辦的任務(wù)列表私杜。
十五蚕键、Ant描述
Ant是apache旗下的對項目進行自動打包、編譯衰粹、部署的構(gòu)建工具锣光,他主要具有 輕量級并且跨平臺的特性,而且基于jvm铝耻,默認文件名為build.xml
Ant主要的標簽:
Project 根標簽誊爹,
target 任務(wù)標簽,
property 屬性標簽瓢捉,自定義鍵/值 供多次使用频丘,
java 執(zhí)行編譯后的java文件
javac 編譯java文件
war 打成war包
其它標簽:copy,delete泡态,mkdir搂漠,move,echo等某弦。