学校网站网页建设开题报告书,网站技术防护建设,如何做网站推广最有效,wordpress 导入word一、概述
Activiti是一个工作流引擎#xff0c; Activiti可以将业务系统中复杂的业务流程抽取出来#xff0c;并用专门的建模语言BPMN2.0进行定义#xff0c;业务流程按照预先定义的流程进行执行#xff0c;实现了系统的流程由Activiti进行管理#xff0c;减少业务系统由…一、概述
Activiti是一个工作流引擎 Activiti可以将业务系统中复杂的业务流程抽取出来并用专门的建模语言BPMN2.0进行定义业务流程按照预先定义的流程进行执行实现了系统的流程由Activiti进行管理减少业务系统由于流程变更进行系统升级改造的工作量提高了系统的健壮性减少了系统开发维护成本。
官网地址
https://www.activiti.org/二、基于Maven整合Activiti
这也是较为原生的方式去使用Activiti有助于对Activiti基础的理解。
2.1 创建一个Maven工程 输入完项目基本信息后点击下方的Finish即可创建一个最基本的Maven项目。
2.2 在pom文件中添加Maven坐标
propertiesslf4j.version1.6.6/slf4j.versionlog4j.version1.2.12/log4j.versionactiviti.version7.0.0.Beta1/activiti.version
/properties
dependencies!-- activiti流程引擎 --dependencygroupIdorg.activiti/groupIdartifactIdactiviti-engine/artifactIdversion${activiti.version}/version/dependency!-- activiti和spring的整合包 --dependencygroupIdorg.activiti/groupIdartifactIdactiviti-spring/artifactIdversion${activiti.version}/version/dependency!-- bpmn 模型处理 --dependencygroupIdorg.activiti/groupIdartifactIdactiviti-bpmn-model/artifactIdversion${activiti.version}/version/dependency!-- bpmn 转换 --dependencygroupIdorg.activiti/groupIdartifactIdactiviti-bpmn-converter/artifactIdversion${activiti.version}/version/dependency!-- bpmn json数据转换 --dependencygroupIdorg.activiti/groupIdartifactIdactiviti-json-converter/artifactIdversion${activiti.version}/version/dependency!-- bpmn 布局 --dependencygroupIdorg.activiti/groupIdartifactIdactiviti-bpmn-layout/artifactIdversion${activiti.version}/version/dependency!-- activiti 云支持 --dependencygroupIdorg.activiti.cloud/groupIdartifactIdactiviti-cloud-services-api/artifactIdversion${activiti.version}/version/dependency!-- mysql驱动版本不要过低要不然连接mysql8 的时候直接会报如下错误 --!-- Cannot create PoolableConnectionFactory (Unknown system variable ‘query_cache_size‘) --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.47/version/dependency!-- mybatis --dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.4.5/version/dependency!-- 链接池 --dependencygroupIdcommons-dbcp/groupIdartifactIdcommons-dbcp/artifactIdversion1.4/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependency!-- log start --dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion${log4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion${slf4j.version}/version/dependency
/dependencies如果报 com.github.jgraph:jgraphx 依赖找不到有两种解决方案 可以手动将依赖下载到本地 如果不想看到报红可以将该依赖排除 dependencygroupIdorg.activiti/groupIdartifactIdactiviti-bpmn-layout/artifactIdversion${activiti.version}/versionexclusionsexclusiongroupIdcom.github.jgraph/groupIdartifactIdjgraphx/artifactId/exclusion/exclusions
/dependency因为其实没有该依赖也不影响使用
2.3 添加log4j日志配置文件
因为引入了log4j的Maven坐标所以需要在项目的resources目录下增加log4j.properties配置文件。
这样系统就会根据配置文件中的配置去输出日志了。
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategoryINFO, CONSOLE debug info warn error fatal
log4j.rootCategorydebug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterpriseFATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLEorg.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layoutorg.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILEorg.apache.log4j.FileAppender
log4j.appender.LOGFILE.FileF:\activiti\activiti.log
log4j.appender.LOGFILE.Appendtrue
log4j.appender.LOGFILE.layoutorg.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n可以根据项目需求或者个人喜好进行更改。
注意
log4j.appender.LOGFILE.File配置的值F:\activiti\activiti.log在F盘的对应路径下activiti.log文件需要提前存在要不然会报文件找不到的异常。
2.4 添加Activiti配置文件
Activiti提供的默认方式来创建MySQL表的要求是在resources下创建activiti.cfg.xml文件.
默认方式配置要求
目录和文件名不能修改因为Activiti的源码中已经编写了到固定的目录读取固定文件名的文件。在activiti.cfg.xml中bean的名字叫processEngineConfiguration不要修改这个名称。
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beans
xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance
xmlns:contexthttp://www.springframework.org/schema/context
xmlns:txhttp://www.springframework.org/schema/tx
xsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/contex
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd!-- 这里可以使用 dbcp 连接池 --bean iddataSource classorg.apache.commons.dbcp.BasicDataSourceproperty namedriverClassName valuecom.mysql.jdbc.Driver /property nameurl valuejdbc:mysql:///activiti /property nameusername valueroot /property namepassword value123456 /property namemaxActive value3 /property namemaxIdle value1 //beanbean idprocessEngineConfigurationclassorg.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration!-- 引用数据源 上面已经设置好了--property namedataSource refdataSource /!-- activiti数据库表处理策略 --property namedatabaseSchemaUpdate valuetrue//bean/beans三、生成Activiti中的25张表
3.1 使用默认方式
就是使用默认的配置文件(配置文件名称和位置不能修改)和流畅引擎类bean名称不能修改的方式。
public class TestActiviti {Testpublic void testCreateDbTable() {// 使用classpath下的activiti.cfg.xml中的配置创建processEngine// 而resources下的文件就是处于classpath下的ProcessEngine processEngine ProcessEngines.getDefaultProcessEngine();System.out.println(processEngine);}
}3.2 使用自定义方式
配置文件的名字可以自定义,bean的名字也可以自定义。
但是下面的代码中还是写的和原来默认一样的配置文件名和bean。
public class TestActiviti {Testpublic void testCreateDbTable() {ProcessEngineConfiguration processEngineConfiguration ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(activiti.cfg.xml, processEngineConfiguration);// 获取流程引擎对象此时就会创建数据库ProcessEngine processEngine processEngineConfiguration.buildProcessEngine();}
}四、表结构解析
执行上面代码后就会在本地的activiti数据库中创建25张表。
4.1 表命名规则说明 ACT ACT其实也就是Activiti 的意思就是说这些表都是Activiti相关的表。 ACT_RE RE表示 repository。 这个前缀的表包含了流程定义和流程静态资源 图片规则等等。 ACT_RURU表示 runtime。 这些运行时的表包含流程实例任务变量异步任务等运行中的数据。 Activiti 只在流程实例执行过程中保存这些数据 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。 ACT_HIHI表示 history。 这些表包含历史数据比如历史流程实例 变量任务等等。 ACT_GE GE 表示general。 通用数据 用于不同场景下
4.2 Activiti数据表说明
表分类表名解释一般数据[ACT_GE_BYTEARRAY]通用的流程定义和流程资源[ACT_GE_PROPERTY]系统相关属性流程历史记录[ACT_HI_ACTINST]历史的流程实例[ACT_HI_ATTACHMENT]历史的流程附件[ACT_HI_COMMENT]历史的说明性信息[ACT_HI_DETAIL]历史的流程运行中的细节信息[ACT_HI_IDENTITYLINK]历史的流程运行过程中用户关系[ACT_HI_PROCINST]历史的流程实例[ACT_HI_TASKINST]历史的任务实例[ACT_HI_VARINST]历史的流程运行中的变量信息流程定义表[ACT_RE_DEPLOYMENT]部署单元信息[ACT_RE_MODEL]模型信息[ACT_RE_PROCDEF]已部署的流程定义运行实例表[ACT_RU_EVENT_SUBSCR]运行时事件[ACT_RU_EXECUTION]运行时流程执行实例[ACT_RU_IDENTITYLINK]运行时用户关系信息存储任务节点与参与者的相关信息[ACT_RU_JOB]运行时作业[ACT_RU_TASK]运行时任务[ACT_RU_VARIABLE]运行时变量表
五、Activiti的基本类关系
在Activiti7中已经删除了IdentityServiceFormService两个Serivce类。 activiti.cfg.xml是Activiti的引擎配置文件。
包括ProcessEngineConfiguration的定义、数据源定义、事务管理器等。相当于一个Spring配置文件。
ProcessEngineConfiguration可以用来创建ProceccEngine。
而ProceccEngine又可以获取管理Activiti中各种核心Service。
5.1 ProcessEngineConfiguration
流程引擎的配置类ProcessEngineConfiguration通过ProcessEngineConfiguration可以创建工作流引擎ProceccEngine。
创建processEngineConfiguration也有两种方式: 方式一固定名称 下边的代码要求activiti.cfg.xml中必须有一个processEngineConfiguration的bean。 ProcessEngineConfiguration configuration ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(activiti.cfg.xml)方式一自定义名称 activiti.cfg.xml配置文件名称可更改processEngineConfiguration的bean名称可更改。 ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(String resource, String beanName);5.2 ProcessEngineConfiguration
工作流引擎ProcessEngine相当于一个统一管理接口。
通过ProcessEngineConfiguration创建processEngine通过ProcessEngine获取各个Service接口。 方式一固定名称 下边的代码要求activiti.cfg.xml中必须有一个processEngineConfiguration的bean。 // 直接使用工具类 ProcessEngines使用classpath下的activiti.cfg.xml中的配置创建processEngine
ProcessEngine processEngine ProcessEngines.getDefaultProcessEngine();
System.out.println(processEngine);方式一自定义名称 activiti.cfg.xml配置文件名称可更改processEngineConfiguration的bean名称可更改。 //先构建ProcessEngineConfiguration
ProcessEngineConfiguration configuration ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(activiti.cfg.xml);
//通过ProcessEngineConfiguration创建ProcessEngine此时会创建数据库
ProcessEngine processEngine configuration.buildProcessEngine();5.3 Servcie服务接口
各类Service服务接口是工作流引擎提供用于进行工作流部署、执行、管理的服务接口。
使用这些接口可以就是操作服务对应的数据表。
1service概览
service名称service作用RepositoryServiceactiviti的资源管理类RuntimeServiceactiviti的流程运行管理类TaskServiceactiviti的任务管理类HistoryServiceactiviti的历史管理类ManagerServiceactiviti的引擎管理类 RepositoryService Activiti的资源管理类提供了管理和控制流程发布包和流程定义的操作。 使用工作流建模工具设计的业务流程图需要使用此service将流程定义文件的内容部署到计算机。 除了部署流程定义以外还可以查询引擎中的发布包和流程定义暂停或激活发布包对应全部和特定流程定义。 暂停意味着它们不能再执行任何操作了激活是对应的反向操作。获得多种资源像是包含在发布包里的文件 或引擎自动生成的流程图。 获得流程定义的pojo版本 可以用来通过Java解析流程而不必通过xml。 RuntimeService Activiti的流程运行管理类。可以从这个服务类中获取很多关于流程执行相关的信息 TaskService Activiti的任务管理类。可以从这个类中获取任务的信息。 HistoryService Activiti的历史管理类可以查询历史信息执行流程时引擎会保存很多数据根据配置比如流程实例启动时间任务的参与者 完成任务的时间每个流程实例的执行路径等等。 这个服务主要通过查询功能来获得这些数据。 ManagementService Activiti的引擎管理类提供了对 Activiti 流程引擎的管理和维护功能这些功能不在工作流驱动的应用程序中使用主要用于 Activiti系统的日常维护。
2Service创建方式
通常通过ProcessEngine创建各类Service就以RuntimeService为例其余Service也是一样的。
RuntimeService runtimeService processEngine.getRuntimeService();
RepositoryService repositoryService processEngine.getRepositoryService();
TaskService taskService processEngine.getTaskService();ce**
Activiti的引擎管理类提供了对 Activiti 流程引擎的管理和维护功能这些功能不在工作流驱动的应用程序中使用主要用于 Activiti系统的日常维护。
2Service创建方式
通常通过ProcessEngine创建各类Service就以RuntimeService为例其余Service也是一样的。
RuntimeService runtimeService processEngine.getRuntimeService();
RepositoryService repositoryService processEngine.getRepositoryService();
TaskService taskService processEngine.getTaskService();