如何在 StateMachineListener 中获取 StateContext 以及如何配置状态以实现我的状态图?

How to get StateContext in StateMachineListener and how to config states to implement my statechart?

我的第一个问题:

在我的 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);

如何在侦听器中获取消息 header[companyId]?

我的第二个问题: statechart

StateMachineListener 中,您可以使用其 stateContext 方法来访问 StateContextStateContext 然后可以通过 getMessageHeaders.

访问消息 headers

原始侦听器接口没有公开那么多,因此我们必须添加新方法来公开在创建侦听器接口之后才引入机器的上下文。这是因为我们不需要破坏东西,而且我们通常喜欢向后兼容。