feat: support inject workflow context directly

This commit is contained in:
Echo009 2022-09-02 20:12:58 +08:00
parent 54524553c1
commit bdd9b978f9

View File

@ -177,11 +177,26 @@ public class WorkflowInstanceManager {
newWfInstance.setExpectedTriggerTime(expectTriggerTime);
newWfInstance.setActualTriggerTime(System.currentTimeMillis());
newWfInstance.setWfInitParams(initParams);
// 初始化上下文
Map<String, String> wfContextMap = Maps.newHashMap();
wfContextMap.put(WorkflowContextConstant.CONTEXT_INIT_PARAMS_KEY, initParams);
newWfInstance.setWfContext(JsonUtils.toJSONString(wfContextMap));
// 如果 initParams 是个合法的 Map<String,String> JSON 串则直接将其注入 wfContext
boolean injectDirect = false;
try {
Map<String, String> parseRes = JSON.parseObject(initParams, new TypeReference<Map<String, String>>() {
});
if (parseRes != null && !parseRes.isEmpty()) {
injectDirect = true;
}
} catch (Exception e) {
// ignore
}
if (injectDirect) {
newWfInstance.setWfContext(initParams);
} else {
// 初始化上下文
Map<String, String> wfContextMap = Maps.newHashMap();
wfContextMap.put(WorkflowContextConstant.CONTEXT_INIT_PARAMS_KEY, initParams);
newWfInstance.setWfContext(JsonUtils.toJSONString(wfContextMap));
}
newWfInstance.setGmtCreate(now);
newWfInstance.setGmtModified(now);
return newWfInstance;