Activiti7基本介紹

官方地址官方地址
官方最新用戶文檔-V6.0.0
碼云鏡像-activiti-7-developers-guide
關于BPMNBPMN(Business Process Model AndNotation)- 業務流程模型和符號 是由BPMI(BusinessProcess Management Initiative)開發的一套標準的業務流程建模符號,使用BPMN提供的符號可以創建業務流程 。2004年5月發布了BPMN1.0規范.BPMI于2005年9月并入OMG(The Object Management Group對象管理組織)組織OMG于2011年1月發布BPMN2.0的最終版本 。

Activiti 就是使用 BPMN 2.0 進行流程建模、流程執行管理 , 它包括很多的建模符號 。

Activiti7基本介紹

文章插圖
可以使用這些符號來繪制流程圖,例如下圖:
Activiti7基本介紹

文章插圖
Activiti也是通過將這些流程圖的BPMN文件部署到數據庫中,然后啟動相應的流程,來完成工作流的一個映射 。這些節點可以指定一些參數、表達式、綁定事件或者綁定解析處理類,來實現對每個流程節點的處理 。
對于BPMN流程圖的繪制方法這里就不做贅述,因為我也不是了解很多,網上有許多非常好的文章可供參考 。
Activiti 的架構
引擎API是與Activiti交互的最常見方式 。中心起點是ProcessEngine,可以按照配置部分中所述的多種方式創建。從ProcessEngine,您可以獲得包含工作流/ BPM方法的各種服務 。ProcessEngine和服務對象是線程安全的 。因此,您可以為整個服務器保留對其中之一的引用 。

Activiti7基本介紹

文章插圖
api.services
Activiti的工作流程是通過讀取一個配置文件 , 然后得到一個工作流引擎實例,通過這個引擎可以獲取多個不同模塊的Service,然后就可以使用這些Service去完成相應的接口,比如部署會使用到RepositoryService,實例會用到RuntimeService等 。(注意:FormServiceIdentityService已經在新版本中刪除了)
// 獲取引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 獲取ServiceRuntimeService runtimeService = processEngine.getRuntimeService();RepositoryService repositoryService = processEngine.getRepositoryService();TaskService taskService = processEngine.getTaskService();ManagementService managementService = processEngine.getManagementService();IdentityService identityService = processEngine.getIdentityService();HistoryService historyService = processEngine.getHistoryService();FormService formService = processEngine.getFormService();DynamicBpmnService dynamicBpmnService = processEngine.getDynamicBpmnService();Service總覽Service名稱作用RepositoryService資源管理服務RuntimeService流程運行管理類TaskService任務管理類HistoryService歷史管理類ManagerService引擎管理類
Activiti7基本介紹

文章插圖
Activiti API
Activiti7基本介紹

文章插圖
activiti運行流程
流程部署在使用Activiti進行流程管理之前,首先需要將建模工具繪制的業務流程圖部署到數據庫中 , 這個時候就需要使用RepositoryService , 可以通過RepositoryService進行流程部署、查詢流程定義、暫?;蚣せ畎l布的流程定義等 。官方教程
部署流程ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();Deployment deploy = deploymentBuilder.addClasspathResource("bpmn/stadiumapplication.bpmn").name("球場申請流程").deploy();部署方式
ReposityService主要就是依靠調用DeploymentBuilder的接口來進行流程定義的部署的 。DeploymentBuilder支持多種方式的部署 。
public interface DeploymentBuilder {// 文件流方式部署DeploymentBuilder addInputStream(String resourceName, InputStream inputStream);DeploymentBuilder addInputStream(String resourceName,Resource resource);// 資源文件方式部署DeploymentBuilder addClasspathResource(String resource);// 字符串內容部署 , 一般是bpmn的xml內容字符串部署DeploymentBuilder addString(String resourceName, String text);// 字節數組部署DeploymentBuilder addBytes(String resourceName, byte[] bytes);// Zip壓縮包部署DeploymentBuilder addZipInputStream(ZipInputStream zipInputStream);// Bpmn模型部署,可動態生成BPMN model進行部署 。DeploymentBuilder addBpmnModel(String resourceName, BpmnModel bpmnModel);DeploymentBuilder setProjectManifest(ProjectManifest projectManifest);DeploymentBuilder setEnforcedAppVersion(Integer enforcedAppVersion);/***如果調用,則不會對bpmn2.0xsd進行XML模式驗證 。*一般不推薦*/DeploymentBuilder disableSchemaValidation();/*** 如果調用,則不會對流程定義進行驗證 , 以確定流程定義在引擎上是可執行的 。* 一般不推薦使用 。*/DeploymentBuilder disableBpmnValidation();/*** 為部署指定名字*/DeploymentBuilder name(String name);/*** 為部署指定種類*/DeploymentBuilder category(String category);/*** 為部署指定Key,該屬性默認是bpmn的id*/DeploymentBuilder key(String key);/*** 為部署指定租戶ID,沒有用到過 。。。*/DeploymentBuilder tenantId(String tenantId);/*** 如果已設置,則此部署將與以前的任何部署進行比較 。這意味著每個(未生成的)資源都將與此部署提供的資源進行比較 。*/DeploymentBuilder enableDuplicateFiltering();/*** 設置激活此部署中包含的流程定義的日期 。這意味著所有流程定義都將像往常一樣部署 , 但它們將從在給定的激活日期之前開始 。*/DeploymentBuilder activateProcessDefinitionsOn(Date date);/*** 允許將影響部署的屬性添加到實例中*/DeploymentBuilder deploymentProperty(String propertyKey, Object propertyValue);/*** 將所有提供的源部署到Activiti引擎 。*/Deployment deploy();}

推薦閱讀