版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、activiti流程開發(fā)指南一、BPMN.二、activiti主要接口.三、如何實(shí)現(xiàn)一個(gè)業(yè)務(wù)流程.四、如何管理所有流程與實(shí)例五、開發(fā)流程api、BPMN1, 什么是BPMN首先BPMN規(guī)范是由標(biāo)準(zhǔn)組織BPMI發(fā)布的.BPMN1.0規(guī)范發(fā)布于2004年5月。此規(guī)范展示了BPMI組織兩年多的努力成果。BPMN的主要目標(biāo)就是要提供被所有業(yè)務(wù)用戶理解的一套也R語言,包括業(yè)務(wù)分析者、軟件開發(fā)者以及業(yè)務(wù)管理者與監(jiān)察者。BPMN還將支持生成可執(zhí)行的BPEL4WS語言。所以,BPMN在業(yè)務(wù)流程設(shè)計(jì)與流程實(shí)現(xiàn)之間搭建了一條標(biāo)準(zhǔn)化的橋梁。BPMN定義了業(yè)務(wù)流程圖,其基于流程圖技術(shù),同時(shí)為創(chuàng)建業(yè)務(wù)流程操作的圖形化模
2、型進(jìn)行了裁減。業(yè)務(wù)流程的模型就是圖形化對(duì)象的網(wǎng)圖,包括活動(dòng)(也可以說工作)和定義操作順序的流控制。2, BPMN基礎(chǔ)業(yè)務(wù)流程圖由一系列的圖形化元素組成。這些元素簡(jiǎn)化了模型的開發(fā),且業(yè)務(wù)分析者看上去非常熟悉。這些元素每個(gè)都有各自的特性,且與大多數(shù)的建模器類似。比如,活動(dòng)是矩形,條件是菱形。應(yīng)該強(qiáng)調(diào)的是:開發(fā)BPMN的動(dòng)力就是為了在創(chuàng)建業(yè)務(wù)流程模型時(shí)提供一個(gè)簡(jiǎn)單的機(jī)制,同時(shí)又能夠處理來自業(yè)務(wù)流程的復(fù)雜性。要處理這兩個(gè)矛盾的需求的方法就是將標(biāo)記的圖形化方面組織分類為特定的類別。這里提供標(biāo)記類別中的一小部分,以便業(yè)務(wù)流程圖的讀者可以簡(jiǎn)單地識(shí)別出元素的基本類型從而理解圖形。以下是四種基本的類型:1 )流
3、對(duì)象2 )連接對(duì)象3 )泳道4 )人工信息BPMN2.0概要:http:、activiti主要接口ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();RuntimeServiceruntimeService=processEngine.getRuntimeService();RepositoryServicerepositoryService=processEngine.getRepositoryService();TaskServicetaskService=processEngine.getTaskServ
4、ice();ManagementServicemanagementService=processEngine.getManagementService();IdentityServiceidentityService=processEngine.getIdentityService();HistoryServicehistoryService=processEngine.getHistoryService();FormServiceformService=processEngine.getFormService();ProcessEngines.getDefaultProcessEngine(
5、)會(huì)在第一次調(diào)用時(shí)初始化并創(chuàng)建一個(gè)流程引擎,以后再調(diào)用就會(huì)返回相同的流程引擎。使用對(duì)應(yīng)的方法可以創(chuàng)建和關(guān)閉所有流程引擎:ProcessEngines.init()和ProcessEngines.destroy()。ProcessEngines會(huì)掃描所有activiti.cfg.xml和activiti-context.xml文件。對(duì)于activiti.cfg.xml文件,流程引擎會(huì)使用Activiti的經(jīng)典方式構(gòu)建:ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(inputStream).bu
6、ildProcessEngine().對(duì)于activiti-context.xml文件,流程弓I擎會(huì)使用Spring方法構(gòu)建:先創(chuàng)建一個(gè)Spring的環(huán)境,然后通過環(huán)境獲得流程引擎。所有服務(wù)都是無狀態(tài)的。這意味著可以在多節(jié)點(diǎn)集群環(huán)境下運(yùn)行Activiti,每個(gè)節(jié)點(diǎn)都指向同一個(gè)數(shù)據(jù)庫,不用擔(dān)心哪個(gè)機(jī)器實(shí)際執(zhí)行前端的調(diào)用。無論在哪里執(zhí)行服務(wù)都沒有問題Repositoryservice可能是使用Activiti引擎時(shí)最先接觸的服務(wù)。它提供了管理和控制發(fā)布包和流程定義的操作。這里不涉及太多細(xì)節(jié),流程定義是BPMN2.0流程的java實(shí)現(xiàn)。它包含了一個(gè)流程每個(gè)環(huán)節(jié)的結(jié)構(gòu)和行為。發(fā)布包是Activiti引
7、擎的打包單位。一個(gè)發(fā)布包可以包含多個(gè)BPMN2.0xml文件和其他資源。開發(fā)者可以自由選擇把任意資源包含到發(fā)布包中。既可以把一個(gè)單獨(dú)的BPMN2.0xml文件放到發(fā)布包里,也可以把整個(gè)流程和相關(guān)資源都放在一起。(比如,hr-processes,實(shí)例可以包含hr流程相關(guān)的任何資源)??梢酝ㄟ^RepositoryService來夸口署這種發(fā)布包。發(fā)布一個(gè)發(fā)布包,意味著把它上傳到引擎中,所有流程都會(huì)在保存進(jìn)數(shù)據(jù)庫之前分析解析好。從這點(diǎn)來說,系統(tǒng)知道這個(gè)發(fā)布包的存在,發(fā)布包中包含的流程就已經(jīng)可以啟動(dòng)了。除此之外,服務(wù)可以o查詢引擎中的發(fā)布包和流程定義。o暫停或激活發(fā)布包,對(duì)應(yīng)全部和特定流程定義。暫停意
8、味著它們不能再執(zhí)行任何操作了,激活是對(duì)應(yīng)的反向操作。o獲得多種資源,像是包含在發(fā)布包里的文件,或引擎自動(dòng)生成的流程圖。o獲得流程定義的pojo版本,可以用來通過java解析流程,而不必通過xml。正如RepositoryService負(fù)責(zé)靜態(tài)信息(比如,不會(huì)改變的數(shù)據(jù),至少是不怎么改變的),Runtimeservice正好是完全相反的。它負(fù)責(zé)啟動(dòng)一個(gè)流程定義的新實(shí)例。如上所述,流程定義定義了流程各個(gè)節(jié)點(diǎn)的結(jié)構(gòu)和行為。流程實(shí)例就是這樣一個(gè)流程定義的實(shí)例。對(duì)每個(gè)流程定義來說,同一時(shí)間會(huì)有很多實(shí)例在執(zhí)行。RuntimeService也可以用來獲取和保存流程變量。這些數(shù)據(jù)是特定于某個(gè)流程實(shí)例的,并會(huì)被
9、很多流程中的節(jié)點(diǎn)使用(比如,一個(gè)排他網(wǎng)關(guān)常常使用流程變量來決定選擇哪條路彳繼續(xù)流程)。Runtimeservice也能查詢流程實(shí)例和執(zhí)行。執(zhí)行對(duì)應(yīng)bpmn2.0中的,token'?;旧蠄?zhí)行指向流程實(shí)例當(dāng)前在哪里。最后,RuntimeService可以在流程實(shí)例等待外部觸發(fā)時(shí)使用,這時(shí)可以用來繼續(xù)流程實(shí)例。流程實(shí)例可以有很多暫停狀態(tài),而服務(wù)提供了多種方法來,觸發(fā),實(shí)例,接受外部觸發(fā)后,流程實(shí)例就會(huì)繼續(xù)向下執(zhí)行。任務(wù)是由系統(tǒng)中真實(shí)人員執(zhí)行的,它是Activiti這類BPMN引擎的核心功能之一。所有與任務(wù)有關(guān)的功能都包含在TaskService中:o查詢分配給用戶或組的任務(wù)o創(chuàng)建獨(dú)立運(yùn)行任
10、務(wù)。這些任務(wù)與流程實(shí)例無關(guān)。o手工設(shè)置任務(wù)的執(zhí)行者,或者這些用戶通過何種方式與任務(wù)關(guān)聯(lián)。o認(rèn)領(lǐng)并完成一個(gè)任務(wù)。認(rèn)領(lǐng)意味著一個(gè)人期望成為任務(wù)的執(zhí)行者,即這個(gè)用戶會(huì)完成這個(gè)任務(wù)。完成意味著做這個(gè)任務(wù)要求的事情通常來說會(huì)有很多種處理形式。IdentityService非常簡(jiǎn)單。它可以管理(創(chuàng)建,更新,刪除,查詢.)群組和用戶。請(qǐng)注意,Activiti執(zhí)行時(shí)并沒有對(duì)用戶進(jìn)行檢查。例如,任務(wù)可以分配給任何人,但是引擎不會(huì)校驗(yàn)系統(tǒng)中是否存在這個(gè)用戶。這是Activiti引擎也可以使用外部服務(wù),比如ldap,活動(dòng)目錄,等等。FormService是一個(gè)可選服務(wù)。即使不使用它,Activiti也可以完美運(yùn)行,
11、不會(huì)損失任何功能。這個(gè)服務(wù)提供了啟動(dòng)表單和任務(wù)表單兩個(gè)概念。啟動(dòng)表單會(huì)在流程實(shí)例啟動(dòng)之前展示給用戶,任務(wù)表單會(huì)在用戶完成任務(wù)時(shí)展示。Activiti支持在BPMN2.0流程定義中設(shè)置這些表單。這個(gè)服務(wù)以一種簡(jiǎn)單的方式將數(shù)據(jù)暴露出來。再次重申,它時(shí)可選的,表單也不一定要嵌入到流程定義中。HistoryService提供了Activiti引擎收集的所有歷史數(shù)據(jù)。在執(zhí)行流程時(shí),引擎會(huì)保存很多數(shù)據(jù)(根據(jù)配置),比如流程實(shí)例啟動(dòng)時(shí)間,任務(wù)的參與者,完成任務(wù)的時(shí)間,每個(gè)流程實(shí)例的執(zhí)行路徑,等等。這個(gè)服務(wù)主要通過查詢功能來獲得這些數(shù)據(jù)。Managementservice在使用Activiti的定制環(huán)境中基本
12、上不會(huì)用到。它可以查詢數(shù)據(jù)庫的表和表的元數(shù)據(jù)。另外,它提供了查詢和管理異步操作的功能。Activiti的異步操作用途很多,比如定時(shí)器,異步操作,延遲暫停、激活,等等。1、如何實(shí)現(xiàn)一個(gè)業(yè)務(wù)流程o創(chuàng)建每個(gè)節(jié)點(diǎn)的jsp表單爆taskListljsp.view-form1jsp一般以list5面彈出一個(gè)form表單頁面就可以,至于表單的字段隱藏或者展示,由表單自己控制o部署流程把process_model導(dǎo)出為BPMN.XML格式,再導(dǎo)入進(jìn)行流程部署寸的砒IDKEYKarrw元MMJ-111175D5qjDBmoqpfrrrra1CMFflF皿粕亞弋做心組"2016fnamna-,qPfii
13、rTio"JiaMdlDn''1"dasavtiDn'17B54中中1FHF0號(hào)26143?串c打3D1&FflF汕gT201S,nbmb-瞋ms°nT%iCftpUW,:1眄R177721FriFZe17:0501C9Tnni工Ftl17WQISTJMM*dilBPMr4IJ30N1卿<爰程定應(yīng)“部M色理以示:曲小魔皿小切可以豆.副工PrweElMHgMiMOfpkqirTHinEWI名*KLT_AMLKjhS4VKWB.3«B1ilH覬外IW43rm皿3*%足血加1皿FrtFeb2Sl73l57CST/隹巴為f的
14、聲,*l.FnFeb2MJil:fiTCST印科俄卿l«m-jpa1:3tHXZ4ZW01drenq-JPA1IpjmcinnMrvMawluapnaXviQMC*OCl_一_.一.FrtFeb®1T31:5TCSTMeiK里傳百為開始流程保存業(yè)務(wù)實(shí)體leaveManager.saveLeave(entity);開始業(yè)務(wù)流程/用來設(shè)置啟動(dòng)流程的人員ID,引擎會(huì)自動(dòng)把用戶ID保存到activiti:initiator中identityService.setAuthenticatedUserId(entity.getUserId();/process為流程keyprocessI
15、nstance=runtimeService.startProcessInstanceByKey("process",businessKey,variables);辦理流程Map<String,Object可以獲取那些變量。taskSplete(taskId,variables);其中variables是可以傳遞在流程間的變量,通過variables=taskService.getVariables(taskId) 待辦列表TaskQuerytaskQuery=taskService.createTaskQuery().taskCandidateOrAssigned(
16、userId);/自己辦理或在該節(jié)點(diǎn)對(duì)應(yīng)工作組中的流程 過程中列表ProcessInstanceQueryquery=runtimeService.createProcessInstanceQuery().processDefinitionKey("process").active().orderByProcessInstanceId().desc();0,List<ProcessInstance>list=query.listPage(pageParamspageParams1);已結(jié)束列表HistoricProcessInstanceQueryquery=h
17、istoryService.createHistoricProcessInstanceQuery().processDefinitionKey("process").finished().orderByProcessInstanceEndTime().desc();List<HistoricProcessInstance>list=query.listPage(pageParams0,pageParams1);四、如何管理所有流程與實(shí)例 查看所有已部署的流程repositoryService.createProcessDefinitionQuery().acti
18、ve().orderByDeploymentId().desc(); 查看所有待辦tasks=taskService.createTaskQuery().active().orderByTaskId().desc().list();個(gè)人待辦tasks=taskService.createTaskQuery().taskCandidateOrAssigned(user.getId().active().orderByTaskId().desc().list(); 查看所有辦理中ProcessInstanceQuerydynamicQuery=runtimeService.createProces
19、sInstanceQuery().orderByProcessInstanceId().desc().active();辦理中(本人)ProcessInstanceQuerydynamicQuery=runtimeService.createProcessInstanceQuery().involvedUser(UserUtil.getUserFromSession(session).getId().orderByProcessInstanceId().desc().active(); 查看所有已辦HistoricProcessInstanceQuerydynamicQuery=history
20、Service.createHistoricProcessInstanceQuery().finished().orderByProcessInstanceEndTime().desc();已辦(本人)HistoricProcessInstanceQuerydynamicQuery=historyService.createHistoricProcessInstanceQuery().involvedUser(UserUtil.getUserFromSession(session).getId().finished().orderByProcessInstanceEndTime().desc(
21、);開發(fā)流程1.繪制流程圖Multi-instancetype代表是單用戶還是多用戶,單節(jié)點(diǎn),多用戶流程:必須設(shè)置下圖紅框?qū)傩?Collection(Multi-instance):Completioncondition(Multi-Collection(Multi-instance),代表是用戶的集合名稱,需要在代碼中設(shè)置Elementvariable(Multi-instance),集合中的屬性,不需要設(shè)置。DcKunwitatiQini;rtep2NdvalueName:ExclusiivE二Multi-instancelype二Collection(Multi-iinstanceji:
22、CompletioHc.onditicn(Mufti-iinstanE即二No喝BlueAEynctinonausrExecLrtionlictencoNd沖kutigGstmcrscoofiguncdCardinality(Mutti-insiairKej:NovalueElementviiablle(Muhi-irutance):IItforcompelcation:A>ecsiHm*ntcuI蛻白I由*<Sh>并行網(wǎng)關(guān)v,不管是否設(shè)置條件,都會(huì)并行執(zhí)行©包容網(wǎng)關(guān),根據(jù)條件可以執(zhí)行單個(gè)或多個(gè)分支。注意點(diǎn):1.繪制流程的時(shí)候,箭頭保證一定要已連接到usertask
23、2 .保證網(wǎng)關(guān)使用的時(shí)候,條件要寫明Flowcondition:$i也(3 .保證流程繪制的簡(jiǎn)單化,重復(fù)節(jié)點(diǎn)最好保證使用同一個(gè)usertask,減少jsp代碼的編寫量。2 .表單編寫MSB't3 .編寫后臺(tái)entityAgEntityAgTable(name=懺)publicclassSendCarextendsModelprivateStringphone;privateStringycNote;(3Column(coluinnDefinition=date")privateDateycBeginTime;(?Column(coluinnDefinition="d
24、ate11)privateDateycEndTime;Column(columnDefinition="number")privateprivateprivateprivateprivateprivateprivateintycNum;StringmddjStringksSuggesticnjStringIdSuggestion;StringcarNo;Stringdriver;StringdriverPhone;gColumn(columnDefinition="date11)privateDatebeginTime;(SCalumnfcolumnDefinit
25、ion='ctate'1)privateDateendTime;(?Column(columnDefinition=number*')privateFloatbeginLcsColumn(columDefinition=*'number'r)privateFloatendLcs;用來存儲(chǔ)表單共用的的屬entity繼承model類,model類中存在一個(gè)公共的業(yè)務(wù)實(shí)體commmodel,性。4.編寫后臺(tái)controllercyrmmodelcontroller,modelcontrollercontroller繼承開始功能也存在controller中。只是
26、由于開始和完成可能存在不同的業(yè)務(wù)需求,所以還是寫在自己的存在待辦,已辦,辦理的查詢列表,完成以及5.編寫前臺(tái)表單JS控制startWorkflow開始流程complete完成任務(wù)taskList待辦列表runningList辦理列表finishedList已辦列表Lcn(sessiongetld()"二三二二匚三三二m4.三;$eflfip1»jep3r-"-±r-二Q.一ULN3'rtS.1liUi,二ii-1L11nb13En、L-呂LirnL»*|E國n/tLcilz,.j-3_i_i_干_I.,_U5E廣、.己r呼Iy3W一三1UW1二型F口.EF0.二'白6二己尸且卜!:JF'一,'"Frf",Lk'R&R%jfT|riJWq|rd.*IjW.,Eh(HljjhL,UJ-x>.FJ|'"1,JTTJ11J1fc-1"1%*1一、*>yJ-<-IjTJT8.TT-T-Tphone&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 制定職業(yè)發(fā)展路線圖計(jì)劃
- 印刷行業(yè)美工工作總結(jié)
- 《豪宅精裝修解讀》課件
- 《制肺部疾病》課件
- 2023年山東省聊城市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年山東省菏澤市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年河南省許昌市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2023年內(nèi)蒙古自治區(qū)呼和浩特市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2022年貴州省遵義市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 《糖尿病飲食護(hù)理》課件
- 2024秋新商務(wù)星球版地理7年級(jí)上冊(cè)教學(xué)課件 第5章 地球表層的人文環(huán)境要素 第3節(jié) 世界文化的多樣性
- 《跨境電子商務(wù)基礎(chǔ)》課件-阿里巴巴國際站概述
- 政治-湖南省名校教育聯(lián)盟2025屆高三12月大聯(lián)考試題和答案
- 2025年上半年四川省成都市大數(shù)據(jù)中心招聘3人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案-1
- 重慶市渝北區(qū)六校聯(lián)盟2024-2025學(xué)年八年級(jí)上學(xué)期12月月考數(shù)學(xué)試題
- 2024年山東省聊城市中考英語真題含解析
- 2024年安徽省高中學(xué)業(yè)水平合格性考試語文試卷真題(含答案詳解)
- 中南大學(xué)《創(chuàng)新創(chuàng)業(yè)導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024潞安化工集團(tuán)有限公司第二批煤礦井下一線生產(chǎn)操作崗位招聘2820人筆試核心備考題庫及答案解析
- 痛風(fēng)課件教學(xué)
- 房地產(chǎn)中介業(yè)務(wù)管理制度
評(píng)論
0/150
提交評(píng)論