diff --git a/README.md b/README.md index 1b559327f..296c865d6 100644 --- a/README.md +++ b/README.md @@ -301,6 +301,13 @@ act_ge_bytearray (很多元数据) > 1. 当前审批任务会触发 process-task-deleted 事件 > 2. 当前流程实例会触发 process-instance-rejected 事件 +## 7. 本工程结构说明 + +- workflow-engine-api: Feign 接口包,采用 SpringBoot Starter 方式对外提供 +- workflow-engine-common: 通用的公共模型以及常量 +- workflow-engine-core: +- workflow-engine-server + ## 99.建设状态(过时) ### 99.1 已完成: diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskAttachmentDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskAttachmentDTO.java new file mode 100644 index 000000000..bd7c64d54 --- /dev/null +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskAttachmentDTO.java @@ -0,0 +1,41 @@ +package cn.axzo.workflow.common.model.request.bpmn.task; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * 对审批任务添加附件的入参模型 + * + * @author wangli + * @since 2023/10/31 10:08 + */ +@ApiModel("对审批任务添加附件的入参模型") +@Data +public class BpmnTaskAttachmentDTO { + + @ApiModelProperty(value = "附件类型", notes = "一般是指格式, 如 png/jpeg/jpg/pdf 等, 强烈建议前端回传") + @NotBlank(message = "附件类型不能为空") + private String type; + + @ApiModelProperty(value = "关联的审批任务 ID") + @NotBlank(message = "任务 ID 不能为空") + private String taskId; + + @ApiModelProperty(value = "附件名称", notes = "如果为空,则使用文件名") + private String name; + + @ApiModelProperty(value = "附件描述", notes = "现在的业务不会使用到") + private String description; + + @ApiModelProperty(value = "附件地址") + @NotBlank(message = "附件地址不能为空") + private String url; + + /** + * 该字段引擎本来支撑,但不建议给前端使用 + */ + // private InputStream content; +} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/conf/FlowableConfiguration.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/conf/FlowableConfiguration.java index 06f9590b0..36e451dee 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/conf/FlowableConfiguration.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/conf/FlowableConfiguration.java @@ -1,6 +1,6 @@ package cn.axzo.workflow.core.conf; -import cn.axzo.workflow.core.service.engine.behavior.CustomActivityBehaviorFactory; +import cn.axzo.workflow.core.engine.behavior.CustomActivityBehaviorFactory; import com.google.common.collect.Lists; import org.flowable.common.engine.api.delegate.event.FlowableEventListener; import org.flowable.form.spring.SpringFormEngineConfiguration; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/behavior/CustomActivityBehaviorFactory.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/behavior/CustomActivityBehaviorFactory.java similarity index 96% rename from workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/behavior/CustomActivityBehaviorFactory.java rename to workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/behavior/CustomActivityBehaviorFactory.java index 7dc81c522..d5c01655f 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/behavior/CustomActivityBehaviorFactory.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/behavior/CustomActivityBehaviorFactory.java @@ -1,4 +1,4 @@ -package cn.axzo.workflow.core.service.engine.behavior; +package cn.axzo.workflow.core.engine.behavior; import org.flowable.bpmn.model.Activity; import org.flowable.bpmn.model.UserTask; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/behavior/CustomParallelMultiInstanceActivityBehavior.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/behavior/CustomParallelMultiInstanceActivityBehavior.java similarity index 98% rename from workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/behavior/CustomParallelMultiInstanceActivityBehavior.java rename to workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/behavior/CustomParallelMultiInstanceActivityBehavior.java index 2b55b84be..32ab6594d 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/behavior/CustomParallelMultiInstanceActivityBehavior.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/behavior/CustomParallelMultiInstanceActivityBehavior.java @@ -1,4 +1,4 @@ -package cn.axzo.workflow.core.service.engine.behavior; +package cn.axzo.workflow.core.engine.behavior; import org.flowable.bpmn.model.Activity; import org.flowable.bpmn.model.UserTask; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/behavior/CustomSequentialMultiInstanceBehavior.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/behavior/CustomSequentialMultiInstanceBehavior.java similarity index 98% rename from workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/behavior/CustomSequentialMultiInstanceBehavior.java rename to workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/behavior/CustomSequentialMultiInstanceBehavior.java index 6a4bc0126..2ceefd0e6 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/behavior/CustomSequentialMultiInstanceBehavior.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/behavior/CustomSequentialMultiInstanceBehavior.java @@ -1,4 +1,4 @@ -package cn.axzo.workflow.core.service.engine.behavior; +package cn.axzo.workflow.core.engine.behavior; import org.flowable.bpmn.model.Activity; import org.flowable.bpmn.model.UserTask; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/behavior/CustomUserTaskActivityBehavior.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/behavior/CustomUserTaskActivityBehavior.java similarity index 99% rename from workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/behavior/CustomUserTaskActivityBehavior.java rename to workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/behavior/CustomUserTaskActivityBehavior.java index e75340d26..cee9910df 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/behavior/CustomUserTaskActivityBehavior.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/behavior/CustomUserTaskActivityBehavior.java @@ -1,4 +1,4 @@ -package cn.axzo.workflow.core.service.engine.behavior; +package cn.axzo.workflow.core.engine.behavior; import cn.axzo.workflow.core.common.enums.BpmnProcessTaskResultEnum; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/id/BasedTimeIdGenerator.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/id/BasedTimeIdGenerator.java new file mode 100644 index 000000000..bb8ea60f4 --- /dev/null +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/id/BasedTimeIdGenerator.java @@ -0,0 +1,19 @@ +package cn.axzo.workflow.core.engine.id; + + +import org.flowable.common.engine.impl.cfg.IdGenerator; + +/** + * 基于时间的编号生成器 + * + * @author wangli + * @since 2023/10/31 10:41 + */ +public class BasedTimeIdGenerator implements IdGenerator { + @Override + public String getNextId() { + long timestamp = System.currentTimeMillis(); + + return ""; + } +} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineActivityEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityEventListener.java similarity index 97% rename from workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineActivityEventListener.java rename to workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityEventListener.java index dcdbf8e4c..ecab96fcc 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineActivityEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityEventListener.java @@ -1,4 +1,4 @@ -package cn.axzo.workflow.core.service.engine; +package cn.axzo.workflow.core.engine.listener; import cn.axzo.framework.jackson.utility.JSON; import cn.axzo.workflow.core.listener.BpmActivityEventListener; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineExecutionStartListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineExecutionStartListener.java similarity index 98% rename from workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineExecutionStartListener.java rename to workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineExecutionStartListener.java index c3fd06920..beccd2169 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineExecutionStartListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineExecutionStartListener.java @@ -1,4 +1,4 @@ -package cn.axzo.workflow.core.service.engine; +package cn.axzo.workflow.core.engine.listener; import cn.axzo.workflow.common.constant.BpmConstants; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineProcessInstanceEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineProcessInstanceEventListener.java similarity index 99% rename from workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineProcessInstanceEventListener.java rename to workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineProcessInstanceEventListener.java index 5822daafd..a36dc68de 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineProcessInstanceEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineProcessInstanceEventListener.java @@ -1,4 +1,4 @@ -package cn.axzo.workflow.core.service.engine; +package cn.axzo.workflow.core.engine.listener; import cn.axzo.framework.jackson.utility.JSON; import cn.axzo.workflow.common.enums.BpmProcessInstanceResultEnum; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineTaskEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineTaskEventListener.java similarity index 97% rename from workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineTaskEventListener.java rename to workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineTaskEventListener.java index 6cbe3bbdd..4c43834d1 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineTaskEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineTaskEventListener.java @@ -1,4 +1,4 @@ -package cn.axzo.workflow.core.service.engine; +package cn.axzo.workflow.core.engine.listener; import cn.axzo.framework.jackson.utility.JSON; import cn.axzo.workflow.core.deletage.BpmTaskDelegate; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnTaskService.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnTaskService.java index 14797a1bb..97f6bd94e 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnTaskService.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnTaskService.java @@ -1,11 +1,16 @@ package cn.axzo.workflow.core.service; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAssigneeDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAttachmentDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskCommentDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskPageSearchDTO; import cn.axzo.workflow.common.model.response.BpmPageResult; -import cn.axzo.workflow.common.model.response.bpmn.task.*; +import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceGroupVO; +import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceVO; +import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskDonePageItemVO; +import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskInstanceVO; +import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskTodoPageItemVO; import org.flowable.form.api.FormInfo; import java.util.List; @@ -73,5 +78,7 @@ public interface BpmnTaskService { void commentTask(BpmnTaskCommentDTO dto); + void attachmentTask(BpmnTaskAttachmentDTO dto); + } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java index b302991a0..ca3f7fbf7 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java @@ -2,6 +2,7 @@ package cn.axzo.workflow.core.service.impl; import cn.axzo.workflow.common.enums.BpmProcessInstanceResultEnum; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAssigneeDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAttachmentDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskCommentDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; @@ -565,6 +566,13 @@ public class BpmnTaskServiceImpl implements BpmnTaskService { taskService.addComment(dto.getTaskId(), dto.getProcessInstanceId(), dto.getComment()); } + @Override + public void attachmentTask(BpmnTaskAttachmentDTO dto) { + taskService.createAttachment(dto.getType(), dto.getTaskId(), null, dto.getName(), dto.getDescription(), + dto.getUrl()); + // taskService.saveAttachment(); + } + private Activity getActivity(TaskEntity task) { BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId()); FlowElement flowElement = bpmnModel.getFlowElement(task.getTaskDefinitionKey()); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnTaskController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnTaskController.java index c717ef5ad..3d727c953 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnTaskController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnTaskController.java @@ -2,6 +2,7 @@ package cn.axzo.workflow.server.controller.web.bpmn; import cn.axzo.workflow.client.feign.bpmn.ProcessTaskApi; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAssigneeDTO; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAttachmentDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskPageSearchDTO; import cn.axzo.workflow.common.model.response.BpmPageResult; @@ -18,6 +19,7 @@ import lombok.extern.slf4j.Slf4j; import org.flowable.form.api.FormInfo; import org.springframework.validation.annotation.Validated; 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.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -139,4 +141,10 @@ public class BpmnTaskController implements ProcessTaskApi { return success(bpmnTaskService.getTaskFormModel(taskId, tenantId)); } + @PostMapping("/attachment/add") + public CommonResponse addAttachment(@Validated @RequestBody BpmnTaskAttachmentDTO dto) { + bpmnTaskService.attachmentTask(dto); + return success(); + } + } diff --git a/workflow-engine-server/src/main/resources/bootstrap.yml b/workflow-engine-server/src/main/resources/bootstrap.yml index 86f224db4..dcf890b51 100644 --- a/workflow-engine-server/src/main/resources/bootstrap.yml +++ b/workflow-engine-server/src/main/resources/bootstrap.yml @@ -29,7 +29,7 @@ spring: nacos: config: # server-addr: ${NACOS_HOST:nacos.mybiwin.top}:${NACOS_PORT:9090} - server-addr: ${NACOS_HOST:dev-nacos.axzo.cn}:${NACOS_PORT:80} + server-addr: ${NACOS_HOST:https://dev-nacos.axzo.cn}:${NACOS_PORT:443} file-extension: yaml # namespace: ${NACOS_NAMESPACE_ID:1b5d2a22-b340-4503-8464-7d7fc2059d39} namespace: ${NACOS_NAMESPACE_ID:f82179f1-81a9-41a1-a489-4f9ab5660a6e} @@ -43,7 +43,7 @@ spring: cloud: nacos: config: - server-addr: ${NACOS_HOST:dev-nacos.axzo.cn}:${NACOS_PORT:80} + server-addr: ${NACOS_HOST:https://dev-nacos.axzo.cn}:${NACOS_PORT:443} file-extension: yaml namespace: ${NACOS_NAMESPACE_ID:eb401d2d-8f5e-4902-8fd0-148e941ba044}