大声道撒旦
This commit is contained in:
parent
7652a9ad27
commit
f6e19d7c24
@ -0,0 +1,85 @@
|
||||
package com.qqchen.deploy.backend.workflow.delegate;
|
||||
|
||||
import com.qqchen.deploy.backend.workflow.constants.WorkFlowConstants;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables.ApprovalNodeLocalVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables.ApprovalNodePanelVariables;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.engine.TaskService;
|
||||
import org.flowable.engine.delegate.BpmnError;
|
||||
import org.flowable.engine.delegate.DelegateExecution;
|
||||
import org.flowable.task.api.Task;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 审批节点的委派者实现
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class ApprovalNodeDelegate extends BaseNodeDelegate<ApprovalNodePanelVariables, ApprovalNodeLocalVariables> {
|
||||
|
||||
@Resource
|
||||
private TaskService taskService;
|
||||
|
||||
@Override
|
||||
protected Class<ApprovalNodePanelVariables> getPanelVariablesClass() {
|
||||
return ApprovalNodePanelVariables.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class<ApprovalNodeLocalVariables> getLocalVariablesClass() {
|
||||
return ApprovalNodeLocalVariables.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void executeInternal(DelegateExecution execution, ApprovalNodePanelVariables panelVariables, ApprovalNodeLocalVariables localVariables) {
|
||||
if (panelVariables == null) {
|
||||
throw new BpmnError(WorkFlowConstants.WORKFLOW_EXEC_ERROR, "Panel variables are required but not provided");
|
||||
}
|
||||
|
||||
try {
|
||||
// 创建用户任务
|
||||
Task task = taskService.createTaskQuery()
|
||||
.processInstanceId(execution.getProcessInstanceId())
|
||||
.taskDefinitionKey(execution.getCurrentActivityId())
|
||||
.singleResult();
|
||||
|
||||
if (task == null) {
|
||||
throw new BpmnError(WorkFlowConstants.WORKFLOW_EXEC_ERROR, "Failed to create approval task");
|
||||
}
|
||||
|
||||
// 设置任务属性
|
||||
task.setName(panelVariables.getName());
|
||||
task.setDescription(panelVariables.getDescription());
|
||||
|
||||
// 设置审批人
|
||||
if (panelVariables.getAssignee() != null) {
|
||||
task.setAssignee(panelVariables.getAssignee());
|
||||
}
|
||||
|
||||
// 设置候选组
|
||||
if (panelVariables.getCandidateGroup() != null) {
|
||||
taskService.addCandidateGroup(task.getId(), panelVariables.getCandidateGroup());
|
||||
}
|
||||
|
||||
// 设置超时时间
|
||||
if (panelVariables.getTimeoutHours() != null) {
|
||||
Date dueDate = java.sql.Timestamp.valueOf(LocalDateTime.now().plusHours(panelVariables.getTimeoutHours()));
|
||||
task.setDueDate(dueDate);
|
||||
}
|
||||
|
||||
// 更新任务
|
||||
taskService.saveTask(task);
|
||||
|
||||
log.info("Created approval task: {}, assignee: {}, candidateGroup: {}",
|
||||
task.getId(), panelVariables.getAssignee(), panelVariables.getCandidateGroup());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("Failed to create approval task", e);
|
||||
throw new BpmnError(WorkFlowConstants.WORKFLOW_EXEC_ERROR, "Failed to create approval task: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,29 @@
|
||||
package com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables;
|
||||
|
||||
import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 审批节点表单变量
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ApprovalNodeFormVariables extends BaseNodeFormVariables {
|
||||
|
||||
@SchemaProperty(
|
||||
title = "审批意见",
|
||||
description = "请填写审批意见",
|
||||
required = true
|
||||
)
|
||||
private String comment;
|
||||
|
||||
@SchemaProperty(
|
||||
title = "审批结果",
|
||||
description = "请选择审批结果",
|
||||
required = true,
|
||||
enumValues = {"APPROVED", "REJECTED"},
|
||||
enumNames = {"同意", "拒绝"}
|
||||
)
|
||||
private String approvalResult;
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
package com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables;
|
||||
|
||||
import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 审批节点运行时变量
|
||||
*/
|
||||
@Data
|
||||
public class ApprovalNodeLocalVariables {
|
||||
|
||||
@SchemaProperty(
|
||||
title = "审批意见",
|
||||
description = "审批人填写的意见"
|
||||
)
|
||||
private String comment;
|
||||
|
||||
@SchemaProperty(
|
||||
title = "审批结果",
|
||||
description = "审批结果",
|
||||
enumValues = {"APPROVED", "REJECTED"},
|
||||
enumNames = {"同意", "拒绝"}
|
||||
)
|
||||
private String approvalResult;
|
||||
|
||||
@SchemaProperty(
|
||||
title = "审批时间",
|
||||
description = "审批完成时间"
|
||||
)
|
||||
private String approvalTime;
|
||||
}
|
||||
@ -0,0 +1,41 @@
|
||||
package com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables;
|
||||
|
||||
import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 审批节点配置
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ApprovalNodePanelVariables extends BaseNodePanelVariables {
|
||||
|
||||
@SchemaProperty(
|
||||
title = "审批人",
|
||||
description = "审批人用户ID",
|
||||
required = true
|
||||
)
|
||||
private String assignee;
|
||||
|
||||
@SchemaProperty(
|
||||
title = "审批组",
|
||||
description = "审批组ID"
|
||||
)
|
||||
private String candidateGroup;
|
||||
|
||||
@SchemaProperty(
|
||||
title = "超时时间(小时)",
|
||||
description = "审批超时时间,单位小时",
|
||||
required = true,
|
||||
defaultValue = "24"
|
||||
)
|
||||
private Integer timeoutHours;
|
||||
|
||||
@SchemaProperty(
|
||||
title = "是否需要会签",
|
||||
description = "是否需要所有审批人同意",
|
||||
defaultValue = "false"
|
||||
)
|
||||
private Boolean needAllApprove;
|
||||
}
|
||||
@ -3,20 +3,23 @@ package com.qqchen.deploy.backend.workflow.enums;
|
||||
import com.fasterxml.jackson.annotation.JsonValue;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables.DeployNodeFormVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables.ScriptNodeFormVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.fromVariables.ApprovalNodeFormVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables.DeployNodeLocalVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables.NotificationNodeLocalVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables.ScriptNodeLocalVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.localVariables.ApprovalNodeLocalVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables.DeployNodePanelVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables.EndNodePanelVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables.GatewayNodePanelVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables.NotificationNodePanelVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables.ScriptNodePanelVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables.StartNodePanelVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables.ApprovalNodePanelVariables;
|
||||
import com.qqchen.deploy.backend.workflow.dto.definition.node.uiVariables.NodeUiVariables;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 工作<EFBFBD><EFBFBD>节点类型枚举
|
||||
* 工作节点类型枚举
|
||||
* 定义了工作流中所有可用的节点类型及其UI配置
|
||||
*/
|
||||
@Getter
|
||||
@ -102,6 +105,17 @@ public enum NodeTypeEnums {
|
||||
BpmnNodeTypeEnums.SERVICE_TASK,
|
||||
NodeCategoryEnums.TASK,
|
||||
"通知节点"
|
||||
),
|
||||
APPROVAL_NODE(
|
||||
"APPROVAL_NODE",
|
||||
"审批节点",
|
||||
ApprovalNodeLocalVariables.class,
|
||||
ApprovalNodePanelVariables.class,
|
||||
ApprovalNodeFormVariables.class,
|
||||
NodeUiVariables.class,
|
||||
BpmnNodeTypeEnums.USER_TASK,
|
||||
NodeCategoryEnums.TASK,
|
||||
"审批任务"
|
||||
);
|
||||
//
|
||||
// /**
|
||||
@ -146,7 +160,7 @@ public enum NodeTypeEnums {
|
||||
// * 脚本任务节点
|
||||
// * 执行自定义脚本的任务节点
|
||||
// * 特点:
|
||||
// * - 支持多种脚本语言(如Shell、Python等)
|
||||
// * - 支持多种脚本语言(如Shell、Python等<EFBFBD><EFBFBD><EFBFBD>
|
||||
// * - 可以执行自定义业务逻辑
|
||||
// * - 适合复杂的数据处理和计算
|
||||
// */
|
||||
@ -191,7 +205,7 @@ public enum NodeTypeEnums {
|
||||
// PARALLEL_GATEWAY(
|
||||
// "PARALLEL_GATEWAY",
|
||||
// "并行网关",
|
||||
// "并行分支控制",
|
||||
// "<EFBFBD><EFBFBD>行分支控制",
|
||||
// new WorkflowNodeGraph()
|
||||
// .setShape("diamond")
|
||||
// .setSize(50, 50)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user