Я не уверен, что то, что вы описываете, является системой рабочего процесса в ее истинном смысле, возможно, Цепочка ответственности больше того, о чем вы говорите?
После того, что вы описали как последовательность выполнения, вот упрощенный пример того, как я бы реализовал цепочку:
Transformer.java
public interface Transformer<IN, OUT> {
OUT transformToDomain(IN dto);
IN transformToDTO(OUT domainObject);
}
Validator.java
public interface Validator<T> {
boolean isValid(T object);
}
Service.java
public interface Service {
void save(Object object);
}
И реализация, которая связывает все:
ProcessChain.java
public class ProcessChain {
private Transformer transformer;
private Service service;
private Validator validator;
Object process(Object dto) throws MyValidationException {
Object domainObject = transformer.transformToDomain(dto);
boolean isValid = validator.isValid(domainObject);
if(!isValid){
throw new MyValidationException("Validation message here");
}
service.save(domainObject);
return transformer.transformToDTO(domainObject);
}
}
Я не указал здесь никаких связанных с Spring вещей, потому что ваш вопрос, кажется, скорее вопрос дизайна, чем вопросов технологии.
Надеюсь, это поможет