中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Activiti中常用服務組件是什么

發布時間:2021-10-21 09:12:05 來源:億速云 閱讀:165 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關Activiti中常用服務組件是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

Activiti針對工作流的一系列操作,都封裝在他的服務組件當中,因此要學習activiti,首先要做的就是學習了解他的常用服務組件。

1.ativiti常用服務組件的基本介紹:

  1. RepositoryService:提供一系列管理流程定義和流程部署的API。 

  2. RuntimeService:在流程運行時對流程實例進行管理與控制。

  3. TaskService:對流程任務進行管理,例如任務提醒、任務完成和創建任務分本任務等。

  4. IdentityService:提供對流程角色數據進行管理的API,這些角色數據包括用戶組、用戶以及它們之間的關系。

  5. ManagementService:提供對流程引擎進行管理和維護的服務。

  6. HistoryService:對流程的歷史數據進行操作,包括查詢、刪除這些歷史數據。

  7. FormService:表單Service,用于讀取和流程,任務相關的表單數據。

  8. DynamicBpmnService:使用該服務,可以不需要重新部署流程模型,就可以實現對流程模型的部分修改。

2.如何理解服務組件之間的關系

如何理解服務組件之間的關系,必須先從工作流的使用角度來理解。

以報銷流程為例:

工作流并不是憑空出現的,并不是員工提起報銷請求,系統就毫無根據的生成了工作流。而是需要管理員來規定報銷這個工作流中各個環節,各個條件。那么管理員如何來使用activiti來定義一個新的工作流呢?RepositoryService為我們提供了與此相關的一系列方法,可以讓我們能夠定義工作流并將工作流部署到服務器當中去。可以將RepositoryService理解為創建java面向對象思想中的類。

當有了一個流程的定義,員工如何去申請一個報銷流程呢,因為每一個員工情況都不一樣,他們都需要有個獨立的流程來解決各自的問題(類似于java中的對象)。RuntimeService為我們提供了相應的方法,來根據一個流程定義去創建流程實例,并可以對流程實例進行一系列的操作。

此處還有一個task的概念,task可以理解為我們流程圖中的一個審批任務(節點),一個流程實例只要被創建了并且還沒有結束,就一個其中某一個節點上。而我們也可以使用RuntimeService來獲取我們流程當前所處于task。而TaskService則可以對task進行完成、管理各種操作。

此外activiti還通過IdentityService提供給我們了統一管理提起流程、參與流程的所有用戶和用戶組的一系列方法,并允許通過taskService中的方法為task設定系統中的審批用戶或者用戶組。

HistoryService則是因為我們有時需要查詢已經走完全部流程的流程實例,他給我們提供一系列操作歷史數據的方法。

ManagementService和DynamicBpmnService暫時用到的還比較少,以后再補充。//todo

3.如何創建服務組件

普通java項目中我們需要先聲明工作流引擎ProcessEngine ,然后根據工作流引擎來獲取各種服務組件。

ProcessEngine engine= ProcessEngines.getDefaultProcessEngine();
        //工作流定義相關服務
        RepositoryService rs=engine.getRepositoryService();
        //工作流實例相關服務
        RuntimeService runtimeService=engine.getRuntimeService();
        //任務相關服務服務
        TaskService taskService=engine.getTaskService();

        //將流程模板存儲到數據庫中
        rs.createDeployment().addClasspathResource("first.bpmn").deploy();

        //創建一個流程實例
        ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("myProcess_1");

        //普通員工填寫完成請假任務  task即為當前節點
        Task 
       task=taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
        System.out.println("當前流程節點:"+task.getName());
        taskService.complete(task.getId());

而spring項目中我們可以直接通過@Autowired注解的方式來獲取我們的服務組件,如下

    @Autowired
    private RuntimeService runtimeService;

    @Autowired
    private RepositoryService repositoryService;

    @Autowired
    private TaskService taskService;

    @Autowired
    private IdentityService identityService;

    @Autowired
    private HistoryService historyService;

關于Activiti中常用服務組件是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昔阳县| 湘阴县| 兴国县| 石景山区| 云梦县| 江口县| 安龙县| 汶川县| 西宁市| 汤阴县| 乌拉特前旗| 莆田市| 延边| 安丘市| 新泰市| 裕民县| 南康市| 青阳县| 龙川县| 阿拉尔市| 盐城市| 汝城县| 曲松县| 霍城县| 文化| 阿勒泰市| 报价| 塘沽区| 湾仔区| 容城县| 新晃| 礼泉县| 渑池县| 晋江市| 巴彦县| 准格尔旗| 乌拉特后旗| 克东县| 奎屯市| 沁阳市| 绍兴县|