时间:2021-07-01 10:21:17 帮助过:10人阅读
1流程实例:a和b都发起了一个病假,那么就产生了两个病假的流程实例
2流程定义:a和b请的病假就是一个流程定义
activiti服务架构图 上面的架构说白了就是通过activiti.cfg.xml获取引擎配置对象ProcessEngineConfiguration 通过这个配置对象获取引擎对象ProcessEngine, 最后可以通过引擎获取各个service来进行流程的处理 下面简介各个service的作用
RepositoryService | activiti的资源管理类 ,用于流程部署,获取流程部署的资源。。 |
RuntimeService | activiti的流程运行管理类,用于启动一个流程实例,操作当前运行的流程信息 |
TaskService | activiti的任务管理类,操作个人任务,组任务 |
HistoryService | activiti的历史管理类,用于操作历史 流程信息 |
IdentityService | activiti的用户身份管理类,设置用户、组(角色)、用户和组关系 。。 |
FormService | activiti的表单管理类,实现activiti中配置表单数据。 |
ManagerService | activiti的引擎管理类,用于activiti运行的监控,给超级管理员使用。 |
下面是activi的安装 Activiti下载地址:http://activiti.org/download.html(我用的5.14版本) 下载好了后目录结构 database里面就有我们需要的数据库,activiti支持多种数据库 h2, mysql, oracle, postgres, mssql, db2 我这里采用mysql做演示 创建数据库的方式
采用程序创建的方式
在classpath目录下简历activiti.cfg.xml(为什么在这个位置简历名称为这个的后面说)<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd "> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/activiti" /> <property name="username" value="ferwms" /> <property name="password" value="ferwms" /> <property name="maxActive" value="3" /> <property name="maxIdle" value="1" /> </bean> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!-- 数据源 --> <property name="dataSource" ref="dataSource" /> <!-- activiti数据库表处理策略 --> <property name="databaseSchemaUpdate" value="true" /> </bean> </beans>
其实就是一个spring的配置 大家会发现在上面的processEngineConfiguration里面有一个参数databaseSchemaUpdate是数据库处理的策略,几种策略如下 false(默认):检查数据库表的版本和依赖库的版本, 如果版本不匹配就抛出异常。 true: 构建流程引擎时,执行检查,如果需要就执行更新。 如果表不存在,就创建。(常用) create-drop: 构建流程引擎时创建数据库表, 关闭流程引擎时删除这些表。 drop-create:先删除表再创建表。(常用,使用完成后改为true) create: 构建流程引擎时创建数据库表, 关闭流程引擎时不删除这些表。 我们选择的是true,所以在创建流程引擎的时候会检查不存在就创建 下面的程序得到流程引擎对象
/从classpath目录下查找resource名称的xml(如果不指定就默认activiti.cfg.xml) //从里面找出bean的id为processEngineConfiguration的流程引擎配置类, //当然也有其他的构造类可以指定bean的id String resource = "activiti.cfg.xml"; ProcessEngineConfiguration configuration = ProcessEngineConfiguration. createProcessEngineConfigurationFromResource(resource); //根据流程配置对象获取引擎,发现策略是true, //也就是没有数据库就创建数据库,所以会自动创建activiti的数据库 ProcessEngine processEngine = configuration.buildProcessEngine();
创建完的数据库 那么不同的名称的作用是什么 ACT_RE_*: ‘RE‘表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。 ACT_RU_*: ‘RU‘表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。 ACT_ID_*: ‘ID‘表示identity。 这些表包含身份信息,比如用户,组等等。 ACT_HI_*: ‘HI‘表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。 ACT_GE_*: GE表示general。通用数据, 用于不同场景下。 eclipse下activiti-designer插件的安装(绘制流程图生成bpmn文件) 我这里使用eclipse-indigo版本,其他出问题 1打开eclipse创建myplugins文件夹 2将上面的activiti文件解压放进去 3打开eclipse下的dropins创建文件activiti.txt 4设置里面内容为path=d:\\eclipse\\activiti 地址是你eclipse自己的地址 5重启eclipse,右击新建-other可以找到activiti windows-preference点上这个,可以在生成bpmn文件的同时生成一张流程的png文件,因为activiti代码生成的会乱码,需要修改源码,很麻烦
打开windows-showView-other 打开properties视图,可以更方便修改bpmn流程图
1activiti认识和数据库和插件配置
标签:管理员 文件夹 设置 pos 变量 xmlns 记录 gen 系统