mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2025-01-19 03:30:06 +08:00
bpm:code review 钉钉流程设计器
This commit is contained in:
parent
df936deeca
commit
95dbf4f8aa
@ -18,14 +18,19 @@ import java.util.Objects;
|
|||||||
public enum BpmSimpleModelNodeType implements IntArrayValuable {
|
public enum BpmSimpleModelNodeType implements IntArrayValuable {
|
||||||
|
|
||||||
// TODO @jaosn:-1、0、1、4、-2 是前端已经定义好的么?感觉未来可以考虑搞成和 BPMN 尽量一致的单词哈;类似 usertask 用户审批;
|
// TODO @jaosn:-1、0、1、4、-2 是前端已经定义好的么?感觉未来可以考虑搞成和 BPMN 尽量一致的单词哈;类似 usertask 用户审批;
|
||||||
|
// TODO @jason:_NODE 都删除掉哈;
|
||||||
START_EVENT_NODE(0, "开始节点"),
|
START_EVENT_NODE(0, "开始节点"),
|
||||||
APPROVE_USER_NODE(1, "审批人节点"),
|
END_EVENT_NODE(-2, "结束节点"), // TODO @jaosn:挪到 START_EVENT_NODE 后;
|
||||||
// 抄送人节点、对应 BPMN 的 ScriptTask. 使用ScriptTask 原因。好像 ServiceTask 自定义属性不能写入 XML
|
|
||||||
SCRIPT_TASK_NODE(2, "抄送人节点"),
|
APPROVE_USER_NODE(1, "审批人节点"), // TODO @jaosn:是不是这里从 10 开始好点;相当于说,0-9 给开始和结束;10-19 给各种节点;20-29 给各种条件;TODO @jason:改成 USER_TASK 是不是好点呀
|
||||||
EXCLUSIVE_GATEWAY_NODE(4, "排他网关"),
|
// 抄送人节点、对应 BPMN 的 ScriptTask. 使用ScriptTask 原因。好像 ServiceTask 自定义属性不能写入 XML;
|
||||||
PARALLEL_GATEWAY_FORK_NODE(5, "并行网关分叉节点"),
|
// TODO @jason:ServiceTask 自定义 xml,有没啥报错信息;
|
||||||
|
SCRIPT_TASK_NODE(2, "抄送人节点"), // TODO @jason:是不是改成 COPY_TASK 好一点哈;
|
||||||
|
|
||||||
|
EXCLUSIVE_GATEWAY_NODE(4, "排他网关"), // TODO @jason:是不是改成叫 条件分支?
|
||||||
|
PARALLEL_GATEWAY_FORK_NODE(5, "并行网关分叉节点"), // TODO @jason:是不是一个 并行分支 ?就可以啦?
|
||||||
PARALLEL_GATEWAY_JOIN_NODE(6, "并行网关聚合节点"),
|
PARALLEL_GATEWAY_JOIN_NODE(6, "并行网关聚合节点"),
|
||||||
END_EVENT_NODE(-2, "结束节点");
|
;
|
||||||
|
|
||||||
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(BpmSimpleModelNodeType::getType).toArray();
|
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(BpmSimpleModelNodeType::getType).toArray();
|
||||||
|
|
||||||
|
@ -340,7 +340,7 @@ public class BpmnModelUtils {
|
|||||||
return userTaskList;
|
return userTaskList;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== TODO 芋艿:这里得捉摸下; ==========
|
// ========== TODO @jason:单独出一个 SimpleModelUtils;定位上,它是 BPMN 的精简模式 ==========
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 仿钉钉流程设计模型数据结构(json) 转换成 Bpmn Model (待完善)
|
* 仿钉钉流程设计模型数据结构(json) 转换成 Bpmn Model (待完善)
|
||||||
@ -382,6 +382,7 @@ public class BpmnModelUtils {
|
|||||||
}
|
}
|
||||||
BpmSimpleModelNodeType nodeType = BpmSimpleModelNodeType.valueOf(node.getType());
|
BpmSimpleModelNodeType nodeType = BpmSimpleModelNodeType.valueOf(node.getType());
|
||||||
Assert.notNull(nodeType, "模型节点类型不支持");
|
Assert.notNull(nodeType, "模型节点类型不支持");
|
||||||
|
// TODO @jason:建议是,addXXX 都改成 buildXXX,构建出一个什么;然后返回之后,让这个方法添加到自己的结果里;
|
||||||
switch (nodeType) {
|
switch (nodeType) {
|
||||||
case START_EVENT_NODE:
|
case START_EVENT_NODE:
|
||||||
case APPROVE_USER_NODE:
|
case APPROVE_USER_NODE:
|
||||||
@ -488,9 +489,11 @@ public class BpmnModelUtils {
|
|||||||
ScriptTask scriptTask = new ScriptTask();
|
ScriptTask scriptTask = new ScriptTask();
|
||||||
scriptTask.setId(node.getId());
|
scriptTask.setId(node.getId());
|
||||||
scriptTask.setName(node.getName());
|
scriptTask.setName(node.getName());
|
||||||
|
// TODO @jason:建议使用 ServiceTask,通过 executionListeners 实现;
|
||||||
scriptTask.setScriptFormat(ScriptingEngines.DEFAULT_SCRIPTING_LANGUAGE);
|
scriptTask.setScriptFormat(ScriptingEngines.DEFAULT_SCRIPTING_LANGUAGE);
|
||||||
scriptTask.setScript(BPMN_SIMPLE_COPY_EXECUTION_SCRIPT);
|
scriptTask.setScript(BPMN_SIMPLE_COPY_EXECUTION_SCRIPT);
|
||||||
// 添加自定义属性
|
// 添加自定义属性
|
||||||
|
// TODO @jason:可以使用 ServiceTask 搞 ExtensionAttribute 么?
|
||||||
addExtensionAttributes(node, scriptTask);
|
addExtensionAttributes(node, scriptTask);
|
||||||
mainProcess.addFlowElement(scriptTask);
|
mainProcess.addFlowElement(scriptTask);
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ public interface BpmModelService {
|
|||||||
* @param id 编号
|
* @param id 编号
|
||||||
* @param xmlBytes BPMN XML bytes
|
* @param xmlBytes BPMN XML bytes
|
||||||
*/
|
*/
|
||||||
// TODO @芋艿:可能要关注下;
|
// TODO @芋艿:感觉可以不修改这个方法,而是额外加一个方法;传入 id,bpmn,json;
|
||||||
void saveModelBpmnXml(String id, byte[] xmlBytes);
|
void saveModelBpmnXml(String id, byte[] xmlBytes);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -26,6 +26,7 @@ import static cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeTyp
|
|||||||
import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.USER_TASK_CANDIDATE_PARAM;
|
import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.USER_TASK_CANDIDATE_PARAM;
|
||||||
import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.USER_TASK_CANDIDATE_STRATEGY;
|
import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.USER_TASK_CANDIDATE_STRATEGY;
|
||||||
|
|
||||||
|
// TODO @jason:这块可以讨论下,是不是合并成一个 BpmnModelServiceImpl
|
||||||
/**
|
/**
|
||||||
* 仿钉钉流程设计 Service 实现类
|
* 仿钉钉流程设计 Service 实现类
|
||||||
*
|
*
|
||||||
|
@ -44,9 +44,10 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
|
|||||||
@Lazy // 延迟加载,避免循环依赖
|
@Lazy // 延迟加载,避免循环依赖
|
||||||
private BpmProcessDefinitionService processDefinitionService;
|
private BpmProcessDefinitionService processDefinitionService;
|
||||||
|
|
||||||
|
// TODO @芋艿:这里多加了一个 name;
|
||||||
@Override
|
@Override
|
||||||
public void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String taskId, String taskName) {
|
public void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String taskId, String taskName) {
|
||||||
// 1.1 校验任务存在 暂时去掉这个校验. 因为任务可能仿钉钉快搭的抄送节点(ScriptTask)
|
// 1.1 校验任务存在 暂时去掉这个校验. 因为任务可能仿钉钉快搭的抄送节点(ScriptTask) TODO jason:抄送节点,会没有来源的 taskId 么?
|
||||||
// Task task = taskService.getTask(taskId);
|
// Task task = taskService.getTask(taskId);
|
||||||
// if (ObjectUtil.isNull(task)) {
|
// if (ObjectUtil.isNull(task)) {
|
||||||
// throw exception(ErrorCodeConstants.TASK_NOT_EXISTS);
|
// throw exception(ErrorCodeConstants.TASK_NOT_EXISTS);
|
||||||
|
@ -9,7 +9,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 仿钉钉快搭各个节点 Service
|
* 仿钉钉快搭各个节点 Service TODO @jason:注释要有空行哈;
|
||||||
* @author jason
|
* @author jason
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@ -21,14 +21,16 @@ public class BpmSimpleNodeService {
|
|||||||
private BpmProcessInstanceCopyService processInstanceCopyService;
|
private BpmProcessInstanceCopyService processInstanceCopyService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 仿钉钉快搭抄送
|
* 仿钉钉快搭抄送 TODO @jason:注释要有空行哈;
|
||||||
* @param execution 执行的任务(ScriptTask)
|
* @param execution 执行的任务(ScriptTask)
|
||||||
*/
|
*/
|
||||||
public Boolean copy(DelegateExecution execution) {
|
public Boolean copy(DelegateExecution execution) {
|
||||||
|
// TODO @芋艿:可能要考虑,系统抄送,没有 taskId 的情况。
|
||||||
Set<Long> userIds = taskCandidateInvoker.calculateUsers(execution);
|
Set<Long> userIds = taskCandidateInvoker.calculateUsers(execution);
|
||||||
FlowElement currentFlowElement = execution.getCurrentFlowElement();
|
FlowElement currentFlowElement = execution.getCurrentFlowElement();
|
||||||
processInstanceCopyService.createProcessInstanceCopy(userIds, execution.getProcessInstanceId(),
|
processInstanceCopyService.createProcessInstanceCopy(userIds, execution.getProcessInstanceId(),
|
||||||
currentFlowElement.getId(), currentFlowElement.getName());
|
currentFlowElement.getId(), currentFlowElement.getName());
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user