還有一些較重要的services,詳細請自行查看activiti apihtml
activiti 會自動建表。因此在與spring集成時,須要指定與數據庫相關的bean。
當這些都準備好時,初始化spring.xml 時 activiti 的引擎會自動幫助把activiti相關的表建立好。
針對這些表的詳細信息可參考:- 數據庫設計說明書java
根據上面給的幾個連接,差很少就能本身慢慢倒騰出來一個本身的工做流了,這裏記錄下我學習的所得。git
這是工做流開發的前提。可是剛入門可能不知道這個東西怎麼定義。我開始都是找現有定義好的流程拿來使用,後面學習到了必定的時候再定義本身的。github
流程定義好了,須要部署到引擎中來。便於後續的工做。(部署一次就好,不用屢次部署)web
流程定義會保存到持久化的數據存儲裏spring
部署分下列幾種方式:數據庫
編程式部署,即在程序中將以有的流程定義進行部署(暫時用的就是這種)編程
代碼示例:api
Deployment deployment = repositoryService.createDeployment().addClasspathResource("activitiDemo.bpmn20.xml").deploy();
經過 Activiti Explorer 方式部署 。即 Activiti web控制檯容許你經過web界面的用戶接口上傳一個bar格式的壓縮文件(或者一個bpmn20.xml格式的文件)。 選擇Management 標籤 和 點擊 Deployment數據庫設計
部署成功後,會自動生成一個部署的ID,標識部署成功的流程定義。
在數據庫層作的操做:
act_re_deployment
表中保存部署成功生成的記錄(主要時id,跟部署時間)act_re_procdef
表中存放啓動流程定義的信息 部署好流程定義後,咱們就能夠啓動一個流程實例。 (開始學習時,建議啓動一個流程跑完,不要重複啓動)
在啓動這個流程有不少不一樣方法,也重載了不少方法。詳見:startProcessInstanceBy**
固然最簡單就是隻給流程定義ID(不是指流程定義部署成功後獲得的ID,而是bpmn20.xml 裏面的 process id="activitiDemo") 。 這一點在用戶指南上也有說明。
代碼示例:
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("activitiDemo");
注: 部署與啓動之間關係: 一個部署好的流程能夠屢次啓動,每次啓動都會獲得一個ID。
在數據庫層面的操做:
act_ru_execution
存放啓動成功的流程實例act_ru_identitylink
存放用戶相關的信息(着須要在啓動時指定一個用戶 map)act_ru_task
存放用戶任務相關的信息act_ru_variable
存放一些運行時的相關變量在啓動一個流程後,那麼這個流程就進入運行狀態中。
當流程定義中有UserTask時,那麼activiti引擎則會自動將task 持久化到數據庫。
這時咱們須要去處理完成任務,讓流程繼續到下一節點,或者流程結束。
我在xml,只有簡單的流程,定義了UserTask,但沒有指定任務處理人因此這裏我只須要去完成該任務就ok。
代碼示例:
List<Task> taskList = taskService.createTaskQuery().processDefinitionKey("activitiDemo").list(); taskService.complete(taskList.get(0).getId());
完整代碼請點擊這裏: Activiti_Simple
一個複雜的流程中還涉及 用戶,businessKey 。 流程定義中會出現 userTask ,指定任務處理人或者組(須要用戶來簽收,處理)。這些都在用戶指南有示例。 後續我會跟進。