main
SYHT-2022KTVFSZ\Administrator 2 years ago
parent 36be3b289d
commit 3abfdcb083
  1. 15
      pom.xml
  2. 17
      src/main/java/com/zilber/boot/activiti/listen/ApplyListener.java
  3. 23
      src/main/java/com/zilber/boot/activiti/listen/ApplyTaskListener.java
  4. 1
      src/main/java/com/zilber/boot/activiti/service/TaskService.java
  5. 10
      src/main/java/com/zilber/boot/framework/config/MyBatisConfig.java
  6. 57
      src/main/java/com/zilber/boot/framework/config/MybatisPlusConfig.java
  7. 2
      src/main/resources/application.yml
  8. 170
      src/main/resources/bpmn/daily.bpmn20.xml
  9. 6
      src/main/resources/bpmn/leave.bpmn20.xml

@ -152,10 +152,22 @@
</dependency>
<!-- SpringBoot集成mybatis框架 -->
<dependency>
<!--<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot.version}</version>
</dependency>-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
<exclusions>
<exclusion>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- pagehelper 分页插件 -->
@ -249,6 +261,7 @@
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
</dependencies>

@ -0,0 +1,17 @@
package com.zilber.boot.activiti.listen;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.ExecutionListener;
public class ApplyListener implements ExecutionListener {
@Override
public void notify(DelegateExecution execution) {
String eventName = execution.getEventName();
if ("start".endsWith(eventName)) {
System.out.println("流程 start===");
} else if ("end".endsWith(eventName)) {
System.out.println("流程 end===");
}
}
}

@ -0,0 +1,23 @@
package com.zilber.boot.activiti.listen;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
public class ApplyTaskListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
System.out.println("===========进来了==============");
String eventName = delegateTask.getEventName();
if ("create".endsWith(eventName)) {
System.out.println("任务create===" + delegateTask.getName());
} else if ("complete".endsWith(eventName)) {
System.out.println("任务task complete===" + delegateTask.getName());
} else if ("delete".endsWith(eventName)) {
System.out.println("任务task delete===" + delegateTask.getName());
} else if ("assignment".endsWith(eventName)) {
System.out.println("任务task assignment===" + delegateTask.getName());
}
}
}

@ -57,6 +57,7 @@ public class TaskService {
}
if (!StringUtils.isEmpty(dto.getRemark())) {
//taskService.createComment(taskId, task.getProcessInstanceId(), dto.getRemark());
taskService.addComment(taskId, task.getProcessInstanceId(), dto.getRemark());
}
Map<String, Object> variables = dto.getVariables();
if (dto.getVariables() == null) {

@ -30,15 +30,15 @@ import java.util.List;
*
* @author lsc
*/
@Configuration
//@Configuration
public class MyBatisConfig
{
@Autowired
private Environment env;
/* @Autowired
private Environment env;*/
static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
public static String setTypeAliasesPackage(String typeAliasesPackage)
/* public static String setTypeAliasesPackage(String typeAliasesPackage)
{
ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
@ -129,5 +129,5 @@ public class MyBatisConfig
sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
return sessionFactory.getObject();
}
}*/
}

@ -0,0 +1,57 @@
package com.zilber.boot.framework.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement(proxyTargetClass = true)
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor()
{
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 分页插件
interceptor.addInnerInterceptor(paginationInnerInterceptor());
// 乐观锁插件
interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
// 阻断插件
interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
return interceptor;
}
/**
* 分页插件自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html
*/
public PaginationInnerInterceptor paginationInnerInterceptor()
{
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
// 设置数据库类型为mysql
paginationInnerInterceptor.setDbType(DbType.MYSQL);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInnerInterceptor.setMaxLimit(-1L);
return paginationInnerInterceptor;
}
/**
* 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html
*/
public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor()
{
return new OptimisticLockerInnerInterceptor();
}
/**
* 如果是对全表的删除或更新操作就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html
*/
public BlockAttackInnerInterceptor blockAttackInnerInterceptor()
{
return new BlockAttackInnerInterceptor();
}
}

@ -103,7 +103,7 @@ token:
expireTime: 30
# MyBatis配置
mybatis:
mybatis-plus:
# 搜索指定包别名
typeAliasesPackage: com.zilber.boot.**.pojo
# 配置mapper的扫描,找到所有的mapper.xml映射文件

@ -0,0 +1,170 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
<process id="daily" name="daily" isExecutable="true">
<extensionElements>
<activiti:executionListener class="com.zilber.boot.activiti.listen.ApplyListener" event="start" />
<activiti:executionListener class="com.zilber.boot.activiti.listen.ApplyListener" event="end" />
</extensionElements>
<startEvent id="Event_0w0afi8" name="开始">
<outgoing>Flow_1jlgqlw</outgoing>
</startEvent>
<sequenceFlow id="Flow_1jlgqlw" sourceRef="Event_0w0afi8" targetRef="Activity_144t788" />
<userTask id="Activity_144t788" name="请假申请" activiti:assignee="${ower}">
<extensionElements>
<activiti:taskListener class="com.zilber.boot.activiti.listen.ApplyTaskListener" event="complete" />
<activiti:taskListener class="com.zilber.boot.activiti.listen.ApplyTaskListener" event="create" />
</extensionElements>
<incoming>Flow_1jlgqlw</incoming>
<outgoing>Flow_0ul7x96</outgoing>
</userTask>
<exclusiveGateway id="Gateway_0de3wfg">
<incoming>Flow_0ul7x96</incoming>
<outgoing>Flow_0v4r83w</outgoing>
<outgoing>Flow_1gr0gbv</outgoing>
</exclusiveGateway>
<sequenceFlow id="Flow_0ul7x96" sourceRef="Activity_144t788" targetRef="Gateway_0de3wfg" />
<sequenceFlow id="Flow_0v4r83w" sourceRef="Gateway_0de3wfg" targetRef="Activity_1p56jq4">
<conditionExpression xsi:type="tFormalExpression">${day&gt;3}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="Flow_1gr0gbv" sourceRef="Gateway_0de3wfg" targetRef="Activity_1ygbeoa">
<conditionExpression xsi:type="tFormalExpression">${day&lt;=3}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="Flow_0kudbee" sourceRef="Activity_1ygbeoa" targetRef="Activity_13m5c8m">
<conditionExpression xsi:type="tFormalExpression">${status== 1}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="Flow_09xp52x" sourceRef="Activity_1p56jq4" targetRef="Activity_13m5c8m">
<conditionExpression xsi:type="tFormalExpression">${status==1}</conditionExpression>
</sequenceFlow>
<endEvent id="Event_16bkb2x" name="结束">
<incoming>Flow_0f94ru3</incoming>
</endEvent>
<sequenceFlow id="Flow_0f94ru3" sourceRef="Activity_13m5c8m" targetRef="Event_16bkb2x" />
<endEvent id="Event_1bn5u87" name="结束">
<incoming>Flow_1s5r7c7</incoming>
</endEvent>
<sequenceFlow id="Flow_1s5r7c7" sourceRef="Activity_1ygbeoa" targetRef="Event_1bn5u87">
<conditionExpression xsi:type="tFormalExpression">${status==0}</conditionExpression>
</sequenceFlow>
<endEvent id="Event_04eisc3" name="结束">
<incoming>Flow_0vre5aw</incoming>
</endEvent>
<sequenceFlow id="Flow_0vre5aw" sourceRef="Activity_1p56jq4" targetRef="Event_04eisc3">
<conditionExpression xsi:type="tFormalExpression">${status==0}</conditionExpression>
</sequenceFlow>
<userTask id="Activity_1ygbeoa" name="人事审批" activiti:assignee="${hr}">
<extensionElements>
<activiti:taskListener class="com.zilber.boot.activiti.listen.ApplyTaskListener" event="complete" />
<activiti:taskListener class="com.zilber.boot.activiti.listen.ApplyTaskListener" event="create" />
</extensionElements>
<incoming>Flow_1gr0gbv</incoming>
<outgoing>Flow_0kudbee</outgoing>
<outgoing>Flow_1s5r7c7</outgoing>
</userTask>
<userTask id="Activity_1p56jq4" name="经理审批" activiti:assignee="${manger}">
<extensionElements>
<activiti:taskListener class="com.zilber.boot.activiti.listen.ApplyTaskListener" event="complete" />
<activiti:taskListener class="com.zilber.boot.activiti.listen.ApplyTaskListener" event="create" />
</extensionElements>
<incoming>Flow_0v4r83w</incoming>
<outgoing>Flow_09xp52x</outgoing>
<outgoing>Flow_0vre5aw</outgoing>
</userTask>
<userTask id="Activity_13m5c8m" name="总经理审批" activiti:assignee="${ceo}">
<extensionElements>
<activiti:taskListener class="com.zilber.boot.activiti.listen.ApplyTaskListener" event="create" />
<activiti:taskListener class="com.zilber.boot.activiti.listen.ApplyTaskListener" event="complete" />
</extensionElements>
<incoming>Flow_0kudbee</incoming>
<incoming>Flow_09xp52x</incoming>
<outgoing>Flow_0f94ru3</outgoing>
</userTask>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_daily">
<bpmndi:BPMNPlane id="BPMNPlane_daily" bpmnElement="daily">
<bpmndi:BPMNShape id="Event_0w0afi8_di" bpmnElement="Event_0w0afi8">
<omgdc:Bounds x="442" y="102" width="36" height="36" />
<bpmndi:BPMNLabel>
<omgdc:Bounds x="449" y="78" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0atbqot_di" bpmnElement="Activity_144t788">
<omgdc:Bounds x="410" y="180" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_0de3wfg_di" bpmnElement="Gateway_0de3wfg" isMarkerVisible="true">
<omgdc:Bounds x="435" y="315" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_16bkb2x_di" bpmnElement="Event_16bkb2x">
<omgdc:Bounds x="442" y="752" width="36" height="36" />
<bpmndi:BPMNLabel>
<omgdc:Bounds x="449" y="795" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1bn5u87_di" bpmnElement="Event_1bn5u87">
<omgdc:Bounds x="152" y="472" width="36" height="36" />
<bpmndi:BPMNLabel>
<omgdc:Bounds x="159" y="515" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_04eisc3_di" bpmnElement="Event_04eisc3">
<omgdc:Bounds x="752" y="472" width="36" height="36" />
<bpmndi:BPMNLabel>
<omgdc:Bounds x="759" y="515" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1ceyxkn_di" bpmnElement="Activity_1ygbeoa">
<omgdc:Bounds x="270" y="450" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_16971ee_di" bpmnElement="Activity_1p56jq4">
<omgdc:Bounds x="580" y="450" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1cupe7b_di" bpmnElement="Activity_13m5c8m">
<omgdc:Bounds x="410" y="560" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_1jlgqlw_di" bpmnElement="Flow_1jlgqlw">
<omgdi:waypoint x="460" y="138" />
<omgdi:waypoint x="460" y="180" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0ul7x96_di" bpmnElement="Flow_0ul7x96">
<omgdi:waypoint x="460" y="260" />
<omgdi:waypoint x="460" y="315" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0v4r83w_di" bpmnElement="Flow_0v4r83w">
<omgdi:waypoint x="460" y="365" />
<omgdi:waypoint x="460" y="390" />
<omgdi:waypoint x="630" y="390" />
<omgdi:waypoint x="630" y="450" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1gr0gbv_di" bpmnElement="Flow_1gr0gbv">
<omgdi:waypoint x="460" y="365" />
<omgdi:waypoint x="460" y="390" />
<omgdi:waypoint x="320" y="390" />
<omgdi:waypoint x="320" y="450" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0kudbee_di" bpmnElement="Flow_0kudbee">
<omgdi:waypoint x="320" y="530" />
<omgdi:waypoint x="320" y="600" />
<omgdi:waypoint x="410" y="600" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_09xp52x_di" bpmnElement="Flow_09xp52x">
<omgdi:waypoint x="630" y="530" />
<omgdi:waypoint x="630" y="600" />
<omgdi:waypoint x="510" y="600" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0f94ru3_di" bpmnElement="Flow_0f94ru3">
<omgdi:waypoint x="460" y="640" />
<omgdi:waypoint x="460" y="752" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1s5r7c7_di" bpmnElement="Flow_1s5r7c7">
<omgdi:waypoint x="270" y="490" />
<omgdi:waypoint x="188" y="490" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0vre5aw_di" bpmnElement="Flow_0vre5aw">
<omgdi:waypoint x="680" y="490" />
<omgdi:waypoint x="752" y="490" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
<process id="leave" name="请假流程申请" isExecutable="true">
<startEvent id="sid-6917af13-104c-4397-bc24-41be0852b5b0"/>
<userTask id="sid-21d6407f-8525-4d7c-83f9-b74583e82d17" name="创建申请" activiti:assignee="${assignee0}"/>
<userTask id="sid-ae1aab6d-f664-4972-836b-e9dca7f27a7d" name="申请审批" activiti:assignee="${assignee1}"/>
<userTask id="sid-21d6407f-8525-4d7c-83f9-b74583e82d17" name="创建申请" camunda:assignee="${assignee0}"/>
<userTask id="sid-ae1aab6d-f664-4972-836b-e9dca7f27a7d" name="申请审批" camunda:assignee="${assignee1}"/>
<endEvent id="sid-9240f252-fad0-4602-a421-81f3be7a4fab"/>
<sequenceFlow id="sid-d58f155a-9628-4f66-bca4-258850dde7ba" sourceRef="sid-6917af13-104c-4397-bc24-41be0852b5b0" targetRef="sid-21d6407f-8525-4d7c-83f9-b74583e82d17"/>
<sequenceFlow id="sid-59fc43aa-9454-4f21-93af-3d8662aa2b69" sourceRef="sid-21d6407f-8525-4d7c-83f9-b74583e82d17" targetRef="sid-ae1aab6d-f664-4972-836b-e9dca7f27a7d"/>

Loading…
Cancel
Save