update 优化 liteflow 整体上下文用法优化
This commit is contained in:
+1
-1
@@ -14,7 +14,7 @@ public class ContextRequiredComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
if (getRequestData() == null) {
|
if (getFirstContextBean() == null) {
|
||||||
throw new ServiceException("LiteFlow 上下文不能为空");
|
throw new ServiceException("LiteFlow 上下文不能为空");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -27,8 +27,8 @@ public class FailComponent extends NodeComponent {
|
|||||||
* @return 失败提示
|
* @return 失败提示
|
||||||
*/
|
*/
|
||||||
private String getFailMessage() {
|
private String getFailMessage() {
|
||||||
Object requestData = getRequestData();
|
Object context = getFirstContextBean();
|
||||||
if (requestData instanceof FailMessageProvider provider) {
|
if (context instanceof FailMessageProvider provider) {
|
||||||
String message = provider.getFailMessage();
|
String message = provider.getFailMessage();
|
||||||
if (StringUtils.isNotBlank(message)) {
|
if (StringUtils.isNotBlank(message)) {
|
||||||
return message;
|
return message;
|
||||||
|
|||||||
+9
-2
@@ -4,6 +4,7 @@ import com.yomahub.liteflow.core.FlowExecutor;
|
|||||||
import com.yomahub.liteflow.flow.LiteflowResponse;
|
import com.yomahub.liteflow.flow.LiteflowResponse;
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.utils.SpringUtils;
|
import org.dromara.common.core.utils.SpringUtils;
|
||||||
|
|
||||||
@@ -12,19 +13,25 @@ import org.dromara.common.core.utils.SpringUtils;
|
|||||||
*
|
*
|
||||||
* @author Lion Li
|
* @author Lion Li
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class LiteFlowUtils {
|
public class LiteFlowUtils {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 执行 LiteFlow 链路,并按业务异常语义透传失败原因。
|
* 执行 LiteFlow 链路,并按 contextBean 语义透传业务上下文和失败原因。
|
||||||
*
|
*
|
||||||
* @param chainId 链路标识
|
* @param chainId 链路标识
|
||||||
* @param context 链路上下文
|
* @param context 链路上下文
|
||||||
*/
|
*/
|
||||||
public static void execute(String chainId, Object context) {
|
public static void execute(String chainId, Object context) {
|
||||||
LiteflowResponse response = SpringUtils.getBean(FlowExecutor.class).execute2Resp(chainId, context);
|
if (context == null) {
|
||||||
|
throw new ServiceException("LiteFlow 上下文不能为空");
|
||||||
|
}
|
||||||
|
LiteflowResponse response = SpringUtils.getBean(FlowExecutor.class).execute2Resp(chainId, null, context);
|
||||||
if (!response.isSuccess()) {
|
if (!response.isSuccess()) {
|
||||||
Exception cause = response.getCause();
|
Exception cause = response.getCause();
|
||||||
|
log.error("LiteFlow 链路执行失败 chainId={} requestId={} message={} steps={}",
|
||||||
|
chainId, response.getRequestId(), response.getMessage(), response.getExecuteStepStrWithTime(), cause);
|
||||||
if (cause instanceof RuntimeException runtimeException) {
|
if (cause instanceof RuntimeException runtimeException) {
|
||||||
throw runtimeException;
|
throw runtimeException;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@ public class CompleteAutoPassComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
CompleteTaskContext context = getRequestData();
|
CompleteTaskContext context = getContextBean(CompleteTaskContext.class);
|
||||||
FlowTask flowTask = context.getFlowTask();
|
FlowTask flowTask = context.getFlowTask();
|
||||||
autoPass(flowTask.getId(), context.getFlowParams(), flowTask.getInstanceId());
|
autoPass(flowTask.getId(), context.getFlowParams(), flowTask.getInstanceId());
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -31,7 +31,7 @@ public class CompleteExecuteComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
CompleteTaskContext context = getRequestData();
|
CompleteTaskContext context = getContextBean(CompleteTaskContext.class);
|
||||||
CompleteTaskBo completeTaskBo = context.getCompleteTaskBo();
|
CompleteTaskBo completeTaskBo = context.getCompleteTaskBo();
|
||||||
Map<String, Object> variables = completeTaskBo.getVariables();
|
Map<String, Object> variables = completeTaskBo.getVariables();
|
||||||
FlowParams flowParams = FlowParams.build()
|
FlowParams flowParams = FlowParams.build()
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ public class CompleteNeedAutoPassComponent extends NodeBooleanComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean processBoolean() {
|
public boolean processBoolean() {
|
||||||
CompleteTaskContext context = getRequestData();
|
CompleteTaskContext context = getContextBean(CompleteTaskContext.class);
|
||||||
return Boolean.TRUE.equals(context.getAutoPass());
|
return Boolean.TRUE.equals(context.getAutoPass());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@ public class CompletePrepareComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
CompleteTaskContext context = getRequestData();
|
CompleteTaskContext context = getContextBean(CompleteTaskContext.class);
|
||||||
CompleteTaskBo completeTaskBo = context.getCompleteTaskBo();
|
CompleteTaskBo completeTaskBo = context.getCompleteTaskBo();
|
||||||
FlowTask flowTask = flowTaskMapper.selectById(completeTaskBo.getTaskId());
|
FlowTask flowTask = flowTaskMapper.selectById(completeTaskBo.getTaskId());
|
||||||
if (ObjectUtil.isNull(flowTask)) {
|
if (ObjectUtil.isNull(flowTask)) {
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ public class InstanceDeleteEventComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
InstanceDeleteContext context = getRequestData();
|
InstanceDeleteContext context = getContextBean(InstanceDeleteContext.class);
|
||||||
String userId = LoginHelper.getUserIdStr();
|
String userId = LoginHelper.getUserIdStr();
|
||||||
context.getFlowInstances().forEach(flowInstance -> {
|
context.getFlowInstances().forEach(flowInstance -> {
|
||||||
if (!LoginHelper.isSuperAdmin() && !flowInstance.getCreateBy().equals(userId)) {
|
if (!LoginHelper.isSuperAdmin() && !flowInstance.getCreateBy().equals(userId)) {
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ public class InstanceDeleteExecuteComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
InstanceDeleteContext context = getRequestData();
|
InstanceDeleteContext context = getContextBean(InstanceDeleteContext.class);
|
||||||
if (!context.isHistory()) {
|
if (!context.isHistory()) {
|
||||||
context.setResult(insService.remove(context.getDeleteInstanceIds()));
|
context.setResult(insService.remove(context.getDeleteInstanceIds()));
|
||||||
return;
|
return;
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ public class InstanceDeleteExistsComponent extends NodeBooleanComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean processBoolean() {
|
public boolean processBoolean() {
|
||||||
InstanceDeleteContext context = getRequestData();
|
InstanceDeleteContext context = getContextBean(InstanceDeleteContext.class);
|
||||||
return CollUtil.isNotEmpty(context.getFlowInstances());
|
return CollUtil.isNotEmpty(context.getFlowInstances());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ public class InstanceDeleteLoadComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
InstanceDeleteContext context = getRequestData();
|
InstanceDeleteContext context = getContextBean(InstanceDeleteContext.class);
|
||||||
List<FlowInstance> flowInstances;
|
List<FlowInstance> flowInstances;
|
||||||
if (CollUtil.isNotEmpty(context.getBusinessIds())) {
|
if (CollUtil.isNotEmpty(context.getBusinessIds())) {
|
||||||
flowInstances = flowInstanceMapper.selectList(QueryBuilder.lambda(FlowInstance.class)
|
flowInstances = flowInstanceMapper.selectList(QueryBuilder.lambda(FlowInstance.class)
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ public class TaskOpExecuteComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
TaskOperationContext context = getRequestData();
|
TaskOperationContext context = getContextBean(TaskOperationContext.class);
|
||||||
Long taskId = context.getTaskOperationBo().getTaskId();
|
Long taskId = context.getTaskOperationBo().getTaskId();
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
switch (context.getOperation()) {
|
switch (context.getOperation()) {
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ public class TaskOpLoadComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
TaskOperationContext context = getRequestData();
|
TaskOperationContext context = getContextBean(TaskOperationContext.class);
|
||||||
Task task = taskService.getById(context.getTaskOperationBo().getTaskId());
|
Task task = taskService.getById(context.getTaskOperationBo().getTaskId());
|
||||||
if (ObjectUtil.isNull(task)) {
|
if (ObjectUtil.isNull(task)) {
|
||||||
throw new ServiceException("任务不存在!");
|
throw new ServiceException("任务不存在!");
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ public class TaskOpNeedNotifyComponent extends NodeBooleanComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean processBoolean() {
|
public boolean processBoolean() {
|
||||||
TaskOperationContext context = getRequestData();
|
TaskOperationContext context = getContextBean(TaskOperationContext.class);
|
||||||
return context.isResult() && CollUtil.isNotEmpty(context.getTaskOperationBo().getMessageType());
|
return context.isResult() && CollUtil.isNotEmpty(context.getTaskOperationBo().getMessageType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -32,7 +32,7 @@ public class TaskOpNotifyComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
TaskOperationContext context = getRequestData();
|
TaskOperationContext context = getContextBean(TaskOperationContext.class);
|
||||||
TaskOperationBo bo = context.getTaskOperationBo();
|
TaskOperationBo bo = context.getTaskOperationBo();
|
||||||
List<Long> userIdList = new ArrayList<>();
|
List<Long> userIdList = new ArrayList<>();
|
||||||
if (StringUtils.isNotBlank(bo.getUserId())) {
|
if (StringUtils.isNotBlank(bo.getUserId())) {
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ public class TaskOpPrepareComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
TaskOperationContext context = getRequestData();
|
TaskOperationContext context = getContextBean(TaskOperationContext.class);
|
||||||
TaskOperationEnum op = TaskOperationEnum.getByCode(context.getTaskOperation());
|
TaskOperationEnum op = TaskOperationEnum.getByCode(context.getTaskOperation());
|
||||||
if (op == null) {
|
if (op == null) {
|
||||||
log.error("Invalid operation type:{} ", context.getTaskOperation());
|
log.error("Invalid operation type:{} ", context.getTaskOperation());
|
||||||
|
|||||||
+1
-1
@@ -36,7 +36,7 @@ public class StartExecuteComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
StartProcessContext context = getRequestData();
|
StartProcessContext context = getContextBean(StartProcessContext.class);
|
||||||
FlowParams flowParams = FlowParams.build()
|
FlowParams flowParams = FlowParams.build()
|
||||||
.handler(context.getStartProcessBo().getHandler())
|
.handler(context.getStartProcessBo().getHandler())
|
||||||
.flowCode(context.getStartProcessBo().getFlowCode())
|
.flowCode(context.getStartProcessBo().getFlowCode())
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ public class StartExistsComponent extends NodeBooleanComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean processBoolean() {
|
public boolean processBoolean() {
|
||||||
StartProcessContext context = getRequestData();
|
StartProcessContext context = getContextBean(StartProcessContext.class);
|
||||||
return ObjectUtil.isNotNull(context.getExistingInstance());
|
return ObjectUtil.isNotNull(context.getExistingInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ public class StartPrepareInstanceComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
StartProcessContext context = getRequestData();
|
StartProcessContext context = getContextBean(StartProcessContext.class);
|
||||||
Definition definition = FlowEngine.defService().getPublishByFlowCode(context.getStartProcessBo().getFlowCode());
|
Definition definition = FlowEngine.defService().getPublishByFlowCode(context.getStartProcessBo().getFlowCode());
|
||||||
if (ObjectUtil.isNull(definition)) {
|
if (ObjectUtil.isNull(definition)) {
|
||||||
throw new ServiceException("流程【" + context.getStartProcessBo().getFlowCode() + "】未发布,请先在流程设计器中发布流程定义");
|
throw new ServiceException("流程【" + context.getStartProcessBo().getFlowCode() + "】未发布,请先在流程设计器中发布流程定义");
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ public class StartPrepareRequestComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
StartProcessContext context = getRequestData();
|
StartProcessContext context = getContextBean(StartProcessContext.class);
|
||||||
String businessId = context.getStartProcessBo().getBusinessId();
|
String businessId = context.getStartProcessBo().getBusinessId();
|
||||||
if (StringUtils.isBlank(businessId)) {
|
if (StringUtils.isBlank(businessId)) {
|
||||||
throw new ServiceException("启动工作流时必须包含业务ID");
|
throw new ServiceException("启动工作流时必须包含业务ID");
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ public class StartResumeComponent extends NodeComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process() {
|
public void process() {
|
||||||
StartProcessContext context = getRequestData();
|
StartProcessContext context = getContextBean(StartProcessContext.class);
|
||||||
BusinessStatusEnum.checkStartStatus(context.getExistingInstance().getFlowStatus());
|
BusinessStatusEnum.checkStartStatus(context.getExistingInstance().getFlowStatus());
|
||||||
List<Task> taskList = taskService.list(new FlowTask().setInstanceId(context.getExistingInstance().getId()));
|
List<Task> taskList = taskService.list(new FlowTask().setInstanceId(context.getExistingInstance().getId()));
|
||||||
if (CollUtil.isEmpty(taskList)) {
|
if (CollUtil.isEmpty(taskList)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user