Я создаю выражение делегата для процесса Camunda, рабочий процесс работает отлично, но когда он выполняет делегат, мои службы создают объекты и не записывают их в базу данных.это код:
@Component
public class CreateNewROAction implements JavaDelegate {
private final ROactionService rOactionService;
private final RiskService riskService;
private Logger logger = LoggerFactory.getLogger(CreateNewROAction.class);
public CreateNewROAction(ROactionService rOactionService, RiskService riskService) {
this.rOactionService = rOactionService;
this.riskService = riskService;
}
@Override
public void execute(DelegateExecution delegateExecution) throws Exception {
String processInstanceId = delegateExecution.getProcessInstanceId();
String riskId = delegateExecution.getVariable("riskId").toString();
Risk risk = riskService.findById(Long.parseLong(riskId));
ROaction rOaction = new ROaction();
rOaction.setProcessInstanceId(processInstanceId);
rOaction = rOactionService.save(rOaction);
logger.info("roAction object: " + rOaction.toString());
risk.setAction(rOaction);
risk = riskService.update(risk, risk.getId());
logger.info("risk object: " + risk.toString());
delegateExecution.setVariable("id", rOaction.getId());
}
}
регистраторы показывают ожидаемый результат:
roAction object: ROaction(id=4, description=null, status=null, responsible=null, deadline=null, AchievementDate=null, effectivenessEvaluationDate=null, effectivenessEvaluation=null, processInstanceId=819, createdAt=Wed Jul 03 15:08:19 CET 2019, updatedAt=Wed Jul 03 15:08:19 CET 2019)
risk object: Risk(id=4, description=null, probability=0, impact=0, cause=null, consequence=null, createdAt=2019-07-03 15:07:04.975, updatedAt=2019-07-03 15:07:04.975, processes=[], action=ROaction(id=4, description=null, status=null, responsible=null, deadline=null, AchievementDate=null, effectivenessEvaluationDate=null, effectivenessEvaluation=null, processInstanceId=819, createdAt=Wed Jul 03 15:08:19 CET 2019, updatedAt=Wed Jul 03 15:08:19 CET 2019), processInstanceId=801)
, но база данных пуста.
Примечания:
1. У меня былоизменить идентификатор объекта на @GeneratedValue (стратегии = GenerationType.SEQUENCE), поскольку до этого служба возвращает нулевой идентификатор из функции save ()
2. службы работают нормально из контроллеров