999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Activiti的考勤工作流系統設計與實現

2016-02-19 09:31:16孫勇
計算機時代 2016年2期

DOI:10.16644/j.cnki.cn33-1094/tp.2016.02.022

摘 ?要: 針對大學考勤工作過程管理自動化、智能化和整合的需求,設計實現了基于Activiti的考勤工作流系統。以服務對象為中心梳理出系統核心業務,并使用Activiti Modeler完成了業務建模。介紹了系統的數據通信模式和控制數據、相關數據和應用數據的分類及作用。通過Java示例代碼描述了Activiti流程部署與啟動執行的步驟,并給出了基于事務內存的異常處理模式。該系統將考勤業務梳理后制定成業務流程規范,為校園信息化建設提供一定的參考。

關鍵詞: Activiti; 考勤; 工作流; 事務內存

中圖分類號:TP302 ? ? ? ? ?文獻標志碼:A ? ? 文章編號:1006-8228(2016)02-75-04

Design and implementation of attendance workflow system based on Activiti

Sun Yong

(Department of Information Technology, Zhejiang Institute of Communications, Hangzhou, Zhejiang 311112, China)

Abstract: According to the requirement for automation, intelligence and integration in the college attendance process management, a work flow system based on Activiti is designed and realized. Focusing on the service object, teasing out the system's core business, Activiti Modeler is used to complete the business modeling. The data communication mode and the classification and function of control data, related data and application data are introduced in this paper. The steps of Activiti process deployment and implementation are described by Java sample code, and the exception handling mode based on transactional memory is given. The system sets up a business process specification by combing the attendance process, and can provide a reference for the campus information construction.

Key words: Activiti; attendance; work flow; transaction memory

0 引言

云計算、大數據、物聯網與移動互聯網是當前IT界的四大發展趨勢,其中移動互聯網是最接地氣的,也是最有生命力的,無論是國家層面還是各大企業,都紛紛部署移動信息化平臺。

“繽紛校園App”是一款面向大學校園的多時段、多主體、多類型、多模塊的基于LBS的即時考勤手機App,用于助力校園安全管理,提升平安校園品質。由于它的大多數業務均涉及到多個參與者(例如,請假流程涉及了學生、輔導員、分管領導等角色),所以引入工作流系統[1]進行任務的分工協作成為必然。針對它的業務流程管理問題,我們設計了一種基于Activiti[2]的工作流系統,以信息技術驅動考勤流程的自動化,以業務流程為中心全面串聯學校的考勤管理工作。Activiti是一個針對企業用戶、開發人員、系統管理員的輕量級工作流業務管理平臺。其核心是使用Java開發的快速、穩定的BPMN2.0[3]流程引擎。它可以運行在任何類型的Java程序中,如服務器、集群、云服務等,其設計非常簡約。Activiti在全球得到了廣泛的應用,在中國也不例外,已經成為目前最主流的流程引擎。

1 系統設計

1.1 以服務對象為中心確定核心業務

業務流程必須從業務角度去審視,沒有業務也就沒有流程。所以,做工作流系統設計的第一前提就是清楚系統的核心業務是什么。而服務對象是業務的重要要素,所以那些為服務對象創造價值的業務就是核心業務。例如,國稅、地稅的繳稅業務,房管局為房地產從業者及社會公眾提供的各種房屋證件的辦理業務等。對于“繽紛校園App”,其服務對象是大學師生及其管理者,核心業務即為請假和點名(包括課堂點名、晨點名、晚點名等)。

流程是由活動集組成的,確定好業務之后,需要對業務流程中的活動進一步地規范化。如果流程中所有活動雜亂而不遵循任何規范,那么流程是無法進行優化的。

1.1.1 活動本身的規范化

一個活動代表著某個完整的流程上下文中一個細分的業務環節,此業務環節可以逐級分解為多個更細的業務環節,直到不能分解為止。應將這個業務環節上對應的與流程相關的所有屬性(包括這個活動本身的屬性以及與此活動相關的業務屬性)封裝為一個完整活動。具體如下:

⑴ 活動的基本屬性(名稱);

⑵ 活動的參與者屬性(人工活動);

⑶ 活動的時間屬性;

⑷ 活動的業務屬性,包括表單、規則、事件、權限、KPI績效指標等,行業不同還會有很多其他特定屬性。

通過上面的分析可知,活動本身的規范化內容很多,這些內容直接影響流程的分類、簡化及重用,例如活動的時間屬性,在人工活動的大多數場景下需要對每個活動定義一個辦理期限,那么對于同崗位、同業務操作的同一個活動,都應該遵循相同的辦理期限,而不應該有各種各樣的理由來對期限進行延期。同樣的,對于活動的業務屬性也要制定相應的規范,以達到整個業務流程規范化的目的。

1.1.2 活動之間的作用

活動之間的作用是指活動與活動之間的轉移邏輯及交互邏輯。通過結合流程實際運行數據,統計流程中重復的活動、活動占用的資源和時間、活動所耗費的成本等,來對活動本身的業務屬性進行分析,就可以調整活動之間各種控制模式。例如,將兩個串行連接的活動,改為并行連接,這就是流程優化中最常采用和最有效的策略。

1.2 核心業務建模

建模就是將設計好的業務流程模型化,并持久化地形成抽象通用的模型的過程。本文采用Activiti的Modeler作為建模器,創建符合BPMN2.0規范的業務模型,并將模型文件存儲在數據庫的模型庫中,以便工作流和業務系統訪問。請假業務工作流如圖1所示。

對于請假流程中的“審批”環節,由于請假時間不同,負責人不同,所以需要一個分支路由的節點。同時為支持客戶需求的靈活變化,將審批決策硬編碼在業務系統中就不合適了,而應采用Activiti中的規則引擎來自動進行審批決策,并支持客戶對審批規則的實時修改。利用規則引擎可以將業務規則脫離應用單獨處理,使用預定義的規則文件語法編寫業務規則,把業務數據交給規則引擎解釋,然后返回處理結果,根據返回的結果就可以判定業務的處理方式了(例如,當前的請假申請是應該由輔導員還是由分管領導負責審批)。

晚點名業務工作流如圖2所示(其他點名流程相對簡單,不再贅述)。

紀檢委是學校中負責考勤工作的組織,由于學生人數多,所以需要并行出多個流程活動(并行活動的最大個數由紀檢委中的可用核查執行單位最大個數決定)以提高核查工作效率,并將結果匯總至輔導員。需要注意的是,在系統中,核查工作除了被動方式(紀檢委檢查學生)外,還接受學生通過手機App主動發送位置信息(屬于另一個工作流,不再詳述),以減輕紀檢委的人工核查工作。

學生處可視情況對檢查結果進行復審并通知學生家長,也可以直接忽略某次核查結果。

1.3 數據通信

工作流系統和業務系統作為一個整體,在流程與業務之間、流程與流程之間均需進行數據通信。系統數據通信模式如圖3所示。

⑴ 控制數據:工作流系統管理的內部控制數據,這些數據包括了與流程實例和活動實例相關的執行數據和狀態數據,例如流程實例的狀態和執行時間、活動實例執行者、活動執行時間和狀態、緊急程度等。

⑵ 相關數據:工作流系統使用相關數據來確定流程實例的流轉條件,并選擇下一個將執行的活動,相關數據由業務系統訪問并更新。例如請假流程中的“請假天數”,這個數據會決定該流程的審批路徑,不同的請假天數,路徑也可能不同。

⑶ 應用數據:業務系統管理的業務數據,有些業務應用數據需要傳遞給工作流引擎,作為人工UI的列表顯示使用。

2 系統實現

“繽紛校園App”采用Spring MVC作為開發框架,Activiti從最開始設計時就考慮了與Spring的集成,從引擎的默認配置文件(activiti.cfg.xml)可以看出,Activiti的配置文件解析及XML規范都是基于Spring擴展的,這一特點對于將Activiti和“繽紛校園App”業務系統的集成可以說是水到渠成。下面以請假業務為例,介紹工作流的實現。

2.1 部署流程

由于工作流系統中一般都存在多個流程,Activiti允許把一批資源打包部署,為開發者提供了便利。例如,假設請假與晚點名工作流文件分別為“leave.bpmn”和“night.bpmn”,可先使用zip格式將兩個文件壓縮為“bfxy.bar”文件(擴展名bar為Activiti專用),然后將壓縮包放置在服務器的Java classpath中即可部署,部分Java代碼如下。

@Autowired //注入Activiti流程庫服務

private RepositoryService rs;

public void zipWorkflowDeploy() {

//讀取流程文件壓縮包

InputStream zipStream=getClass().

getClassLoader().getResourceAsStream("bfxy.bar");

//將流程部署到引擎中

DeploymentBuilder db=rs.createDeployment();

db.addZipInputStream(new ZipInputStream(zipStream));

db.deploy();

}

2.2 在Spring容器中啟動請假流程的部分Java代碼

@Service

@Transactional //啟用事務管理器

public class LeaveWorkFlowService {

@Autowired //注入業務實體管理對象

LeaveManager leaveManager;

@Autowired //注入Activiti相關服務

private IdentityService identityService;

@Autowired

private RuntimeService runtimeService;

//保存請假實體并啟動流程的方法

public ProcessInstance startWorkflow(Leave entity,

String userId, Map<String,Object>variables) {

//持久化請假實體

leaveManager.save(entity);

//實體保存后的ID作為流程業務key

String businessKey=entity.getId().toString();

//設置啟動流程的人員ID

identityService.setAuthenticatedUserId(userId);

//啟動流程并返回

return runtimeService.startProcessInstanceByKey

(businessKey);

}

}

2.3 異常處理

一個穩定健壯的應用系統離不開良好的異常處理機制,程序語言只提供了最基本的異常處理機制,在實際開發中,往往需要設計者給出更加易用、友好、統一的異常框架設計。本文基于筆者前期研究成果,設計了一種基于事務內存的工作流異常處理機制[4]。事務內存是一種通過事務來實現并發控制的編程范式,事務的ACID特性由事務內存引擎來保證,無需開發者關心。與其他并發控制方法(例如鎖)相比,事務內存具有安全、易用等優點,近年來在學術界受到了廣泛關注。

若在每個流程活動執行過程中,出現的異常使得整個活動不能繼續執行下去,此時即采取事務內存的回滾操作,以保證活動的所有行為(活動本身的執行、此活動節點綁定的事件或服務的執行、任務的分配等)都處于一個原子事務中;若活動成功執行,則需“提交”整個事務。

2.4 程序界面

“繽紛校園App”中學生請假與晚點名業務的手機客戶端界面如圖4所示。圖中,左側按鈕“就寢簽到”將創建一個學生主動點名的工作流,并觸發相應活動,該工作流應由學生本人發起執行,并只在紀檢委規定的點名時間內有效;右側按鈕“提交”則將創建一個“請假”工作流,并觸發相應活動。

3 總結

本文設計了一套基于Activiti、面向“繽紛校園App”的工作流系統。并從業務梳理與優化、流程建模、數據通信、流程部署與執行和異常處理等角度對考勤工作流系統設計與實現的方法進行了介紹。利用該系統,將原本散亂甚至混亂的考勤業務梳理后制定成業務流程規范,進而約束了考勤業務的規范化處理和運轉,保障了校園安全管理,提升了平安校園品質。

目前系統部署成功后流程即可正常使用,但是對于復雜流程的遷移尚存在問題,例如遷移后的流程圖顯示不準確等。下一步的工作是深入完善考勤工作流框架的設計,使該系統具有更廣泛的適用性和擴展性。

參考文獻(References):

[1] 阿爾斯特.工作流管理:模型方法和系統[M].清華大學出版

社,2004.

[2] 閆洪磊.Activiti實戰[M].機械工業出版社,2015.

[3] 江東明,薛錦云.基于BPMN的Web服務并發交互機制[J].計

算機科學,2014.8:50-54

[4] 林菲,孫勇.自穩定的分布式事務內存模型及算法[J].計算機

研究與發展,2014.51(9):2046-2057

主站蜘蛛池模板: 91无码人妻精品一区| 91久久夜色精品国产网站| 欧美午夜在线观看| 无码精品福利一区二区三区| 一级毛片在线播放免费| 国产污视频在线观看| 91久久国产综合精品女同我| 青青草a国产免费观看| 91麻豆精品国产91久久久久| 亚洲人人视频| 国产欧美在线| 国产9191精品免费观看| 福利在线不卡| 嫩草影院在线观看精品视频| 制服无码网站| 91麻豆精品国产高清在线| 91福利片| 亚洲无码日韩一区| 欧美激情首页| 日韩精品免费在线视频| 精品久久香蕉国产线看观看gif| 福利片91| 亚洲天堂色色人体| 最新国产在线| 91久久偷偷做嫩草影院电| 午夜国产大片免费观看| 国产午夜无码专区喷水| 91成人在线观看视频| 91久久偷偷做嫩草影院免费看| 国产好痛疼轻点好爽的视频| 亚洲一区二区日韩欧美gif| 四虎国产在线观看| 91丝袜乱伦| 女人一级毛片| 97精品久久久大香线焦| 国产视频一区二区在线观看| 日本久久网站| 九九香蕉视频| 日本久久久久久免费网络| 91口爆吞精国产对白第三集| a毛片免费看| 99久久精品国产麻豆婷婷| 国产成人超碰无码| 91精品aⅴ无码中文字字幕蜜桃| 国产经典免费播放视频| 97在线碰| 人人妻人人澡人人爽欧美一区| 久久亚洲国产视频| 91丝袜乱伦| 亚洲日本中文字幕乱码中文| 性喷潮久久久久久久久| 欧美日韩激情在线| 亚洲乱码在线播放| 午夜毛片福利| 国产AV无码专区亚洲A∨毛片| 欧美福利在线| 99久久99视频| 成人无码一区二区三区视频在线观看| 噜噜噜久久| 午夜毛片免费看| 国产精品久久久久久久久久98| 久久婷婷国产综合尤物精品| 亚洲国产清纯| 在线观看免费人成视频色快速| 亚洲毛片在线看| a毛片免费观看| 日本AⅤ精品一区二区三区日| 亚洲aaa视频| 午夜国产精品视频黄| 日本中文字幕久久网站| 国产男女免费完整版视频| 免费看a级毛片| 久久夜色精品国产嚕嚕亚洲av| 国产高清在线精品一区二区三区| 美女被操91视频| 成人一级黄色毛片| 亚洲国产看片基地久久1024| 沈阳少妇高潮在线| 毛片免费在线| 亚洲国产亚洲综合在线尤物| 久久毛片网| 波多野结衣一二三|