免费毛片网站/一级成人在线/91免费版黄色软件/亚洲丶国产丶欧美一区二区三区 - 网站一区

我國唯一的項目管理信息化門戶網站,國內項目管理軟件資訊服務提供商

登錄 注冊
當前位置:首頁 > 項目管理軟件 > 正文

Activiti6.0在項目管理軟件中的運用

2020-10-28 來源:本文發表在《現代信息科技》作者:上海寶通汎球電子有限公司錢葉丹
,當創建了流程引擎實例后,在ProcessEngine中會初始化一系列接口實例,這些接口實例提供了大部分操作流程引擎數據的業務方法,可以使用ProcessEngine中的getXXXService方法得到這些接口的實例。接口實例具體信息如圖2所示。
3.2 編寫Activiti程序
既然這是一個框架,自然就是引進jar包,畫流程圖,然后實現該框架提供的接口來做我們想要做的事情。
前期環境配置工作包括3步:Eclipse插件安裝、IDEA插件安裝、Activiti安裝。一系列的環境準備工作結束,就可以編寫Activiti程序。
Activiti框架會幫我們把對應的數據庫表創建起來,它關聯的數據庫表有23個,不同的表頭代表不同的用途,對應Service的不同API。
3.2.1 定義工作流
新建一個含有二級審核的工作流程,在每一步任務中,我們都可以指定對應的處理人是誰。流程圖如圖3所示。
流程圖對應的文件audit.xml部分如下:
 
 
 
 
上述為一個流程文件部分內容。該文件中的process元素用于描述流程信息,而bpmndi;BPMNDiagram元素則用于描述流程節點的位置信息。在process元素中定義了開始事件srartEvent、兩個usertask和結束事件endEvent以及連接這些元素的順序流(sequenceFlow)。
3.2.2 部署工作流
把工作流部署到工作流引擎中:
@Test
Public void deploy(){//獲取倉庫服務:管理流程定義
RepositoryService repositoryService = processEngine getRepositoryService():
Deployment deploy = repositoryService create Deployment()//創建一個部署的構建器
addClasspathResource("LeaveActiviti.bpmn")//添加資源,一次只能添加一個
.name("請求單流程")//設置部署的名稱
.category("辦公類別")//設置部署的類別
.deploy():
System.out.println("部署的id"+deploy.getId()):
System.out.println("部署的名稱"+deploy.getName()):}
3.2.3 執行工作流
指定執行剛才部署的工作流就是我們定義時設置的工作流程圖中的當前任務id:
@Test
Public void startProcess(){//指定執行我們剛才部署的工作流程
String processDe?Key="leaveBill"://取運行時服務
RuntimeService runtimeService = processEngine getRuntimeService()://取得流程實例
ProcessInstance pi = runtimeService.startProcessInstanceByKey(processDe?Key):
System.out.println("流程實例id;"+pi.getId())://流程實例id
System.out.println("流程定義id;"+pi.getProcessDe?nitionId())://輸出流程定義的id}
3.2.4 查看任務信息
根據任務辦理人,查看當前任務信息:
@Test
Public void queryTask(){//任務的辦理人
String assignee="辦理人"://取得任務服務
TaskService taskService = processEngine.getTaskService()://創建一個任務查詢對象
TaskQuerytaskQuery=taskService.createTaskQuery()://辦理人的任務列表
Listlist=taskQuery.taskAssignee(assignee)//指定辦理人
.list()://遍歷任務列表
if(list!=null&&list.size()>0){
for(Tasktask;list){
System.out.println("任務的辦理人:"+task.getAssignee()):
System.out.println("任務的id:"+task.getId()):
System.out.println("任務的名稱:"+task.getName()):
}}}
3.2.5 處理當前任務
當前任務的id已經查詢出來了,處理id為304的這個任務:
@Test
Public void compileTask(){
String taskId="304"://taskId:任務id
processEngine.getTaskService().complete(taskId):
System.out.println("當前任務執行完畢"):}
3.2.6 刪除流程
刪除部署id=101這個流程定義的數據:
@Test
Public void deleteProcessDe?(){
//通過部署id來刪除流程定義
String deploymentId="101":
processEngine.getRepositoryService().deleteDeployment(deploymentId):
}
4 Activiti問題總結
在實際的項目開發過程中,筆者不斷遇到了一些問題與挑戰,同時也積累了一些經驗。從Activiti數據庫的連接;到排他網關與并行網關的不同設置;再到執行監聽器的配置與使用,任務監聽器的配置與使用等等的入坑事件。下面總結幾個遇到的比較典型的問題。
4.1 會簽功能
實際項目中會碰到某個任務節點需要實現會簽功能的要求,就是指一個任務需要多人進行審批,多人都審批通過后,流程才能繼續往下走。目前的實現方式為:
(1)啟動這個流程圖時,遍歷所有任務,獲取當前任務的辦理人;
(2)將任務辦理人做成一個集合,每個辦理人元素用逗號分隔;
(3)將這個集合的鍵以Publicitylist_加上當前的元素ID,值以前面獲取到的集合放入Activiti上下文。將這個參數作為Activiti啟動參數放入即可。
4.2 回退功能
實際項目中還會碰到某個任務節點需要實現回退功能的要求。就是指能夠回退到流程圖上的任意節點,Activiti無法滿足這樣的項目需求,就需
分享到:

免責聲明:
  1、項目管理信息化網發布的所有資訊與文章是出于為業界傳遞更多信息之目的,并不意味著贊同其觀點或證實其描述。其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請瀏覽者僅作參考,并請自行核實相關內容。
  2、本站部分內容轉載于其他網站和媒體,版權歸原作者或原發布媒體所有。如文章涉及版權等問題,請聯系本站,我們將在兩個工作日內進行刪除或修改處理。敬請諒解!

延伸閱讀:

more>

會議活動

more>

公開課

more>

PMO

Copyright ? 2021 項目管理信息化網 版權所有 京ICP備17062359號-9 如轉載本站文章,請注明原作者和原發布媒體

本著互聯網分享精神,本站部分內容轉載于其他網站和媒體,如內容涉及版權等問題,請聯系本站進行刪除或修改處理

客服電話:010-89506650 89504891 非工作時間可聯系:18701278071(微信) QQ在線:574888227

新聞與原創文章投稿:tougao#cpmta.com 客服郵箱:info#cpmta.com(請將#換成@)

我國唯一的項目管理信息化門戶網站,國內項目管理軟件資訊服務提供商,隸屬卓橡公司

項目管理信息化微信公眾號

PMO大會微信公眾號