activti工作流
分三部分介绍(工作流的定义,常使用的数据库表,Java代码)
工作流的定义
- 为什么需要使用工作流:
简化操作,因为节点会很乱,多次操作数据库,而且更改很难,灵活性很差,所以我们需要用activti - 工作流的方便之处:
只需要操作常用的API,在与自己定义的业务表进行关联,达到自己的业务流程,无需去思考关于流程,只需要关注业务—就是咱们常说的解耦,类似于一个中间价,我们只需要引入固定的jar包通过maven,就可以快乐的去部署流程,去使用,这也是它的强大之处
常使用的数据库表
activti一般会帮我们生成25个常使用的表,以后我们只需要通过API去操作这25章表去控制各个的定义流程
SELECT * FROM act_re_deployment #流程定义部署表,记录流程部署信息
SELECT * FROM act_re_procdef #流程定义表,记录流程定义信息
SELECT * FROM act_ge_bytearray #资源表,bpmn,png文件存放位置
SELECT * FROM act_ru_identitylink #任务的参与者
SELECT * FROM act_ru_execution #流程实例执行表,记录当前流程实例的执行情况 字段 BUSINESS_KEY 就是存放业务 KEY 的。
SELECT * FROM act_hi_procinst #流程实例历史表
SELECT * FROM act_hi_taskinst #任务历史表,记录所有任务
SELECT * FROM act_hi_actinst #活动历史表,记录所有活动
SELECT * FROM act_ru_variable #当前流程变量表 记录当前运行流程实例可使用的流程变量,包括 global 和 local 变量
Java代码实例
好了,说了这么多,我相信作为一名Java程序员,相信,更注重的是去实用,利用它去完成我们的业务
- 当使用一个中间件的时候,我们需要了解它的使用流程,就想我们敲代码的时候,要有一个流程,下面我说下大概流程:
1)画图 -bpmn文件和png图像 (我们需要去定义流程)我们先部署一个简单的请假流程,大家也好理解
2)部署 -filePath为你的文件目录
private RepositoryService repositoryService;
repositoryService.createDeployment().addInputStream(filePath, new FileInputStream(filePath)).deploy();
3)启动流程(流程开始工作),一般按照key启动,variables为流程变量,key为流程key,定义的时候可以与自己的业务表i主键id做关联,id为这个流程id
// 启动流程时设置业务 key
ProcessInstance instance = runtimeService.startProcessInstanceByKey(key, id + "", variables);
4)任务节点执行(同时包含任务查询)
private TaskService taskService;
//查询任务
List<Task> taskList = taskService.createTaskQuery()
.processInstanceId(instanceId)
.list();
//完成任务
taskService.complete(taskId, variables);
5)任务之间传递参数,它可以传递基本数据类型,也可以传递对象,传递的对象必须序列化。–参数就是Map variables =new HashMap<>();
方案一:使用map封装。
方案二:使用方法setVariable
pom.xml引入
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-rest-api</artifactId>
<version>6.0.0</version>
</dependency>
<!-- 下面的pom为画bpmn的一些依赖,大家如果做简单测试,不需要引入-->
<!--activiti modeler start-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-json-converter</artifactId>
<version>6.0.0</version>
<exclusions>
<exclusion>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-model</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- xml解析依赖-->
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-codec</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-css</artifactId>
<version> 1.7</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-svg-dom</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-svggen</artifactId>
<version>1.7</version>
</dependency>
<!-- xml解析依赖-->
<!--activiti modeler end-->
</dependencies>
以上是我刚刚学工作流的一些心得!希望小伙伴们可以对我的文章做出评价!明天就要上班了,祝大家工作顺利!