我的第一个问题:
在我的StateMachineConfiguration.class
。
@Bean
public StateMachineListener<CompanyStatus, CompanyEvents> listener() {
return new StateMachineListenerAdapter<CompanyStatus, CompanyEvents>() {
@Override
public void transition(Transition<CompanyStatus, CompanyEvents> transition) {
if(transition.getTarget().getId() == CompanyStatus.COMPANY_CREATED) {
logger.info("公司创建,发送消息到用户服务和菜单服务");
// how to get stateContext in there?
StateContext stateContext;
Message message = new Message.Builder<String>().messageType(CompanyStatus.COMPANY_CREATED.toString()).build();
messageSender.sendToUaa(message);
messageSender.sendToRes(message);
}
}
};
}
在我的服务中。
log.debug("Request to save Company : {}", companyDTO);
Company company = companyMapper.toCmpy(companyDTO);
company = companyRepository.save(company);
stateMachine.sendEvent(MessageBuilder
.withPayload(CompanyEvents.COMPANY_CREATE)
.setHeader("companyId", company.getId())
.build());
return companyMapper.toCmpyDTO(company);
如何在侦听器中获取邮件头[companyId]?
我的第二个问题: statechart
答案 0 :(得分:0)
在StateMachineListener
中,您可以使用stateContext
方法,该方法可让您访问StateContext
。然后,StateContext
可以通过其getMessageHeaders
访问邮件标头。
原始侦听器接口没有暴露那么多,所以我们不得不添加新方法,该方法暴露了在创建监听器接口之后引入到机器的上下文。这是因为我们不需要破坏东西,我们通常喜欢向后兼容。