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进行流程部署、查询流程定义、暂停或激活发布的流程定义等 。官方教程
部署流程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();}

推荐阅读