新聞中心
這篇文章將為大家詳細(xì)講解有關(guān)Activiti中常用服務(wù)組件是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供廣東網(wǎng)站建設(shè)、廣東做網(wǎng)站、廣東網(wǎng)站設(shè)計、廣東網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、廣東企業(yè)網(wǎng)站模板建站服務(wù),十余年廣東做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
Activiti針對工作流的一系列操作,都封裝在他的服務(wù)組件當(dāng)中,因此要學(xué)習(xí)activiti,首先要做的就是學(xué)習(xí)了解他的常用服務(wù)組件。
1.ativiti常用服務(wù)組件的基本介紹:
RepositoryService:提供一系列管理流程定義和流程部署的API。
RuntimeService:在流程運(yùn)行時對流程實例進(jìn)行管理與控制。
TaskService:對流程任務(wù)進(jìn)行管理,例如任務(wù)提醒、任務(wù)完成和創(chuàng)建任務(wù)分本任務(wù)等。
IdentityService:提供對流程角色數(shù)據(jù)進(jìn)行管理的API,這些角色數(shù)據(jù)包括用戶組、用戶以及它們之間的關(guān)系。
ManagementService:提供對流程引擎進(jìn)行管理和維護(hù)的服務(wù)。
HistoryService:對流程的歷史數(shù)據(jù)進(jìn)行操作,包括查詢、刪除這些歷史數(shù)據(jù)。
FormService:表單Service,用于讀取和流程,任務(wù)相關(guān)的表單數(shù)據(jù)。
DynamicBpmnService:使用該服務(wù),可以不需要重新部署流程模型,就可以實現(xiàn)對流程模型的部分修改。
2.如何理解服務(wù)組件之間的關(guān)系
如何理解服務(wù)組件之間的關(guān)系,必須先從工作流的使用角度來理解。
以報銷流程為例:
工作流并不是憑空出現(xiàn)的,并不是員工提起報銷請求,系統(tǒng)就毫無根據(jù)的生成了工作流。而是需要管理員來規(guī)定報銷這個工作流中各個環(huán)節(jié),各個條件。那么管理員如何來使用activiti來定義一個新的工作流呢?RepositoryService為我們提供了與此相關(guān)的一系列方法,可以讓我們能夠定義工作流并將工作流部署到服務(wù)器當(dāng)中去。可以將RepositoryService理解為創(chuàng)建java面向?qū)ο笏枷胫械念悺?/p>
當(dāng)有了一個流程的定義,員工如何去申請一個報銷流程呢,因為每一個員工情況都不一樣,他們都需要有個獨立的流程來解決各自的問題(類似于java中的對象)。RuntimeService為我們提供了相應(yīng)的方法,來根據(jù)一個流程定義去創(chuàng)建流程實例,并可以對流程實例進(jìn)行一系列的操作。
此處還有一個task的概念,task可以理解為我們流程圖中的一個審批任務(wù)(節(jié)點),一個流程實例只要被創(chuàng)建了并且還沒有結(jié)束,就一個其中某一個節(jié)點上。而我們也可以使用RuntimeService來獲取我們流程當(dāng)前所處于task。而TaskService則可以對task進(jìn)行完成、管理各種操作。
此外activiti還通過IdentityService提供給我們了統(tǒng)一管理提起流程、參與流程的所有用戶和用戶組的一系列方法,并允許通過taskService中的方法為task設(shè)定系統(tǒng)中的審批用戶或者用戶組。
而HistoryService則是因為我們有時需要查詢已經(jīng)走完全部流程的流程實例,他給我們提供一系列操作歷史數(shù)據(jù)的方法。
ManagementService和DynamicBpmnService暫時用到的還比較少,以后再補(bǔ)充。//todo
3.如何創(chuàng)建服務(wù)組件
普通java項目中我們需要先聲明工作流引擎ProcessEngine ,然后根據(jù)工作流引擎來獲取各種服務(wù)組件。
ProcessEngine engine= ProcessEngines.getDefaultProcessEngine(); //工作流定義相關(guān)服務(wù) RepositoryService rs=engine.getRepositoryService(); //工作流實例相關(guān)服務(wù) RuntimeService runtimeService=engine.getRuntimeService(); //任務(wù)相關(guān)服務(wù)服務(wù) TaskService taskService=engine.getTaskService(); //將流程模板存儲到數(shù)據(jù)庫中 rs.createDeployment().addClasspathResource("first.bpmn").deploy(); //創(chuàng)建一個流程實例 ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("myProcess_1"); //普通員工填寫完成請假任務(wù) task即為當(dāng)前節(jié)點 Task task=taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); System.out.println("當(dāng)前流程節(jié)點:"+task.getName()); taskService.complete(task.getId());
而spring項目中我們可以直接通過@Autowired注解的方式來獲取我們的服務(wù)組件,如下
@Autowired private RuntimeService runtimeService; @Autowired private RepositoryService repositoryService; @Autowired private TaskService taskService; @Autowired private IdentityService identityService; @Autowired private HistoryService historyService;
關(guān)于Activiti中常用服務(wù)組件是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
網(wǎng)站名稱:Activiti中常用服務(wù)組件是什么
URL標(biāo)題:http://www.dlmjj.cn/article/pgocde.html