工作流 Flowable 流程实例, 用户任务相关实现
parent
d6775a5619
commit
075dd83b5f
@ -0,0 +1,39 @@
|
|||||||
|
package cn.iocoder.yudao.module.bpm.controller.admin.task;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.activity.BpmActivityRespVO;
|
||||||
|
import cn.iocoder.yudao.module.bpm.service.task.BpmActivityService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
@Api(tags = "管理后台 - 流程活动实例")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/bpm/activity")
|
||||||
|
@Validated
|
||||||
|
public class BpmActivityController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private BpmActivityService activityService;
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
@ApiOperation(value = "生成指定流程实例的高亮流程图",
|
||||||
|
notes = "只高亮进行中的任务。不过要注意,该接口暂时没用,通过前端的 ProcessViewer.vue 界面的 highlightDiagram 方法生成")
|
||||||
|
@ApiImplicitParam(name = "processInstanceId", value = "流程实例的编号", required = true, dataTypeClass = String.class)
|
||||||
|
@PreAuthorize("@ss.hasPermission('bpm:task:query')")
|
||||||
|
public CommonResult<List<BpmActivityRespVO>> getActivityList(
|
||||||
|
@RequestParam("processInstanceId") String processInstanceId) {
|
||||||
|
return success(activityService.getActivityListByProcessInstanceId(processInstanceId));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
package cn.iocoder.yudao.module.bpm.convert.task;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.activity.BpmActivityRespVO;
|
||||||
|
import org.flowable.engine.history.HistoricActivityInstance;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.Mapping;
|
||||||
|
import org.mapstruct.Mappings;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BPM 活动 Convert
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface BpmActivityConvert {
|
||||||
|
|
||||||
|
BpmActivityConvert INSTANCE = Mappers.getMapper(BpmActivityConvert.class);
|
||||||
|
|
||||||
|
List<BpmActivityRespVO> convertList(List<HistoricActivityInstance> list);
|
||||||
|
|
||||||
|
@Mappings({
|
||||||
|
@Mapping(source = "activityId", target = "key"),
|
||||||
|
@Mapping(source = "activityType", target = "type")
|
||||||
|
})
|
||||||
|
BpmActivityRespVO convert(HistoricActivityInstance bean);
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package cn.iocoder.yudao.module.bpm.service.task;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.activity.BpmActivityRespVO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BPM 活动实例 Service 接口
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
public interface BpmActivityService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得指定流程实例的活动实例列表
|
||||||
|
*
|
||||||
|
* @param processInstanceId 流程实例的编号
|
||||||
|
* @return 活动实例列表
|
||||||
|
*/
|
||||||
|
List<BpmActivityRespVO> getActivityListByProcessInstanceId(String processInstanceId);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
package cn.iocoder.yudao.module.bpm.service.task;
|
||||||
|
|
||||||
|
import cn.hutool.core.io.IoUtil;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||||
|
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.activity.BpmActivityRespVO;
|
||||||
|
import cn.iocoder.yudao.module.bpm.convert.task.BpmActivityConvert;
|
||||||
|
import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import org.flowable.bpmn.model.BpmnModel;
|
||||||
|
import org.flowable.engine.HistoryService;
|
||||||
|
import org.flowable.engine.history.HistoricActivityInstance;
|
||||||
|
import org.flowable.engine.history.HistoricProcessInstance;
|
||||||
|
import org.flowable.image.ProcessDiagramGenerator;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.PROCESS_DEFINITION_BPMN_MODEL_NOT_EXISTS;
|
||||||
|
import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.PROCESS_INSTANCE_NOT_EXISTS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BPM 活动实例 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
@Validated
|
||||||
|
public class BpmActivityServiceImpl implements BpmActivityService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private HistoryService historyService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<BpmActivityRespVO> getActivityListByProcessInstanceId(String processInstanceId) {
|
||||||
|
List<HistoricActivityInstance> activityList = historyService.createHistoricActivityInstanceQuery()
|
||||||
|
.processInstanceId(processInstanceId).list();
|
||||||
|
return BpmActivityConvert.INSTANCE.convertList(activityList);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue