refactor: use Map to replace String in WorkflowContext

This commit is contained in:
tjq 2021-02-19 19:53:07 +08:00
parent d6d461c77e
commit eac7ce7b27
2 changed files with 15 additions and 15 deletions

View File

@ -183,7 +183,7 @@ public class ProcessorRunnable implements Runnable {
} else { } else {
processResult = new ProcessResult(true, "NO_PREPOST_TASK"); processResult = new ProcessResult(true, "NO_PREPOST_TASK");
} }
// 通知 TaskerTracker 创建广播子任务 // 通知 TaskTracker 创建广播子任务
reportStatus(processResult.isSuccess() ? TaskStatus.WORKER_PROCESS_SUCCESS : TaskStatus.WORKER_PROCESS_FAILED, suit(processResult.getMsg()), ProcessorReportTaskStatusReq.BROADCAST, taskContext.getWorkflowContext().getAppendedContextData()); reportStatus(processResult.isSuccess() ? TaskStatus.WORKER_PROCESS_SUCCESS : TaskStatus.WORKER_PROCESS_FAILED, suit(processResult.getMsg()), ProcessorReportTaskStatusReq.BROADCAST, taskContext.getWorkflowContext().getAppendedContextData());
} }

View File

@ -4,7 +4,7 @@ import com.github.kfcfans.powerjob.common.WorkflowContextConstant;
import com.github.kfcfans.powerjob.common.utils.JsonUtils; import com.github.kfcfans.powerjob.common.utils.JsonUtils;
import com.github.kfcfans.powerjob.worker.OhMyWorker; import com.github.kfcfans.powerjob.worker.OhMyWorker;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import lombok.Data; import lombok.Getter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.Map; import java.util.Map;
@ -15,7 +15,7 @@ import java.util.Map;
* @author Echo009 * @author Echo009
* @since 2021/2/19 * @since 2021/2/19
*/ */
@Data @Getter
@Slf4j @Slf4j
public class WorkflowContext { public class WorkflowContext {
/** /**
@ -26,12 +26,22 @@ public class WorkflowContext {
* 当前工作流上下文数据 * 当前工作流上下文数据
* 这里的 data 实际上等价于 {@link TaskContext} 中的 instanceParams * 这里的 data 实际上等价于 {@link TaskContext} 中的 instanceParams
*/ */
private final String data; private final Map<String, String> data = Maps.newHashMap();
/** /**
* 追加的上下文信息 * 追加的上下文信息
*/ */
private final Map<String, String> appendedContextData = Maps.newConcurrentMap(); private final Map<String, String> appendedContextData = Maps.newConcurrentMap();
@SuppressWarnings({"rawtypes", "unchecked"})
public WorkflowContext(Long instanceId, String data) {
this.instanceId = instanceId;
try {
Map originMap = JsonUtils.parseObject(data, Map.class);
originMap.forEach((k, v) -> this.data.put(String.valueOf(k), v == null ? null : String.valueOf(v)));
} catch (Exception exception) {
log.warn("[WorkflowContext-{}] parse workflow context failed, {}", instanceId, exception);
}
}
/** /**
* 获取工作流上下文 (MAP)本质上是将 data 解析成 MAP * 获取工作流上下文 (MAP)本质上是将 data 解析成 MAP
@ -42,18 +52,8 @@ public class WorkflowContext {
* @author Echo009 * @author Echo009
* @since 2021/02/04 * @since 2021/02/04
*/ */
@SuppressWarnings({"rawtypes", "unchecked"})
public Map<String, String> fetchWorkflowContext() { public Map<String, String> fetchWorkflowContext() {
Map<String, String> res = Maps.newHashMap(); return data;
try {
Map originMap = JsonUtils.parseObject(data, Map.class);
originMap.forEach((k, v) -> res.put(String.valueOf(k), v == null ? null : String.valueOf(v)));
return res;
} catch (Exception exception) {
// log
log.warn("[WorkflowContext-{}] fail to fetch workflow context , {}", instanceId, exception);
}
return Maps.newHashMap();
} }
/** /**