refactoring env

This commit is contained in:
Michele Artini 2024-01-18 10:09:05 +01:00
parent c0ab592cef
commit 58c8944598
4 changed files with 11 additions and 26 deletions

View File

@ -9,11 +9,6 @@ import java.util.Map;
public class RuntimeEnv {
private final Map<String, Object> attributes = new HashMap<>();
private Throwable error;
public RuntimeEnv() {
this.error = null;
}
public Map<String, Object> getAttributes() {
return this.attributes;
@ -49,12 +44,4 @@ public class RuntimeEnv {
return this.attributes.remove(name);
}
public Throwable getError() {
return this.error;
}
public void setError(final Throwable error) {
this.error = error;
}
}

View File

@ -61,8 +61,7 @@ public abstract class ProcessNode implements BeanNameAware {
@Override
public void onFail(final RuntimeEnv env, final Throwable e) {
log.debug("FAILURE IN NODE " + getNodeName());
env.setError(e);
ProcessNode.this.engine.completeProcess(ProcessNode.this.process, env);
ProcessNode.this.engine.completeProcess(ProcessNode.this.process, env, e);
}
};
@ -72,9 +71,8 @@ public abstract class ProcessNode implements BeanNameAware {
execute(env, callback);
}
} catch (final Throwable e) {
env.setError(e);
this.graphNode.setStatus(RuntimeNodeStatus.failed);
this.engine.completeProcess(this.process, env);
this.engine.completeProcess(this.process, env, e);
}
}

View File

@ -235,7 +235,7 @@ public class ProcessEngine {
executeNode(process, graphNode, env);
if (graphNode.isSuccessNode()) {
completeProcess(process, env);
completeProcess(process, env, null);
}
}
} else {
@ -304,9 +304,9 @@ public class ProcessEngine {
return map;
}
public void completeProcess(final WorkflowProcess process, final RuntimeEnv env) {
public void completeProcess(final WorkflowProcess process, final RuntimeEnv env, final Throwable err) {
process.complete(env);
process.complete(env, err);
updateRunningJob(process);
saveHistoryJob(process);

View File

@ -98,21 +98,21 @@ public class WorkflowProcess implements Comparable<WorkflowProcess> {
return env;
}
public void complete(final RuntimeEnv env) {
public void complete(final RuntimeEnv env, final Throwable err) {
final LocalDateTime now = LocalDateTime.now();
this.jobDetails.setLastUpdate(now);
this.jobDetails.setEndDate(now);
this.jobDetails.setStatus(env.getError() != null ? JobStatus.failure : JobStatus.success);
this.jobDetails.setStatus(err != null ? JobStatus.failure : JobStatus.success);
if (env.getError() != null) {
setError(env.getError());
if (err != null) {
setError(err);
}
if (this.callback != null) {
if (env.getError() != null) {
this.callback.onFail(this, env.getError());
if (err != null) {
this.callback.onFail(this, err);
} else {
this.callback.onSuccess(this);
}