1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Activiti7系列课程1-快速入门

Activiti7系列课程1-快速入门

时间:2023-11-17 04:33:16

相关推荐

Activiti7系列课程1-快速入门

摘要:本文使用的Activiti7具体版本是7.1.0.M1,springboot版本是2.1.5.RELEASE。本文重点讲解在activiti7中如何部署流程、启动流程实例,查询待办和完成任务。

项目搭建

首先,新建一个springboot项目,关于pom.xml文件内容如下:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.shareniu.activiti7</groupId><artifactId>activiti7</artifactId><version>0.0.1-SNAPSHOT</version><name>shareniu-activiti7</name><description>activiti7</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 阿里 druid 数据源 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version></dependency><!-- /artifact/org.activiti.dependencies/activiti-dependencies --><dependency><groupId>org.activiti.dependencies</groupId><artifactId>activiti-dependencies</artifactId><version>7.1.0.M1</version><type>pom</type></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter</artifactId><version>7.1.0.M1</version></dependency><!-- Activiti生成流程图 --><dependency><groupId>org.activiti</groupId><artifactId>activiti-image-generator</artifactId></dependency><!-- /artifact/org.springframework.security/spring-security-core --><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-core</artifactId><version>5.1.5.RELEASE</version></dependency>

SpringBoot启动类

springboot启动类代码如下:

/*** @author 分享牛*/@SpringBootApplicationpublic class ShareniuApplication {public static void main(String[] args) {SpringApplication.run(ShareniuApplication.class, args);}}

数据源以及Activiti相关配置

数据源以及Activiti相关配置代码如下:

spring:activiti:db-history-used: truecheck-process-definitions: true # 自动部署验证设置:true-开启(默认)、false-关闭datasource:url: jdbc:mysql://localhost:3306/reanod_workflow?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC&nullCatalogMeansCurrent=trueusername: rootpassword: 123driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource

流程绘制

activiti7目前使用的Bpmn-js设计器,但是目前还没有发布正式版。activiti7流程设计器可以使用eclipse或者idea插件即可。接下来绘制一个简单的请假流程。流程图如下:

上面的流程非常简单,请假天数大于3天,总经理审批;否则分享牛审批。上图中的xml内容如下:

<?xml version="1.0" encoding="UTF-8"?><bpmn:definitions xmlns:bpmn="/spec/BPMN/0524/MODEL" xmlns:bpmndi="/spec/BPMN/0524/DI" xmlns:dc="/spec/DD/0524/DC" xmlns:camunda="/schema/1.0/bpmn" xmlns:xsi="/2001/XMLSchema-instance" xmlns:di="/spec/DD/0524/DI" id="Definitions_0cqmcxw" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.1.1"><bpmn:process id="leave" isExecutable="true"><bpmn:startEvent id="StartEvent_1"><bpmn:outgoing>SequenceFlow_1c8p9y9</bpmn:outgoing></bpmn:startEvent><bpmn:sequenceFlow id="SequenceFlow_1c8p9y9" sourceRef="StartEvent_1" targetRef="Task_05b1cv5" /><bpmn:userTask id="Task_05b1cv5" name="请假申请" camunda:assignee="zs"><bpmn:incoming>SequenceFlow_1c8p9y9</bpmn:incoming><bpmn:outgoing>SequenceFlow_1w1yfm1</bpmn:outgoing></bpmn:userTask><bpmn:exclusiveGateway id="ExclusiveGateway_0vb8dq6"><bpmn:incoming>SequenceFlow_1w1yfm1</bpmn:incoming><bpmn:outgoing>SequenceFlow_1mz7srn</bpmn:outgoing><bpmn:outgoing>SequenceFlow_18xwjyq</bpmn:outgoing></bpmn:exclusiveGateway><bpmn:sequenceFlow id="SequenceFlow_1w1yfm1" sourceRef="Task_05b1cv5" targetRef="ExclusiveGateway_0vb8dq6" /><bpmn:sequenceFlow id="SequenceFlow_1mz7srn" sourceRef="ExclusiveGateway_0vb8dq6" targetRef="Task_0v74omi"><bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${day&gt;3}</bpmn:conditionExpression></bpmn:sequenceFlow><bpmn:sequenceFlow id="SequenceFlow_18xwjyq" sourceRef="ExclusiveGateway_0vb8dq6" targetRef="Task_1lupuyu"><bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="${day&#60;3}"></bpmn:conditionExpression></bpmn:sequenceFlow><bpmn:userTask id="Task_0v74omi" name="总经理审批" camunda:assignee="ls"><bpmn:incoming>SequenceFlow_1mz7srn</bpmn:incoming><bpmn:outgoing>SequenceFlow_0kpiffh</bpmn:outgoing></bpmn:userTask><bpmn:userTask id="Task_1lupuyu" name="分享牛审批" camunda:assignee="ww"><bpmn:incoming>SequenceFlow_18xwjyq</bpmn:incoming><bpmn:outgoing>SequenceFlow_1gxr4wh</bpmn:outgoing></bpmn:userTask><bpmn:endEvent id="EndEvent_1thnf0t"><bpmn:incoming>SequenceFlow_1gxr4wh</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="SequenceFlow_1gxr4wh" sourceRef="Task_1lupuyu" targetRef="EndEvent_1thnf0t" /><bpmn:endEvent id="EndEvent_157xdub"><bpmn:incoming>SequenceFlow_0kpiffh</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="SequenceFlow_0kpiffh" sourceRef="Task_0v74omi" targetRef="EndEvent_157xdub" /></bpmn:process><bpmndi:BPMNDiagram id="BPMNDiagram_1"><bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="leave"><bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"><dc:Bounds x="156" y="186" width="36" height="36" /></bpmndi:BPMNShape><bpmndi:BPMNEdge id="SequenceFlow_1c8p9y9_di" bpmnElement="SequenceFlow_1c8p9y9"><di:waypoint x="192" y="204" /><di:waypoint x="242" y="204" /></bpmndi:BPMNEdge><bpmndi:BPMNShape id="UserTask_0653qr3_di" bpmnElement="Task_05b1cv5"><dc:Bounds x="242" y="164" width="100" height="80" /></bpmndi:BPMNShape><bpmndi:BPMNShape id="ExclusiveGateway_0vb8dq6_di" bpmnElement="ExclusiveGateway_0vb8dq6" isMarkerVisible="true"><dc:Bounds x="392" y="179" width="50" height="50" /></bpmndi:BPMNShape><bpmndi:BPMNEdge id="SequenceFlow_1w1yfm1_di" bpmnElement="SequenceFlow_1w1yfm1"><di:waypoint x="342" y="204" /><di:waypoint x="392" y="204" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="SequenceFlow_1mz7srn_di" bpmnElement="SequenceFlow_1mz7srn"><di:waypoint x="417" y="179" /><di:waypoint x="417" y="88" /><di:waypoint x="473" y="88" /></bpmndi:BPMNEdge><bpmndi:BPMNEdge id="SequenceFlow_18xwjyq_di" bpmnElement="SequenceFlow_18xwjyq"><di:waypoint x="417" y="229" /><di:waypoint x="417" y="273" /><di:waypoint x="473" y="273" /></bpmndi:BPMNEdge><bpmndi:BPMNShape id="UserTask_17d34ry_di" bpmnElement="Task_0v74omi"><dc:Bounds x="473" y="48" width="100" height="80" /></bpmndi:BPMNShape><bpmndi:BPMNShape id="UserTask_09upgmk_di" bpmnElement="Task_1lupuyu"><dc:Bounds x="473" y="233" width="100" height="80" /></bpmndi:BPMNShape><bpmndi:BPMNShape id="EndEvent_1thnf0t_di" bpmnElement="EndEvent_1thnf0t"><dc:Bounds x="604" y="255" width="36" height="36" /></bpmndi:BPMNShape><bpmndi:BPMNEdge id="SequenceFlow_1gxr4wh_di" bpmnElement="SequenceFlow_1gxr4wh"><di:waypoint x="573" y="273" /><di:waypoint x="604" y="273" /></bpmndi:BPMNEdge><bpmndi:BPMNShape id="EndEvent_157xdub_di" bpmnElement="EndEvent_157xdub"><dc:Bounds x="604" y="70" width="36" height="36" /></bpmndi:BPMNShape><bpmndi:BPMNEdge id="SequenceFlow_0kpiffh_di" bpmnElement="SequenceFlow_0kpiffh"><di:waypoint x="573" y="88" /><di:waypoint x="604" y="88" /></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram></bpmn:definitions>

部署流程

部署流程直接使用RepositoryService即可,相关代码如下:

@Testpublic void deploy() {//创建一个部署对象DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().name("分享牛请假流程");Deployment deployment = null;InputStream in = this.getClass().getClassLoader().getResourceAsStream("processes/leave.bpmn20.xml");deployment = repositoryService.createDeployment().name("请假流程")//指定zip格式的文件完成部署.addInputStream("shareniu.bpmn",in).deploy();//完成部署}

流程文档部署完毕之后,

会涉及到如下几张表。

ACT_RE_DEPLOYMENT(部署表)ACT_RE_PROCDEF(流程定义表)ACT_GE_BYTEARRAY(资源表)ACT_GE_PROPERTY(通用属性表)ACT_RU_IDENTITYLINK(运行权限表)

启动流程

启动流程实例使用RuntimeService类。相关代码如下:

@Testpublic void start() {String processDefinitionKey ="leave";//每一个流程有对应的一个key这个是某一个流程内固定的写在bpmn内的HashMap<String, Object> variables=new HashMap<>();ProcessInstance instance = runtimeService.startProcessInstanceByKey(processDefinitionKey,variables);System.out.println("流程实例ID:"+instance.getId());System.out.println("流程定义ID:"+instance.getProcessDefinitionId());}

startProcessInstanceByKey需要的参数,对应ACT_RE_PROCDEF表key_列的值。

查询待办

查询待办任务使用TaskService,相关代码如下:

/**查询当前人的个人任务*/@Testpublic void findTask(){List<Task> list = taskService.createTaskQuery()//创建任务查询对象.list();if(list!=null && list.size()>0){for(Task task:list){System.out.println("任务ID:"+task.getId());System.out.println("任务名称:"+task.getName());System.out.println("任务的创建时间:"+task.getCreateTime());System.out.println("任务的办理人:"+task.getAssignee());System.out.println("流程实例ID:"+task.getProcessInstanceId());System.out.println("执行对象ID:"+task.getExecutionId());System.out.println("流程定义ID:"+task.getProcessDefinitionId());}}}

上述代码执行完毕,会查询任务表ACT_RU_TASK。启动实例之后,实例直接运转到请假申请节点。接下来开始完成该任务。

完成用户任务

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。