使用 IDEA 创建 Activity 项目
- 使用 IDEA 创建一个项目,然后再 POM 文件中加入依赖
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <!--- Activiti依赖导入 --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId> <version>5.18.0</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>5.18.0</version> <exclusions> <exclusion> <artifactId>slf4j-api</artifactId> <groupId>org.slf4j</groupId> </exclusion> <exclusion> <artifactId>spring-beans</artifactId> <groupId>org.springframework</groupId> </exclusion> <exclusion> <artifactId>jackson-core-asl</artifactId> <groupId>org.codehaus.jackson</groupId> </exclusion> <exclusion> <artifactId>commons-lang3</artifactId> <groupId>org.apache.commons</groupId> </exclusion> <exclusion> <artifactId>commons-lang3</artifactId> <groupId>org.apache.commons</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version> </dependency>
工作流就是工作流,那是不是得有流程图,就像某些 OA 系统中,要先进行定义流程图,然后自动给你开始搞事情,我们画个流程图来试试。
- 在src/main/resources下面新建一个BPMN文件
流程图建立完成之后,就出现了在 IDEA 中从来没有见过的画面,
大家看上图的右半部分,是不是有很多的类似按钮的标志,我们来解释一下他们都是些什么。
- StartEvent:启动事件元素,启动事件元素就是启动流程实例的,也就是发起一个流程的,是流程的起点。它可以配置的很简单,也可以很复杂。
- EndEvent:结束事件元素,Activity工作流始于开始任务,止于结束任务
- UserTask:用户操作的任务
- ScriptTask: 脚本任务
- ServiceTask:服务任务
- MailTask: 邮件任务
- ManualTask: 手工任务
- ReceiveTask: 接收任务
- BusinessRuleTask:规则任务
- CallActivityTask:调用其他流程任务
- SubProcess: 子流程
- Pool: Pool池
- Lane: Lane小巷 (注意:Lane小巷是放在Pool池里面的)
- ParallelGateWay: 并行网关
- ExclusiveGateWay: 排他网关
- InclusiveGateWay: 包容网关
- EventGateWay: 事件网关
- BoundaryEvent: 边界事件
- IntermediateCatchingEvent: 中间事件
- IntermediateThrowingEvent:边界补偿事件
- Annotation: 注释
我们先画一个简单的流程图,然后生成我们需要的表。
图我们换完了,接下来我们就来整个 Activity 的配置文件,然后使用配置文件去生成表。
activity.cfg.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/managementactivity?useUnicode=true&characterEncoding=utf8"></property> <property name="jdbcUsername" value="root"></property> <property name="jdbcPassword" value="123456"></property> <property name="databaseSchemaUpdate" value="true"></property> </bean> </beans>
接下来我们就是用这个配置,去生成我们的数据表,
package com.activity.zhiyikeji.management; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngineConfiguration; import org.junit.Test; /** * @ClassName LeaveFlow * @Author * @Date 2021/6/11 14:06 * @Description LeaveFlow */ public class LeaveFlow { @Test public void creatTable(){ ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activity.cfg.xml").buildProcessEngine(); } }
执行的时候,我们看一下控制台打印了什么内容,
然后去看看你的数据库,是不是生成成功了,看一看表的数量,一般是24,
从数据包中取出来的 SQL 脚本是多了一个流程定义信息表,这么看来,这个表对使用 Activity 来说意义不大,没他还是可以运行的。
我们已经创建好表之后,接下来我们就来直接进行部署我们画的流程图,然后看看数据库的表中是一些什么样子的数据。
/** * 部署请假流程 */ @Test public void deployLeaveFlow(){ ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activity.cfg.xml").buildProcessEngine(); RepositoryService repositoryService = processEngine.getRepositoryService(); DeploymentBuilder builder = repositoryService.createDeployment(); builder.addClasspathResource("zhiyikeji.BPMN");//bpmn文件的名称 builder.deploy(); }
嘿,提示完成了,一次过,没出错,
14:32:50.747 [main] DEBUG org.activiti.engine.impl.interceptor.LogInterceptor - --- DeployCmd finished -------------------------------------------------------- 14:32:50.747 [main] DEBUG org.activiti.engine.impl.interceptor.LogInter
当我看到这个的时候,我就放心了,我知道,看来,进去了,没啥问题了,那我们就来试试启动一下这个流程。
/** * 启动请假流程 */ @Test public void startProcess() { ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activity.cfg.xml").buildProcessEngine(); RuntimeService runtimeService = processEngine.getRuntimeService(); runtimeService.startProcessInstanceByKey("leaveProcess");//流程的名称,也可以使用ByID来启动流程 }
在我们执行完启动请假流程的时候,在 act_ru_task
运行时任务节点表中,就有了我们的一条任务,这样我们就能看到这个任务是什么
是不是这么看有点太基础了,这东西看起来也没有我们想象的这么高大上,那我们就找个开源项目,然后把工作流所有的东西都跑起来,然后再去一个个的分析工作流的内容。
阿粉找到了一个开源的项目,项目还是不错的,尤其是得感谢开源出来的大佬shenzhanwang
,先给大家放上图,大家有兴趣的可以下载。
毕竟开源不易,大家对这个有兴趣的可以下载一下看看,阿粉之后再继续给大家了解一下关于 Activity 的里面的一些画 bpmn 图的那些流程上的所有内容。