Przeglądaj źródła

工作流请假流程

king 4 lat temu
rodzic
commit
e99b1a31d1

+ 101 - 0
boman-modules/boman-activity/pom.xml

@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>com.boman</groupId>
+		<artifactId>boman-modules</artifactId>
+		<version>2.5.0</version>
+	</parent>
+
+	<name>boman-activity</name>
+	<description>Demo project for Spring Boot</description>
+	<properties>
+		<java.version>1.8</java.version>
+		<spring-cloud.version>2020.0.3-SNAPSHOT</spring-cloud.version>
+	</properties>
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-jpa</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-redis</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-oauth2-client</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
+		</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>
+	</dependencies>
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>org.springframework.cloud</groupId>
+				<artifactId>spring-cloud-dependencies</artifactId>
+				<version>${spring-cloud.version}</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+	<repositories>
+		<repository>
+			<id>spring-milestones</id>
+			<name>Spring Milestones</name>
+			<url>https://repo.spring.io/milestone</url>
+		</repository>
+		<repository>
+			<id>spring-snapshots</id>
+			<name>Spring Snapshots</name>
+			<url>https://repo.spring.io/snapshot</url>
+			<snapshots>
+				<enabled>true</enabled>
+			</snapshots>
+		</repository>
+	</repositories>
+	<pluginRepositories>
+		<pluginRepository>
+			<id>spring-milestones</id>
+			<name>Spring Milestones</name>
+			<url>https://repo.spring.io/milestone</url>
+		</pluginRepository>
+		<pluginRepository>
+			<id>spring-snapshots</id>
+			<name>Spring Snapshots</name>
+			<url>https://repo.spring.io/snapshot</url>
+			<snapshots>
+				<enabled>true</enabled>
+			</snapshots>
+		</pluginRepository>
+	</pluginRepositories>
+
+</project>

+ 13 - 0
boman-modules/boman-activity/src/main/java/com/boman/activity/BomanActivityApplication.java

@@ -0,0 +1,13 @@
+package com.boman.activity;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class BomanActivityApplication {
+
+	public static void main(String[] args) {
+		SpringApplication.run(BomanActivityApplication.class, args);
+	}
+
+}

+ 117 - 0
boman-modules/boman-activity/src/main/java/com/boman/activity/controller/WorkflowLeaveController.java

@@ -0,0 +1,117 @@
+package com.ruoyi.leave.controller;
+
+import java.util.List;
+
+
+import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.leave.domain.WorkflowLeave;
+import com.ruoyi.leave.service.IWorkflowLeaveService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 请假Controller
+ *
+ * @author danny
+ * @date 2020-10-28
+ */
+@RestController
+@RequestMapping("/workflow/leave")
+public class WorkflowLeaveController extends BaseController {
+    @Autowired
+    private IWorkflowLeaveService workflowLeaveService;
+
+    /**
+     * 查询请假列表
+     */
+    @PreAuthorize("@ss.hasPermi('workflow:leave:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(WorkflowLeave workflowLeave) {
+        startPage();
+        workflowLeave.setCreateBy(SecurityUtils.getUsername());
+        List<WorkflowLeave> list = workflowLeaveService.selectWorkflowLeaveAndTaskNameList(workflowLeave);
+        return getDataTable(list);
+    }
+    /**
+     * 查询请假列表
+     */
+    @PreAuthorize("@ss.hasPermi('workflow:leave:list')")
+    @GetMapping("/listAll")
+    public TableDataInfo listAll(WorkflowLeave workflowLeave) {
+        startPage();
+        List<WorkflowLeave> list = workflowLeaveService.selectWorkflowLeaveList(workflowLeave);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出请假列表
+     */
+    @PreAuthorize("@ss.hasPermi('workflow:leave:export')")
+    @Log(title = "请假", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(WorkflowLeave workflowLeave) {
+        List<WorkflowLeave> list = workflowLeaveService.selectWorkflowLeaveList(workflowLeave);
+        ExcelUtil<WorkflowLeave> util = new ExcelUtil<WorkflowLeave>(WorkflowLeave.class);
+        return util.exportExcel(list, "leave");
+    }
+
+    /**
+     * 获取请假详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('workflow:leave:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return AjaxResult.success(workflowLeaveService.selectWorkflowLeaveById(id));
+    }   /**
+     * 获取请假详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('workflow:leave:query')")
+    @GetMapping(value = "ByInstanceId/{instanceId}")
+    public AjaxResult getInfoByInstanceId(@PathVariable("instanceId") String instanceId) {
+        return AjaxResult.success(workflowLeaveService.selectWorkflowLeaveByInstanceId(instanceId));
+    }
+
+    /**
+     * 新增请假
+     */
+    @PreAuthorize("@ss.hasPermi('workflow:leave:add')")
+    @Log(title = "请假", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody WorkflowLeave workflowLeave) {
+        return toAjax(workflowLeaveService.insertWorkflowLeave(workflowLeave));
+    }
+
+    /**
+     * 修改请假
+     */
+    @PreAuthorize("@ss.hasPermi('workflow:leave:edit')")
+    @Log(title = "请假", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody WorkflowLeave workflowLeave) {
+        return toAjax(workflowLeaveService.insertWorkflowLeave(workflowLeave));
+    }
+
+    /**
+     * 删除请假
+     */
+    @PreAuthorize("@ss.hasPermi('workflow:leave:remove')")
+    @Log(title = "请假", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids) {
+        return toAjax(workflowLeaveService.deleteWorkflowLeaveByIds(ids));
+    }
+}

+ 162 - 0
boman-modules/boman-activity/src/main/java/com/boman/activity/domain/WorkflowLeave.java

@@ -0,0 +1,162 @@
+package com.ruoyi.leave.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 请假对象 workflow_leave
+ * 
+ * @author danny
+ * @date 2020-10-28
+ */
+public class WorkflowLeave extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    private String id;
+
+    /** 请假类型 */
+    @Excel(name = "请假类型")
+    private String type;
+
+    /** 标题 */
+    @Excel(name = "标题")
+    private String title;
+
+    /** 原因 */
+    @Excel(name = "原因")
+    private String reason;
+
+    /** 开始时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date leaveStartTime;
+
+    /** 结束时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date leaveEndTime;
+
+
+    private String instanceId;
+    private String taskName;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private String state;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createName;
+
+    public void setId(String id) 
+    {
+        this.id = id;
+    }
+
+    public String getId() 
+    {
+        return id;
+    }
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+    public void setTitle(String title) 
+    {
+        this.title = title;
+    }
+
+    public String getTitle() 
+    {
+        return title;
+    }
+    public void setReason(String reason) 
+    {
+        this.reason = reason;
+    }
+
+    public String getReason() 
+    {
+        return reason;
+    }
+    public void setLeaveStartTime(Date leaveStartTime) 
+    {
+        this.leaveStartTime = leaveStartTime;
+    }
+
+    public Date getLeaveStartTime() 
+    {
+        return leaveStartTime;
+    }
+    public void setLeaveEndTime(Date leaveEndTime) 
+    {
+        this.leaveEndTime = leaveEndTime;
+    }
+
+    public Date getLeaveEndTime() 
+    {
+        return leaveEndTime;
+    }
+    public void setInstanceId(String instanceId) 
+    {
+        this.instanceId = instanceId;
+    }
+
+    public String getInstanceId() 
+    {
+        return instanceId;
+    }
+    public void setState(String state) 
+    {
+        this.state = state;
+    }
+
+    public String getState() 
+    {
+        return state;
+    }
+
+    public String getCreateName() {
+        return createName;
+    }
+
+    public void setCreateName(String createName) {
+        this.createName = createName;
+    }
+
+    public String getTaskName() {
+        return taskName;
+    }
+
+    public void setTaskName(String taskName) {
+        this.taskName = taskName;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("type", getType())
+            .append("title", getTitle())
+            .append("reason", getReason())
+            .append("leaveStartTime", getLeaveStartTime())
+            .append("leaveEndTime", getLeaveEndTime())
+            .append("instanceId", getInstanceId())
+            .append("state", getState())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 21 - 0
boman-modules/boman-activity/src/main/java/com/boman/activity/instener/LeaveEndStateListener.java

@@ -0,0 +1,21 @@
+package com.ruoyi.leave.instener;
+
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.leave.domain.WorkflowLeave;
+import com.ruoyi.leave.service.IWorkflowLeaveService;
+import org.activiti.engine.delegate.DelegateExecution;
+import org.activiti.engine.delegate.ExecutionListener;
+import org.activiti.engine.delegate.Expression;
+
+
+public class LeaveEndStateListener implements ExecutionListener {
+    private Expression state;
+
+    @Override
+    public void notify(DelegateExecution delegateExecution) {
+        WorkflowLeave workflowLeave = new WorkflowLeave();
+        workflowLeave.setId(delegateExecution.getProcessInstanceBusinessKey());
+        workflowLeave.setState(state.getValue(delegateExecution).toString());
+        SpringUtils.getBean(IWorkflowLeaveService.class).updateWorkflowLeave(workflowLeave);
+    }
+}

+ 76 - 0
boman-modules/boman-activity/src/main/java/com/boman/activity/mapper/WorkflowLeaveMapper.java

@@ -0,0 +1,76 @@
+package com.ruoyi.leave.mapper;
+
+import java.util.List;
+import com.ruoyi.leave.domain.WorkflowLeave;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 请假Mapper接口
+ * 
+ * @author danny
+ * @date 2020-10-28
+ */
+public interface WorkflowLeaveMapper 
+{
+    /**
+     * 查询请假
+     * 
+     * @param id 请假ID
+     * @return 请假
+     */
+    public WorkflowLeave selectWorkflowLeaveById(String id); /**
+     * 查询请假
+     *
+     * @param instanceId 请假ID
+     * @return 请假
+     */
+    public WorkflowLeave selectWorkflowLeaveByInstanceId(String instanceId);
+
+    /**
+     * 查询请假列表根据部门编号和WorkflowLeave
+     * 
+     * @param workflowLeave 请假
+     * @return 请假集合
+     */
+    public List<WorkflowLeave> selectWorkflowLeaveListByWorkflowLeaveAndDeptId(@Param("workflowLeave")WorkflowLeave workflowLeave,@Param("deptId") Long deptId);
+    /**
+     * 查询请假列表
+     *
+     * @param workflowLeave 请假
+     * @return 请假集合
+     */
+    public List<WorkflowLeave> selectWorkflowLeaveList(WorkflowLeave workflowLeave);
+
+
+    /**
+     * 新增请假
+     * 
+     * @param workflowLeave 请假
+     * @return 结果
+     */
+    public int insertWorkflowLeave(WorkflowLeave workflowLeave);
+
+    /**
+     * 修改请假
+     * 
+     * @param workflowLeave 请假
+     * @return 结果
+     */
+    public int updateWorkflowLeave(WorkflowLeave workflowLeave);
+
+    /**
+     * 删除请假
+     * 
+     * @param id 请假ID
+     * @return 结果
+     */
+    public int deleteWorkflowLeaveById(String id);
+
+    /**
+     * 批量删除请假
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteWorkflowLeaveByIds(String[] ids);
+}

+ 74 - 0
boman-modules/boman-activity/src/main/java/com/boman/activity/service/IWorkflowLeaveService.java

@@ -0,0 +1,74 @@
+package com.ruoyi.leave.service;
+
+import java.util.List;
+
+import com.ruoyi.activiti.domain.dto.HistoryDataDTO;
+import com.ruoyi.leave.domain.WorkflowLeave;
+
+/**
+ * 请假Service接口
+ * 
+ * @author danny
+ * @date 2020-10-28
+ */
+public interface IWorkflowLeaveService 
+{
+    /**
+     * 查询请假
+     * 
+     * @param id 请假ID
+     * @return 请假
+     */
+    public WorkflowLeave selectWorkflowLeaveById(String id);
+
+    /**
+     * 查询请假列表
+     * 
+     * @param workflowLeave 请假
+     * @return 请假集合
+     */
+    public List<WorkflowLeave> selectWorkflowLeaveList(WorkflowLeave workflowLeave);
+
+    /**
+     * 查询请假列表
+     *
+     * @param workflowLeave 请假
+     * @return 请假集合
+     */
+    public List<WorkflowLeave> selectWorkflowLeaveAndTaskNameList(WorkflowLeave workflowLeave);
+
+    /**
+     * 新增请假
+     * 
+     * @param workflowLeave 请假
+     * @return 结果
+     */
+    public int insertWorkflowLeave(WorkflowLeave workflowLeave);
+
+    /**
+     * 修改请假
+     * 
+     * @param workflowLeave 请假
+     * @return 结果
+     */
+    public int updateWorkflowLeave(WorkflowLeave workflowLeave);
+
+    /**
+     * 批量删除请假
+     * 
+     * @param ids 需要删除的请假ID
+     * @return 结果
+     */
+    public int deleteWorkflowLeaveByIds(String[] ids);
+
+    /**
+     * 删除请假信息
+     * 
+     * @param id 请假ID
+     * @return 结果
+     */
+    public int deleteWorkflowLeaveById(String id);
+
+
+    public WorkflowLeave selectWorkflowLeaveByInstanceId(String instanceId);
+}

+ 155 - 0
boman-modules/boman-activity/src/main/java/com/boman/activity/service/impl/WorkflowLeaveServiceImpl.java

@@ -0,0 +1,155 @@
+package com.ruoyi.leave.service.impl;
+
+import java.util.List;
+
+import java.util.stream.Collectors;
+
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.uuid.UUID;
+import com.ruoyi.system.service.ISysUserService;
+import org.activiti.api.process.model.ProcessInstance;
+import org.activiti.api.process.model.builders.ProcessPayloadBuilder;
+import org.activiti.api.process.runtime.ProcessRuntime;
+import org.activiti.engine.TaskService;
+import org.activiti.engine.task.Task;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.leave.mapper.WorkflowLeaveMapper;
+import com.ruoyi.leave.domain.WorkflowLeave;
+import com.ruoyi.leave.service.IWorkflowLeaveService;
+
+/**
+ * 请假Service业务层处理
+ *
+ * @author danny
+ * @date 2020-10-28
+ */
+@Service
+public class WorkflowLeaveServiceImpl implements IWorkflowLeaveService {
+
+    @Autowired
+    private WorkflowLeaveMapper workflowLeaveMapper;
+    @Autowired
+    private ProcessRuntime processRuntime;
+    @Autowired
+    private ISysUserService sysUserService;
+    @Autowired
+    private TaskService taskService;
+
+
+    /**
+     * 查询请假
+     *
+     * @param id 请假ID
+     * @return 请假
+     */
+    @Override
+    public WorkflowLeave selectWorkflowLeaveById(String id) {
+        return workflowLeaveMapper.selectWorkflowLeaveById(id);
+    }
+
+    /**
+     * 查询请假列表
+     *
+     * @param workflowLeave 请假
+     * @return 请假
+     */
+    @Override
+    public List<WorkflowLeave> selectWorkflowLeaveList(WorkflowLeave workflowLeave) {
+        return workflowLeaveMapper.selectWorkflowLeaveListByWorkflowLeaveAndDeptId(workflowLeave,SecurityUtils.getLoginUser().getUser().getDeptId());
+    }
+    /**
+     * 查询请假列表带任务状态
+     *
+     * @param workflowLeave 请假
+     * @return 请假
+     */
+    @Override
+    public List<WorkflowLeave> selectWorkflowLeaveAndTaskNameList(WorkflowLeave workflowLeave) {
+        List<WorkflowLeave> workflowLeaves = workflowLeaveMapper.selectWorkflowLeaveList(workflowLeave);
+        List<String> collect = workflowLeaves.parallelStream().map(wl -> wl.getInstanceId()).collect(Collectors.toList());
+        if(collect!=null&&!collect.isEmpty()) {
+            List<Task> tasks = taskService.createTaskQuery().processInstanceIdIn(collect).list();
+            workflowLeaves.forEach(
+                    wl->{
+                        Task task = tasks.parallelStream().filter(t -> t.getProcessInstanceId().equals(wl.getInstanceId())).findAny().orElse(null);
+                        if (task != null) {
+                            wl.setTaskName(task.getName());
+                        }
+                    }
+            );
+        }
+        return workflowLeaves;
+    }
+
+    /**
+     * 新增请假
+     *
+     * @param workflowLeave 请假
+     * @return 结果
+     */
+    @Override
+    public int insertWorkflowLeave(WorkflowLeave workflowLeave) {
+
+        String id = UUID.randomUUID().toString();
+        workflowLeave.setId(id);
+        workflowLeave.setCreateTime(DateUtils.getNowDate());
+        String join = StringUtils.join(sysUserService.selectUserNameByPostCodeAndDeptId("se", SecurityUtils.getLoginUser().getUser().getDeptId()), ",");
+        ProcessInstance processInstance = processRuntime.start(ProcessPayloadBuilder
+                .start()
+                .withProcessDefinitionKey("leave")
+                .withName(workflowLeave.getTitle())
+                .withBusinessKey(id)
+                .withVariable("deptLeader",join)
+                .build());
+        workflowLeave.setInstanceId(processInstance.getId());
+        workflowLeave.setState("0");
+        workflowLeave.setCreateName(SecurityUtils.getNickName());
+        workflowLeave.setCreateBy(SecurityUtils.getUsername());
+        workflowLeave.setCreateTime(DateUtils.getNowDate());
+        return workflowLeaveMapper.insertWorkflowLeave(workflowLeave);
+    }
+
+    /**
+     * 修改请假
+     *
+     * @param workflowLeave 请假
+     * @return 结果
+     */
+    @Override
+    public int updateWorkflowLeave(WorkflowLeave workflowLeave) {
+        workflowLeave.setUpdateTime(DateUtils.getNowDate());
+        return workflowLeaveMapper.updateWorkflowLeave(workflowLeave);
+    }
+
+    /**
+     * 批量删除请假
+     *
+     * @param ids 需要删除的请假ID
+     * @return 结果
+     */
+    @Override
+    public int deleteWorkflowLeaveByIds(String[] ids) {
+        return workflowLeaveMapper.deleteWorkflowLeaveByIds(ids);
+    }
+
+    /**
+     * 删除请假信息
+     *
+     * @param id 请假ID
+     * @return 结果
+     */
+    @Override
+    public int deleteWorkflowLeaveById(String id) {
+        return workflowLeaveMapper.deleteWorkflowLeaveById(id);
+    }
+
+    @Override
+    public WorkflowLeave selectWorkflowLeaveByInstanceId(String instanceId) {
+
+        return workflowLeaveMapper.selectWorkflowLeaveByInstanceId(instanceId);
+    }
+}

+ 1 - 0
boman-modules/boman-activity/src/main/resources/application.properties

@@ -0,0 +1 @@
+

+ 13 - 0
boman-modules/boman-activity/src/test/java/com/boman/activity/BomanActivityApplicationTests.java

@@ -0,0 +1,13 @@
+package com.boman.activity;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class BomanActivityApplicationTests {
+
+	@Test
+	void contextLoads() {
+	}
+
+}

+ 1 - 0
boman-modules/pom.xml

@@ -13,6 +13,7 @@
         <module>boman-gen</module>
         <module>boman-job</module>
         <module>boman-file</module>
+        <module>boman-activity</module>
     </modules>
 
     <artifactId>boman-modules</artifactId>