-
Notifications
You must be signed in to change notification settings - Fork 5k
[DSIP-46] Unify the logic task params data structure between front-end and back-end #16153
Copy link
Copy link
Closed
Labels
Milestone
Description
Search before asking
- I had searched in the DSIP and found no similar DSIP.
Motivation
The logic task params in backend is not structure, we need to parse the logic params from some fields.
This make us to use some extra JSON deserialize code, and make the logic is very hard to maintain.
Lines 313 to 385 in f0e0395
| public DependentParameters getDependency() { | |
| if (this.dependency == null) { | |
| Map<String, Object> taskParamsMap = | |
| JSONUtils.parseObject(this.getTaskParams(), new TypeReference<Map<String, Object>>() { | |
| }); | |
| this.dependency = | |
| JSONUtils.parseObject((String) taskParamsMap.get(Constants.DEPENDENCE), DependentParameters.class); | |
| } | |
| return this.dependency; | |
| } | |
| public void setDependency(DependentParameters dependency) { | |
| this.dependency = dependency; | |
| } | |
| public ConditionsParameters getConditionsParameters() { | |
| if (this.conditionsParameters == null) { | |
| Map<String, Object> taskParamsMap = | |
| JSONUtils.parseObject(this.getTaskParams(), new TypeReference<Map<String, Object>>() { | |
| }); | |
| this.conditionsParameters = | |
| JSONUtils.parseObject((String) taskParamsMap.get(Constants.DEPENDENCE), ConditionsParameters.class); | |
| } | |
| return conditionsParameters; | |
| } | |
| public ConditionsParameters.ConditionResult getConditionResult() { | |
| Map<String, Object> taskParamsMap = | |
| JSONUtils.parseObject(this.getTaskParams(), new TypeReference<Map<String, Object>>() { | |
| }); | |
| String conditionResult = (String) taskParamsMap.getOrDefault(Constants.CONDITION_RESULT, ""); | |
| if (StringUtils.isNotEmpty(conditionResult)) { | |
| return JSONUtils.parseObject(conditionResult, new TypeReference<ConditionsParameters.ConditionResult>() { | |
| }); | |
| } | |
| return null; | |
| } | |
| public void setConditionResult(ConditionsParameters conditionsParameters) { | |
| if (conditionsParameters == null) { | |
| return; | |
| } | |
| Map<String, Object> taskParamsMap = | |
| JSONUtils.parseObject(this.getTaskParams(), new TypeReference<Map<String, Object>>() { | |
| }); | |
| if (taskParamsMap == null) { | |
| taskParamsMap = new HashMap<>(); | |
| } | |
| taskParamsMap.put(Constants.CONDITION_RESULT, JSONUtils.toJsonString(conditionsParameters)); | |
| this.setTaskParams(JSONUtils.toJsonString(taskParamsMap)); | |
| } | |
| public SwitchParameters getSwitchDependency() { | |
| // todo: We need to directly use Jackson to deserialize the taskParam, rather than parse the map and get from | |
| // field. | |
| if (this.switchDependency == null) { | |
| Map<String, Object> taskParamsMap = | |
| JSONUtils.parseObject(this.getTaskParams(), new TypeReference<Map<String, Object>>() { | |
| }); | |
| this.switchDependency = | |
| JSONUtils.parseObject((String) taskParamsMap.get(Constants.SWITCH_RESULT), SwitchParameters.class); | |
| } | |
| return this.switchDependency; | |
| } | |
| public void setSwitchDependency(SwitchParameters switchDependency) { | |
| Map<String, Object> taskParamsMap = | |
| JSONUtils.parseObject(this.getTaskParams(), new TypeReference<Map<String, Object>>() { | |
| }); | |
| taskParamsMap.put(Constants.SWITCH_RESULT, JSONUtils.toJsonString(switchDependency)); | |
| this.switchDependency = switchDependency; | |
| this.setTaskParams(JSONUtils.toJsonString(taskParamsMap)); | |
| } |
Design Detail
Directly parse the logic task params from task params.
Compatibility, Deprecation, and Migration Plan
compatibility
Test Plan
Code of Conduct
- I agree to follow this project's Code of Conduct
Reactions are currently unavailable